Skip to content

Commit 8cea2e9

Browse files
authored
Merge pull request #38 from CoreMedia/release-2512
Changes for Release 2512.0.0
2 parents a93192c + e415939 commit 8cea2e9

83 files changed

Lines changed: 18346 additions & 31360 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
# This is a basic workflow to help you get started with Actions
2-
31
name: CI
42

53
on:
64
push:
7-
branches: [ main ]
5+
branches:
6+
- main
87
pull_request:
9-
branches: [ main ]
8+
branches:
9+
- main
1010

1111
jobs:
1212
build:
1313
runs-on: ubuntu-latest
1414

1515
steps:
1616
- name: Checkout repository
17-
uses: actions/checkout@v4
17+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
1818

1919
- name: Use pnpm
20-
uses: pnpm/action-setup@v3
20+
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 #v4.2.0
2121
with:
2222
version: 10
2323

2424
- name: Use Node.js
25-
uses: actions/setup-node@v4
25+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f #v6.1.0
2626
with:
27-
node-version: 22
27+
node-version: 24
2828
cache: 'pnpm'
2929

3030
- name: Install dependencies
@@ -36,7 +36,7 @@ jobs:
3636
pnpm --filter @coremedia-labs/spark build-storybook
3737
3838
- name: Analyze Code and Style
39-
run: pnpm -r lint:ci
39+
run: pnpm lint
4040

4141
- name: Test Workspace
4242
run: pnpm test

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Changelog
22

3+
## v2512.0.0
4+
5+
*Released 14.01.2026*
6+
7+
### Breaking Changes:
8+
9+
- Updated `schema.json` to CoreMedia Content Cloud v13 - 2512.0
10+
- Updated `node.js` to 24 LTS
11+
- Updates eslint to v9
12+
- Added pnpm catalogs to the workspace
13+
- Removed support for CoreMedia Campaign Service
14+
15+
### Bugfixes and Changes:
16+
17+
- Updated apollo server to v5 (stitching server)
18+
- Updated express to v5 (stitching server)
19+
- Updated minor versions of dependencies
20+
21+
---
22+
323
## v2506.0.0
424

525
*Released 02.07.2025*

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
FROM node:22-slim
1+
FROM node:24-slim
22
RUN npm install -g pnpm@10

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
![CoreMedia Labs Logo](https://documentation.coremedia.com/badges/banner_coremedia_labs_wide.png)
22

3-
![CoreMedia Content Cloud Version](https://img.shields.io/static/v1?message=2506&label=CoreMedia%20Content%20Cloud&style=for-the-badge&labelColor=666666&color=672779
3+
![CoreMedia Content Cloud Version](https://img.shields.io/static/v1?message=main&label=CoreMedia%20Content%20Cloud&style=for-the-badge&labelColor=666666&color=672779
44
"This badge shows the CoreMedia version this project is compatible with.
55
Please read the versioning section of the project to see what other CoreMedia versions are supported and how to find them."
66
)
@@ -9,6 +9,8 @@ Please read the versioning section of the project to see what other CoreMedia ve
99
If a project is inactive it means that the development has been discontinued and won't support future CoreMedia versions."
1010
)
1111

12+
![Build](https://github.com/CoreMedia/coremedia-headless-client-react-pwa/actions/workflows/ci.yml/badge.svg?branch=main)
13+
1214
# Spark - The React Example Application
1315

1416
![Picture of Spark](docs/img/spark.jpg)

apps/spark/.env.example

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ VITE_FQDN=https://<headless-stitching-server.example>
1919
# Enable automatic persistent queries (APQ)
2020
#VITE_APQ_ENABLED=false
2121

22-
# Enable campaigns in the app
23-
#VITE_CAMPAIGN_ENABLED=true
24-
2522
# Set loglevel, default is "warn" for prod and "info" for dev.
2623
#VITE_LOGLEVEL=debug
2724

apps/spark/.eslintrc.cjs

Lines changed: 0 additions & 40 deletions
This file was deleted.

apps/spark/bin/set-version.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const version = require("../../../package.json").version;
99
require('dotenv').config();
1010

1111
const versionFile = {
12-
"version": version + ((process.env.VITE_CAMPAIGN_ENABLED === "true") ? " with campaigns" : "")
12+
"version": version
1313
}
1414

1515
fs.mkdir(path.join(__dirname, "../src/__generated__"), { recursive: true}, () => {

apps/spark/eslint.config.mjs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import eslint from '@eslint/js';
2+
import { defineConfig, globalIgnores } from 'eslint/config';
3+
import typescriptEslint from 'typescript-eslint';
4+
import typescriptParser from "@typescript-eslint/parser";
5+
import importPlugin from "eslint-plugin-import";
6+
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
7+
8+
export default defineConfig([
9+
globalIgnores(['dist']),
10+
{
11+
files: ['**/*.{ts,tsx}'],
12+
extends: [
13+
eslint.configs.recommended,
14+
importPlugin.flatConfigs.recommended,
15+
typescriptEslint.configs.recommended,
16+
importPlugin.flatConfigs.typescript,
17+
eslintPluginPrettierRecommended
18+
],
19+
languageOptions: {
20+
parser: typescriptParser,
21+
ecmaVersion: 'latest',
22+
parserOptions: {
23+
ecmaFeatures: {
24+
jsx: true,
25+
},
26+
},
27+
},
28+
settings: {
29+
react: {
30+
version: "detect",
31+
},
32+
},
33+
rules: {
34+
"import/order": ["error"],
35+
"import/newline-after-import": ["error"],
36+
"no-case-declarations": "off",
37+
"no-constant-binary-expression": "off",
38+
"no-empty-pattern": "off",
39+
"no-unused-vars": ["off", { "argsIgnorePattern": "_" }],
40+
"prettier/prettier": ["error", {"trailingComma": "es5"}],
41+
"@typescript-eslint/no-explicit-any" : "off",
42+
"@typescript-eslint/explicit-module-boundary-types": "off",
43+
"@typescript-eslint/no-unused-expressions": "off",
44+
"@typescript-eslint/no-unused-vars": ["off", { "argsIgnorePattern": "_" }]
45+
},
46+
}
47+
]);

apps/spark/package.json

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,71 +10,72 @@
1010
"build": "pnpm set-version && vite build",
1111
"set-version": "node bin/set-version.cjs",
1212
"test": "vitest run",
13-
"lint": "eslint --fix \"src/**/*.+(ts|tsx)\"",
14-
"lint:ci": "eslint \"src/**/*.+(ts|tsx)\"",
13+
"lint": "eslint",
1514
"docs": "typedoc src",
1615
"download:crops": "node bin/download-crops.cjs",
1716
"storybook": "storybook dev -p 6006",
1817
"build-storybook": "storybook build -o dist/storybook"
1918
},
2019
"dependencies": {
21-
"@apollo/client": "^3.13.8",
20+
"@apollo/client": "catalog:",
2221
"@coremedia-labs/graphql-layer": "workspace:^",
2322
"@coremedia-labs/preview-integration": "workspace:^",
2423
"@coremedia-labs/view-dispatcher": "workspace:^",
25-
"@js-joda/core": "^5.6.5",
26-
"@js-joda/timezone": "^2.22.0",
27-
"country-flag-icons": "^1.5.19",
28-
"crypto-hash": "^2.0.1",
29-
"graphql": "^16.11.0",
30-
"i18next": "^23.16.8",
31-
"i18next-browser-languagedetector": "^7.2.2",
32-
"i18next-http-backend": "^2.7.3",
33-
"loglevel": "^1.9.2",
34-
"query-string": "^7.1.3",
35-
"react": "^17.0.2",
36-
"react-dom": "^17.0.2",
37-
"react-helmet-async": "^2.0.5",
38-
"react-i18next": "^11.18.6",
39-
"react-is": "^18.3.1",
40-
"react-player": "^2.16.0",
41-
"react-responsive": "^9.0.2",
42-
"react-router-dom": "^5.3.4",
43-
"react-router-hash-link": "^2.4.3",
44-
"react-slick": "^0.30.3",
45-
"require-from-string": "^2.0.2",
46-
"slick-carousel": "^1.8.1",
47-
"styled-components": "^5.3.11"
24+
"@js-joda/core": "catalog:",
25+
"@js-joda/timezone": "catalog:",
26+
"country-flag-icons": "catalog:",
27+
"crypto-hash": "catalog:",
28+
"graphql": "catalog:",
29+
"i18next": "catalog:",
30+
"i18next-browser-languagedetector": "catalog:",
31+
"i18next-http-backend": "catalog:",
32+
"loglevel": "catalog:",
33+
"query-string": "catalog:",
34+
"react": "catalog:",
35+
"react-dom": "catalog:",
36+
"react-helmet-async": "catalog:",
37+
"react-i18next": "catalog:",
38+
"react-is": "catalog:",
39+
"react-player": "catalog:",
40+
"react-responsive": "catalog:",
41+
"react-router-dom": "catalog:",
42+
"react-router-hash-link": "catalog:",
43+
"react-slick": "catalog:",
44+
"require-from-string": "catalog:",
45+
"slick-carousel": "catalog:",
46+
"styled-components": "catalog:"
4847
},
4948
"devDependencies": {
50-
"@chromatic-com/storybook": "^4.0.1",
51-
"@storybook/addon-docs": "^9.0.15",
52-
"@storybook/addon-links": "^9.0.15",
53-
"@storybook/react-vite": "^9.0.15",
54-
"@types/node": "^22.15.34",
55-
"@types/react": "^17.0.87",
56-
"@types/react-dom": "^17.0.26",
57-
"@types/react-router-dom": "^5.3.3",
58-
"@types/react-router-hash-link": "^2.4.9",
59-
"@types/react-slick": "^0.23.13",
60-
"@types/styled-components": "^5.1.34",
61-
"@typescript-eslint/eslint-plugin": "^7.18.0",
62-
"@typescript-eslint/parser": "^7.18.0",
63-
"@vitejs/plugin-react-swc": "^3.10.2",
64-
"dotenv": "^16.6.1",
65-
"eslint": "^8.57.1",
66-
"eslint-config-prettier": "^9.1.0",
67-
"eslint-import-resolver-typescript": "^3.10.1",
68-
"eslint-plugin-import": "^2.32.0",
69-
"eslint-plugin-prettier": "^5.5.1",
70-
"eslint-plugin-react": "^7.37.5",
71-
"eslint-plugin-storybook": "^9.0.15",
72-
"prettier": "^3.6.2",
73-
"storybook": "^9.0.15",
74-
"typedoc": "^0.28.7",
75-
"typescript": "~5.2.2",
76-
"vite": "^7.0.0",
77-
"vitest": "^3.2.4"
49+
"@chromatic-com/storybook": "catalog:",
50+
"@eslint/js": "catalog:",
51+
"@storybook/addon-docs": "catalog:",
52+
"@storybook/addon-links": "catalog:",
53+
"@storybook/react-vite": "catalog:",
54+
"@types/node": "catalog:",
55+
"@types/react": "catalog:",
56+
"@types/react-dom": "catalog:",
57+
"@types/react-router-dom": "catalog:",
58+
"@types/react-router-hash-link": "catalog:",
59+
"@types/react-slick": "catalog:",
60+
"@types/styled-components": "catalog:",
61+
"@typescript-eslint/parser": "catalog:",
62+
"@vitejs/plugin-react-swc": "catalog:",
63+
"dotenv": "catalog:",
64+
"eslint": "catalog:",
65+
"eslint-config-prettier": "catalog:",
66+
"eslint-import-resolver-typescript": "catalog:",
67+
"eslint-plugin-import": "catalog:",
68+
"eslint-plugin-prettier": "catalog:",
69+
"eslint-plugin-react": "catalog:",
70+
"eslint-plugin-react-hooks": "catalog:",
71+
"eslint-plugin-storybook": "catalog:",
72+
"prettier": "catalog:",
73+
"storybook": "catalog:",
74+
"typedoc": "catalog:",
75+
"typescript": "catalog:",
76+
"typescript-eslint": "catalog:",
77+
"vite": "catalog:",
78+
"vitest": "catalog:"
7879
},
7980
"browserslist": {
8081
"production": [

apps/spark/src/components/App/App.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import CartContextProvider from "../../context/CartContext";
88
import { getRootSegment, isAPQEnabled, setLogLevel } from "../../utils/App/App";
99
import PreviewPage from "../../pages/PreviewPage";
1010
import { initializeApollo } from "../../utils/App/Apollo";
11-
import { getPreviewCampaignId, getPreviewDate, isPreview } from "../../utils/Preview/Preview";
11+
import { getPreviewDate, isPreview } from "../../utils/Preview/Preview";
1212
import { PreviewContextProvider } from "../../context/PreviewContextProvider";
1313
import SearchStateContextProvider from "../../context/SearchStateContext";
1414
import CommercePreviewPage from "../../pages/CommercePreviewPage";
@@ -34,13 +34,12 @@ const App: FC = () => {
3434
const location = useLocation();
3535
const rootSegment = getRootSegment(location.pathname) || "corporate";
3636
const previewDate = getPreviewDate(location.search);
37-
const previewCampaignId = getPreviewCampaignId(location.search);
3837
const urlSearchParams = useMemo(() => new URLSearchParams(location.search), [location.search]);
3938
const apolloClient = initializeApollo(previewDate, isAPQEnabled());
4039

4140
return (
4241
<ApolloProvider client={apolloClient}>
43-
<PreviewContextProvider previewDate={previewDate} previewCampaignId={previewCampaignId}>
42+
<PreviewContextProvider previewDate={previewDate}>
4443
<ThemeProvider theme={theme}>
4544
<GlobalStyle />
4645
<SiteContextProvider rootSegment={rootSegment} currentNavigation={location.pathname}>

0 commit comments

Comments
 (0)