From 863ba8c056ef185df7f03de8e35230a68280180c Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Mon, 10 Feb 2025 22:29:51 +0100 Subject: [PATCH 1/5] Fix `@symfony/ux-*-map` dev dependency, use `--topological-dev` to ensure `build` and `test` scripts respect workspaces topoligy --- package.json | 4 ++-- src/Map/src/Bridge/Google/assets/package.json | 1 + src/Map/src/Bridge/Leaflet/assets/package.json | 1 + yarn.lock | 4 +++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 6f0b53732a6..8c51e7df449 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "src/*/src/Bridge/*/assets" ], "scripts": { - "build": "yarn workspaces foreach -Apt run build", - "test": "yarn workspaces foreach -Apt run test", + "build": "yarn workspaces foreach -Ap --topological-dev run build", + "test": "yarn workspaces foreach -Ap --topological-dev run test", "check": "biome check", "ci": "biome ci" }, diff --git a/src/Map/src/Bridge/Google/assets/package.json b/src/Map/src/Bridge/Google/assets/package.json index 300a21fd95f..979556d0152 100644 --- a/src/Map/src/Bridge/Google/assets/package.json +++ b/src/Map/src/Bridge/Google/assets/package.json @@ -40,6 +40,7 @@ "devDependencies": { "@googlemaps/js-api-loader": "^1.16.6", "@hotwired/stimulus": "^3.0.0", + "@symfony/ux-map": "workspace:*", "@types/google.maps": "^3.55.9" } } diff --git a/src/Map/src/Bridge/Leaflet/assets/package.json b/src/Map/src/Bridge/Leaflet/assets/package.json index 8145f0fb22d..d811f1c930c 100644 --- a/src/Map/src/Bridge/Leaflet/assets/package.json +++ b/src/Map/src/Bridge/Leaflet/assets/package.json @@ -39,6 +39,7 @@ }, "devDependencies": { "@hotwired/stimulus": "^3.0.0", + "@symfony/ux-map": "workspace:*", "@types/leaflet": "^1.9.12", "leaflet": "^1.9.4" } diff --git a/yarn.lock b/yarn.lock index 5aeb6d659b4..94456614229 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2888,6 +2888,7 @@ __metadata: dependencies: "@googlemaps/js-api-loader": "npm:^1.16.6" "@hotwired/stimulus": "npm:^3.0.0" + "@symfony/ux-map": "workspace:*" "@types/google.maps": "npm:^3.55.9" peerDependencies: "@googlemaps/js-api-loader": ^1.16.6 @@ -2913,6 +2914,7 @@ __metadata: resolution: "@symfony/ux-leaflet-map@workspace:src/Map/src/Bridge/Leaflet/assets" dependencies: "@hotwired/stimulus": "npm:^3.0.0" + "@symfony/ux-map": "workspace:*" "@types/leaflet": "npm:^1.9.12" leaflet: "npm:^1.9.4" peerDependencies: @@ -2939,7 +2941,7 @@ __metadata: languageName: unknown linkType: soft -"@symfony/ux-map@workspace:src/Map/assets": +"@symfony/ux-map@workspace:*, @symfony/ux-map@workspace:src/Map/assets": version: 0.0.0-use.local resolution: "@symfony/ux-map@workspace:src/Map/assets" dependencies: From 795f2adc5cba86332ad2460a44cd1be7f00bbcf2 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Mon, 10 Feb 2025 22:32:27 +0100 Subject: [PATCH 2/5] [Turbo] Install missing `@hotwired/turbo` definition types --- src/Turbo/assets/package.json | 3 ++- yarn.lock | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Turbo/assets/package.json b/src/Turbo/assets/package.json index 931be09d363..6b80173edb1 100644 --- a/src/Turbo/assets/package.json +++ b/src/Turbo/assets/package.json @@ -38,6 +38,7 @@ }, "devDependencies": { "@hotwired/stimulus": "^3.0.0", - "@hotwired/turbo": "^7.1.0 || ^8.0" + "@hotwired/turbo": "^7.1.0 || ^8.0", + "@types/hotwired__turbo": "^8.0.4" } } diff --git a/yarn.lock b/yarn.lock index 94456614229..29118f6c688 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3042,6 +3042,7 @@ __metadata: dependencies: "@hotwired/stimulus": "npm:^3.0.0" "@hotwired/turbo": "npm:^7.1.0 || ^8.0" + "@types/hotwired__turbo": "npm:^8.0.4" peerDependencies: "@hotwired/stimulus": ^3.0.0 "@hotwired/turbo": ^7.1.1 || ^8.0 @@ -3280,6 +3281,13 @@ __metadata: languageName: node linkType: hard +"@types/hotwired__turbo@npm:^8.0.4": + version: 8.0.4 + resolution: "@types/hotwired__turbo@npm:8.0.4" + checksum: 10c0/87fb69ea0dab21fd2a6e3e6d18cdaf679e3d7c8ea1f6f2b59d05c24a96cf3faf80a4c0ce5f57161afea9b61f2cc542f9e33cbdc6475fc4003d79516a94cedb5c + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" From 07b507898da9ace2632ed76c8361b85cb81b08a1 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Mon, 10 Feb 2025 22:40:55 +0100 Subject: [PATCH 3/5] Stop packages build when TypeScript code is invalid --- bin/rollup.js | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/rollup.js b/bin/rollup.js index a75c3036143..e002bd414b4 100644 --- a/bin/rollup.js +++ b/bin/rollup.js @@ -108,6 +108,7 @@ function getRollupConfiguration({ packageRoot, inputFiles }) { typescript({ filterRoot: '.', tsconfig: path.join(__dirname, '..', 'tsconfig.json'), + noEmitOnError: true, include: [ 'src/**/*.ts', // TODO: Remove for the next major release From 975628bb7fbf64b977825eec38912f72e2c5aa24 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Mon, 10 Feb 2025 23:26:46 +0100 Subject: [PATCH 4/5] [Translator] Fix types definition, allow `Date` as parameter type --- src/Translator/assets/dist/formatters/formatter.d.ts | 2 +- src/Translator/assets/dist/formatters/intl-formatter.d.ts | 2 +- src/Translator/assets/dist/utils.d.ts | 2 +- src/Translator/assets/src/formatters/formatter.ts | 2 +- src/Translator/assets/src/formatters/intl-formatter.ts | 4 ++-- src/Translator/assets/src/utils.ts | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Translator/assets/dist/formatters/formatter.d.ts b/src/Translator/assets/dist/formatters/formatter.d.ts index c3403c041a5..e55715f0960 100644 --- a/src/Translator/assets/dist/formatters/formatter.d.ts +++ b/src/Translator/assets/dist/formatters/formatter.d.ts @@ -1 +1 @@ -export declare function format(id: string, parameters: Record, locale: string): string; +export declare function format(id: string, parameters: Record, locale: string): string; diff --git a/src/Translator/assets/dist/formatters/intl-formatter.d.ts b/src/Translator/assets/dist/formatters/intl-formatter.d.ts index e22d7481ac6..9892f4bd0d4 100644 --- a/src/Translator/assets/dist/formatters/intl-formatter.d.ts +++ b/src/Translator/assets/dist/formatters/intl-formatter.d.ts @@ -1 +1 @@ -export declare function formatIntl(id: string, parameters: Record, locale: string): string; +export declare function formatIntl(id: string, parameters: Record, locale: string): string; diff --git a/src/Translator/assets/dist/utils.d.ts b/src/Translator/assets/dist/utils.d.ts index b6621dfd66c..fd3ca78fbeb 100644 --- a/src/Translator/assets/dist/utils.d.ts +++ b/src/Translator/assets/dist/utils.d.ts @@ -1 +1 @@ -export declare function strtr(string: string, replacePairs: Record): string; +export declare function strtr(string: string, replacePairs: Record): string; diff --git a/src/Translator/assets/src/formatters/formatter.ts b/src/Translator/assets/src/formatters/formatter.ts index 80d99b828a6..58e18ce1111 100644 --- a/src/Translator/assets/src/formatters/formatter.ts +++ b/src/Translator/assets/src/formatters/formatter.ts @@ -47,7 +47,7 @@ import { strtr } from '../utils'; * @param parameters An array of parameters for the message * @param locale The locale */ -export function format(id: string, parameters: Record, locale: string): string { +export function format(id: string, parameters: Record, locale: string): string { if (null === id || '' === id) { return ''; } diff --git a/src/Translator/assets/src/formatters/intl-formatter.ts b/src/Translator/assets/src/formatters/intl-formatter.ts index 07bc5a60795..a092e54f811 100644 --- a/src/Translator/assets/src/formatters/intl-formatter.ts +++ b/src/Translator/assets/src/formatters/intl-formatter.ts @@ -7,7 +7,7 @@ import { IntlMessageFormat } from 'intl-messageformat'; * @param parameters An array of parameters for the message * @param locale The locale */ -export function formatIntl(id: string, parameters: Record, locale: string): string { +export function formatIntl(id: string, parameters: Record, locale: string): string { if (id === '') { return ''; } @@ -23,5 +23,5 @@ export function formatIntl(id: string, parameters: Record): string { +export function strtr(string: string, replacePairs: Record): string { const regex: Array = Object.entries(replacePairs).map(([from]) => { return from.replace(/([-[\]{}()*+?.\\^$|#,])/g, '\\$1'); }); From ddbabd6e32b15d0107921e4fe12c6aaea276ef22 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Tue, 11 Feb 2025 00:29:05 +0100 Subject: [PATCH 5/5] [Map] Fix TypeScript errors --- src/Map/src/Bridge/Google/assets/dist/map_controller.js | 3 +++ src/Map/src/Bridge/Google/assets/src/map_controller.ts | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Map/src/Bridge/Google/assets/dist/map_controller.js b/src/Map/src/Bridge/Google/assets/dist/map_controller.js index 412db2c1210..d9c8f1cc190 100644 --- a/src/Map/src/Bridge/Google/assets/dist/map_controller.js +++ b/src/Map/src/Bridge/Google/assets/dist/map_controller.js @@ -113,6 +113,9 @@ class map_controller extends default_1 { libraries = ['core', ...libraries.filter((library) => library !== 'core')]; const librariesImplementations = await Promise.all(libraries.map((library) => loader.importLibrary(library))); librariesImplementations.map((libraryImplementation, index) => { + if (typeof libraryImplementation !== 'object' || libraryImplementation === null) { + return; + } const library = libraries[index]; if (['marker', 'places', 'geometry', 'journeySharing', 'drawing', 'visualization'].includes(library)) { _google.maps[library] = libraryImplementation; diff --git a/src/Map/src/Bridge/Google/assets/src/map_controller.ts b/src/Map/src/Bridge/Google/assets/src/map_controller.ts index ff2df70a624..bcf5da7e9c6 100644 --- a/src/Map/src/Bridge/Google/assets/src/map_controller.ts +++ b/src/Map/src/Bridge/Google/assets/src/map_controller.ts @@ -71,11 +71,16 @@ export default class extends AbstractMapController< libraries.map((library) => loader.importLibrary(library)) ); librariesImplementations.map((libraryImplementation, index) => { + if (typeof libraryImplementation !== 'object' || libraryImplementation === null) { + return; + } + const library = libraries[index]; // The following libraries are in a sub-namespace if (['marker', 'places', 'geometry', 'journeySharing', 'drawing', 'visualization'].includes(library)) { - _google.maps[library] = libraryImplementation; + // @ts-ignore + _google.maps[library] = libraryImplementation as any; } else { _google.maps = { ..._google.maps, ...libraryImplementation }; }