From b2d605f4bdb7c46164edeb90170d1a8d7038b67c Mon Sep 17 00:00:00 2001 From: raphaelblum <44967610+raphaelblum@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:35:42 +0200 Subject: [PATCH 1/8] Demo: Upgrade to TypeScript 5 (#2343) --- demo/admin/package.json | 2 +- demo/api/package.json | 10 +- demo/site-pages/package.json | 4 +- demo/site/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 548 +++++++++++++++++++++++++---------- 6 files changed, 400 insertions(+), 170 deletions(-) diff --git a/demo/admin/package.json b/demo/admin/package.json index dfaae0d51e..a20b74655d 100644 --- a/demo/admin/package.json +++ b/demo/admin/package.json @@ -127,7 +127,7 @@ "pascal-case": "^3.0.0", "prettier": "^2.0.0", "ts-node": "^10.0.0", - "typescript": "^4.0.0", + "typescript": "~5.1.0", "vite": "^5.1.6", "vite-plugin-html": "^3.2.2" } diff --git a/demo/api/package.json b/demo/api/package.json index 6c4dbb0240..845564b434 100644 --- a/demo/api/package.json +++ b/demo/api/package.json @@ -35,12 +35,12 @@ "@mikro-orm/nestjs": "^5.2.3", "@mikro-orm/postgresql": "^5.9.8", "@nestjs/apollo": "^10.0.0", - "@nestjs/common": "^9.0.0", + "@nestjs/common": "^9.4.3", "@nestjs/config": "^2.0.0", - "@nestjs/core": "^9.0.0", + "@nestjs/core": "^9.4.3", "@nestjs/graphql": "^10.0.0", "@nestjs/passport": "^9.0.0", - "@nestjs/platform-express": "^9.0.0", + "@nestjs/platform-express": "^9.4.3", "@opentelemetry/api": "^1.4.0", "@opentelemetry/auto-instrumentations-node": "^0.36.1", "@opentelemetry/exporter-trace-otlp-http": "^0.35.1", @@ -80,7 +80,7 @@ "@comet/eslint-config": "workspace:*", "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", - "@nestjs/testing": "^9.0.0", + "@nestjs/testing": "^9.4.3", "@types/async": "^3.0.0", "@types/compression": "^1.0.0", "@types/cookie-parser": "^1.0.0", @@ -101,7 +101,7 @@ "ts-loader": "^8.0.0", "ts-node": "^10.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "^4.0.0" + "typescript": "~5.1.0" }, "mikro-orm": { "useTsNode": true, diff --git a/demo/site-pages/package.json b/demo/site-pages/package.json index ab435cbf16..34334841f8 100644 --- a/demo/site-pages/package.json +++ b/demo/site-pages/package.json @@ -75,6 +75,6 @@ "prettier": "^2.0.0", "rimraf": "^3.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "^4.0.0" + "typescript": "~5.1.0" } -} +} \ No newline at end of file diff --git a/demo/site/package.json b/demo/site/package.json index 88a446587a..bb71be7561 100644 --- a/demo/site/package.json +++ b/demo/site/package.json @@ -70,6 +70,6 @@ "prettier": "^2.0.0", "rimraf": "^3.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "^4.0.0" + "typescript": "~5.1.0" } } diff --git a/package.json b/package.json index ccb4312c18..f4456f6f3e 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "lint-staged": "^12.3.7", "prettier": "^2.0.0", "rimraf": "^3.0.2", - "typescript": "^4.2.2", + "typescript": "~5.1.0", "wait-on": "^5.3.0" }, "packageManager": "pnpm@8.15.5", @@ -80,4 +80,4 @@ } } } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 953dabd715..b0c2b2075a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 typescript: - specifier: ^4.2.2 - version: 4.9.4 + specifier: ~5.1.0 + version: 5.1.6 wait-on: specifier: ^5.3.0 version: 5.3.0 @@ -202,7 +202,7 @@ importers: version: 8.6.12(react@17.0.2) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@4.9.4) + version: 6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@5.1.6) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -257,7 +257,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) + version: 2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) '@graphql-codegen/fragment-matcher': specifier: ^2.0.0 version: 2.0.1(graphql@15.8.0) @@ -347,7 +347,7 @@ importers: version: 8.32.0 eslint-plugin-graphql: specifier: ^4.0.0 - version: 4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4) + version: 4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6) kill-port: specifier: ^2.0.1 version: 2.0.1 @@ -362,10 +362,10 @@ importers: version: 2.8.3 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) typescript: - specifier: ^4.0.0 - version: 4.9.4 + specifier: ~5.1.0 + version: 5.1.6 vite: specifier: ^5.1.6 version: 5.1.6(@types/node@18.15.3) @@ -407,31 +407,31 @@ importers: version: 5.9.8(@mikro-orm/core@5.9.8) '@mikro-orm/nestjs': specifier: ^5.2.3 - version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@mikro-orm/postgresql': specifier: ^5.9.8 version: 5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8) '@nestjs/apollo': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0) + version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0) '@nestjs/common': - specifier: ^9.0.0 - version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: ^9.4.3 + version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/config': specifier: ^2.0.0 - version: 2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 2.2.0(@nestjs/common@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/core': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/graphql': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) '@nestjs/passport': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.2.1)(passport@0.4.1) + version: 9.0.0(@nestjs/common@9.4.3)(passport@0.4.1) '@nestjs/platform-express': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@opentelemetry/api': specifier: ^1.4.0 version: 1.4.0 @@ -506,7 +506,7 @@ importers: version: 1.4.4 nestjs-console: specifier: ^8.0.0 - version: 8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) node-fetch: specifier: ^2.0.0 version: 2.6.8 @@ -543,10 +543,10 @@ importers: version: 9.1.9 '@nestjs/schematics': specifier: ^9.0.0 - version: 9.0.4(chokidar@3.5.3)(typescript@4.9.4) + version: 9.2.0(typescript@5.1.6) '@nestjs/testing': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) '@types/async': specifier: ^3.0.0 version: 3.2.16 @@ -600,16 +600,16 @@ importers: version: 2.8.3 ts-loader: specifier: ^8.0.0 - version: 8.4.0(typescript@4.9.4)(webpack@5.75.0) + version: 8.4.0(typescript@5.1.6)(webpack@5.75.0) ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) tsconfig-paths: specifier: ^3.0.0 version: 3.14.1 typescript: - specifier: ^4.0.0 - version: 4.9.4 + specifier: ~5.1.0 + version: 5.1.6 demo/site: dependencies: @@ -666,7 +666,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4) + version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -684,7 +684,7 @@ importers: version: 6.8.4 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) devDependencies: '@babel/core': specifier: ^7.0.0 @@ -700,7 +700,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) + version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) '@graphql-codegen/named-operations-object': specifier: ^2.0.0 version: 2.3.1(graphql-tag@2.12.6)(graphql@15.8.0) @@ -759,8 +759,8 @@ importers: specifier: ^3.0.0 version: 3.14.1 typescript: - specifier: ^4.0.0 - version: 4.9.4 + specifier: ~5.1.0 + version: 5.1.6 demo/site-pages: dependencies: @@ -820,7 +820,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4) + version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -838,7 +838,7 @@ importers: version: 6.8.4 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) devDependencies: '@babel/core': specifier: ^7.0.0 @@ -854,7 +854,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) + version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) '@graphql-codegen/named-operations-object': specifier: ^2.0.0 version: 2.3.1(graphql-tag@2.12.6)(graphql@15.8.0) @@ -910,8 +910,8 @@ importers: specifier: ^3.0.0 version: 3.15.0 typescript: - specifier: ^4.0.0 - version: 4.9.4 + specifier: ~5.1.0 + version: 5.1.6 docs: dependencies: @@ -2202,7 +2202,7 @@ importers: version: link:../../eslint-config '@nestjs/common': specifier: ^9.0.0 - version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@types/draft-js': specifier: ^0.11.10 version: 0.11.10 @@ -2268,19 +2268,19 @@ importers: version: 4.3.6 '@golevelup/nestjs-discovery': specifier: ^3.0.0 - version: 3.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 3.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@hapi/accept': specifier: ^5.0.2 version: 5.0.2 '@nestjs/jwt': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.2.1) + version: 9.0.0(@nestjs/common@9.4.3) '@nestjs/mapped-types': specifier: ^1.2.2 - version: 1.2.2(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) + version: 1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) '@nestjs/passport': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.2.1)(passport@0.6.0) + version: 9.0.0(@nestjs/common@9.4.3)(passport@0.6.0) '@opentelemetry/api': specifier: ^1.4.0 version: 1.4.0 @@ -2416,25 +2416,25 @@ importers: version: 5.9.8(@mikro-orm/core@5.9.8) '@mikro-orm/nestjs': specifier: ^5.2.3 - version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@mikro-orm/postgresql': specifier: ^5.9.8 version: 5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8) '@nestjs/common': specifier: ^9.0.0 - version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/core': specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/graphql': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) '@nestjs/platform-express': specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@nestjs/testing': specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1) + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) '@types/express': specifier: ^4.0.0 version: 4.17.16 @@ -2503,7 +2503,7 @@ importers: version: 15.0.0 nestjs-console: specifier: ^8.0.0 - version: 8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + version: 8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) npm-run-all: specifier: ^4.0.0 version: 4.1.5 @@ -3145,6 +3145,23 @@ packages: source-map: 0.7.4 dev: true + /@angular-devkit/core@16.0.1(chokidar@3.5.3): + resolution: {integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1 + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + /@angular-devkit/schematics-cli@15.0.4(chokidar@3.5.3): resolution: {integrity: sha512-rEzkpjiQcJqCgbZ1Ns8jn1BL4724jcj+YFS7Qw5d4v6yQYA8iSLz12HDTH0TiNEv7u5S55fYuRz2QreI0QUT8A==} engines: {node: ^14.20.0 || ^16.13.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -3173,6 +3190,19 @@ packages: - chokidar dev: true + /@angular-devkit/schematics@16.0.1(chokidar@3.5.3): + resolution: {integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.0 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + /@apollo/client@3.7.4(graphql@15.8.0)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-bgiCKRmLSBImX4JRrw8NjqGo0AQE/mowCdHX1PJp2r5zIXrJx0UeaAYmx1qJY69Oz/KR7SKlLt4xK+bOP1jx7A==} peerDependencies: @@ -4128,7 +4158,7 @@ packages: '@azure/logger': 1.1.2 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - supports-color dev: false @@ -8238,7 +8268,7 @@ packages: /@emotion/weak-memoize@0.3.0: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} - /@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2(cosmiconfig@7.0.0)(typescript@4.9.4): + /@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2(cosmiconfig@7.0.0)(typescript@5.1.6): resolution: {integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -8247,7 +8277,7 @@ packages: cosmiconfig: 7.0.0 lodash.get: 4.4.2 make-error: 1.3.6 - ts-node: 9.1.1(typescript@4.9.4) + ts-node: 9.1.1(typescript@5.1.6) tslib: 2.6.3 transitivePeerDependencies: - typescript @@ -8660,6 +8690,24 @@ packages: tslib: 2.6.3 typescript: 4.9.4 + /@formatjs/intl@2.10.4(typescript@5.1.6): + resolution: {integrity: sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.8 + '@formatjs/intl-displaynames': 6.6.8 + '@formatjs/intl-listformat': 7.5.7 + intl-messageformat: 10.5.14 + tslib: 2.6.3 + typescript: 5.1.6 + dev: false + /@formatjs/ts-transformer@3.11.5: resolution: {integrity: sha512-cAmvKzgPqdetAr/RsxoXYhfNhMf5tERlXzJTsQw+j6tddPwIAbihACQx6KaajyJJ4aNssiziWNmcaHtjTqrrVw==} peerDependencies: @@ -8743,14 +8791,14 @@ packages: xcase: 2.0.1 dev: true - /@golevelup/nestjs-discovery@3.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): + /@golevelup/nestjs-discovery@3.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): resolution: {integrity: sha512-kK/GBYVxb8XGlwXgtCWAkPOwDVh7dXyLRaoZuk2bBYntV3DZkYGAIbLKOFTGz+MGz71vEeQ9bGLP7cHKtCee4g==} peerDependencies: '@nestjs/common': ^9.x '@nestjs/core': ^9.x dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) lodash: 4.17.21 dev: false @@ -8834,7 +8882,62 @@ packages: - utf-8-validate dev: true - /@graphql-codegen/cli@2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4): + /@graphql-codegen/cli@2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6): + resolution: {integrity: sha512-MBbdzIIaNZ8BTlFXG00toxU5rIV7Ltf2myaze88HpI5YPVfVJKlfccE6l0/Gv+nLv88CIM/PZrnFLdVtlBmrZw==} + hasBin: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + ts-node: '>=10' + dependencies: + '@babel/generator': 7.20.7 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@graphql-codegen/core': 2.6.8(graphql@15.8.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@15.8.0) + '@graphql-tools/apollo-engine-loader': 7.3.22(graphql@15.8.0) + '@graphql-tools/code-file-loader': 7.3.16(@babel/core@7.20.12)(graphql@15.8.0) + '@graphql-tools/git-loader': 7.2.16(@babel/core@7.20.12)(graphql@15.8.0) + '@graphql-tools/github-loader': 7.3.23(@babel/core@7.20.12)(graphql@15.8.0) + '@graphql-tools/graphql-file-loader': 7.5.14(graphql@15.8.0) + '@graphql-tools/json-file-loader': 7.4.15(graphql@15.8.0) + '@graphql-tools/load': 7.8.0(graphql@15.8.0) + '@graphql-tools/prisma-loader': 7.2.54(@types/node@18.15.3)(graphql@15.8.0) + '@graphql-tools/url-loader': 7.17.3(@types/node@18.15.3)(graphql@15.8.0) + '@graphql-tools/utils': 9.1.4(graphql@15.8.0) + '@whatwg-node/fetch': 0.6.2 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 7.1.0 + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 15.8.0 + graphql-config: 4.4.0(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(cosmiconfig-typescript-loader@4.3.0)(graphql@15.8.0) + inquirer: 8.2.5 + is-glob: 4.0.3 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + shell-quote: 1.7.4 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + tslib: 2.4.1 + yaml: 1.10.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - enquirer + - supports-color + - typescript + - utf-8-validate + dev: true + + /@graphql-codegen/cli@2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6): resolution: {integrity: sha512-MBbdzIIaNZ8BTlFXG00toxU5rIV7Ltf2myaze88HpI5YPVfVJKlfccE6l0/Gv+nLv88CIM/PZrnFLdVtlBmrZw==} hasBin: true peerDependencies: @@ -8860,7 +8963,7 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 15.8.0 @@ -8873,7 +8976,7 @@ packages: shell-quote: 1.7.4 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) tslib: 2.4.1 yaml: 1.10.2 yargs: 17.6.2 @@ -9101,7 +9204,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 transitivePeerDependencies: - encoding dev: true @@ -9139,7 +9242,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9155,7 +9258,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9268,7 +9371,7 @@ packages: graphql: 15.8.0 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9285,7 +9388,7 @@ packages: graphql: 15.8.0 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9302,7 +9405,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 transitivePeerDependencies: - '@babel/core' - encoding @@ -9319,7 +9422,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 transitivePeerDependencies: - '@babel/core' - encoding @@ -9346,7 +9449,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 dev: true @@ -9435,7 +9538,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 unixify: 1.0.0 dev: true @@ -9465,7 +9568,7 @@ packages: '@graphql-tools/utils': 8.12.0(graphql@15.8.0) graphql: 15.8.0 p-limit: 3.1.0 - tslib: 2.4.1 + tslib: 2.6.3 dev: true /@graphql-tools/load@7.8.14(graphql@15.8.0): @@ -9581,7 +9684,7 @@ packages: jsonwebtoken: 9.0.0 lodash: 4.17.21 scuid: 1.1.0 - tslib: 2.4.1 + tslib: 2.6.3 yaml-ast-parser: 0.0.43 transitivePeerDependencies: - '@types/node' @@ -9721,7 +9824,7 @@ packages: '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 isomorphic-ws: 5.0.0(ws@8.12.0) - tslib: 2.4.1 + tslib: 2.6.3 value-or-promise: 1.0.12 ws: 8.12.0 transitivePeerDependencies: @@ -9757,7 +9860,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 dev: true /@graphql-tools/utils@8.9.0(graphql@15.8.0): @@ -9783,7 +9886,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.6.3 /@graphql-tools/utils@9.2.1(graphql@15.8.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} @@ -10302,6 +10405,10 @@ packages: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: false + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -10532,7 +10639,7 @@ packages: - supports-color - tedious - /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): + /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): resolution: {integrity: sha512-JMxaXrNXlo6j59D3LWMC1tEC1a5JanCtqdfv91JUH0sfVZh97SsjQ9K794BY3JWIUKSFyQwpnLxYZ0Ash/BlPA==} engines: {node: '>= 14.0.0'} peerDependencies: @@ -10541,8 +10648,8 @@ packages: '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: '@mikro-orm/core': 5.9.8(@mikro-orm/migrations@5.9.8)(@mikro-orm/postgresql@5.9.8) - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) /@mikro-orm/postgresql@5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8): resolution: {integrity: sha512-ALXHS9fb3B93RozuF8n3+gYZz/I+d8Swo/5hmcMbaQN4Zs8hhHOhmjfwIj83IWb1QBPYcBeIc2M8TCmhxXX//g==} @@ -10840,7 +10947,7 @@ packages: react: 17.0.2 dev: false - /@nestjs/apollo@10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0): + /@nestjs/apollo@10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0): resolution: {integrity: sha512-UQDgUgyJvrj53AcCzws6/854SVibAeyg+RGxMtb9+ENhd8snP6f7RS6mCaFY85UTAc6mo674NIUu9a/JyeYezw==} peerDependencies: '@apollo/gateway': ^0.44.1 || ^0.46.0 || ^0.48.0 || ^0.49.0 || ^0.50.0 || ^2.0.0 @@ -10861,9 +10968,9 @@ packages: apollo-server-fastify: optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/graphql': 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/graphql': 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) apollo-server-core: 3.11.1(graphql@15.8.0) apollo-server-express: 3.11.1(express@4.18.2)(graphql@15.8.0) graphql: 15.8.0 @@ -10880,7 +10987,7 @@ packages: '@angular-devkit/core': 15.0.4(chokidar@3.5.3) '@angular-devkit/schematics': 15.0.4(chokidar@3.5.3) '@angular-devkit/schematics-cli': 15.0.4(chokidar@3.5.3) - '@nestjs/schematics': 9.0.4(chokidar@3.5.3)(typescript@4.9.4) + '@nestjs/schematics': 9.2.0(chokidar@3.5.3)(typescript@4.9.4) chalk: 3.0.0 chokidar: 3.5.3 cli-table3: 0.6.3 @@ -10907,8 +11014,8 @@ packages: - webpack-cli dev: true - /@nestjs/common@9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-nZuo3oDsSSlC5mti/M2aCWTEIfHPGDXmBwWgPeCpRbrNz3IWd109rkajll+yxgidVjznAdBS9y00JkAVJblNYw==} + /@nestjs/common@9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==} peerDependencies: cache-manager: <=5 class-transformer: '*' @@ -10928,17 +11035,17 @@ packages: iterare: 1.2.1 reflect-metadata: 0.1.13 rxjs: 7.8.0 - tslib: 2.4.1 - uuid: 9.0.0 + tslib: 2.5.3 + uid: 2.0.2 - /@nestjs/config@2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0): + /@nestjs/config@2.2.0(@nestjs/common@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0): resolution: {integrity: sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 reflect-metadata: ^0.1.13 rxjs: ^6.0.0 || ^7.2.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) dotenv: 16.0.1 dotenv-expand: 8.0.3 lodash: 4.17.21 @@ -10947,8 +11054,8 @@ packages: uuid: 8.3.2 dev: false - /@nestjs/core@9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-a9GkXuu8uXgNgCVW+17iI8kLCltO+HwHpU2IhR+32JKnN2WEQ1YEWU4t3GJ2MNq44YkjIw9zrKvFkjJBlYrNbQ==} + /@nestjs/core@9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==} requiresBuild: true peerDependencies: '@nestjs/common': ^9.0.0 @@ -10965,21 +11072,20 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - object-hash: 3.0.0 path-to-regexp: 3.2.0 reflect-metadata: 0.1.13 rxjs: 7.8.0 - tslib: 2.4.1 - uuid: 9.0.0 + tslib: 2.5.3 + uid: 2.0.2 transitivePeerDependencies: - encoding - /@nestjs/graphql@10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0): + /@nestjs/graphql@10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0): resolution: {integrity: sha512-InWjG3dV8D/1iAHeAQD6tiDg3HyVNkUILTev3DU33Q0xpFzv+PqtKQR35a9xOncLY9ZS68kwkGB5wksfMyGjAg==} peerDependencies: '@apollo/subgraph': ^0.1.5 || ^0.3.0 || ^0.4.0 || ^2.0.0 @@ -11003,9 +11109,9 @@ packages: '@graphql-tools/merge': 8.3.12(graphql@15.8.0) '@graphql-tools/schema': 9.0.10(graphql@15.8.0) '@graphql-tools/utils': 9.1.1(graphql@15.8.0) - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/mapped-types': 1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/mapped-types': 1.2.0(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) chokidar: 3.5.3 class-transformer: 0.5.1 class-validator: 0.13.2 @@ -11025,17 +11131,17 @@ packages: - bufferutil - utf-8-validate - /@nestjs/jwt@9.0.0(@nestjs/common@9.2.1): + /@nestjs/jwt@9.0.0(@nestjs/common@9.4.3): resolution: {integrity: sha512-ZsXGY/wMYKzEhymw2+dxiwrHTRKIKrGszx6r2EjQqNLypdXMQu0QrujwZJ8k3+XQV4snmuJwwNakQoA2ILfq8w==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@types/jsonwebtoken': 8.5.8 jsonwebtoken: 8.5.1 dev: false - /@nestjs/mapped-types@1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@1.2.0(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-NTFwPZkQWsArQH8QSyFWGZvJ08gR+R4TofglqZoihn/vU+ktHEJjMqsIsADwb7XD97DhiD+TVv5ac+jG33BHrg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 @@ -11048,12 +11154,12 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) class-transformer: 0.5.1 class-validator: 0.13.2 reflect-metadata: 0.1.13 - /@nestjs/mapped-types@1.2.2(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 @@ -11066,56 +11172,55 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) class-transformer: 0.5.1 class-validator: 0.13.2 reflect-metadata: 0.1.13 dev: false - /@nestjs/passport@9.0.0(@nestjs/common@9.2.1)(passport@0.4.1): + /@nestjs/passport@9.0.0(@nestjs/common@9.4.3)(passport@0.4.1): resolution: {integrity: sha512-Gnh8n1wzFPOLSS/94X1sUP4IRAoXTgG4odl7/AO5h+uwscEGXxJFercrZfqdAwkWhqkKWbsntM3j5mRy/6ZQDA==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) passport: 0.4.1 dev: false - /@nestjs/passport@9.0.0(@nestjs/common@9.2.1)(passport@0.6.0): + /@nestjs/passport@9.0.0(@nestjs/common@9.4.3)(passport@0.6.0): resolution: {integrity: sha512-Gnh8n1wzFPOLSS/94X1sUP4IRAoXTgG4odl7/AO5h+uwscEGXxJFercrZfqdAwkWhqkKWbsntM3j5mRy/6ZQDA==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) passport: 0.6.0 dev: false - /@nestjs/platform-express@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): - resolution: {integrity: sha512-7PecaXt8lrdS1p6Vb1X/am3GGv+EO1VahyDzaEGOK6C0zwhc0VPfLtwihkjjfhS6BjpRIXXgviwEjONUvxVZnA==} + /@nestjs/platform-express@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + resolution: {integrity: sha512-FpdczWoRSC0zz2dNL9u2AQLXKXRVtq4HgHklAhbL59X0uy+mcxhlSThG7DHzDMkoSnuuHY8ojDVf7mDxk+GtCw==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) - body-parser: 1.20.1 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + body-parser: 1.20.2 cors: 2.8.5 express: 4.18.2 multer: 1.4.4-lts.1 - tslib: 2.4.1 + tslib: 2.5.3 transitivePeerDependencies: - supports-color - /@nestjs/schematics@9.0.4(chokidar@3.5.3)(typescript@4.9.4): - resolution: {integrity: sha512-egurCfAc4e5i1r2TmeAF0UrOKejFmT5oTdv4b7HcOVPupc3QGU7CbEfGleL3mkM5AjrixTQeMxU9bJ00ttAbGg==} + /@nestjs/schematics@9.2.0(chokidar@3.5.3)(typescript@4.9.4): + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} peerDependencies: - typescript: ^4.3.5 + typescript: '>=4.3.5' dependencies: - '@angular-devkit/core': 15.0.4(chokidar@3.5.3) - '@angular-devkit/schematics': 15.0.4(chokidar@3.5.3) - fs-extra: 11.1.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) jsonc-parser: 3.2.0 pluralize: 8.0.0 typescript: 4.9.4 @@ -11123,8 +11228,22 @@ packages: - chokidar dev: true - /@nestjs/testing@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1): - resolution: {integrity: sha512-lemXZdRSuqoZ87l0orCrS/c7gqwxeduIFOd21g9g2RUeQ4qlWPegbQDKASzbfC28klPyrgJLW4MNq7uv2JwV8w==} + /@nestjs/schematics@9.2.0(typescript@5.1.6): + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} + peerDependencies: + typescript: '>=4.3.5' + dependencies: + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 + pluralize: 8.0.0 + typescript: 5.1.6 + transitivePeerDependencies: + - chokidar + dev: true + + /@nestjs/testing@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3): + resolution: {integrity: sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 @@ -11136,10 +11255,10 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) - tslib: 2.4.1 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + tslib: 2.5.3 dev: true /@next/env@14.1.4: @@ -17539,6 +17658,25 @@ packages: transitivePeerDependencies: - supports-color + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /bonjour-service@1.1.0: resolution: {integrity: sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==} dependencies: @@ -18701,6 +18839,10 @@ packages: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -18836,6 +18978,21 @@ packages: typescript: 4.9.4 dev: true + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6): + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=3' + dependencies: + '@types/node': 18.15.3 + cosmiconfig: 7.1.0 + ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + typescript: 5.1.6 + dev: true + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -21044,7 +21201,7 @@ packages: - ts-jest dev: false - /eslint-plugin-graphql@4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4): + /eslint-plugin-graphql@4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6): resolution: {integrity: sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==} engines: {node: '>=10.0'} peerDependencies: @@ -21052,7 +21209,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 graphql: 15.8.0 - graphql-config: 3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4) + graphql-config: 3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6) lodash.flatten: 4.4.0 lodash.without: 4.4.0 transitivePeerDependencies: @@ -22373,15 +22530,6 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 - /fs-extra@11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -22893,13 +23041,13 @@ packages: tslib: 2.4.1 dev: false - /graphql-config@3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4): + /graphql-config@3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6): resolution: {integrity: sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw==} engines: {node: '>= 10.0.0'} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2(cosmiconfig@7.0.0)(typescript@4.9.4) + '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2(cosmiconfig@7.0.0)(typescript@5.1.6) '@graphql-tools/graphql-file-loader': 6.2.7(graphql@15.8.0) '@graphql-tools/json-file-loader': 6.2.6(graphql@15.8.0) '@graphql-tools/load': 6.2.8(graphql@15.8.0) @@ -22935,11 +23083,11 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) cosmiconfig: 8.0.0 cosmiconfig-toml-loader: 1.0.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) graphql: 15.8.0 minimatch: 4.2.1 string-env-interpolation: 1.0.1 - tslib: 2.4.1 + tslib: 2.6.3 transitivePeerDependencies: - '@types/node' - bufferutil @@ -23809,7 +23957,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.0 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -26079,6 +26227,13 @@ packages: sourcemap-codec: 1.4.8 dev: true + /magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -26813,14 +26968,14 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: false - /nestjs-console@8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): + /nestjs-console@8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): resolution: {integrity: sha512-ColRYRI9aH8/wlbrcFK/AeTAvsLlk0vgNIqL9FivUjo+q63S6AB+vUf7Jx7mQ1oIT2bD4awEOt0qEnkHmxsi4Q==} peerDependencies: '@nestjs/common': ^9 '@nestjs/core': ^9 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) commander: 8.3.0 ora: 5.4.1 @@ -27122,10 +27277,6 @@ packages: requiresBuild: true optional: true - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - /object-identity-map@1.0.2: resolution: {integrity: sha512-a2XZDGyYTngvGS67kWnqVdpoaJWsY7C1GhPJvejWAFCsUioTAaiTu8oBad7c6cI4McZxr4CmvnZeycK05iav5A==} dependencies: @@ -29302,6 +29453,15 @@ packages: iconv-lite: 0.4.24 unpipe: 1.0.0 + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + /raw-loader@4.0.2(webpack@4.46.0): resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} engines: {node: '>= 10.13.0'} @@ -29701,7 +29861,7 @@ packages: tslib: 2.6.3 typescript: 4.9.4 - /react-intl@6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4): + /react-intl@6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==} peerDependencies: '@types/react': '*' @@ -29713,7 +29873,31 @@ packages: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl': 2.10.4(typescript@4.9.4) + '@formatjs/intl': 2.10.4(typescript@5.1.6) + '@formatjs/intl-displaynames': 6.6.8 + '@formatjs/intl-listformat': 7.5.7 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.53 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.5.14 + react: 17.0.2 + tslib: 2.6.3 + typescript: 5.1.6 + dev: false + + /react-intl@6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6): + resolution: {integrity: sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==} + peerDependencies: + '@types/react': '*' + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/icu-messageformat-parser': 2.7.8 + '@formatjs/intl': 2.10.4(typescript@5.1.6) '@formatjs/intl-displaynames': 6.6.8 '@formatjs/intl-listformat': 7.5.7 '@types/hoist-non-react-statics': 3.3.1 @@ -29722,7 +29906,7 @@ packages: intl-messageformat: 10.5.14 react: 18.2.0 tslib: 2.6.3 - typescript: 4.9.4 + typescript: 5.1.6 dev: false /react-is@16.13.1: @@ -30720,6 +30904,11 @@ packages: dependencies: tslib: 2.4.1 + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.3 + /safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -32639,7 +32828,7 @@ packages: typescript: 4.9.4 dev: true - /ts-loader@8.4.0(typescript@4.9.4)(webpack@5.75.0): + /ts-loader@8.4.0(typescript@5.1.6)(webpack@5.75.0): resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -32651,7 +32840,7 @@ packages: loader-utils: 2.0.4 micromatch: 4.0.5 semver: 7.3.8 - typescript: 4.9.4 + typescript: 5.1.6 webpack: 5.75.0 dev: true @@ -32694,8 +32883,39 @@ packages: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@18.15.3)(typescript@5.1.6): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.15.3 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 - /ts-node@9.1.1(typescript@4.9.4): + /ts-node@9.1.1(typescript@5.1.6): resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} hasBin: true @@ -32707,7 +32927,7 @@ packages: diff: 4.0.2 make-error: 1.3.6 source-map-support: 0.5.21 - typescript: 4.9.4 + typescript: 5.1.6 yn: 3.1.1 dev: true @@ -32791,9 +33011,8 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false + /tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -32955,6 +33174,11 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@0.7.33: resolution: {integrity: sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==} @@ -32966,6 +33190,12 @@ packages: dev: false optional: true + /uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + /umzug@3.3.1: resolution: {integrity: sha512-jG3C35jti1YnCuH/k3fJEfHbnIG9c3Q9ITZ0B9eWwnXngh/AUd0mRHv8OdpE2Q9VoK7tB6xL990JrMCr0LtfNA==} engines: {node: '>=12'} @@ -33665,7 +33895,7 @@ packages: joi: 17.7.0 lodash: 4.17.21 minimist: 1.2.7 - rxjs: 7.8.0 + rxjs: 7.8.1 transitivePeerDependencies: - debug From 042fe1930950332277b162c8216a801e4175022a Mon Sep 17 00:00:00 2001 From: Ben-Ho Date: Tue, 30 Jul 2024 12:16:00 +0200 Subject: [PATCH 2/8] Admin Generator (Future): Refactor type and initial value generation for form fields (#2337) Move field-type specific code into `generateFormField` function to enable support for nested fields and field-layouts. --- .../products/future/generated/ProductForm.tsx | 1 - .../src/generator/future/generateForm.ts | 66 ++++++++----------- .../future/generateForm/generateFields.ts | 9 +++ .../future/generateForm/generateFormField.ts | 31 +++++++++ .../future/generateForm/generateFormLayout.ts | 3 + 5 files changed, 69 insertions(+), 41 deletions(-) diff --git a/demo/admin/src/products/future/generated/ProductForm.tsx b/demo/admin/src/products/future/generated/ProductForm.tsx index c03cbee093..8310eedda3 100644 --- a/demo/admin/src/products/future/generated/ProductForm.tsx +++ b/demo/admin/src/products/future/generated/ProductForm.tsx @@ -69,7 +69,6 @@ export function ProductForm({ id }: FormProps): React.ReactElement { data?.product ? { ...filterByFragment(productFormFragment, data.product), - createdAt: data.product.createdAt ? new Date(data.product.createdAt) : undefined, availableSince: data.product.availableSince ? new Date(data.product.availableSince) : undefined, image: rootBlocks.image.input2State(data.product.image), diff --git a/packages/admin/cms-admin/src/generator/future/generateForm.ts b/packages/admin/cms-admin/src/generator/future/generateForm.ts index 50e51a3dcc..d2de2d4a14 100644 --- a/packages/admin/cms-admin/src/generator/future/generateForm.ts +++ b/packages/admin/cms-admin/src/generator/future/generateForm.ts @@ -1,11 +1,10 @@ import { IntrospectionQuery } from "graphql"; -import { generateFields } from "./generateForm/generateFields"; +import { generateFields, GenerateFieldsReturn } from "./generateForm/generateFields"; import { getForwardedGqlArgs } from "./generateForm/getForwardedGqlArgs"; import { FormConfig, FormFieldConfig, GeneratorReturn, isFormFieldConfig, isFormLayoutConfig } from "./generator"; import { findMutationTypeOrThrow } from "./utils/findMutationType"; import { generateImportsCode, Imports } from "./utils/generateImportsCode"; -import { isFieldOptional } from "./utils/isFieldOptional"; export type Prop = { type: string; optional: boolean; name: string }; function generateFormPropsCode(props: Prop[]): { formPropsTypeCode: string; formPropsParamsCode: string } { @@ -90,19 +89,12 @@ export function generateForm( }); }); - const numberFields = formFields.filter((field) => field.type == "number"); - const booleanFields = formFields.filter((field) => field.type == "boolean"); - const dateFields = formFields.filter((field) => field.type == "date"); const readOnlyFields = formFields.filter((field) => field.readOnly); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const isOptional = (fieldConfig: FormFieldConfig) => { - return isFieldOptional({ config: fieldConfig, gqlIntrospection: gqlIntrospection, gqlType: gqlType }); - }; - let hooksCode = ""; let formValueToGqlInputCode = ""; const formFragmentFields: string[] = []; + const formValuesConfig: GenerateFieldsReturn["formValuesConfig"] = []; const { code: fieldsCode, ...generatedFields } = generateFields({ gqlIntrospection, baseOutputFilename, @@ -116,6 +108,7 @@ export function generateForm( hooksCode += generatedFields.hooksCode; formValueToGqlInputCode += generatedFields.formValueToGqlInputCode; formFragmentFields.push(...generatedFields.formFragmentFields); + formValuesConfig.push(...generatedFields.formValuesConfig); const fragmentName = config.fragmentName ?? `${gqlType}Form`; gqlDocuments[`${instanceGqlType}FormFragment`] = ` @@ -237,15 +230,20 @@ export function generateForm( } type FormValues = ${ - numberFields.length > 0 - ? `Omit `"${String(field.name)}"`).join(" | ")}>` + formValuesConfig.filter((config) => !!config.omitFromFragmentType).length > 0 + ? `Omit !!config.omitFromFragmentType) + .map((config) => `"${config.omitFromFragmentType}"`) + .join(" | ")}>` : `GQL${fragmentName}Fragment` } ${ - numberFields.length > 0 || rootBlockFields.length > 0 + formValuesConfig.length > 0 ? `& { - ${numberFields.map((field) => `${String(field.name)}${isOptional(field) ? `?` : ``}: string;`).join("\n")} - ${rootBlockFields.map((field) => `${String(field.name)}: BlockState;`).join("\n")} - }` + ${formValuesConfig + .filter((config) => !!config.typeCode) + .map((config) => config.typeCode) + .join("\n")} + }` : "" }; @@ -273,35 +271,23 @@ export function generateForm( ? `const initialValues = React.useMemo>(() => data?.${instanceGqlType} ? { ...filterByFragment(${instanceGqlType}FormFragment, data.${instanceGqlType}), - ${numberFields - .map((field) => { - let assignment = `String(data.${instanceGqlType}.${String(field.name)})`; - if (isOptional(field)) { - assignment = `data.${instanceGqlType}.${String(field.name)} ? ${assignment} : undefined`; - } - return `${String(field.name)}: ${assignment},`; - }) - .join("\n")} - ${dateFields - .map( - (field) => - `${String(field.name)}: data.${instanceGqlType}.${String(field.name)} ? new Date(data.${instanceGqlType}.${String( - field.name, - )}) : undefined,`, - ) - .join("\n")} - ${rootBlockFields - .map((field) => `${String(field.name)}: rootBlocks.${String(field.name)}.input2State(data.${instanceGqlType}.${String(field.name)}),`) - .join("\n")} + ${formValuesConfig + .filter((config) => !!config.initializationCode) + .map((config) => config.initializationCode) + .join(",\n")} } : { - ${booleanFields.map((field) => `${String(field.name)}: false,`).join("\n")} - ${rootBlockFields.map((field) => `${String(field.name)}: rootBlocks.${String(field.name)}.defaultValues(),`).join("\n")} + ${formValuesConfig + .filter((config) => !!config.defaultInitializationCode) + .map((config) => config.defaultInitializationCode) + .join(",\n")} } , [data]);` : `const initialValues = { - ${booleanFields.map((field) => `${String(field.name)}: false,`).join("\n")} - ${rootBlockFields.map((field) => `${String(field.name)}: rootBlocks.${String(field.name)}.defaultValues(),`).join("\n")} + ${formValuesConfig + .filter((config) => !!config.defaultInitializationCode) + .map((config) => config.defaultInitializationCode) + .join(",\n")} };` } diff --git a/packages/admin/cms-admin/src/generator/future/generateForm/generateFields.ts b/packages/admin/cms-admin/src/generator/future/generateForm/generateFields.ts index fb484ff318..f6cd34bb04 100644 --- a/packages/admin/cms-admin/src/generator/future/generateForm/generateFields.ts +++ b/packages/admin/cms-admin/src/generator/future/generateForm/generateFields.ts @@ -10,6 +10,12 @@ export type GenerateFieldsReturn = GeneratorReturn & { hooksCode: string; formFragmentFields: string[]; formValueToGqlInputCode: string; + formValuesConfig: { + omitFromFragmentType?: string; + typeCode?: string; + initializationCode?: string; + defaultInitializationCode?: string; + }[]; }; export function generateFields({ @@ -30,6 +36,7 @@ export function generateFields({ let formValueToGqlInputCode = ""; const formFragmentFields: string[] = []; const imports: Imports = []; + const formValuesConfig: GenerateFieldsReturn["formValuesConfig"] = []; const code = fields .map((field) => { @@ -49,6 +56,7 @@ export function generateFields({ hooksCode += generated.hooksCode; formValueToGqlInputCode += generated.formValueToGqlInputCode; formFragmentFields.push(...generated.formFragmentFields); + formValuesConfig.push(...generated.formValuesConfig); return generated.code; }) .join("\n"); @@ -60,5 +68,6 @@ export function generateFields({ formFragmentFields, gqlDocuments, imports, + formValuesConfig, }; } diff --git a/packages/admin/cms-admin/src/generator/future/generateForm/generateFormField.ts b/packages/admin/cms-admin/src/generator/future/generateForm/generateFormField.ts index 97472f9a62..c2b2d89ca7 100644 --- a/packages/admin/cms-admin/src/generator/future/generateForm/generateFormField.ts +++ b/packages/admin/cms-admin/src/generator/future/generateForm/generateFormField.ts @@ -43,6 +43,7 @@ export function generateFormField({ const readOnlyPropsWithLock = `${readOnlyProps} ${endAdornmentWithLockIconProp}`; const imports: Imports = []; + let formValuesConfig: GenerateFieldsReturn["formValuesConfig"] = []; const gqlDocuments: Record = {}; const hooksCode = ""; @@ -107,6 +108,18 @@ export function generateFormField({ assignment = `formValues.${name} ? ${assignment} : null`; } formValueToGqlInputCode = `${name}: ${assignment},`; + + let initializationAssignment = `String(data.${instanceGqlType}.${name})`; + if (!required) { + initializationAssignment = `data.${instanceGqlType}.${name} ? ${initializationAssignment} : undefined`; + } + formValuesConfig = [ + { + omitFromFragmentType: name, + typeCode: `${name}${!required ? `?` : ``}: string;`, + initializationCode: `${name}: ${initializationAssignment}`, + }, + ]; } else if (config.type == "boolean") { code = ` {(props) => ( @@ -123,6 +136,11 @@ export function generateFormField({ /> )} `; + formValuesConfig = [ + { + defaultInitializationCode: `${name}: false`, + }, + ]; } else if (config.type == "date") { code = ` `; + formValuesConfig = [ + { + initializationCode: `${name}: data.${instanceGqlType}.${name} ? new Date(data.${instanceGqlType}.${name}) : undefined`, + }, + ]; } else if (config.type == "block") { code = ` {createFinalFormBlock(rootBlocks.${String(config.name)})} `; formValueToGqlInputCode = `${name}: rootBlocks.${name}.state2Output(formValues.${name}),`; + formValuesConfig = [ + { + typeCode: `${name}: BlockState;`, + initializationCode: `${name}: rootBlocks.${name}.input2State(data.${instanceGqlType}.${name})`, + defaultInitializationCode: `${name}: rootBlocks.${name}.defaultValues()`, + }, + ]; } else if (config.type == "staticSelect") { if (config.values) { throw new Error("custom values for staticSelect is not yet supported"); // TODO add support @@ -257,5 +287,6 @@ export function generateFormField({ formFragmentFields: [formFragmentField], gqlDocuments, imports, + formValuesConfig, }; } diff --git a/packages/admin/cms-admin/src/generator/future/generateForm/generateFormLayout.ts b/packages/admin/cms-admin/src/generator/future/generateForm/generateFormLayout.ts index bb964c1b35..08d9d0959c 100644 --- a/packages/admin/cms-admin/src/generator/future/generateForm/generateFormLayout.ts +++ b/packages/admin/cms-admin/src/generator/future/generateForm/generateFormLayout.ts @@ -26,6 +26,7 @@ export function generateFormLayout({ const formFragmentFields: string[] = []; const gqlDocuments: Record = {}; const imports: Imports = []; + const formValuesConfig: GenerateFieldsReturn["formValuesConfig"] = []; if (config.type === "fieldSet") { const generatedFields = generateFields({ gqlIntrospection, baseOutputFilename, fields: config.fields, formConfig }); @@ -36,6 +37,7 @@ export function generateFormLayout({ gqlDocuments[name] = generatedFields.gqlDocuments[name]; } imports.push(...generatedFields.imports); + formValuesConfig.push(...generatedFields.formValuesConfig); imports.push({ name: "FieldSet", importPath: "@comet/admin" }); const supportPlaceholder = config.supportText?.includes("{"); @@ -73,5 +75,6 @@ export function generateFormLayout({ formFragmentFields, gqlDocuments, imports, + formValuesConfig, }; } From 149cefbfff521e2544b24bd8c186121e40264bc3 Mon Sep 17 00:00:00 2001 From: Johannes Obermair <48853629+johnnyomair@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:34:17 +0200 Subject: [PATCH 3/8] Demo: Add `@next/bundle-analyzer` to site (#2349) --- demo/site/next.config.js | 5 +++- demo/site/package.json | 1 + pnpm-lock.yaml | 59 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/demo/site/next.config.js b/demo/site/next.config.js index e6c2360354..7ac78991b8 100644 --- a/demo/site/next.config.js +++ b/demo/site/next.config.js @@ -1,6 +1,9 @@ /* eslint-disable */ // @ts-check +const withBundleAnalyzer = require("@next/bundle-analyzer")({ + enabled: process.env.ANALYZE === "true", +}); const cometConfig = require("./src/comet-config.json"); @@ -30,4 +33,4 @@ const nextConfig = { }, }; -module.exports = nextConfig; +module.exports = withBundleAnalyzer(nextConfig); diff --git a/demo/site/package.json b/demo/site/package.json index bb71be7561..c533e4583b 100644 --- a/demo/site/package.json +++ b/demo/site/package.json @@ -24,6 +24,7 @@ "@formatjs/cli": "^6.0.0", "@googlemaps/js-api-loader": "^1.0.0", "@googlemaps/markerclustererplus": "^1.0.0", + "@next/bundle-analyzer": "^14.1.3", "@opentelemetry/api": "^1.4.0", "@opentelemetry/auto-instrumentations-node": "^0.36.1", "@opentelemetry/exporter-trace-otlp-http": "^0.35.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0c2b2075a..411050a5a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -625,6 +625,9 @@ importers: '@googlemaps/markerclustererplus': specifier: ^1.0.0 version: 1.2.10 + '@next/bundle-analyzer': + specifier: ^14.1.3 + version: 14.2.5 '@opentelemetry/api': specifier: ^1.4.0 version: 1.4.0 @@ -11261,6 +11264,15 @@ packages: tslib: 2.5.3 dev: true + /@next/bundle-analyzer@14.2.5: + resolution: {integrity: sha512-BtBbI8VUnB7s4m9ut6CkeJ8Hyx+aq+86mbH+uAld7ZGG0/eH4+5hcPnkHKsQM/yj74iClazS0fninI8yZbIZWA==} + dependencies: + webpack-bundle-analyzer: 4.10.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@next/env@14.1.4: resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} @@ -12363,6 +12375,10 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: false + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} @@ -19911,7 +19927,6 @@ packages: /debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - dev: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -26794,6 +26809,11 @@ packages: engines: {node: '>=10'} dev: false + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: false + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -31365,6 +31385,15 @@ packages: totalist: 1.1.0 dev: false + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -32682,6 +32711,11 @@ packages: engines: {node: '>=6'} dev: false + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -33984,6 +34018,29 @@ packages: engines: {node: '>=12'} dev: true + /webpack-bundle-analyzer@4.10.1: + resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.8.2 + acorn-walk: 8.2.0 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + is-plain-object: 5.0.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.4 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /webpack-bundle-analyzer@4.9.0: resolution: {integrity: sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==} engines: {node: '>= 10.13.0'} From 99ddac0f24406e290bde33f6ef8509aa1acd7a3c Mon Sep 17 00:00:00 2001 From: Franz Unger Date: Tue, 30 Jul 2024 12:53:09 +0200 Subject: [PATCH 4/8] Fix private/public site config types (#2359) In #2297 the public site config was spread into the site config. However, the types for extracting the public and private site config weren't adapted accordingly. --------- Co-authored-by: Thomas Dax --- packages/cli/src/site-configs.types.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/site-configs.types.ts b/packages/cli/src/site-configs.types.ts index cc2e1148b1..000c4b4a56 100644 --- a/packages/cli/src/site-configs.types.ts +++ b/packages/cli/src/site-configs.types.ts @@ -9,9 +9,11 @@ export type BaseSiteConfig = { preloginEnabled?: boolean; public?: Record; }; -export type ExtractPrivateSiteConfig = S & { - url: string; -}; -export type ExtractPublicSiteConfig = Pick & { - url: string; -}; +export type ExtractPrivateSiteConfig = S["public"] & + Omit & { + url: string; + }; +export type ExtractPublicSiteConfig = S["public"] & + Pick & { + url: string; + }; From 0b2e1d55114ed0f8e779e9e7dc87c11cb65476e5 Mon Sep 17 00:00:00 2001 From: Johannes Obermair <48853629+johnnyomair@users.noreply.github.com> Date: Tue, 30 Jul 2024 16:10:55 +0200 Subject: [PATCH 5/8] Revert "Demo: Upgrade to TypeScript 5" (#2361) Reverts vivid-planet/comet#2343 --- demo/admin/package.json | 2 +- demo/api/package.json | 10 +- demo/site-pages/package.json | 4 +- demo/site/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 548 ++++++++++------------------------- 6 files changed, 170 insertions(+), 400 deletions(-) diff --git a/demo/admin/package.json b/demo/admin/package.json index a20b74655d..dfaae0d51e 100644 --- a/demo/admin/package.json +++ b/demo/admin/package.json @@ -127,7 +127,7 @@ "pascal-case": "^3.0.0", "prettier": "^2.0.0", "ts-node": "^10.0.0", - "typescript": "~5.1.0", + "typescript": "^4.0.0", "vite": "^5.1.6", "vite-plugin-html": "^3.2.2" } diff --git a/demo/api/package.json b/demo/api/package.json index 845564b434..6c4dbb0240 100644 --- a/demo/api/package.json +++ b/demo/api/package.json @@ -35,12 +35,12 @@ "@mikro-orm/nestjs": "^5.2.3", "@mikro-orm/postgresql": "^5.9.8", "@nestjs/apollo": "^10.0.0", - "@nestjs/common": "^9.4.3", + "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.0.0", - "@nestjs/core": "^9.4.3", + "@nestjs/core": "^9.0.0", "@nestjs/graphql": "^10.0.0", "@nestjs/passport": "^9.0.0", - "@nestjs/platform-express": "^9.4.3", + "@nestjs/platform-express": "^9.0.0", "@opentelemetry/api": "^1.4.0", "@opentelemetry/auto-instrumentations-node": "^0.36.1", "@opentelemetry/exporter-trace-otlp-http": "^0.35.1", @@ -80,7 +80,7 @@ "@comet/eslint-config": "workspace:*", "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", - "@nestjs/testing": "^9.4.3", + "@nestjs/testing": "^9.0.0", "@types/async": "^3.0.0", "@types/compression": "^1.0.0", "@types/cookie-parser": "^1.0.0", @@ -101,7 +101,7 @@ "ts-loader": "^8.0.0", "ts-node": "^10.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "~5.1.0" + "typescript": "^4.0.0" }, "mikro-orm": { "useTsNode": true, diff --git a/demo/site-pages/package.json b/demo/site-pages/package.json index 34334841f8..ab435cbf16 100644 --- a/demo/site-pages/package.json +++ b/demo/site-pages/package.json @@ -75,6 +75,6 @@ "prettier": "^2.0.0", "rimraf": "^3.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "~5.1.0" + "typescript": "^4.0.0" } -} \ No newline at end of file +} diff --git a/demo/site/package.json b/demo/site/package.json index c533e4583b..6c01a39ace 100644 --- a/demo/site/package.json +++ b/demo/site/package.json @@ -71,6 +71,6 @@ "prettier": "^2.0.0", "rimraf": "^3.0.0", "tsconfig-paths": "^3.0.0", - "typescript": "~5.1.0" + "typescript": "^4.0.0" } } diff --git a/package.json b/package.json index f4456f6f3e..ccb4312c18 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "lint-staged": "^12.3.7", "prettier": "^2.0.0", "rimraf": "^3.0.2", - "typescript": "~5.1.0", + "typescript": "^4.2.2", "wait-on": "^5.3.0" }, "packageManager": "pnpm@8.15.5", @@ -80,4 +80,4 @@ } } } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 411050a5a4..849f09270a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 typescript: - specifier: ~5.1.0 - version: 5.1.6 + specifier: ^4.2.2 + version: 4.9.4 wait-on: specifier: ^5.3.0 version: 5.3.0 @@ -202,7 +202,7 @@ importers: version: 8.6.12(react@17.0.2) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@5.1.6) + version: 6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@4.9.4) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -257,7 +257,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) + version: 2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) '@graphql-codegen/fragment-matcher': specifier: ^2.0.0 version: 2.0.1(graphql@15.8.0) @@ -347,7 +347,7 @@ importers: version: 8.32.0 eslint-plugin-graphql: specifier: ^4.0.0 - version: 4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6) + version: 4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4) kill-port: specifier: ^2.0.1 version: 2.0.1 @@ -362,10 +362,10 @@ importers: version: 2.8.3 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) typescript: - specifier: ~5.1.0 - version: 5.1.6 + specifier: ^4.0.0 + version: 4.9.4 vite: specifier: ^5.1.6 version: 5.1.6(@types/node@18.15.3) @@ -407,31 +407,31 @@ importers: version: 5.9.8(@mikro-orm/core@5.9.8) '@mikro-orm/nestjs': specifier: ^5.2.3 - version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@mikro-orm/postgresql': specifier: ^5.9.8 version: 5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8) '@nestjs/apollo': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0) + version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0) '@nestjs/common': - specifier: ^9.4.3 - version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: ^9.0.0 + version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/config': specifier: ^2.0.0 - version: 2.2.0(@nestjs/common@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/core': - specifier: ^9.4.3 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: ^9.0.0 + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/graphql': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) '@nestjs/passport': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.4.3)(passport@0.4.1) + version: 9.0.0(@nestjs/common@9.2.1)(passport@0.4.1) '@nestjs/platform-express': - specifier: ^9.4.3 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + specifier: ^9.0.0 + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@opentelemetry/api': specifier: ^1.4.0 version: 1.4.0 @@ -506,7 +506,7 @@ importers: version: 1.4.4 nestjs-console: specifier: ^8.0.0 - version: 8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) node-fetch: specifier: ^2.0.0 version: 2.6.8 @@ -543,10 +543,10 @@ importers: version: 9.1.9 '@nestjs/schematics': specifier: ^9.0.0 - version: 9.2.0(typescript@5.1.6) + version: 9.0.4(chokidar@3.5.3)(typescript@4.9.4) '@nestjs/testing': - specifier: ^9.4.3 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) + specifier: ^9.0.0 + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1) '@types/async': specifier: ^3.0.0 version: 3.2.16 @@ -600,16 +600,16 @@ importers: version: 2.8.3 ts-loader: specifier: ^8.0.0 - version: 8.4.0(typescript@5.1.6)(webpack@5.75.0) + version: 8.4.0(typescript@4.9.4)(webpack@5.75.0) ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) tsconfig-paths: specifier: ^3.0.0 version: 3.14.1 typescript: - specifier: ~5.1.0 - version: 5.1.6 + specifier: ^4.0.0 + version: 4.9.4 demo/site: dependencies: @@ -669,7 +669,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6) + version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -687,7 +687,7 @@ importers: version: 6.8.4 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) devDependencies: '@babel/core': specifier: ^7.0.0 @@ -703,7 +703,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) + version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) '@graphql-codegen/named-operations-object': specifier: ^2.0.0 version: 2.3.1(graphql-tag@2.12.6)(graphql@15.8.0) @@ -762,8 +762,8 @@ importers: specifier: ^3.0.0 version: 3.14.1 typescript: - specifier: ~5.1.0 - version: 5.1.6 + specifier: ^4.0.0 + version: 4.9.4 demo/site-pages: dependencies: @@ -823,7 +823,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^6.0.0 - version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6) + version: 6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4) react-is: specifier: ^17.0.2 version: 17.0.2 @@ -841,7 +841,7 @@ importers: version: 6.8.4 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) devDependencies: '@babel/core': specifier: ^7.0.0 @@ -857,7 +857,7 @@ importers: version: 3.2.3(graphql@15.8.0) '@graphql-codegen/cli': specifier: ^2.0.0 - version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6) + version: 2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4) '@graphql-codegen/named-operations-object': specifier: ^2.0.0 version: 2.3.1(graphql-tag@2.12.6)(graphql@15.8.0) @@ -913,8 +913,8 @@ importers: specifier: ^3.0.0 version: 3.15.0 typescript: - specifier: ~5.1.0 - version: 5.1.6 + specifier: ^4.0.0 + version: 4.9.4 docs: dependencies: @@ -2205,7 +2205,7 @@ importers: version: link:../../eslint-config '@nestjs/common': specifier: ^9.0.0 - version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@types/draft-js': specifier: ^0.11.10 version: 0.11.10 @@ -2271,19 +2271,19 @@ importers: version: 4.3.6 '@golevelup/nestjs-discovery': specifier: ^3.0.0 - version: 3.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 3.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@hapi/accept': specifier: ^5.0.2 version: 5.0.2 '@nestjs/jwt': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.4.3) + version: 9.0.0(@nestjs/common@9.2.1) '@nestjs/mapped-types': specifier: ^1.2.2 - version: 1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) + version: 1.2.2(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) '@nestjs/passport': specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.4.3)(passport@0.6.0) + version: 9.0.0(@nestjs/common@9.2.1)(passport@0.6.0) '@opentelemetry/api': specifier: ^1.4.0 version: 1.4.0 @@ -2419,25 +2419,25 @@ importers: version: 5.9.8(@mikro-orm/core@5.9.8) '@mikro-orm/nestjs': specifier: ^5.2.3 - version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@mikro-orm/postgresql': specifier: ^5.9.8 version: 5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8) '@nestjs/common': specifier: ^9.0.0 - version: 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/core': specifier: ^9.0.0 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/graphql': specifier: ^10.0.0 - version: 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + version: 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) '@nestjs/platform-express': specifier: ^9.0.0 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@nestjs/testing': specifier: ^9.0.0 - version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) + version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1) '@types/express': specifier: ^4.0.0 version: 4.17.16 @@ -2506,7 +2506,7 @@ importers: version: 15.0.0 nestjs-console: specifier: ^8.0.0 - version: 8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + version: 8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) npm-run-all: specifier: ^4.0.0 version: 4.1.5 @@ -3148,23 +3148,6 @@ packages: source-map: 0.7.4 dev: true - /@angular-devkit/core@16.0.1(chokidar@3.5.3): - resolution: {integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^3.5.2 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1 - chokidar: 3.5.3 - jsonc-parser: 3.2.0 - rxjs: 7.8.1 - source-map: 0.7.4 - dev: true - /@angular-devkit/schematics-cli@15.0.4(chokidar@3.5.3): resolution: {integrity: sha512-rEzkpjiQcJqCgbZ1Ns8jn1BL4724jcj+YFS7Qw5d4v6yQYA8iSLz12HDTH0TiNEv7u5S55fYuRz2QreI0QUT8A==} engines: {node: ^14.20.0 || ^16.13.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -3193,19 +3176,6 @@ packages: - chokidar dev: true - /@angular-devkit/schematics@16.0.1(chokidar@3.5.3): - resolution: {integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - dependencies: - '@angular-devkit/core': 16.0.1(chokidar@3.5.3) - jsonc-parser: 3.2.0 - magic-string: 0.30.0 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - dev: true - /@apollo/client@3.7.4(graphql@15.8.0)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-bgiCKRmLSBImX4JRrw8NjqGo0AQE/mowCdHX1PJp2r5zIXrJx0UeaAYmx1qJY69Oz/KR7SKlLt4xK+bOP1jx7A==} peerDependencies: @@ -4161,7 +4131,7 @@ packages: '@azure/logger': 1.1.2 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 - tslib: 2.6.3 + tslib: 2.6.2 transitivePeerDependencies: - supports-color dev: false @@ -8271,7 +8241,7 @@ packages: /@emotion/weak-memoize@0.3.0: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} - /@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2(cosmiconfig@7.0.0)(typescript@5.1.6): + /@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2(cosmiconfig@7.0.0)(typescript@4.9.4): resolution: {integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -8280,7 +8250,7 @@ packages: cosmiconfig: 7.0.0 lodash.get: 4.4.2 make-error: 1.3.6 - ts-node: 9.1.1(typescript@5.1.6) + ts-node: 9.1.1(typescript@4.9.4) tslib: 2.6.3 transitivePeerDependencies: - typescript @@ -8693,24 +8663,6 @@ packages: tslib: 2.6.3 typescript: 4.9.4 - /@formatjs/intl@2.10.4(typescript@5.1.6): - resolution: {integrity: sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==} - peerDependencies: - typescript: ^4.7 || 5 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl-displaynames': 6.6.8 - '@formatjs/intl-listformat': 7.5.7 - intl-messageformat: 10.5.14 - tslib: 2.6.3 - typescript: 5.1.6 - dev: false - /@formatjs/ts-transformer@3.11.5: resolution: {integrity: sha512-cAmvKzgPqdetAr/RsxoXYhfNhMf5tERlXzJTsQw+j6tddPwIAbihACQx6KaajyJJ4aNssiziWNmcaHtjTqrrVw==} peerDependencies: @@ -8794,14 +8746,14 @@ packages: xcase: 2.0.1 dev: true - /@golevelup/nestjs-discovery@3.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + /@golevelup/nestjs-discovery@3.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): resolution: {integrity: sha512-kK/GBYVxb8XGlwXgtCWAkPOwDVh7dXyLRaoZuk2bBYntV3DZkYGAIbLKOFTGz+MGz71vEeQ9bGLP7cHKtCee4g==} peerDependencies: '@nestjs/common': ^9.x '@nestjs/core': ^9.x dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) lodash: 4.17.21 dev: false @@ -8885,62 +8837,7 @@ packages: - utf-8-validate dev: true - /@graphql-codegen/cli@2.16.4(@babel/core@7.20.12)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6): - resolution: {integrity: sha512-MBbdzIIaNZ8BTlFXG00toxU5rIV7Ltf2myaze88HpI5YPVfVJKlfccE6l0/Gv+nLv88CIM/PZrnFLdVtlBmrZw==} - hasBin: true - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - ts-node: '>=10' - dependencies: - '@babel/generator': 7.20.7 - '@babel/template': 7.20.7 - '@babel/types': 7.20.7 - '@graphql-codegen/core': 2.6.8(graphql@15.8.0) - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@15.8.0) - '@graphql-tools/apollo-engine-loader': 7.3.22(graphql@15.8.0) - '@graphql-tools/code-file-loader': 7.3.16(@babel/core@7.20.12)(graphql@15.8.0) - '@graphql-tools/git-loader': 7.2.16(@babel/core@7.20.12)(graphql@15.8.0) - '@graphql-tools/github-loader': 7.3.23(@babel/core@7.20.12)(graphql@15.8.0) - '@graphql-tools/graphql-file-loader': 7.5.14(graphql@15.8.0) - '@graphql-tools/json-file-loader': 7.4.15(graphql@15.8.0) - '@graphql-tools/load': 7.8.0(graphql@15.8.0) - '@graphql-tools/prisma-loader': 7.2.54(@types/node@18.15.3)(graphql@15.8.0) - '@graphql-tools/url-loader': 7.17.3(@types/node@18.15.3)(graphql@15.8.0) - '@graphql-tools/utils': 9.1.4(graphql@15.8.0) - '@whatwg-node/fetch': 0.6.2 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) - debounce: 1.2.1 - detect-indent: 6.1.0 - graphql: 15.8.0 - graphql-config: 4.4.0(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(cosmiconfig-typescript-loader@4.3.0)(graphql@15.8.0) - inquirer: 8.2.5 - is-glob: 4.0.3 - json-to-pretty-yaml: 1.2.2 - listr2: 4.0.5 - log-symbols: 4.1.0 - shell-quote: 1.7.4 - string-env-interpolation: 1.0.1 - ts-log: 2.2.5 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) - tslib: 2.4.1 - yaml: 1.10.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@babel/core' - - '@types/node' - - bufferutil - - cosmiconfig-toml-loader - - encoding - - enquirer - - supports-color - - typescript - - utf-8-validate - dev: true - - /@graphql-codegen/cli@2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@5.1.6): + /@graphql-codegen/cli@2.16.4(@babel/core@7.22.11)(@types/node@18.15.3)(cosmiconfig-toml-loader@1.0.0)(graphql@15.8.0)(ts-node@10.9.1)(typescript@4.9.4): resolution: {integrity: sha512-MBbdzIIaNZ8BTlFXG00toxU5rIV7Ltf2myaze88HpI5YPVfVJKlfccE6l0/Gv+nLv88CIM/PZrnFLdVtlBmrZw==} hasBin: true peerDependencies: @@ -8966,7 +8863,7 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.4) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 15.8.0 @@ -8979,7 +8876,7 @@ packages: shell-quote: 1.7.4 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) tslib: 2.4.1 yaml: 1.10.2 yargs: 17.6.2 @@ -9207,7 +9104,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 transitivePeerDependencies: - encoding dev: true @@ -9245,7 +9142,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9261,7 +9158,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9374,7 +9271,7 @@ packages: graphql: 15.8.0 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9391,7 +9288,7 @@ packages: graphql: 15.8.0 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -9408,7 +9305,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 transitivePeerDependencies: - '@babel/core' - encoding @@ -9425,7 +9322,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 transitivePeerDependencies: - '@babel/core' - encoding @@ -9452,7 +9349,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 dev: true @@ -9541,7 +9438,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) globby: 11.1.0 graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 unixify: 1.0.0 dev: true @@ -9571,7 +9468,7 @@ packages: '@graphql-tools/utils': 8.12.0(graphql@15.8.0) graphql: 15.8.0 p-limit: 3.1.0 - tslib: 2.6.3 + tslib: 2.4.1 dev: true /@graphql-tools/load@7.8.14(graphql@15.8.0): @@ -9687,7 +9584,7 @@ packages: jsonwebtoken: 9.0.0 lodash: 4.17.21 scuid: 1.1.0 - tslib: 2.6.3 + tslib: 2.4.1 yaml-ast-parser: 0.0.43 transitivePeerDependencies: - '@types/node' @@ -9827,7 +9724,7 @@ packages: '@whatwg-node/fetch': 0.6.2 graphql: 15.8.0 isomorphic-ws: 5.0.0(ws@8.12.0) - tslib: 2.6.3 + tslib: 2.4.1 value-or-promise: 1.0.12 ws: 8.12.0 transitivePeerDependencies: @@ -9863,7 +9760,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 dev: true /@graphql-tools/utils@8.9.0(graphql@15.8.0): @@ -9889,7 +9786,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.8.0 - tslib: 2.6.3 + tslib: 2.4.1 /@graphql-tools/utils@9.2.1(graphql@15.8.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} @@ -10408,10 +10305,6 @@ packages: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: false - /@lukeed/csprng@1.1.0: - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -10642,7 +10535,7 @@ packages: - supports-color - tedious - /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.8)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): resolution: {integrity: sha512-JMxaXrNXlo6j59D3LWMC1tEC1a5JanCtqdfv91JUH0sfVZh97SsjQ9K794BY3JWIUKSFyQwpnLxYZ0Ash/BlPA==} engines: {node: '>= 14.0.0'} peerDependencies: @@ -10651,8 +10544,8 @@ packages: '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: '@mikro-orm/core': 5.9.8(@mikro-orm/migrations@5.9.8)(@mikro-orm/postgresql@5.9.8) - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) /@mikro-orm/postgresql@5.9.8(@mikro-orm/core@5.9.8)(@mikro-orm/migrations@5.9.8): resolution: {integrity: sha512-ALXHS9fb3B93RozuF8n3+gYZz/I+d8Swo/5hmcMbaQN4Zs8hhHOhmjfwIj83IWb1QBPYcBeIc2M8TCmhxXX//g==} @@ -10950,7 +10843,7 @@ packages: react: 17.0.2 dev: false - /@nestjs/apollo@10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0): + /@nestjs/apollo@10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/graphql@10.1.7)(apollo-server-core@3.11.1)(apollo-server-express@3.11.1)(graphql@15.8.0): resolution: {integrity: sha512-UQDgUgyJvrj53AcCzws6/854SVibAeyg+RGxMtb9+ENhd8snP6f7RS6mCaFY85UTAc6mo674NIUu9a/JyeYezw==} peerDependencies: '@apollo/gateway': ^0.44.1 || ^0.46.0 || ^0.48.0 || ^0.49.0 || ^0.50.0 || ^2.0.0 @@ -10971,9 +10864,9 @@ packages: apollo-server-fastify: optional: true dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/graphql': 10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/graphql': 10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0) apollo-server-core: 3.11.1(graphql@15.8.0) apollo-server-express: 3.11.1(express@4.18.2)(graphql@15.8.0) graphql: 15.8.0 @@ -10990,7 +10883,7 @@ packages: '@angular-devkit/core': 15.0.4(chokidar@3.5.3) '@angular-devkit/schematics': 15.0.4(chokidar@3.5.3) '@angular-devkit/schematics-cli': 15.0.4(chokidar@3.5.3) - '@nestjs/schematics': 9.2.0(chokidar@3.5.3)(typescript@4.9.4) + '@nestjs/schematics': 9.0.4(chokidar@3.5.3)(typescript@4.9.4) chalk: 3.0.0 chokidar: 3.5.3 cli-table3: 0.6.3 @@ -11017,8 +10910,8 @@ packages: - webpack-cli dev: true - /@nestjs/common@9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==} + /@nestjs/common@9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-nZuo3oDsSSlC5mti/M2aCWTEIfHPGDXmBwWgPeCpRbrNz3IWd109rkajll+yxgidVjznAdBS9y00JkAVJblNYw==} peerDependencies: cache-manager: <=5 class-transformer: '*' @@ -11038,17 +10931,17 @@ packages: iterare: 1.2.1 reflect-metadata: 0.1.13 rxjs: 7.8.0 - tslib: 2.5.3 - uid: 2.0.2 + tslib: 2.4.1 + uuid: 9.0.0 - /@nestjs/config@2.2.0(@nestjs/common@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0): + /@nestjs/config@2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0): resolution: {integrity: sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 reflect-metadata: ^0.1.13 rxjs: ^6.0.0 || ^7.2.0 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) dotenv: 16.0.1 dotenv-expand: 8.0.3 lodash: 4.17.21 @@ -11057,8 +10950,8 @@ packages: uuid: 8.3.2 dev: false - /@nestjs/core@9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==} + /@nestjs/core@9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-a9GkXuu8uXgNgCVW+17iI8kLCltO+HwHpU2IhR+32JKnN2WEQ1YEWU4t3GJ2MNq44YkjIw9zrKvFkjJBlYrNbQ==} requiresBuild: true peerDependencies: '@nestjs/common': ^9.0.0 @@ -11075,20 +10968,21 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 + object-hash: 3.0.0 path-to-regexp: 3.2.0 reflect-metadata: 0.1.13 rxjs: 7.8.0 - tslib: 2.5.3 - uid: 2.0.2 + tslib: 2.4.1 + uuid: 9.0.0 transitivePeerDependencies: - encoding - /@nestjs/graphql@10.1.7(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0): + /@nestjs/graphql@10.1.7(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(graphql@15.8.0)(reflect-metadata@0.1.13)(ts-morph@16.0.0): resolution: {integrity: sha512-InWjG3dV8D/1iAHeAQD6tiDg3HyVNkUILTev3DU33Q0xpFzv+PqtKQR35a9xOncLY9ZS68kwkGB5wksfMyGjAg==} peerDependencies: '@apollo/subgraph': ^0.1.5 || ^0.3.0 || ^0.4.0 || ^2.0.0 @@ -11112,9 +11006,9 @@ packages: '@graphql-tools/merge': 8.3.12(graphql@15.8.0) '@graphql-tools/schema': 9.0.10(graphql@15.8.0) '@graphql-tools/utils': 9.1.1(graphql@15.8.0) - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/mapped-types': 1.2.0(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/mapped-types': 1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) chokidar: 3.5.3 class-transformer: 0.5.1 class-validator: 0.13.2 @@ -11134,17 +11028,17 @@ packages: - bufferutil - utf-8-validate - /@nestjs/jwt@9.0.0(@nestjs/common@9.4.3): + /@nestjs/jwt@9.0.0(@nestjs/common@9.2.1): resolution: {integrity: sha512-ZsXGY/wMYKzEhymw2+dxiwrHTRKIKrGszx6r2EjQqNLypdXMQu0QrujwZJ8k3+XQV4snmuJwwNakQoA2ILfq8w==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@types/jsonwebtoken': 8.5.8 jsonwebtoken: 8.5.1 dev: false - /@nestjs/mapped-types@1.2.0(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-NTFwPZkQWsArQH8QSyFWGZvJ08gR+R4TofglqZoihn/vU+ktHEJjMqsIsADwb7XD97DhiD+TVv5ac+jG33BHrg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 @@ -11157,12 +11051,12 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) class-transformer: 0.5.1 class-validator: 0.13.2 reflect-metadata: 0.1.13 - /@nestjs/mapped-types@1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@1.2.2(@nestjs/common@9.2.1)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 @@ -11175,55 +11069,56 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) class-transformer: 0.5.1 class-validator: 0.13.2 reflect-metadata: 0.1.13 dev: false - /@nestjs/passport@9.0.0(@nestjs/common@9.4.3)(passport@0.4.1): + /@nestjs/passport@9.0.0(@nestjs/common@9.2.1)(passport@0.4.1): resolution: {integrity: sha512-Gnh8n1wzFPOLSS/94X1sUP4IRAoXTgG4odl7/AO5h+uwscEGXxJFercrZfqdAwkWhqkKWbsntM3j5mRy/6ZQDA==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) passport: 0.4.1 dev: false - /@nestjs/passport@9.0.0(@nestjs/common@9.4.3)(passport@0.6.0): + /@nestjs/passport@9.0.0(@nestjs/common@9.2.1)(passport@0.6.0): resolution: {integrity: sha512-Gnh8n1wzFPOLSS/94X1sUP4IRAoXTgG4odl7/AO5h+uwscEGXxJFercrZfqdAwkWhqkKWbsntM3j5mRy/6ZQDA==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) passport: 0.6.0 dev: false - /@nestjs/platform-express@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): - resolution: {integrity: sha512-FpdczWoRSC0zz2dNL9u2AQLXKXRVtq4HgHklAhbL59X0uy+mcxhlSThG7DHzDMkoSnuuHY8ojDVf7mDxk+GtCw==} + /@nestjs/platform-express@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): + resolution: {integrity: sha512-7PecaXt8lrdS1p6Vb1X/am3GGv+EO1VahyDzaEGOK6C0zwhc0VPfLtwihkjjfhS6BjpRIXXgviwEjONUvxVZnA==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) - body-parser: 1.20.2 + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + body-parser: 1.20.1 cors: 2.8.5 express: 4.18.2 multer: 1.4.4-lts.1 - tslib: 2.5.3 + tslib: 2.4.1 transitivePeerDependencies: - supports-color - /@nestjs/schematics@9.2.0(chokidar@3.5.3)(typescript@4.9.4): - resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} + /@nestjs/schematics@9.0.4(chokidar@3.5.3)(typescript@4.9.4): + resolution: {integrity: sha512-egurCfAc4e5i1r2TmeAF0UrOKejFmT5oTdv4b7HcOVPupc3QGU7CbEfGleL3mkM5AjrixTQeMxU9bJ00ttAbGg==} peerDependencies: - typescript: '>=4.3.5' + typescript: ^4.3.5 dependencies: - '@angular-devkit/core': 16.0.1(chokidar@3.5.3) - '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + '@angular-devkit/core': 15.0.4(chokidar@3.5.3) + '@angular-devkit/schematics': 15.0.4(chokidar@3.5.3) + fs-extra: 11.1.0 jsonc-parser: 3.2.0 pluralize: 8.0.0 typescript: 4.9.4 @@ -11231,22 +11126,8 @@ packages: - chokidar dev: true - /@nestjs/schematics@9.2.0(typescript@5.1.6): - resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} - peerDependencies: - typescript: '>=4.3.5' - dependencies: - '@angular-devkit/core': 16.0.1(chokidar@3.5.3) - '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) - jsonc-parser: 3.2.0 - pluralize: 8.0.0 - typescript: 5.1.6 - transitivePeerDependencies: - - chokidar - dev: true - - /@nestjs/testing@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3): - resolution: {integrity: sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==} + /@nestjs/testing@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1): + resolution: {integrity: sha512-lemXZdRSuqoZ87l0orCrS/c7gqwxeduIFOd21g9g2RUeQ4qlWPegbQDKASzbfC28klPyrgJLW4MNq7uv2JwV8w==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 @@ -11258,10 +11139,10 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) - tslib: 2.5.3 + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + tslib: 2.4.1 dev: true /@next/bundle-analyzer@14.2.5: @@ -17674,25 +17555,6 @@ packages: transitivePeerDependencies: - supports-color - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - /bonjour-service@1.1.0: resolution: {integrity: sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==} dependencies: @@ -18855,10 +18717,6 @@ packages: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -18994,21 +18852,6 @@ packages: typescript: 4.9.4 dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6): - resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=3' - dependencies: - '@types/node': 18.15.3 - cosmiconfig: 7.1.0 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.1.6) - typescript: 5.1.6 - dev: true - /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -21216,7 +21059,7 @@ packages: - ts-jest dev: false - /eslint-plugin-graphql@4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6): + /eslint-plugin-graphql@4.0.0(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4): resolution: {integrity: sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==} engines: {node: '>=10.0'} peerDependencies: @@ -21224,7 +21067,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 graphql: 15.8.0 - graphql-config: 3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6) + graphql-config: 3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4) lodash.flatten: 4.4.0 lodash.without: 4.4.0 transitivePeerDependencies: @@ -22545,6 +22388,15 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 + /fs-extra@11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -23056,13 +22908,13 @@ packages: tslib: 2.4.1 dev: false - /graphql-config@3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@5.1.6): + /graphql-config@3.4.1(@types/node@18.15.3)(graphql@15.8.0)(typescript@4.9.4): resolution: {integrity: sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw==} engines: {node: '>= 10.0.0'} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2(cosmiconfig@7.0.0)(typescript@5.1.6) + '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2(cosmiconfig@7.0.0)(typescript@4.9.4) '@graphql-tools/graphql-file-loader': 6.2.7(graphql@15.8.0) '@graphql-tools/json-file-loader': 6.2.6(graphql@15.8.0) '@graphql-tools/load': 6.2.8(graphql@15.8.0) @@ -23098,11 +22950,11 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@15.8.0) cosmiconfig: 8.0.0 cosmiconfig-toml-loader: 1.0.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.4) graphql: 15.8.0 minimatch: 4.2.1 string-env-interpolation: 1.0.1 - tslib: 2.6.3 + tslib: 2.4.1 transitivePeerDependencies: - '@types/node' - bufferutil @@ -23972,7 +23824,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.1 + rxjs: 7.8.0 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -26242,13 +26094,6 @@ packages: sourcemap-codec: 1.4.8 dev: true - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -26988,14 +26833,14 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: false - /nestjs-console@8.0.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + /nestjs-console@8.0.0(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): resolution: {integrity: sha512-ColRYRI9aH8/wlbrcFK/AeTAvsLlk0vgNIqL9FivUjo+q63S6AB+vUf7Jx7mQ1oIT2bD4awEOt0qEnkHmxsi4Q==} peerDependencies: '@nestjs/common': ^9 '@nestjs/core': ^9 dependencies: - '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.2.1(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.8.0) commander: 8.3.0 ora: 5.4.1 @@ -27297,6 +27142,10 @@ packages: requiresBuild: true optional: true + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + /object-identity-map@1.0.2: resolution: {integrity: sha512-a2XZDGyYTngvGS67kWnqVdpoaJWsY7C1GhPJvejWAFCsUioTAaiTu8oBad7c6cI4McZxr4CmvnZeycK05iav5A==} dependencies: @@ -29473,15 +29322,6 @@ packages: iconv-lite: 0.4.24 unpipe: 1.0.0 - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - /raw-loader@4.0.2(webpack@4.46.0): resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} engines: {node: '>= 10.13.0'} @@ -29881,31 +29721,7 @@ packages: tslib: 2.6.3 typescript: 4.9.4 - /react-intl@6.6.8(@types/react@17.0.53)(react@17.0.2)(typescript@5.1.6): - resolution: {integrity: sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==} - peerDependencies: - '@types/react': '*' - react: ^16.6.0 || 17 || 18 - typescript: ^4.7 || 5 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl': 2.10.4(typescript@5.1.6) - '@formatjs/intl-displaynames': 6.6.8 - '@formatjs/intl-listformat': 7.5.7 - '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 17.0.53 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.5.14 - react: 17.0.2 - tslib: 2.6.3 - typescript: 5.1.6 - dev: false - - /react-intl@6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@5.1.6): + /react-intl@6.6.8(@types/react@18.2.67)(react@18.2.0)(typescript@4.9.4): resolution: {integrity: sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==} peerDependencies: '@types/react': '*' @@ -29917,7 +29733,7 @@ packages: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl': 2.10.4(typescript@5.1.6) + '@formatjs/intl': 2.10.4(typescript@4.9.4) '@formatjs/intl-displaynames': 6.6.8 '@formatjs/intl-listformat': 7.5.7 '@types/hoist-non-react-statics': 3.3.1 @@ -29926,7 +29742,7 @@ packages: intl-messageformat: 10.5.14 react: 18.2.0 tslib: 2.6.3 - typescript: 5.1.6 + typescript: 4.9.4 dev: false /react-is@16.13.1: @@ -30924,11 +30740,6 @@ packages: dependencies: tslib: 2.4.1 - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.3 - /safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -32862,7 +32673,7 @@ packages: typescript: 4.9.4 dev: true - /ts-loader@8.4.0(typescript@5.1.6)(webpack@5.75.0): + /ts-loader@8.4.0(typescript@4.9.4)(webpack@5.75.0): resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -32874,7 +32685,7 @@ packages: loader-utils: 2.0.4 micromatch: 4.0.5 semver: 7.3.8 - typescript: 5.1.6 + typescript: 4.9.4 webpack: 5.75.0 dev: true @@ -32917,39 +32728,8 @@ packages: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@18.15.3)(typescript@5.1.6): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.3 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.6 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - /ts-node@9.1.1(typescript@5.1.6): + /ts-node@9.1.1(typescript@4.9.4): resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} hasBin: true @@ -32961,7 +32741,7 @@ packages: diff: 4.0.2 make-error: 1.3.6 source-map-support: 0.5.21 - typescript: 5.1.6 + typescript: 4.9.4 yn: 3.1.1 dev: true @@ -33045,8 +32825,9 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -33208,11 +32989,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@0.7.33: resolution: {integrity: sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==} @@ -33224,12 +33000,6 @@ packages: dev: false optional: true - /uid@2.0.2: - resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} - engines: {node: '>=8'} - dependencies: - '@lukeed/csprng': 1.1.0 - /umzug@3.3.1: resolution: {integrity: sha512-jG3C35jti1YnCuH/k3fJEfHbnIG9c3Q9ITZ0B9eWwnXngh/AUd0mRHv8OdpE2Q9VoK7tB6xL990JrMCr0LtfNA==} engines: {node: '>=12'} @@ -33929,7 +33699,7 @@ packages: joi: 17.7.0 lodash: 4.17.21 minimist: 1.2.7 - rxjs: 7.8.1 + rxjs: 7.8.0 transitivePeerDependencies: - debug From ba4e509efaef6280426fd424b5e3bb0915e221ea Mon Sep 17 00:00:00 2001 From: Johannes Obermair <48853629+johnnyomair@users.noreply.github.com> Date: Wed, 31 Jul 2024 00:00:18 +0200 Subject: [PATCH 6/8] @comet/cms-site: Remove server-only code from client bundle (#2350) Necessary changes in the application: - Update to Next 14.2.0 or later - Enable [optimizePackageImports](https://nextjs.org/docs/app/api-reference/next-config-js/optimizePackageImports) --- .changeset/weak-comics-rhyme.md | 19 ++ demo/site/next.config.js | 3 + demo/site/package.json | 7 +- .../docs/migration/migration-from-v6-to-v7.md | 14 ++ packages/site/cms-site/package.json | 3 +- .../src/sitePreview/SitePreviewUtils.ts | 2 +- packages/site/tsconfig.base.json | 2 + pnpm-lock.yaml | 179 +++++++++++++++--- 8 files changed, 200 insertions(+), 29 deletions(-) create mode 100644 .changeset/weak-comics-rhyme.md diff --git a/.changeset/weak-comics-rhyme.md b/.changeset/weak-comics-rhyme.md new file mode 100644 index 0000000000..df5724714f --- /dev/null +++ b/.changeset/weak-comics-rhyme.md @@ -0,0 +1,19 @@ +--- +"@comet/cms-site": major +--- + +Remove server-only code from client bundle + +Make sure to upgrade to Next 14.2.0 or later. +Enable `optimizePackageImports` for `@comet/cms-site` in `next.config.js`: + +```diff +const nextConfig = { + /* ... */ ++ experimental: { ++ optimizePackageImports: ["@comet/cms-site"], ++ }, +}; + +module.exports = withBundleAnalyzer(nextConfig); +``` diff --git a/demo/site/next.config.js b/demo/site/next.config.js index 7ac78991b8..1ecc40fa90 100644 --- a/demo/site/next.config.js +++ b/demo/site/next.config.js @@ -31,6 +31,9 @@ const nextConfig = { compiler: { styledComponents: true, }, + experimental: { + optimizePackageImports: ["@comet/cms-site"], + }, }; module.exports = withBundleAnalyzer(nextConfig); diff --git a/demo/site/package.json b/demo/site/package.json index 6c01a39ace..c794c5408a 100644 --- a/demo/site/package.json +++ b/demo/site/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "scripts": { - "build": "run-s intl:compile && run-p gql:types generate-block-types", + "build": "run-s intl:compile && run-p gql:types generate-block-types && next build", "dev": "run-s intl:compile && run-p gql:types generate-block-types && NODE_OPTIONS='--inspect=localhost:9230' node server.js", "export": "next export", "generate-block-types": "comet generate-block-types", @@ -16,7 +16,6 @@ "lint:eslint": "eslint --max-warnings 0 --config ./.eslintrc.cli.js --ext .ts,.tsx,.js,.jsx,.json,.md src/ package.json", "lint:prettier": "npx prettier --check './**/*.{js,json,md,yml,yaml}'", "lint:tsc": "tsc --project .", - "next-build": "next build", "serve": "NODE_ENV=production node server.js" }, "dependencies": { @@ -24,7 +23,7 @@ "@formatjs/cli": "^6.0.0", "@googlemaps/js-api-loader": "^1.0.0", "@googlemaps/markerclustererplus": "^1.0.0", - "@next/bundle-analyzer": "^14.1.3", + "@next/bundle-analyzer": "^14.2.0", "@opentelemetry/api": "^1.4.0", "@opentelemetry/auto-instrumentations-node": "^0.36.1", "@opentelemetry/exporter-trace-otlp-http": "^0.35.1", @@ -34,7 +33,7 @@ "fs-extra": "^9.0.0", "graphql": "^15.0.0", "graphql-tag": "^2.12.6", - "next": "^14.1.3", + "next": "^14.2.0", "pure-react-carousel": "^1.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/docs/docs/migration/migration-from-v6-to-v7.md b/docs/docs/migration/migration-from-v6-to-v7.md index 2c3a4fdf22..e3d52f230e 100644 --- a/docs/docs/migration/migration-from-v6-to-v7.md +++ b/docs/docs/migration/migration-from-v6-to-v7.md @@ -1066,6 +1066,20 @@ You must upgrade - React to v18 (Migration Guide: [17 -> 18](https://react.dev/blog/2022/03/08/react-18-upgrade-guide)) - Styled Components to v6 (Migration Guide: [5 -> 6](https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6)) +Make sure to upgrade to Next 14.2.0 or later. +Enable `optimizePackageImports` for `@comet/cms-site` in `next.config.js`: + +```diff +const nextConfig = { + /* ... */ ++ experimental: { ++ optimizePackageImports: ["@comet/cms-site"], ++ }, +}; + +module.exports = withBundleAnalyzer(nextConfig); +``` + ### Add a custom `InternalLinkBlock` The `InternalLinkBlock` provided by `@comet/cms-site` is deprecated. diff --git a/packages/site/cms-site/package.json b/packages/site/cms-site/package.json index fc6bef0c38..23c9cde75c 100644 --- a/packages/site/cms-site/package.json +++ b/packages/site/cms-site/package.json @@ -29,6 +29,7 @@ "jose": "^5.2.4", "rimraf": "^3.0.0", "scroll-into-view-if-needed": "^2.0.0", + "server-only": "^0.0.1", "use-debounce": "^6.0.0" }, "devDependencies": { @@ -44,7 +45,7 @@ "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "jest-junit": "^15.0.0", - "next": "^14.1.3", + "next": "^14.2.0", "npm-run-all": "^4.1.5", "prettier": "^2.0.0", "react": "^18.2.0", diff --git a/packages/site/cms-site/src/sitePreview/SitePreviewUtils.ts b/packages/site/cms-site/src/sitePreview/SitePreviewUtils.ts index d31b3ed144..be6813ba19 100644 --- a/packages/site/cms-site/src/sitePreview/SitePreviewUtils.ts +++ b/packages/site/cms-site/src/sitePreview/SitePreviewUtils.ts @@ -1,4 +1,4 @@ -//TODO add import "server-only"; once this file gets correctly tree-shaked out of the client bundle +import "server-only"; import { jwtVerify, SignJWT } from "jose"; import { cookies, draftMode } from "next/headers"; diff --git a/packages/site/tsconfig.base.json b/packages/site/tsconfig.base.json index d975284a31..cfea34d8ad 100644 --- a/packages/site/tsconfig.base.json +++ b/packages/site/tsconfig.base.json @@ -2,6 +2,8 @@ "extends": "../../tsconfig.core.json", "compilerOptions": { "target": "ES2015", + "module": "ESNext", + "moduleResolution": "Node", "noImplicitAny": true, "jsx": "react", "noEmitOnError": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 849f09270a..1a655d837c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -626,7 +626,7 @@ importers: specifier: ^1.0.0 version: 1.2.10 '@next/bundle-analyzer': - specifier: ^14.1.3 + specifier: ^14.2.0 version: 14.2.5 '@opentelemetry/api': specifier: ^1.4.0 @@ -656,8 +656,8 @@ importers: specifier: ^2.12.6 version: 2.12.6(graphql@15.8.0) next: - specifier: ^14.1.3 - version: 14.1.4(@babel/core@7.22.11)(@opentelemetry/api@1.4.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.2.0 + version: 14.2.5(@babel/core@7.22.11)(@opentelemetry/api@1.4.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) pure-react-carousel: specifier: ^1.0.0 version: 1.30.1(react-dom@18.2.0)(react@18.2.0) @@ -2659,6 +2659,9 @@ importers: scroll-into-view-if-needed: specifier: ^2.0.0 version: 2.2.31 + server-only: + specifier: ^0.0.1 + version: 0.0.1 use-debounce: specifier: ^6.0.0 version: 6.0.1(react@18.2.0) @@ -2700,8 +2703,8 @@ importers: specifier: ^15.0.0 version: 15.0.0 next: - specifier: ^14.1.3 - version: 14.1.4(@babel/core@7.22.11)(@opentelemetry/api@1.4.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.2.0 + version: 14.2.5(@babel/core@7.22.11)(@opentelemetry/api@1.4.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -11156,6 +11159,10 @@ packages: /@next/env@14.1.4: resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} + dev: false + + /@next/env@14.2.5: + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} /@next/eslint-plugin-next@14.1.4: resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} @@ -11169,6 +11176,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64@14.2.5: + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true /@next/swc-darwin-x64@14.1.4: @@ -11177,6 +11193,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.2.5: + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true /@next/swc-linux-arm64-gnu@14.1.4: @@ -11185,6 +11210,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.2.5: + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true /@next/swc-linux-arm64-musl@14.1.4: @@ -11193,6 +11227,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.2.5: + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true /@next/swc-linux-x64-gnu@14.1.4: @@ -11201,6 +11244,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.2.5: + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true /@next/swc-linux-x64-musl@14.1.4: @@ -11209,6 +11261,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.2.5: + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true /@next/swc-win32-arm64-msvc@14.1.4: @@ -11217,6 +11278,15 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.2.5: + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true /@next/swc-win32-ia32-msvc@14.1.4: @@ -11225,6 +11295,15 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.2.5: + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true /@next/swc-win32-x64-msvc@14.1.4: @@ -11233,6 +11312,15 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.2.5: + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: @@ -12252,10 +12340,6 @@ packages: webpack: 5.88.2 dev: false - /@polka/url@1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: false - /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: false @@ -14399,12 +14483,18 @@ packages: /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: true /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.3 + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.3 /@swc/plugin-emotion@2.5.120: resolution: {integrity: sha512-vEA0lJTzY0NUnp+INB5SGYPYGxszOOzEgs3xXg/H34ngDpJ4xftZ3LfvYGxsJD+BgpxwOPh79XSTg1NRiefCTw==} @@ -17007,7 +17097,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.9 - caniuse-lite: 1.0.30001515 + caniuse-lite: 1.0.30001599 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -17023,7 +17113,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.9 - caniuse-lite: 1.0.30001515 + caniuse-lite: 1.0.30001599 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -17036,7 +17126,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.9 - caniuse-lite: 1.0.30001515 + caniuse-lite: 1.0.30001599 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -17723,7 +17813,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001447 + caniuse-lite: 1.0.30001599 electron-to-chromium: 1.4.284 node-releases: 2.0.8 update-browserslist-db: 1.0.10(browserslist@4.21.4) @@ -17733,7 +17823,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001515 + caniuse-lite: 1.0.30001599 electron-to-chromium: 1.4.455 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) @@ -18039,17 +18129,11 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.21.9 - caniuse-lite: 1.0.30001515 + caniuse-lite: 1.0.30001599 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false - /caniuse-lite@1.0.30001447: - resolution: {integrity: sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==} - - /caniuse-lite@1.0.30001515: - resolution: {integrity: sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==} - /caniuse-lite@1.0.30001599: resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} @@ -26888,6 +26972,51 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros + dev: false + + /next@14.2.5(@babel/core@7.22.11)(@opentelemetry/api@1.4.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + '@types/react': ^18.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.2.5 + '@opentelemetry/api': 1.4.0 + '@swc/helpers': 0.5.5 + '@types/react': 18.2.67 + busboy: 1.6.0 + caniuse-lite: 1.0.30001599 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.11)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -31030,6 +31159,10 @@ packages: transitivePeerDependencies: - supports-color + /server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + dev: false + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -31191,7 +31324,7 @@ packages: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.21 + '@polka/url': 1.0.0-next.25 mrmime: 1.0.1 totalist: 1.1.0 dev: false From 8d920da563598ae274b37af98150a3d8675abec1 Mon Sep 17 00:00:00 2001 From: Daniel Karnutsch Date: Wed, 31 Jul 2024 08:29:01 +0200 Subject: [PATCH 7/8] CRUD Generator: Add support for date-only fields (#2329) - Added lastCheckedAt to Demo to highlight differences between Date and DateTime - Use Date for availableSince (requires graphql-scalars) --------- Co-authored-by: Johannes Obermair <48853629+johnnyomair@users.noreply.github.com> --- .changeset/neat-kiwis-serve.md | 6 ++++ demo/admin/codegen.ts | 2 +- demo/admin/src/products/ProductsGrid.tsx | 8 +++++ .../src/products/generated/ProductForm.gql.ts | 1 + .../src/products/generated/ProductForm.tsx | 5 +-- .../src/products/generated/ProductsGrid.tsx | 9 +++++ demo/api/package.json | 1 + demo/api/schema.gql | 27 +++++++++++--- .../db/migrations/Migration20240723123838.ts | 9 +++++ .../src/products/entities/product.entity.ts | 7 +++- .../products/generated/dto/product.filter.ts | 9 ++++- .../products/generated/dto/product.input.ts | 8 ++++- .../products/generated/dto/product.sort.ts | 1 + .../cms-admin/src/generator/generateGrid.ts | 7 ++-- .../cms-api/src/common/filter/date.filter.ts | 36 +++++++++++++++++++ .../cms-api/src/common/filter/mikro-orm.ts | 12 +++++-- .../src/generator/generate-crud-input.ts | 13 ++++++- .../cms-api/src/generator/generate-crud.ts | 13 +++++-- packages/api/cms-api/src/index.ts | 1 + pnpm-lock.yaml | 3 ++ 20 files changed, 161 insertions(+), 17 deletions(-) create mode 100644 .changeset/neat-kiwis-serve.md create mode 100644 demo/api/src/db/migrations/Migration20240723123838.ts create mode 100644 packages/api/cms-api/src/common/filter/date.filter.ts diff --git a/.changeset/neat-kiwis-serve.md b/.changeset/neat-kiwis-serve.md new file mode 100644 index 0000000000..61731e4bb9 --- /dev/null +++ b/.changeset/neat-kiwis-serve.md @@ -0,0 +1,6 @@ +--- +"@comet/cms-admin": minor +"@comet/cms-api": minor +--- + +CRUD Generator: Add support for date-only fields diff --git a/demo/admin/codegen.ts b/demo/admin/codegen.ts index 8f253aee84..89fe389d7c 100644 --- a/demo/admin/codegen.ts +++ b/demo/admin/codegen.ts @@ -26,7 +26,7 @@ const config: CodegenConfig = { }, enumsAsTypes: true, namingConvention: "keep", - scalars: rootBlocks.reduce((scalars, rootBlock) => ({ ...scalars, [rootBlock]: rootBlock }), { DateTime: "string" }), + scalars: rootBlocks.reduce((scalars, rootBlock) => ({ ...scalars, [rootBlock]: rootBlock }), { DateTime: "string", Date: "string" }), typesPrefix: "GQL", }, }, diff --git a/demo/admin/src/products/ProductsGrid.tsx b/demo/admin/src/products/ProductsGrid.tsx index fa509b1807..fc50703e7d 100644 --- a/demo/admin/src/products/ProductsGrid.tsx +++ b/demo/admin/src/products/ProductsGrid.tsx @@ -178,6 +178,13 @@ export function ProductsGrid() { /> ), }, + { + field: "availableSince", + headerName: "Available Since", + width: 130, + type: "date", + valueGetter: ({ row }) => row.availableSince && new Date(row.availableSince), + }, { field: "status", headerName: "Status", @@ -317,6 +324,7 @@ const productsFragment = gql` quantity price } + availableSince } `; diff --git a/demo/admin/src/products/generated/ProductForm.gql.ts b/demo/admin/src/products/generated/ProductForm.gql.ts index 3b851ef4af..a964dbd26b 100644 --- a/demo/admin/src/products/generated/ProductForm.gql.ts +++ b/demo/admin/src/products/generated/ProductForm.gql.ts @@ -13,6 +13,7 @@ export const productFormFragment = gql` price inStock availableSince + lastCheckedAt image } `; diff --git a/demo/admin/src/products/generated/ProductForm.tsx b/demo/admin/src/products/generated/ProductForm.tsx index 8fff4389db..25a4ff6fee 100644 --- a/demo/admin/src/products/generated/ProductForm.tsx +++ b/demo/admin/src/products/generated/ProductForm.tsx @@ -223,11 +223,12 @@ export function ProductForm({ id }: FormProps): React.ReactElement { /> )} + } + name="lastCheckedAt" + label={} /> {createFinalFormBlock(rootBlocks.image)} diff --git a/demo/admin/src/products/generated/ProductsGrid.tsx b/demo/admin/src/products/generated/ProductsGrid.tsx index 067baf8ab5..f057b7217f 100644 --- a/demo/admin/src/products/generated/ProductsGrid.tsx +++ b/demo/admin/src/products/generated/ProductsGrid.tsx @@ -47,6 +47,7 @@ const productsFragment = gql` inStock soldCount availableSince + lastCheckedAt createdAt updatedAt image @@ -135,6 +136,13 @@ export function ProductsGrid(): React.ReactElement { { field: "availableSince", headerName: intl.formatMessage({ id: "product.availableSince", defaultMessage: "Available Since" }), + type: "date", + valueGetter: ({ value }) => value && new Date(value), + width: 150, + }, + { + field: "lastCheckedAt", + headerName: intl.formatMessage({ id: "product.lastCheckedAt", defaultMessage: "Last Checked At" }), type: "dateTime", valueGetter: ({ value }) => value && new Date(value), width: 150, @@ -187,6 +195,7 @@ export function ProductsGrid(): React.ReactElement { price: row.price, inStock: row.inStock, availableSince: row.availableSince, + lastCheckedAt: row.lastCheckedAt, image: DamImageBlock.state2Output(DamImageBlock.input2State(row.image)), }; }} diff --git a/demo/api/package.json b/demo/api/package.json index 6c4dbb0240..1143515804 100644 --- a/demo/api/package.json +++ b/demo/api/package.json @@ -60,6 +60,7 @@ "faker": "^5.0.0", "file-type": "^16.0.0", "graphql": "^15.0.0", + "graphql-scalars": "^1.23.0", "hasha": "^5.0.0", "helmet": "^4.6.0", "image-size": "^0.9.0", diff --git a/demo/api/schema.gql b/demo/api/schema.gql index ac132c4725..c03dbacb2e 100644 --- a/demo/api/schema.gql +++ b/demo/api/schema.gql @@ -525,7 +525,8 @@ type Product { price: Float inStock: Boolean! soldCount: Int - availableSince: DateTime + availableSince: Date + lastCheckedAt: DateTime discounts: [ProductDiscounts!]! articleNumbers: [String!]! dimensions: ProductDimensions @@ -553,6 +554,11 @@ enum ProductType { Tie } +""" +A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. +""" +scalar Date + type PaginatedManufacturers { nodes: [Manufacturer!]! totalCount: Int! @@ -943,7 +949,8 @@ input ProductFilter { price: NumberFilter inStock: BooleanFilter soldCount: NumberFilter - availableSince: DateTimeFilter + availableSince: DateFilter + lastCheckedAt: DateTimeFilter colors: OneToManyFilter variants: OneToManyFilter category: ManyToOneFilter @@ -981,6 +988,15 @@ input NumberFilter { notEqual: Float } +input DateFilter { + equal: Date + lowerThan: Date + greaterThan: Date + lowerThanEqual: Date + greaterThanEqual: Date + notEqual: Date +} + input ManyToOneFilter { isAnyOf: [ID!] equal: ID @@ -1008,6 +1024,7 @@ enum ProductSortField { inStock soldCount availableSince + lastCheckedAt category createdAt updatedAt @@ -1363,7 +1380,8 @@ input ProductInput { additionalTypes: [ProductType!]! = [] price: Float = null inStock: Boolean! = true - availableSince: DateTime = null + availableSince: Date = null + lastCheckedAt: DateTime = null image: DamImageBlockInput! discounts: [ProductDiscountsInput!]! = [] articleNumbers: [String!]! = [] @@ -1399,7 +1417,8 @@ input ProductUpdateInput { additionalTypes: [ProductType!] price: Float inStock: Boolean - availableSince: DateTime + availableSince: Date + lastCheckedAt: DateTime image: DamImageBlockInput discounts: [ProductDiscountsInput!] articleNumbers: [String!] diff --git a/demo/api/src/db/migrations/Migration20240723123838.ts b/demo/api/src/db/migrations/Migration20240723123838.ts new file mode 100644 index 0000000000..b3087c43a6 --- /dev/null +++ b/demo/api/src/db/migrations/Migration20240723123838.ts @@ -0,0 +1,9 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20240723123838 extends Migration { + + async up(): Promise { + this.addSql('alter table "Product" add column "lastCheckedAt" timestamptz(0) null;'); + } + +} diff --git a/demo/api/src/products/entities/product.entity.ts b/demo/api/src/products/entities/product.entity.ts index a3593610a4..3acaa4af87 100644 --- a/demo/api/src/products/entities/product.entity.ts +++ b/demo/api/src/products/entities/product.entity.ts @@ -18,6 +18,7 @@ import { import { Field, ID, InputType, Int, ObjectType, registerEnumType } from "@nestjs/graphql"; import { Manufacturer } from "@src/products/entities/manufacturer.entity"; import { IsNumber } from "class-validator"; +import { GraphQLDate } from "graphql-scalars"; import { v4 as uuid } from "uuid"; import { ProductCategory } from "./product-category.entity"; @@ -121,8 +122,12 @@ export class Product extends BaseEntity { soldCount?: number; @Property({ type: types.date, nullable: true }) + @Field(() => GraphQLDate, { nullable: true }) + availableSince?: Date = undefined; // use string in MikroORM v6 (https://mikro-orm.io/docs/upgrading-v5-to-v6#changes-in-date-property-mapping) + + @Property({ nullable: true }) @Field({ nullable: true }) - availableSince?: Date = undefined; + lastCheckedAt?: Date = undefined; @Property({ customType: new RootBlockType(DamImageBlock) }) @RootBlock(DamImageBlock) diff --git a/demo/api/src/products/generated/dto/product.filter.ts b/demo/api/src/products/generated/dto/product.filter.ts index f58339b809..a8434c2aaa 100644 --- a/demo/api/src/products/generated/dto/product.filter.ts +++ b/demo/api/src/products/generated/dto/product.filter.ts @@ -4,6 +4,7 @@ import { BooleanFilter, createEnumFilter, createEnumsFilter, + DateFilter, DateTimeFilter, ManyToManyFilter, ManyToOneFilter, @@ -81,11 +82,17 @@ export class ProductFilter { @Type(() => NumberFilter) soldCount?: NumberFilter; + @Field(() => DateFilter, { nullable: true }) + @ValidateNested() + @IsOptional() + @Type(() => DateFilter) + availableSince?: DateFilter; + @Field(() => DateTimeFilter, { nullable: true }) @ValidateNested() @IsOptional() @Type(() => DateTimeFilter) - availableSince?: DateTimeFilter; + lastCheckedAt?: DateTimeFilter; @Field(() => OneToManyFilter, { nullable: true }) @ValidateNested() diff --git a/demo/api/src/products/generated/dto/product.input.ts b/demo/api/src/products/generated/dto/product.input.ts index 8490214734..6e4b8d51bb 100644 --- a/demo/api/src/products/generated/dto/product.input.ts +++ b/demo/api/src/products/generated/dto/product.input.ts @@ -5,6 +5,7 @@ import { DamImageBlock, IsNullable, IsSlug, PartialType, RootBlockInputScalar } import { Field, ID, InputType } from "@nestjs/graphql"; import { Transform, Type } from "class-transformer"; import { IsArray, IsBoolean, IsDate, IsEnum, IsNotEmpty, IsNumber, IsString, IsUUID, ValidateNested } from "class-validator"; +import { GraphQLDate } from "graphql-scalars"; import { ProductDimensions, ProductDiscounts, ProductStatus } from "../../entities/product.entity"; import { ProductType } from "../../entities/product-type.enum"; @@ -56,9 +57,14 @@ export class ProductInput { @IsNullable() @IsDate() - @Field({ nullable: true, defaultValue: null }) + @Field(() => GraphQLDate, { nullable: true, defaultValue: null }) availableSince?: Date; + @IsNullable() + @IsDate() + @Field({ nullable: true, defaultValue: null }) + lastCheckedAt?: Date; + @IsNotEmpty() @Field(() => RootBlockInputScalar(DamImageBlock)) @Transform(({ value }) => (isBlockInputInterface(value) ? value : DamImageBlock.blockInputFactory(value)), { toClassOnly: true }) diff --git a/demo/api/src/products/generated/dto/product.sort.ts b/demo/api/src/products/generated/dto/product.sort.ts index 2e4f322813..ee1b2e3b60 100644 --- a/demo/api/src/products/generated/dto/product.sort.ts +++ b/demo/api/src/products/generated/dto/product.sort.ts @@ -15,6 +15,7 @@ export enum ProductSortField { inStock = "inStock", soldCount = "soldCount", availableSince = "availableSince", + lastCheckedAt = "lastCheckedAt", category = "category", createdAt = "createdAt", updatedAt = "updatedAt", diff --git a/packages/admin/cms-admin/src/generator/generateGrid.ts b/packages/admin/cms-admin/src/generator/generateGrid.ts index 13c44e7a53..e0862e5bd6 100644 --- a/packages/admin/cms-admin/src/generator/generateGrid.ts +++ b/packages/admin/cms-admin/src/generator/generateGrid.ts @@ -138,7 +138,7 @@ export async function writeCrudGrid( let renderCell: string | undefined = undefined; let valueGetter: string | undefined = undefined; - let gridType: "number" | "boolean" | "dateTime" | undefined; + let gridType: "number" | "boolean" | "dateTime" | "date" | undefined; if (type.kind == "SCALAR") { if (type.name == "Float" || type.name == "Int") { gridType = "number" as const; @@ -147,7 +147,10 @@ export async function writeCrudGrid( } else if (type.name == "DateTime") { gridType = "dateTime" as const; valueGetter = `({ value }) => value && new Date(value)`; - //TODO support date without time gridType = "date"; + } else if (type.name == "Date") { + // ISO date + gridType = "date" as const; + valueGetter = `({ value }) => value && new Date(value)`; } else { if (rootBlocks[field.name]) { renderCell = `(params) => { diff --git a/packages/api/cms-api/src/common/filter/date.filter.ts b/packages/api/cms-api/src/common/filter/date.filter.ts new file mode 100644 index 0000000000..412ba05374 --- /dev/null +++ b/packages/api/cms-api/src/common/filter/date.filter.ts @@ -0,0 +1,36 @@ +import { Field, InputType } from "@nestjs/graphql"; +import { IsDate, IsOptional } from "class-validator"; +import { GraphQLDate } from "graphql-scalars"; + +@InputType() +export class DateFilter { + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + equal?: Date; + + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + lowerThan?: Date; + + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + greaterThan?: Date; + + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + lowerThanEqual?: Date; + + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + greaterThanEqual?: Date; + + @Field(() => GraphQLDate, { nullable: true }) + @IsOptional() + @IsDate() + notEqual?: Date; +} diff --git a/packages/api/cms-api/src/common/filter/mikro-orm.ts b/packages/api/cms-api/src/common/filter/mikro-orm.ts index da03a38fd6..605b10c1b8 100644 --- a/packages/api/cms-api/src/common/filter/mikro-orm.ts +++ b/packages/api/cms-api/src/common/filter/mikro-orm.ts @@ -2,6 +2,7 @@ import { EntityMetadata, EntityRepository, FilterQuery, ObjectQuery } from "@mik import { getCrudSearchFieldsFromMetadata } from "../../generator/utils/search-fields-from-metadata"; import { BooleanFilter } from "./boolean.filter"; +import { DateFilter } from "./date.filter"; import { DateTimeFilter } from "./date-time.filter"; import { EnumFilterInterface, isEnumFilter } from "./enum.filter.factory"; import { EnumsFilterInterface, isEnumsFilter } from "./enums.filter.factory"; @@ -15,7 +16,14 @@ function quoteLike(string: string): string { return string.replace(/([%_\\])/g, "\\$1"); } export function filterToMikroOrmQuery( - filterProperty: StringFilter | NumberFilter | DateTimeFilter | BooleanFilter | EnumFilterInterface | EnumsFilterInterface, + filterProperty: + | StringFilter + | NumberFilter + | DateTimeFilter + | DateFilter + | BooleanFilter + | EnumFilterInterface + | EnumsFilterInterface, propertyName: string, metadata?: EntityMetadata, // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -67,7 +75,7 @@ export function filterToMikroOrmQuery( if (filterProperty.notEqual !== undefined) { ret.$ne = filterProperty.notEqual; } - } else if (filterProperty instanceof DateTimeFilter) { + } else if (filterProperty instanceof DateTimeFilter || filterProperty instanceof DateFilter) { if (filterProperty.equal !== undefined) { ret.$eq = filterProperty.equal; } diff --git a/packages/api/cms-api/src/generator/generate-crud-input.ts b/packages/api/cms-api/src/generator/generate-crud-input.ts index b067bdb77c..3169dd85b2 100644 --- a/packages/api/cms-api/src/generator/generate-crud-input.ts +++ b/packages/api/cms-api/src/generator/generate-crud-input.ts @@ -129,7 +129,17 @@ export async function generateCrudInput( decorators.push(`@Field(${fieldOptions})`); } type = "number"; - } else if (prop.type === "DateType" || prop.type === "Date") { + } else if (prop.type === "DateType") { + // ISO Date without time + const initializer = morphTsProperty(prop.name, metadata).getInitializer()?.getText(); + const defaultValue = + prop.nullable && (initializer == "undefined" || initializer == "null" || initializer === undefined) ? "null" : initializer; + const fieldOptions = tsCodeRecordToString({ nullable: prop.nullable ? "true" : undefined, defaultValue }); + decorators.push("@IsDate()"); + decorators.push(`@Field(() => GraphQLDate, ${fieldOptions})`); + type = "Date"; + } else if (prop.type === "Date") { + // DateTime const initializer = morphTsProperty(prop.name, metadata).getInitializer()?.getText(); const defaultValue = prop.nullable && (initializer == "undefined" || initializer == "null" || initializer === undefined) ? "null" : initializer; @@ -391,6 +401,7 @@ import { IsString, IsNotEmpty, ValidateNested, IsNumber, IsBoolean, IsDate, IsOp import { IsSlug, RootBlockInputScalar, IsNullable, PartialType} from "@comet/cms-api"; import { GraphQLJSONObject } from "graphql-scalars"; import { BlockInputInterface, isBlockInputInterface } from "@comet/blocks-api"; +import { GraphQLDate } from "graphql-scalars"; ${generateImportsCode(imports)} @InputType() diff --git a/packages/api/cms-api/src/generator/generate-crud.ts b/packages/api/cms-api/src/generator/generate-crud.ts index 69f48cf506..bbbc87dd97 100644 --- a/packages/api/cms-api/src/generator/generate-crud.ts +++ b/packages/api/cms-api/src/generator/generate-crud.ts @@ -165,7 +165,7 @@ function generateFilterDto({ generatorOptions, metadata }: { generatorOptions: C } }); - const filterOut = `import { StringFilter, NumberFilter, BooleanFilter, DateTimeFilter, ManyToOneFilter, OneToManyFilter, ManyToManyFilter, createEnumFilter, createEnumsFilter } from "@comet/cms-api"; + const filterOut = `import { StringFilter, NumberFilter, BooleanFilter, DateFilter, DateTimeFilter, ManyToOneFilter, OneToManyFilter, ManyToManyFilter, createEnumFilter, createEnumsFilter } from "@comet/cms-api"; import { Field, InputType } from "@nestjs/graphql"; import { Type } from "class-transformer"; import { IsNumber, IsOptional, IsString, ValidateNested } from "class-validator"; @@ -214,7 +214,16 @@ function generateFilterDto({ generatorOptions, metadata }: { generatorOptions: C @Type(() => BooleanFilter) ${prop.name}?: BooleanFilter; `; - } else if (prop.type === "DateType" || prop.type === "Date") { + } else if (prop.type === "DateType") { + // ISO Date without time + return `@Field(() => DateFilter, { nullable: true }) + @ValidateNested() + @IsOptional() + @Type(() => DateFilter) + ${prop.name}?: DateFilter; + `; + } else if (prop.type === "Date") { + // DateTime return `@Field(() => DateTimeFilter, { nullable: true }) @ValidateNested() @IsOptional() diff --git a/packages/api/cms-api/src/index.ts b/packages/api/cms-api/src/index.ts index 4fd03582a3..f15e541985 100644 --- a/packages/api/cms-api/src/index.ts +++ b/packages/api/cms-api/src/index.ts @@ -44,6 +44,7 @@ export { ExceptionInterceptor } from "./common/errors/exception.interceptor"; export { CometValidationException } from "./common/errors/validation.exception"; export { ValidationExceptionFactory } from "./common/errors/validation.exception-factory"; export { BooleanFilter } from "./common/filter/boolean.filter"; +export { DateFilter } from "./common/filter/date.filter"; export { DateTimeFilter } from "./common/filter/date-time.filter"; export { createEnumFilter } from "./common/filter/enum.filter.factory"; export { createEnumsFilter } from "./common/filter/enums.filter.factory"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a655d837c..64c5056b08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -489,6 +489,9 @@ importers: graphql: specifier: ^15.0.0 version: 15.8.0 + graphql-scalars: + specifier: ^1.23.0 + version: 1.23.0(graphql@15.8.0) hasha: specifier: ^5.0.0 version: 5.2.2 From 89a3e367b686782a2eba6261cb3de79431c8a04c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 09:46:45 +0200 Subject: [PATCH 8/8] Version Packages (#2358) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases > The changelog information of each package has been omitted from this message, as the content exceeds the size limit. ## @comet/admin@7.0.0 ## @comet/admin-color-picker@7.0.0 ## @comet/admin-date-time@7.0.0 ## @comet/admin-react-select@7.0.0 ## @comet/admin-rte@7.0.0 ## @comet/admin-theme@7.0.0 ## @comet/blocks-admin@7.0.0 ## @comet/cms-admin@7.0.0 ## @comet/blocks-api@7.0.0 ## @comet/cms-api@7.0.0 ## @comet/eslint-config@7.0.0 ## @comet/cms-site@7.0.0 ## @comet/admin-babel-preset@7.0.0 ## @comet/admin-icons@7.0.0 ## @comet/cli@7.0.0 ## @comet/eslint-plugin@7.0.0 Co-authored-by: github-actions[bot] --- .changeset/beige-brooms-try.md | 7 - .changeset/blue-apricots-appear.md | 5 - .changeset/brave-kiwis-pay.md | 5 - .changeset/bright-dolls-live.md | 57 --- .changeset/bright-lobsters-shout.md | 7 - .changeset/brown-cups-exist.md | 7 - .changeset/brown-kids-develop.md | 7 - .changeset/chatty-walls-study.md | 5 - .changeset/chilled-walls-shop.md | 21 - .changeset/clean-apes-vanish.md | 9 - .changeset/clean-insects-happen.md | 10 - .changeset/clever-clocks-smile.md | 5 - .changeset/cool-kangaroos-cough.md | 26 - .changeset/cool-kiwis-shop.md | 5 - .changeset/curly-pillows-decide.md | 19 - .changeset/curvy-moles-punch.md | 29 -- .changeset/cyan-drinks-enjoy.md | 8 - .changeset/cyan-ladybugs-bathe.md | 7 - .changeset/dirty-rabbits-tease.md | 5 - .changeset/early-news-attend.md | 6 - .changeset/eight-rules-laugh.md | 7 - .changeset/eighty-owls-cheat.md | 20 - .changeset/empty-islands-confess.md | 17 - .changeset/fair-waves-breathe.md | 5 - .changeset/fast-dodos-compete.md | 7 - .changeset/fast-pens-laugh.md | 5 - .changeset/fifty-beers-attend.md | 7 - .changeset/fifty-keys-sit.md | 16 - .changeset/fifty-suits-drive.md | 7 - .changeset/fluffy-oranges-approve.md | 7 - .changeset/fluffy-sheep-hammer.md | 7 - .changeset/forty-bees-exercise.md | 58 --- .changeset/forty-hounds-work.md | 59 --- .changeset/forty-ways-matter.md | 45 -- .changeset/four-cobras-shave.md | 11 - .changeset/fresh-buckets-begin.md | 31 -- .changeset/fresh-sheep-remember.md | 7 - .changeset/friendly-mayflies-play.md | 40 -- .changeset/funny-paws-dream.md | 30 -- .changeset/fuzzy-foxes-laugh.md | 8 - .changeset/gentle-chefs-sell.md | 7 - .changeset/gentle-pots-perform.md | 5 - .changeset/giant-apples-cheer.md | 8 - .changeset/giant-humans-lick.md | 27 -- .changeset/giant-ladybugs-greet.md | 17 - .changeset/giant-suns-begin.md | 7 - .changeset/good-squids-join.md | 21 - .changeset/gorgeous-islands-perform.md | 5 - .changeset/great-hotels-unite.md | 10 - .changeset/great-insects-reply.md | 7 - .changeset/grumpy-poets-own.md | 5 - .changeset/happy-fans-pump.md | 5 - .changeset/happy-ladybugs-smile.md | 5 - .changeset/hot-buckets-talk.md | 5 - .changeset/hot-carpets-eat.md | 5 - .changeset/hot-drinks-crash.md | 5 - .changeset/khaki-cobras-trade.md | 7 - .changeset/khaki-eels-try.md | 5 - .changeset/large-mirrors-teach.md | 13 - .changeset/light-chefs-lie.md | 7 - .changeset/light-ligers-wonder.md | 7 - .changeset/long-bottles-brush.md | 18 - .changeset/long-crabs-bake.md | 8 - .changeset/long-items-sell.md | 8 - .changeset/many-rivers-exist.md | 5 - .changeset/mean-coats-matter.md | 19 - .changeset/metal-bugs-beg.md | 27 -- .changeset/metal-seas-listen.md | 5 - .changeset/modern-glasses-sort.md | 20 - .changeset/neat-kiwis-serve.md | 6 - .changeset/nervous-sloths-thank.md | 5 - .changeset/nervous-windows-grin.md | 13 - .changeset/new-chicken-search.md | 7 - .changeset/nice-pigs-mate.md | 15 - .changeset/ninety-adults-peel.md | 7 - .changeset/ninety-countries-chew.md | 5 - .changeset/odd-countries-drive.md | 18 - .changeset/old-falcons-complain.md | 5 - .changeset/plenty-cougars-warn.md | 36 -- .changeset/polite-ducks-juggle.md | 8 - .changeset/polite-needles-unite.md | 5 - .changeset/poor-dragons-sing.md | 5 - .changeset/popular-planes-tap.md | 20 - .changeset/popular-shirts-pretend.md | 7 - .changeset/pre.json | 150 ------ .changeset/pretty-deers-trade.md | 5 - .changeset/pretty-kangaroos-repair.md | 7 - .changeset/proud-cheetahs-sleep.md | 9 - .changeset/quick-foxes-notice.md | 5 - .changeset/rare-boxes-guess.md | 5 - .changeset/rare-crabs-burn.md | 7 - .changeset/real-roses-applaud.md | 58 --- .changeset/rotten-clocks-shop.md | 7 - .changeset/rotten-pots-itch.md | 56 --- .changeset/selfish-books-fail.md | 5 - .changeset/selfish-dolls-beg.md | 14 - .changeset/selfish-shrimps-explode.md | 5 - .changeset/serious-bats-boil.md | 8 - .changeset/serious-ravens-matter.md | 5 - .changeset/sharp-zebras-hear.md | 5 - .changeset/short-donkeys-double.md | 16 - .changeset/shy-jars-float.md | 5 - .changeset/shy-scissors-joke.md | 9 - .changeset/sixty-cougars-begin.md | 7 - .changeset/small-eggs-learn.md | 16 - .changeset/small-snails-mate.md | 9 - .changeset/smooth-chefs-flow.md | 5 - .changeset/spotty-penguins-wash.md | 20 - .changeset/stale-pandas-watch.md | 8 - .changeset/strange-clouds-pretend.md | 31 -- .changeset/strange-coins-hug.md | 10 - .changeset/strange-frogs-remain.md | 5 - .changeset/strange-steaks-pull.md | 7 - .changeset/ten-buses-lie.md | 9 - .changeset/ten-turkeys-poke.md | 29 -- .changeset/tender-dots-warn.md | 7 - .changeset/tender-pigs-rest.md | 21 - .changeset/thin-ligers-pull.md | 7 - .changeset/thirty-countries-refuse.md | 13 - .changeset/tidy-impalas-refuse.md | 7 - .changeset/tough-zoos-refuse.md | 8 - .changeset/tricky-paws-march.md | 7 - .changeset/twelve-spoons-play.md | 7 - .changeset/twenty-impalas-count.md | 5 - .changeset/two-lions-promise.md | 5 - .changeset/two-walls-fetch.md | 11 - .changeset/unlucky-points-matter.md | 5 - .changeset/violet-wombats-try.md | 8 - .changeset/weak-comics-rhyme.md | 19 - .changeset/weak-moles-destroy.md | 5 - .changeset/wise-moose-argue.md | 30 -- .changeset/yellow-houses-talk.md | 106 ----- .changeset/yellow-seahorses-lick.md | 11 - .changeset/young-lies-cry.md | 7 - .../admin/admin-babel-preset/CHANGELOG.md | 2 + .../admin/admin-babel-preset/package.json | 2 +- .../admin/admin-color-picker/CHANGELOG.md | 160 +++++++ .../admin/admin-color-picker/package.json | 10 +- packages/admin/admin-date-time/CHANGELOG.md | 217 +++++++++ packages/admin/admin-date-time/package.json | 10 +- packages/admin/admin-icons/CHANGELOG.md | 2 + packages/admin/admin-icons/package.json | 6 +- .../admin/admin-react-select/CHANGELOG.md | 159 +++++++ .../admin/admin-react-select/package.json | 10 +- packages/admin/admin-rte/CHANGELOG.md | 155 ++++++ packages/admin/admin-rte/package.json | 10 +- packages/admin/admin-theme/CHANGELOG.md | 181 +++++++ packages/admin/admin-theme/package.json | 8 +- packages/admin/admin/CHANGELOG.md | 414 ++++++++++++++++ packages/admin/admin/package.json | 10 +- packages/admin/blocks-admin/CHANGELOG.md | 183 +++++++ packages/admin/blocks-admin/package.json | 12 +- packages/admin/cms-admin/CHANGELOG.md | 445 ++++++++++++++++++ packages/admin/cms-admin/package.json | 20 +- packages/api/blocks-api/CHANGELOG.md | 81 ++++ packages/api/blocks-api/package.json | 4 +- packages/api/cms-api/CHANGELOG.md | 369 +++++++++++++++ packages/api/cms-api/package.json | 6 +- packages/cli/CHANGELOG.md | 2 + packages/cli/package.json | 4 +- packages/eslint-config/CHANGELOG.md | 41 ++ packages/eslint-config/package.json | 4 +- packages/eslint-plugin/CHANGELOG.md | 2 + packages/eslint-plugin/package.json | 2 +- packages/site/cms-site/CHANGELOG.md | 202 ++++++++ packages/site/cms-site/package.json | 6 +- pnpm-lock.yaml | 92 ++-- 167 files changed, 2723 insertions(+), 2033 deletions(-) delete mode 100644 .changeset/beige-brooms-try.md delete mode 100644 .changeset/blue-apricots-appear.md delete mode 100644 .changeset/brave-kiwis-pay.md delete mode 100644 .changeset/bright-dolls-live.md delete mode 100644 .changeset/bright-lobsters-shout.md delete mode 100644 .changeset/brown-cups-exist.md delete mode 100644 .changeset/brown-kids-develop.md delete mode 100644 .changeset/chatty-walls-study.md delete mode 100644 .changeset/chilled-walls-shop.md delete mode 100644 .changeset/clean-apes-vanish.md delete mode 100644 .changeset/clean-insects-happen.md delete mode 100644 .changeset/clever-clocks-smile.md delete mode 100644 .changeset/cool-kangaroos-cough.md delete mode 100644 .changeset/cool-kiwis-shop.md delete mode 100644 .changeset/curly-pillows-decide.md delete mode 100644 .changeset/curvy-moles-punch.md delete mode 100644 .changeset/cyan-drinks-enjoy.md delete mode 100644 .changeset/cyan-ladybugs-bathe.md delete mode 100644 .changeset/dirty-rabbits-tease.md delete mode 100644 .changeset/early-news-attend.md delete mode 100644 .changeset/eight-rules-laugh.md delete mode 100644 .changeset/eighty-owls-cheat.md delete mode 100644 .changeset/empty-islands-confess.md delete mode 100644 .changeset/fair-waves-breathe.md delete mode 100644 .changeset/fast-dodos-compete.md delete mode 100644 .changeset/fast-pens-laugh.md delete mode 100644 .changeset/fifty-beers-attend.md delete mode 100644 .changeset/fifty-keys-sit.md delete mode 100644 .changeset/fifty-suits-drive.md delete mode 100644 .changeset/fluffy-oranges-approve.md delete mode 100644 .changeset/fluffy-sheep-hammer.md delete mode 100644 .changeset/forty-bees-exercise.md delete mode 100644 .changeset/forty-hounds-work.md delete mode 100644 .changeset/forty-ways-matter.md delete mode 100644 .changeset/four-cobras-shave.md delete mode 100644 .changeset/fresh-buckets-begin.md delete mode 100644 .changeset/fresh-sheep-remember.md delete mode 100644 .changeset/friendly-mayflies-play.md delete mode 100644 .changeset/funny-paws-dream.md delete mode 100644 .changeset/fuzzy-foxes-laugh.md delete mode 100644 .changeset/gentle-chefs-sell.md delete mode 100644 .changeset/gentle-pots-perform.md delete mode 100644 .changeset/giant-apples-cheer.md delete mode 100644 .changeset/giant-humans-lick.md delete mode 100644 .changeset/giant-ladybugs-greet.md delete mode 100644 .changeset/giant-suns-begin.md delete mode 100644 .changeset/good-squids-join.md delete mode 100644 .changeset/gorgeous-islands-perform.md delete mode 100644 .changeset/great-hotels-unite.md delete mode 100644 .changeset/great-insects-reply.md delete mode 100644 .changeset/grumpy-poets-own.md delete mode 100644 .changeset/happy-fans-pump.md delete mode 100644 .changeset/happy-ladybugs-smile.md delete mode 100644 .changeset/hot-buckets-talk.md delete mode 100644 .changeset/hot-carpets-eat.md delete mode 100644 .changeset/hot-drinks-crash.md delete mode 100644 .changeset/khaki-cobras-trade.md delete mode 100644 .changeset/khaki-eels-try.md delete mode 100644 .changeset/large-mirrors-teach.md delete mode 100644 .changeset/light-chefs-lie.md delete mode 100644 .changeset/light-ligers-wonder.md delete mode 100644 .changeset/long-bottles-brush.md delete mode 100644 .changeset/long-crabs-bake.md delete mode 100644 .changeset/long-items-sell.md delete mode 100644 .changeset/many-rivers-exist.md delete mode 100644 .changeset/mean-coats-matter.md delete mode 100644 .changeset/metal-bugs-beg.md delete mode 100644 .changeset/metal-seas-listen.md delete mode 100644 .changeset/modern-glasses-sort.md delete mode 100644 .changeset/neat-kiwis-serve.md delete mode 100644 .changeset/nervous-sloths-thank.md delete mode 100644 .changeset/nervous-windows-grin.md delete mode 100644 .changeset/new-chicken-search.md delete mode 100644 .changeset/nice-pigs-mate.md delete mode 100644 .changeset/ninety-adults-peel.md delete mode 100644 .changeset/ninety-countries-chew.md delete mode 100644 .changeset/odd-countries-drive.md delete mode 100644 .changeset/old-falcons-complain.md delete mode 100644 .changeset/plenty-cougars-warn.md delete mode 100644 .changeset/polite-ducks-juggle.md delete mode 100644 .changeset/polite-needles-unite.md delete mode 100644 .changeset/poor-dragons-sing.md delete mode 100644 .changeset/popular-planes-tap.md delete mode 100644 .changeset/popular-shirts-pretend.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/pretty-deers-trade.md delete mode 100644 .changeset/pretty-kangaroos-repair.md delete mode 100644 .changeset/proud-cheetahs-sleep.md delete mode 100644 .changeset/quick-foxes-notice.md delete mode 100644 .changeset/rare-boxes-guess.md delete mode 100644 .changeset/rare-crabs-burn.md delete mode 100644 .changeset/real-roses-applaud.md delete mode 100644 .changeset/rotten-clocks-shop.md delete mode 100644 .changeset/rotten-pots-itch.md delete mode 100644 .changeset/selfish-books-fail.md delete mode 100644 .changeset/selfish-dolls-beg.md delete mode 100644 .changeset/selfish-shrimps-explode.md delete mode 100644 .changeset/serious-bats-boil.md delete mode 100644 .changeset/serious-ravens-matter.md delete mode 100644 .changeset/sharp-zebras-hear.md delete mode 100644 .changeset/short-donkeys-double.md delete mode 100644 .changeset/shy-jars-float.md delete mode 100644 .changeset/shy-scissors-joke.md delete mode 100644 .changeset/sixty-cougars-begin.md delete mode 100644 .changeset/small-eggs-learn.md delete mode 100644 .changeset/small-snails-mate.md delete mode 100644 .changeset/smooth-chefs-flow.md delete mode 100644 .changeset/spotty-penguins-wash.md delete mode 100644 .changeset/stale-pandas-watch.md delete mode 100644 .changeset/strange-clouds-pretend.md delete mode 100644 .changeset/strange-coins-hug.md delete mode 100644 .changeset/strange-frogs-remain.md delete mode 100644 .changeset/strange-steaks-pull.md delete mode 100644 .changeset/ten-buses-lie.md delete mode 100644 .changeset/ten-turkeys-poke.md delete mode 100644 .changeset/tender-dots-warn.md delete mode 100644 .changeset/tender-pigs-rest.md delete mode 100644 .changeset/thin-ligers-pull.md delete mode 100644 .changeset/thirty-countries-refuse.md delete mode 100644 .changeset/tidy-impalas-refuse.md delete mode 100644 .changeset/tough-zoos-refuse.md delete mode 100644 .changeset/tricky-paws-march.md delete mode 100644 .changeset/twelve-spoons-play.md delete mode 100644 .changeset/twenty-impalas-count.md delete mode 100644 .changeset/two-lions-promise.md delete mode 100644 .changeset/two-walls-fetch.md delete mode 100644 .changeset/unlucky-points-matter.md delete mode 100644 .changeset/violet-wombats-try.md delete mode 100644 .changeset/weak-comics-rhyme.md delete mode 100644 .changeset/weak-moles-destroy.md delete mode 100644 .changeset/wise-moose-argue.md delete mode 100644 .changeset/yellow-houses-talk.md delete mode 100644 .changeset/yellow-seahorses-lick.md delete mode 100644 .changeset/young-lies-cry.md diff --git a/.changeset/beige-brooms-try.md b/.changeset/beige-brooms-try.md deleted file mode 100644 index 7d54e1700b..0000000000 --- a/.changeset/beige-brooms-try.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Remove `download` helper - -Use `createFileUploadInputFromUrl` instead. diff --git a/.changeset/blue-apricots-appear.md b/.changeset/blue-apricots-appear.md deleted file mode 100644 index 9a53169fc3..0000000000 --- a/.changeset/blue-apricots-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Add support for filtering one-to-many relations by id diff --git a/.changeset/brave-kiwis-pay.md b/.changeset/brave-kiwis-pay.md deleted file mode 100644 index aa46ea5c70..0000000000 --- a/.changeset/brave-kiwis-pay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add `StackToolbar`, a variant of `Toolbar` component that hides itself in a nested stack diff --git a/.changeset/bright-dolls-live.md b/.changeset/bright-dolls-live.md deleted file mode 100644 index f3bebda792..0000000000 --- a/.changeset/bright-dolls-live.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Remove CDN config from DAM - -It was a bad idea to introduce this in the first place, because `@comet/cms-api` should not be opinionated about how the CDN works. - -Modern applications require all traffic to be routed through a CDN. Cloudflare offers a tunnel, which made the origin-check obsolete, so we introduced a flag to disable the origin check. - -Also changes the behavior of the `FilesService::createFileUrl()`-method which now expects an options-object as second argument. - -## How to migrate (only required if CDN is used): - -Remove the following env vars from the API - -``` -DAM_CDN_ENABLED= -DAM_CDN_DOMAIN= -DAM_CDN_ORIGIN_HEADER= -DAM_DISABLE_CDN_ORIGIN_HEADER_CHECK=false -``` - -If you want to enable the origin check: - -1. Set the following env vars for the API - -``` -CDN_ORIGIN_CHECK_SECRET="Use value from DAM_CDN_ORIGIN_HEADER to avoid downtime" -``` - -_environment-variables.ts_ - -``` -@IsOptional() -@IsString() -CDN_ORIGIN_CHECK_SECRET: string; -``` - -_config.ts_ - -``` -cdn: { - originCheckSecret: envVars.CDN_ORIGIN_CHECK_SECRET, -}, -``` - -2. Add CdnGuard - -``` -// if CDN is enabled, make sure all traffic is either coming from the CDN or internal sources -if (config.cdn.originCheckSecret) { - app.useGlobalGuards(new CdnGuard({ headerName: "x-cdn-origin-check", headerValue: config.cdn.originCheckSecret })); -} -``` - -3. DNS changes might be required. `api.example.com` should point to CDN, CDN should point to internal API domain diff --git a/.changeset/bright-lobsters-shout.md b/.changeset/bright-lobsters-shout.md deleted file mode 100644 index 3ed2dece9b..0000000000 --- a/.changeset/bright-lobsters-shout.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Remove `FileUploadService` - -Use `createFileUploadInputFromUrl` instead of `FileUploadService#createFileUploadInputFromUrl`. diff --git a/.changeset/brown-cups-exist.md b/.changeset/brown-cups-exist.md deleted file mode 100644 index f4df582932..0000000000 --- a/.changeset/brown-cups-exist.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove `clearable` prop from `FinalFormSelect` and `FinalFormAsyncSelect` - -`FinalFormSelect` and `FinalFormAsyncSelect` are now clearable when `required` is not set. diff --git a/.changeset/brown-kids-develop.md b/.changeset/brown-kids-develop.md deleted file mode 100644 index 883bfcd1e0..0000000000 --- a/.changeset/brown-kids-develop.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Create a subroute by default in `SaveBoundary` - -The default path is `./save`, you can change it using the `subRoutePath` prop. diff --git a/.changeset/chatty-walls-study.md b/.changeset/chatty-walls-study.md deleted file mode 100644 index eacc778281..0000000000 --- a/.changeset/chatty-walls-study.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add hover effect for collapsed menu icons. This ensures that navigation is also possible in collapsed state. diff --git a/.changeset/chilled-walls-shop.md b/.changeset/chilled-walls-shop.md deleted file mode 100644 index 3e0182fc81..0000000000 --- a/.changeset/chilled-walls-shop.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@comet/eslint-config": major ---- - -Add the rule `@typescript-eslint/prefer-enum-initializers` to require enum initializers - -```ts -// ✅ -enum ExampleEnum { - One = "One", - Two = "Two", -} -``` - -```ts -// ❌ -enum ExampleEnum { - One, - Two, -} -``` diff --git a/.changeset/clean-apes-vanish.md b/.changeset/clean-apes-vanish.md deleted file mode 100644 index 97933e1fc1..0000000000 --- a/.changeset/clean-apes-vanish.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@comet/cms-admin": major -"@comet/cms-api": major ---- - -Remove `language` field from `User` object - -- Providing the locale is not mandatory for ID-Tokens -- Does not have a real use case (better rely on the Accept-Language header of the browser to determine the language of the current user) diff --git a/.changeset/clean-insects-happen.md b/.changeset/clean-insects-happen.md deleted file mode 100644 index 1e08dab2ca..0000000000 --- a/.changeset/clean-insects-happen.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@comet/cms-api": major ---- - -`FilesService#createFileDownloadUrl` now expects an options object as second parameter - -```diff -- this.filesService.createFileDownloadUrl(file, previewDamUrls) -+ this.filesService.createFileDownloadUrl(file, { previewDamUrls, relativeDamUrls }) -``` diff --git a/.changeset/clever-clocks-smile.md b/.changeset/clever-clocks-smile.md deleted file mode 100644 index 2fcd094778..0000000000 --- a/.changeset/clever-clocks-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-color-picker": major ---- - -Replace the `componentsProps` prop with `slotProps` in `ColorPicker` and remove the `ColorPickerComponentsProps` type diff --git a/.changeset/cool-kangaroos-cough.md b/.changeset/cool-kangaroos-cough.md deleted file mode 100644 index a8cd93aa1c..0000000000 --- a/.changeset/cool-kangaroos-cough.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Remove `EditPageLayout` - -You can completely remove `EditPageLayout` from your application. -Instead, use `MainContent` to wrap all your page content except the `Toolbar`. -If needed, wrap `MainContent` and `Toolbar` in a fragment. - -Example: - -```diff -- -+ <> - - // ... - --
-+ - // ... --
-+ --
-+ -``` diff --git a/.changeset/cool-kiwis-shop.md b/.changeset/cool-kiwis-shop.md deleted file mode 100644 index 8003fdf773..0000000000 --- a/.changeset/cool-kiwis-shop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Rework theme of MUI's `Chip` to match the updated Comet CI diff --git a/.changeset/curly-pillows-decide.md b/.changeset/curly-pillows-decide.md deleted file mode 100644 index 58276674a4..0000000000 --- a/.changeset/curly-pillows-decide.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add new `DataGridToolbar` component - -The "normal" `Toolbar` is meant to be used on page-level to show the current scope, breadcrumbs and page-wide action buttons (like save). -The `DataGridToolbar`, however, is meant to be used in DataGrids to contain a search input, filter options, bulk actions and an add button. - -You can use it like this: - -```tsx - {/* ... */}, - }} -/> -``` diff --git a/.changeset/curvy-moles-punch.md b/.changeset/curvy-moles-punch.md deleted file mode 100644 index aae724d896..0000000000 --- a/.changeset/curvy-moles-punch.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Rework `typographyOptions` - -- Replace `typographyOptions` with `createTypographyOptions()` to enable using the theme's breakpoints for media queries -- Add new default styles for variants `subtitle1`, `subtitle2`, `caption` and `overline` -- Remove custom `fontWeights` -- Switch the font from `Roboto` to `Roboto Flex` - -The font switch requires you to make the following two changes in your admin application: - -**Note: The `@comet/upgrade` script handles these changes automatically.** - -```diff -// package.json -- "@fontsource/roboto": "^4.5.5", -+ "@fontsource-variable/roboto-flex": "^5.0.0", -``` - -```diff -// App.tsx -- import "@fontsource/roboto/100.css"; -- import "@fontsource/roboto/300.css"; -- import "@fontsource/roboto/400.css"; -- import "@fontsource/roboto/500.css"; -+ import "@fontsource-variable/roboto-flex/full.css"; -``` diff --git a/.changeset/cyan-drinks-enjoy.md b/.changeset/cyan-drinks-enjoy.md deleted file mode 100644 index 7679ef251f..0000000000 --- a/.changeset/cyan-drinks-enjoy.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/admin": major ---- - -Change theming method of `Menu` - -- Rename `permanent` class-key to `permanentDrawer` and `temporary` class-key to `temporaryDrawer` -- Replace the `permanentDrawerProps` and `temporaryDrawerProps` props with `slotProps` diff --git a/.changeset/cyan-ladybugs-bathe.md b/.changeset/cyan-ladybugs-bathe.md deleted file mode 100644 index 6618eed645..0000000000 --- a/.changeset/cyan-ladybugs-bathe.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Add `list` option to `@CrudGenerator()` to allow disabling the list query - -Related DTO classes will still be generated as they might be useful for application code. diff --git a/.changeset/dirty-rabbits-tease.md b/.changeset/dirty-rabbits-tease.md deleted file mode 100644 index 89dd04acda..0000000000 --- a/.changeset/dirty-rabbits-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `listItem` class key from `MenuCollapsibleItemClassKey` due to a larger overhaul of the menu components diff --git a/.changeset/early-news-attend.md b/.changeset/early-news-attend.md deleted file mode 100644 index 78e46dc704..0000000000 --- a/.changeset/early-news-attend.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@comet/cms-admin": major -"@comet/cms-api": major ---- - -CRUD Generator: Remove `lastUpdatedAt` argument from update mutations diff --git a/.changeset/eight-rules-laugh.md b/.changeset/eight-rules-laugh.md deleted file mode 100644 index 42677672b2..0000000000 --- a/.changeset/eight-rules-laugh.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `openedIcon` and `closedIcon` props from `MenuCollapsibleItem` and add `iconMapping` instead - -The icon shown as the collapse indicator will be chosen from `iconMapping`, depending on the collapsed states of the Menu and the Item. diff --git a/.changeset/eighty-owls-cheat.md b/.changeset/eighty-owls-cheat.md deleted file mode 100644 index acc051b683..0000000000 --- a/.changeset/eighty-owls-cheat.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Rework colors - -- Rename `bluePalette` to `primaryPalette` -- Rename `neutrals` to `greyPalette` -- Remove `greenPalette` -- Change colors in all palettes -- Change `text` colors -- Add `highlight` colors `purple`, `green`, `orange`, `yellow` and `red` to palette - -Hint: To use the `highlight` colors without getting a type error, you must adjust the `vendors.d.ts` in your project: - -```diff -+ /// - -// ... -``` diff --git a/.changeset/empty-islands-confess.md b/.changeset/empty-islands-confess.md deleted file mode 100644 index 75c3213a6f..0000000000 --- a/.changeset/empty-islands-confess.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add the ability to change by which fields a DataGrid column is sorted using `sortBy` in the column definition - -This can be useful for custom columns that do not represent an actual field in the data, e.g., columns that render the data of multiple fields. - -```tsx -const columns: GridColDef[] = [ - { - field: "fullName", - sortBy: ["firstName", "lastName"], - renderCell: ({ row }) => `${row.firstName} ${row.lastName}`, - }, -]; -``` diff --git a/.changeset/fair-waves-breathe.md b/.changeset/fair-waves-breathe.md deleted file mode 100644 index 7058dcf2b5..0000000000 --- a/.changeset/fair-waves-breathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Show icons in permanent menu even in closed state. diff --git a/.changeset/fast-dodos-compete.md b/.changeset/fast-dodos-compete.md deleted file mode 100644 index 723c5d84ff..0000000000 --- a/.changeset/fast-dodos-compete.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add `ForcePromptRoute`, a `Route` that triggers a prompt even if it is a subroute - -Used in `StackSwitch` so that navigating to a nested stack subpage will show a prompt (if dirty) diff --git a/.changeset/fast-pens-laugh.md b/.changeset/fast-pens-laugh.md deleted file mode 100644 index b7f143b603..0000000000 --- a/.changeset/fast-pens-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Deprecate `InternalLinkBlock` component, instead there should be a copy of this component in the application for flexibility (e.g., support for internationalized routing) diff --git a/.changeset/fifty-beers-attend.md b/.changeset/fifty-beers-attend.md deleted file mode 100644 index fbc45814d2..0000000000 --- a/.changeset/fifty-beers-attend.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove `popoverProps` from `AppHeaderDropdown` - -Use `slotProps.popover` instead. diff --git a/.changeset/fifty-keys-sit.md b/.changeset/fifty-keys-sit.md deleted file mode 100644 index 78a41b4809..0000000000 --- a/.changeset/fifty-keys-sit.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Replace the `ContentScopeIndicator` with a new version intended for use in the new `Toolbar` - -The old `ContentScopeIndicator` was a purely cosmetic component. Hence, the logic for displaying the current scope had to be implemented in the project (usually in a project-internal `ContentScopeIndicator` component). - -The new `ContentScopeIndicator` has the logic for displaying the current scope built-in. Thus, you can remove your project's `ContentScopeIndicator` implementation and directly use the `ContentScopeIndicator` from this library. - -Usage: - -- Per default, the `ContentScopeIndicator` displays the current `ContentScope` -- Pass a scope object via the `scope` prop if your page has a custom scope -- Pass the `global` prop if your page has no scope -- Pass `children` if you want to render completely custom content diff --git a/.changeset/fifty-suits-drive.md b/.changeset/fifty-suits-drive.md deleted file mode 100644 index 01072d17c6..0000000000 --- a/.changeset/fifty-suits-drive.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-theme": minor ---- - -Override the default theme of `Badge` - -If no children are passed, the Badge renders as is without position relative and absolute. diff --git a/.changeset/fluffy-oranges-approve.md b/.changeset/fluffy-oranges-approve.md deleted file mode 100644 index b84740a057..0000000000 --- a/.changeset/fluffy-oranges-approve.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Make `@nestjs/platform-express` a peer dependency - -Make sure that `@nestjs/platform-express` is installed in the application. diff --git a/.changeset/fluffy-sheep-hammer.md b/.changeset/fluffy-sheep-hammer.md deleted file mode 100644 index 2311bc9865..0000000000 --- a/.changeset/fluffy-sheep-hammer.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Bump styled-components peer dependency to v6 - -Follow the official [migration guide](https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6) to upgrade. diff --git a/.changeset/forty-bees-exercise.md b/.changeset/forty-bees-exercise.md deleted file mode 100644 index d70d0dcf5a..0000000000 --- a/.changeset/forty-bees-exercise.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Restructure `MasterMenuData` - -Items now need an explicit `type`. There are four types available: - -- `route` - - ```diff - { - + type: "route", - primary: , - icon: , - route: { - path: "/dashboard", - component: Dashboard, - }, - }, - ``` - -- `externalLink` - - ```diff - { - + type: "externalLink", - primary: , - icon: , - href: "https://comet-dxp.com", - }, - ``` - -- `collapsible` - - ```diff - { - + type: "collapsible", - primary: , - icon: , - - submenu: [ - + items: [ - // ... - ], - }, - ``` - -- `group` (new) - - ```diff - { - + type: "group", - + title: , - + items: [ - + // ... - + ] - }, - ``` diff --git a/.changeset/forty-hounds-work.md b/.changeset/forty-hounds-work.md deleted file mode 100644 index 2aafc07200..0000000000 --- a/.changeset/forty-hounds-work.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -"@comet/blocks-api": major -"@comet/cms-api": major ---- - -Support "real" dependency injection in `BlockData#transformToPlain` - -Previously we supported poor man's dependency injection using the `TransformDependencies` object in `transformToPlain`. -This is now replaced by a technique that allows actual dependency injection. - -**Example** - -```ts -class NewsLinkBlockData extends BlockData { - @BlockField({ nullable: true }) - id?: string; - - transformToPlain() { - // Return service that does the transformation - return NewsLinkBlockTransformerService; - } -} - -type TransformResponse = { - news?: { - id: string; - slug: string; - }; -}; - -@Injectable() -class NewsLinkBlockTransformerService implements BlockTransformerServiceInterface { - // Use dependency injection here - constructor(@InjectRepository(News) private readonly repository: EntityRepository) {} - - async transformToPlain(block: NewsLinkBlockData, context: BlockContext) { - if (!block.id) { - return {}; - } - - const news = await this.repository.findOneOrFail(block.id); - - return { - news: { - id: news.id, - slug: news.slug, - }, - }; - } -} -``` - -Adding this new technique results in a few breaking changes: - -- Remove dynamic registration of `BlocksModule` -- Pass `moduleRef` to `BlocksTransformerMiddlewareFactory` instead of `dependencies` -- Remove `dependencies` from `BlockData#transformToPlain` - -See the [migration guide](https://docs.comet-dxp.com/docs/migration/migration-from-v6-to-v7) on how to migrate. diff --git a/.changeset/forty-ways-matter.md b/.changeset/forty-ways-matter.md deleted file mode 100644 index cbd859aeb8..0000000000 --- a/.changeset/forty-ways-matter.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Change default value for input field if property has no initializer - -Previously, the following property of an entity - -```ts -@Property({ type: types.date, nullable: true }) -@Field({ nullable: true }) -availableSince?: Date; -``` - -resulted in the following input being generated: - -```ts -@IsNullable() -@IsDate() -@Field({ nullable: true }) -availableSince?: Date; -``` - -This was problematic for two reasons: - -1. The error message would be misleading when trying to create an entity without providing a value for the property. For example, a valid GraphQL mutation - - ```graphql - mutation CreateProduct { - createProduct(input: { title: "A", slug: "A", description: "FOO" }) { - id - availableSince - } - } - ``` - - would result in the following error: - - ``` - "isDate": "availableSince must be a Date instance" - ``` - -2. Relying on the initializer as the default value is not obvious and appears somewhat magical. - -To address this, we now use `null` as the default value for nullable properties if no initializer is provided. If an initializer is provided, it is used as the default value. diff --git a/.changeset/four-cobras-shave.md b/.changeset/four-cobras-shave.md deleted file mode 100644 index 19e20d7014..0000000000 --- a/.changeset/four-cobras-shave.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add new `FileSelect`, `FileDropzone` and `FileSelectListItem` components - -`FileSelect` combines `FileDropzone` and `FileSelectListItem` to handle the user's selection of files, display those files below, and handle the download and removal actions. - -`FileDropzone` is a wrapper around [react-dropzone](https://www.npmjs.com/package/react-dropzone) that manages error and disabled states. - -`FileSelectListItem` is used to display a list of files, including loading, skeleton, and error states and options to download and delete the file. diff --git a/.changeset/fresh-buckets-begin.md b/.changeset/fresh-buckets-begin.md deleted file mode 100644 index 11fc53ef72..0000000000 --- a/.changeset/fresh-buckets-begin.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -"@comet/admin-date-time": major ---- - -Change `DatePicker` and `DateRangePicker` values from `Date` to `string` - -This affects the `value` prop and the value returned by the `onChange` event. - -The value of `DatePicker` is a string in the format `YYYY-MM-DD`. -The value of `DateRangePicker` is an object with `start` and `end` keys, each as a string in the format `YYYY-MM-DD`. - -The code that handles values from these components may need to be adjusted. -This may include how the values are stored in or sent to the database. - -```diff -- const [date, setDate] = useState(new Date("2024-03-10")); -+ const [date, setDate] = useState("2024-03-10"); - return ; -``` - -```diff - const [dateRange, setDateRange] = useState({ -- start: new Date("2024-03-10"), -- end: new Date("2024-03-16"), -+ start: "2024-03-10", -+ end: "2024-03-16", - }); - return ; -``` - -The reason for this change is that when selecting a date like `2024-04-10` in a timezone ahead of UTC, it would be stored in a `Date` object as e.g. `2024-04-09T22:00:00.000Z`. When only the date is saved to the database, without the time, it would be saved as `2024-04-09`, which differs from the selected date. diff --git a/.changeset/fresh-sheep-remember.md b/.changeset/fresh-sheep-remember.md deleted file mode 100644 index 1479c75e68..0000000000 --- a/.changeset/fresh-sheep-remember.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Upgrade to Next 14 and React 18 - -Add "use client" directive to components that currently require it (as they use styled-components or a context) diff --git a/.changeset/friendly-mayflies-play.md b/.changeset/friendly-mayflies-play.md deleted file mode 100644 index 726bf0f6c4..0000000000 --- a/.changeset/friendly-mayflies-play.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Revise `PixelImageBlock` to correctly use the "new" `next/image` component - -See the [docs](https://nextjs.org/docs/pages/api-reference/components/image-legacy#comparison) for a comparison between the new and the legacy component. - -**Migrate** - -Remove the `layout` prop from the block as it can lead to errors with the default implementation (`layout="responsive"` is not compatible with the new `fill` prop). - -- `layout={"responsive" | "inherit"}` can safely be removed - - ```diff - - ``` - -- `layout={"fill"}` can be replaced with `fill={true}` - - ```diff - - ``` - -Notes: - -The `PixelImageBlock` is usually wrapped in a `DamImageBlock` in the application. The `layout` prop should be removed from it as well. - -You can use the newly added `fill` prop of the `next/image` component by embedding the `PixelImageBlock` in a parent element that assigns the `position` style. See the [docs](https://nextjs.org/docs/pages/api-reference/components/image#fill) for more information. diff --git a/.changeset/funny-paws-dream.md b/.changeset/funny-paws-dream.md deleted file mode 100644 index b249f00e42..0000000000 --- a/.changeset/funny-paws-dream.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -"@comet/cms-admin": minor ---- - -Add `ContentScopeSelect` component - -This can be used as the basis for both content-driven and data-driven applications. - -**Example** - -```tsx -function ContentScopeControls() { - const [value, setValue] = useState({ domain: "main", language: "en" }); - - return ( - { - setValue(value); - }} - options={[ - { domain: { label: "Main", value: "main" }, language: { label: "English", value: "en" } }, - { domain: { label: "Main", value: "main" }, language: { label: "German", value: "de" } }, - { domain: { label: "Secondary", value: "secondary" }, language: { label: "English", value: "en" } }, - { domain: { label: "Secondary", value: "secondary" }, language: { label: "German", value: "de" } }, - ]} - /> - ); -} -``` diff --git a/.changeset/fuzzy-foxes-laugh.md b/.changeset/fuzzy-foxes-laugh.md deleted file mode 100644 index 235fcd3c4e..0000000000 --- a/.changeset/fuzzy-foxes-laugh.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Make icon required for top level menu and group items - -This fixes the problem, that there was no icon or text to display in the collapsed state of the menu if no icon was passed. -Icons are required for all top level menu items and the items of groups. Groups themselves do not require an icon. diff --git a/.changeset/gentle-chefs-sell.md b/.changeset/gentle-chefs-sell.md deleted file mode 100644 index 27274fe9f5..0000000000 --- a/.changeset/gentle-chefs-sell.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `requiredSymbol` prop from `FieldContainer` and use MUIs native implementation - -This prop was used to display a custom required symbol next to the label of the field. We now use the native implementation of the required attribute of MUI to ensure better accessibility and compatibility with screen readers. diff --git a/.changeset/gentle-pots-perform.md b/.changeset/gentle-pots-perform.md deleted file mode 100644 index cb360cbcea..0000000000 --- a/.changeset/gentle-pots-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": minor ---- - -Slightly increase the default size of dialogs diff --git a/.changeset/giant-apples-cheer.md b/.changeset/giant-apples-cheer.md deleted file mode 100644 index c876eb06e7..0000000000 --- a/.changeset/giant-apples-cheer.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/cms-api": major ---- - -API Generator: Add new `dedicatedResolverArg` option to `@CrudField` to generate better API for Many-to-one-relations - -- Add foreign id as argument to create mutation -- Add foreign id as argument to list query diff --git a/.changeset/giant-humans-lick.md b/.changeset/giant-humans-lick.md deleted file mode 100644 index ece6049435..0000000000 --- a/.changeset/giant-humans-lick.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Replace `additionalMimeTypes` and `overrideAcceptedMimeTypes` in `DamModule#damConfig` with `acceptedMimeTypes` - -You can now add mime types like this: - -```ts -DamModule.register({ - damConfig: { - acceptedMimeTypes: [...damDefaultAcceptedMimetypes, "something-else"], - }, -}); -``` - -And remove them like this: - -```ts -DamModule.register({ - damConfig: { - acceptedMimeTypes: damDefaultAcceptedMimetypes.filter((mimeType) => mimeType !== "application/zip"), - }, -}); -``` - -Don't forget to also remove/add the mime types in the admin's `DamConfigProvider` diff --git a/.changeset/giant-ladybugs-greet.md b/.changeset/giant-ladybugs-greet.md deleted file mode 100644 index 6df683edf1..0000000000 --- a/.changeset/giant-ladybugs-greet.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@comet/admin": major ---- - -Rework `Toolbar` - -- The `Toolbar` is now split into a top and a bottom bar. - - The top bar displays a scope indicator and breadcrumbs. The bottom bar behaves like the old `Toolbar`. - -- The styling of `Toolbar`, `ToolbarItem`, `ToolbarActions`, `ToolbarAutomaticTitleItem` and `ToolbarBackButton` was adjusted - -- The new `ToolbarActionButton` should be used for buttons inside the `ToolbarActions` - - It automatically switches from a normal `Button` to an `IconButton` for smaller screen sizes. - -- To show a scope indicator, you must pass a `` to the `Toolbar` via the `scopeIndicator` prop diff --git a/.changeset/giant-suns-begin.md b/.changeset/giant-suns-begin.md deleted file mode 100644 index a27684847f..0000000000 --- a/.changeset/giant-suns-begin.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove `temporaryDrawerProps`, `permanentDrawerProps`, `temporaryDrawerPaperProps` and `permanentDrawerPaperProps` props from `Menu` component. - -Use `slotProps` instead. diff --git a/.changeset/good-squids-join.md b/.changeset/good-squids-join.md deleted file mode 100644 index e8fe3b84c9..0000000000 --- a/.changeset/good-squids-join.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Store site preview scope in cookie and add `previewParams()` helper to access it - -- Requires the new `SITE_PREVIEW_SECRET` environment variable that must contain a random secret (not required for local development) -- Requires a Route Handler located at `app/api/site-preview/route.ts`: -- The previewParams() return a promise - - ```ts - import { sitePreviewRoute } from "@comet/cms-site"; - import { createGraphQLFetch } from "@src/util/graphQLClient"; - import { type NextRequest } from "next/server"; - - export const dynamic = "force-dynamic"; - - export async function GET(request: NextRequest) { - return sitePreviewRoute(request, createGraphQLFetch()); - } - ``` diff --git a/.changeset/gorgeous-islands-perform.md b/.changeset/gorgeous-islands-perform.md deleted file mode 100644 index 56f7054c6d..0000000000 --- a/.changeset/gorgeous-islands-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": major ---- - -filtersToMikroOrmQuery: Move second argument (`applyFilter` callback) into an options object diff --git a/.changeset/great-hotels-unite.md b/.changeset/great-hotels-unite.md deleted file mode 100644 index 091f339369..0000000000 --- a/.changeset/great-hotels-unite.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Refactor auth-decorators - -- Remove `@PublicApi()`-decorator -- Rename `@DisableGlobalGuard()`-decorator to `@DisableCometGuards()` - -The `@DisableCometGuards()`-decorator will only disable the AuthGuard when no `x-include-invisible-content`-header is set. diff --git a/.changeset/great-insects-reply.md b/.changeset/great-insects-reply.md deleted file mode 100644 index 32634b6656..0000000000 --- a/.changeset/great-insects-reply.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `FieldContainerComponent` component - -`FieldContainerComponent` was never intended to be exported, use `FieldContainer` instead. diff --git a/.changeset/grumpy-poets-own.md b/.changeset/grumpy-poets-own.md deleted file mode 100644 index f821545876..0000000000 --- a/.changeset/grumpy-poets-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Change `Link` text styling diff --git a/.changeset/happy-fans-pump.md b/.changeset/happy-fans-pump.md deleted file mode 100644 index a220014ade..0000000000 --- a/.changeset/happy-fans-pump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-admin": minor ---- - -Add future Admin Generator that works with configuration files diff --git a/.changeset/happy-ladybugs-smile.md b/.changeset/happy-ladybugs-smile.md deleted file mode 100644 index 13dec62322..0000000000 --- a/.changeset/happy-ladybugs-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -Rename the `FilterBarMoveFilersClassKey` type to `FilterBarMoreFiltersClassKey` diff --git a/.changeset/hot-buckets-talk.md b/.changeset/hot-buckets-talk.md deleted file mode 100644 index 79feb4860a..0000000000 --- a/.changeset/hot-buckets-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/eslint-config": major ---- - -nextjs: Enable `react/jsx-curly-brace-presence` rule diff --git a/.changeset/hot-carpets-eat.md b/.changeset/hot-carpets-eat.md deleted file mode 100644 index 724f68f77d..0000000000 --- a/.changeset/hot-carpets-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Rename `defaultDamAcceptedMimetypes` to `damDefaultAcceptedMimetypes` diff --git a/.changeset/hot-drinks-crash.md b/.changeset/hot-drinks-crash.md deleted file mode 100644 index cb8d114b3c..0000000000 --- a/.changeset/hot-drinks-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": minor ---- - -Adapt styling of filter panel in `DataGrid` for mobile devices (<900px) diff --git a/.changeset/khaki-cobras-trade.md b/.changeset/khaki-cobras-trade.md deleted file mode 100644 index 048ca36b65..0000000000 --- a/.changeset/khaki-cobras-trade.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `disabled` class-key in `TabScrollButton` - -Use the `:disabled` selector instead when styling the disabled state. diff --git a/.changeset/khaki-eels-try.md b/.changeset/khaki-eels-try.md deleted file mode 100644 index 41be238033..0000000000 --- a/.changeset/khaki-eels-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Only use horizontal layout in `FieldContainer` when it exceeds `600px` in width diff --git a/.changeset/large-mirrors-teach.md b/.changeset/large-mirrors-teach.md deleted file mode 100644 index b94fb4f5b6..0000000000 --- a/.changeset/large-mirrors-teach.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Fix an issue where the block preview could break a block's styling and HTML structure - -This was caused by a `div` added around every block to enable the selection and highlighting of the block in the block preview. -The `div` is still present but now uses `display: contents`, so its effect should be minimal. - -Common issues that should now be resolved include: - -- The image inside, e.g., a `PixelImageBlock`, would not be visible because the image's size depends on the parent `div`'s size. -- Blocks used as children of elements with `display: flex` or `display: grid` could not position themselves correctly. diff --git a/.changeset/light-chefs-lie.md b/.changeset/light-chefs-lie.md deleted file mode 100644 index 8338a9b54d..0000000000 --- a/.changeset/light-chefs-lie.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `MenuLevel` type - -The type can be used from `MenuItemProps['level']` instead, if necessary. diff --git a/.changeset/light-ligers-wonder.md b/.changeset/light-ligers-wonder.md deleted file mode 100644 index bcb2b8e00a..0000000000 --- a/.changeset/light-ligers-wonder.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-date-time": major ---- - -Remove the `clearable` prop and add a `required` prop to `DateRangePicker`, `DateTimePicker`, `TimePicker` and `TimeRangePicker` - -The clear button will automatically be shown for all optional fields. diff --git a/.changeset/long-bottles-brush.md b/.changeset/long-bottles-brush.md deleted file mode 100644 index c369b4d2dc..0000000000 --- a/.changeset/long-bottles-brush.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Rename `DateFilter` to `DateTimeFilter` - -This leaves room for a future DateFilter that only filters by date, not time. - -**Upgrading** - -1. Change import - -```diff -- import { DateFilter } from "@comet/cms-api"; -+ import { DateTimeFilter } from "@comet/cms-api"; -``` - -2. Re-run API Generator. diff --git a/.changeset/long-crabs-bake.md b/.changeset/long-crabs-bake.md deleted file mode 100644 index 2414467679..0000000000 --- a/.changeset/long-crabs-bake.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `components` and `componentProps` props from `CopyToClipboardButton` - -Instead, for the icons, use the `copyIcon` and `successIcon` props to pass a `ReactNode` instead of separately passing in values to the `components` and `componentProps` objects. -Use `slotPops` to pass props to the remaining elements. diff --git a/.changeset/long-items-sell.md b/.changeset/long-items-sell.md deleted file mode 100644 index bb3decacc7..0000000000 --- a/.changeset/long-items-sell.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/cms-admin": minor ---- - -Remove "Re-login"-button from `CurrentUserProvider` - -The button is already implemented in `createErrorDialogApolloLink()`. The correct arrangement of -the components in `App.tsx` (see migration guide) makes the double implementation needless. diff --git a/.changeset/many-rivers-exist.md b/.changeset/many-rivers-exist.md deleted file mode 100644 index 1d3fc3edef..0000000000 --- a/.changeset/many-rivers-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -Add `FeedbackButton` component diff --git a/.changeset/mean-coats-matter.md b/.changeset/mean-coats-matter.md deleted file mode 100644 index 69359d969c..0000000000 --- a/.changeset/mean-coats-matter.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Require `aspectRatio` prop for `PixelImageBlock` and `Image` - -The `16x9` default aspect ratio has repeatedly led to incorrectly displayed images on the site. -Therefore, it has been removed. -Instead, consider which aspect ratio to use for each image. - -**Example** - -```diff - -``` diff --git a/.changeset/metal-bugs-beg.md b/.changeset/metal-bugs-beg.md deleted file mode 100644 index 6379a8044e..0000000000 --- a/.changeset/metal-bugs-beg.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add the ability to make `DataGrid` columns responsive by setting the `visible` property of the column definition to a media query - -This can be used to hide certain columns on smaller screens and show a combined column instead. - -This will only work when using `usePersistentColumnState` with `DataGridPro`/`DataGridPremium`. -When defining the columns, use the `GridColDef` type from `@comet/admin` instead of `@mui/x-data-grid`. - -```ts -const columns: GridColDef[] = [ - { - field: "fullName", - visible: theme.breakpoints.down("md"), - }, - { - field: "firstName", - visible: theme.breakpoints.up("md"), - }, - { - field: "lastName", - visible: theme.breakpoints.up("md"), - }, -]; -``` diff --git a/.changeset/metal-seas-listen.md b/.changeset/metal-seas-listen.md deleted file mode 100644 index abad6b7023..0000000000 --- a/.changeset/metal-seas-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Router Prompt: actively reset form state when choosing discard in the prompt dialog diff --git a/.changeset/modern-glasses-sort.md b/.changeset/modern-glasses-sort.md deleted file mode 100644 index 11014c5c7c..0000000000 --- a/.changeset/modern-glasses-sort.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add the `GridCellContent` component - -Used to display primary and secondary texts and an icon in a `DataGrid` cell using the columns `renderCell` function. - -```tsx -const columns: GridColDef[] = [ - { - field: "title", - renderCell: ({ row }) => {row.title}, - }, - { - field: "overview", - renderCell: ({ row }) => } />, - }, -]; -``` diff --git a/.changeset/neat-kiwis-serve.md b/.changeset/neat-kiwis-serve.md deleted file mode 100644 index 61731e4bb9..0000000000 --- a/.changeset/neat-kiwis-serve.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@comet/cms-admin": minor -"@comet/cms-api": minor ---- - -CRUD Generator: Add support for date-only fields diff --git a/.changeset/nervous-sloths-thank.md b/.changeset/nervous-sloths-thank.md deleted file mode 100644 index f36e4963fc..0000000000 --- a/.changeset/nervous-sloths-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add setting `signInUrl` to `createErrorDialogApolloLink` diff --git a/.changeset/nervous-windows-grin.md b/.changeset/nervous-windows-grin.md deleted file mode 100644 index 0b785a9d9a..0000000000 --- a/.changeset/nervous-windows-grin.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@comet/cms-admin": major -"@comet/blocks-api": major -"@comet/cms-api": major ---- - -Remove unused/unnecessary peer dependencies - -Some dependencies were incorrectly marked as peer dependencies. -If you don't use them in your application, you may remove the following dependencies: - -- Admin: `axios` -- API: `@aws-sdk/client-s3`, `@azure/storage-blob` and `pg-error-constants` diff --git a/.changeset/new-chicken-search.md b/.changeset/new-chicken-search.md deleted file mode 100644 index 24e818c89b..0000000000 --- a/.changeset/new-chicken-search.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -InternalLinkBlock: add scope to targetPage in output - -This allows for example using the language from scope as url prefix in a multi-language site diff --git a/.changeset/nice-pigs-mate.md b/.changeset/nice-pigs-mate.md deleted file mode 100644 index 4a847992e2..0000000000 --- a/.changeset/nice-pigs-mate.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Rename "public uploads" to "file uploads" - -The name "public uploads" was not fitting since the uploads can also be used for "private" uploads in the Admin. -The feature was therefore renamed to "file uploads". - -This requires the following changes: - -- Use `FileUploadsModule` instead of `PublicUploadModule` -- Use `FileUpload` instead of `PublicUpload` -- Use `FileUploadsService` instead of `PublicUploadsService` -- Change the upload URL from `/public-upload/files/upload` to `/files-uploads/upload` diff --git a/.changeset/ninety-adults-peel.md b/.changeset/ninety-adults-peel.md deleted file mode 100644 index dcea95d454..0000000000 --- a/.changeset/ninety-adults-peel.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-color-picker": major ---- - -Remove `clearable` prop and add a `required` prop to `ColorPicker` - -The clear button will automatically be shown for all optional fields. diff --git a/.changeset/ninety-countries-chew.md b/.changeset/ninety-countries-chew.md deleted file mode 100644 index a05249ad40..0000000000 --- a/.changeset/ninety-countries-chew.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Add optional `fill` prop to `YouTubeVideoBlock` and `DamVideoBlock` to support same behavior as in `PixelImageBlock` diff --git a/.changeset/odd-countries-drive.md b/.changeset/odd-countries-drive.md deleted file mode 100644 index 08ab13ca9e..0000000000 --- a/.changeset/odd-countries-drive.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Secure file uploads upload endpoint by default - -The `/file-uploads/upload` endpoint now requires the `fileUploads` permission by default. - -Use the `upload.public` option to make the endpoint public: - -```diff -FileUploadsModule.register({ - /* ... */, -+ upload: { -+ public: true, -+ }, -}), -``` diff --git a/.changeset/old-falcons-complain.md b/.changeset/old-falcons-complain.md deleted file mode 100644 index 5887c44b81..0000000000 --- a/.changeset/old-falcons-complain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-admin": minor ---- - -Admin Generator: Use variant="horizontal" for all generated form fields diff --git a/.changeset/plenty-cougars-warn.md b/.changeset/plenty-cougars-warn.md deleted file mode 100644 index d0ee9aac64..0000000000 --- a/.changeset/plenty-cougars-warn.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Add GraphQL fetch client - -- `createGraphQLFetch`: simple graphql client around fetch, usage: createGraphQLFetch(fetch, url)(gql, variables) -- `type GraphQLFetch = (query: string, variables?: V, init?: RequestInit) => Promise` -- `gql` for tagging queries -- `createFetchWithDefaults` fetch decorator that adds default values (eg. headers or next.revalidate) -- `createFetchWithPreviewHeaders` fetch decorator that adds comet preview headers (based on SitePreviewData) - -Example helper in application: - -``` -export const graphQLApiUrl = `${typeof window === "undefined" ? process.env.API_URL_INTERNAL : process.env.NEXT_PUBLIC_API_URL}/graphql`; -export function createGraphQLFetch(previewData?: SitePreviewData) { - return createGraphQLFetchLibrary( - createFetchWithDefaults(createFetchWithPreviewHeaders(fetch, previewData), { next: { revalidate: 15 * 60 } }), - graphQLApiUrl, - ); - -} -``` - -Usage example: - -``` -const graphqlFetch = createGraphQLFetch(previewData); -const data = await graphqlFetch( - exampleQuery, - { - exampleVariable: "foo" - } -); -``` diff --git a/.changeset/polite-ducks-juggle.md b/.changeset/polite-ducks-juggle.md deleted file mode 100644 index 70f4a12e04..0000000000 --- a/.changeset/polite-ducks-juggle.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/eslint-config": major ---- - -Prevent `@mui/icons-material` icon imports - -Icons used in Comet DXP applications should match the Comet CI. -Use icons from `@comet/admin-icons` instead. diff --git a/.changeset/polite-needles-unite.md b/.changeset/polite-needles-unite.md deleted file mode 100644 index 97f204b36e..0000000000 --- a/.changeset/polite-needles-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": minor ---- - -Add `breakpointsOptions` to theme diff --git a/.changeset/poor-dragons-sing.md b/.changeset/poor-dragons-sing.md deleted file mode 100644 index 4fafa61d0d..0000000000 --- a/.changeset/poor-dragons-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Support relative paths in `SubRoute` component using `./subroute` notation diff --git a/.changeset/popular-planes-tap.md b/.changeset/popular-planes-tap.md deleted file mode 100644 index d89dc5a532..0000000000 --- a/.changeset/popular-planes-tap.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@comet/blocks-admin": major -"@comet/cms-admin": major -"@comet/blocks-api": major -"@comet/cms-api": major ---- - -Move `YouTubeVideoBlock` to `@cms` packages - -**Migrate** - -```diff -- import { YouTubeVideoBlock } from "@comet/blocks-admin"; -+ import { YouTubeVideoBlock } from "@comet/cms-admin"; -``` - -```diff -- import { YouTubeVideoBlock } from "@comet/blocks-api"; -+ import { YouTubeVideoBlock } from "@comet/cms-api"; -``` diff --git a/.changeset/popular-shirts-pretend.md b/.changeset/popular-shirts-pretend.md deleted file mode 100644 index 89789b176a..0000000000 --- a/.changeset/popular-shirts-pretend.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Add `legacyPagesRouterSitePreviewApiHandler` helper - -Used to enable the site preview (Preview Mode) for projects which use the Pages Router. This helper is added to ease migrating. New projects should use the App Router instead. diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index b4deb21af1..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "mode": "exit", - "tag": "beta", - "initialVersions": { - "comet-demo-admin": "1.0.0", - "comet-demo-admin-server": "1.0.0", - "comet-demo-api": "1.0.0", - "comet-demo-site": "1.0.0", - "comet-demo-site-pages": "1.0.0", - "comet-docs": "0.0.0", - "@comet/admin": "6.10.0", - "@comet/admin-babel-preset": "6.10.0", - "@comet/admin-color-picker": "6.10.0", - "@comet/admin-date-time": "6.10.0", - "@comet/admin-icons": "6.10.0", - "@comet/admin-react-select": "6.10.0", - "@comet/admin-rte": "6.10.0", - "@comet/admin-theme": "6.10.0", - "@comet/blocks-admin": "6.10.0", - "@comet/cms-admin": "6.10.0", - "@comet/blocks-api": "6.10.0", - "@comet/cms-api": "6.10.0", - "@comet/cli": "6.10.0", - "@comet/eslint-config": "6.10.0", - "@comet/eslint-plugin": "6.10.0", - "@comet/cms-site": "6.10.0", - "comet-storybook": "1.0.0" - }, - "changesets": [ - "blue-apricots-appear", - "brave-kiwis-pay", - "bright-dolls-live", - "brown-kids-develop", - "chatty-walls-study", - "chilled-walls-shop", - "clean-apes-vanish", - "clean-insects-happen", - "clever-clocks-smile", - "cool-kangaroos-cough", - "cool-kiwis-shop", - "curly-pillows-decide", - "curvy-moles-punch", - "cyan-drinks-enjoy", - "cyan-ladybugs-bathe", - "dirty-rabbits-tease", - "early-news-attend", - "eight-rules-laugh", - "eighty-owls-cheat", - "empty-islands-confess", - "fair-waves-breathe", - "fast-dodos-compete", - "fast-pens-laugh", - "fifty-keys-sit", - "fifty-suits-drive", - "fluffy-oranges-approve", - "fluffy-sheep-hammer", - "forty-bees-exercise", - "forty-hounds-work", - "fresh-buckets-begin", - "fresh-sheep-remember", - "friendly-mayflies-play", - "funny-paws-dream", - "fuzzy-foxes-laugh", - "gentle-chefs-sell", - "gentle-pots-perform", - "giant-apples-cheer", - "giant-humans-lick", - "giant-ladybugs-greet", - "giant-suns-begin", - "good-squids-join", - "great-hotels-unite", - "great-insects-reply", - "grumpy-poets-own", - "happy-fans-pump", - "happy-ladybugs-smile", - "hip-garlics-press", - "hot-buckets-talk", - "hot-carpets-eat", - "hot-drinks-crash", - "khaki-cobras-trade", - "khaki-eels-try", - "large-mirrors-teach", - "light-chefs-lie", - "light-ligers-wonder", - "long-bottles-brush", - "long-crabs-bake", - "long-items-sell", - "many-rivers-exist", - "mean-coats-matter", - "metal-bugs-beg", - "metal-seas-listen", - "modern-glasses-sort", - "nervous-sloths-thank", - "nervous-windows-grin", - "new-chicken-search", - "ninety-adults-peel", - "plenty-cougars-warn", - "polite-ducks-juggle", - "polite-needles-unite", - "poor-dragons-sing", - "popular-ducks-vanish", - "popular-planes-tap", - "popular-shirts-pretend", - "pretty-deers-trade", - "pretty-kangaroos-repair", - "proud-cheetahs-sleep", - "quick-foxes-notice", - "rare-boxes-guess", - "rare-crabs-burn", - "real-roses-applaud", - "rotten-clocks-shop", - "selfish-books-fail", - "selfish-dolls-beg", - "selfish-shrimps-explode", - "serious-bats-boil", - "serious-ravens-matter", - "sharp-zebras-hear", - "short-donkeys-double", - "shy-jars-float", - "shy-scissors-joke", - "small-eggs-learn", - "small-snails-mate", - "smooth-chefs-flow", - "spotty-penguins-wash", - "strange-clouds-pretend", - "strange-coins-hug", - "strange-frogs-remain", - "strange-steaks-pull", - "ten-turkeys-poke", - "tender-dots-warn", - "tender-pigs-rest", - "thin-ligers-pull", - "thirty-countries-refuse", - "tidy-impalas-refuse", - "tough-zoos-refuse", - "tricky-paws-march", - "twelve-spoons-play", - "twenty-impalas-count", - "two-lions-promise", - "two-walls-fetch", - "unlucky-hats-exist", - "unlucky-points-matter", - "violet-wombats-try", - "weak-moles-destroy", - "wise-moose-argue", - "yellow-houses-talk", - "yellow-seahorses-lick", - "young-lies-cry" - ] -} diff --git a/.changeset/pretty-deers-trade.md b/.changeset/pretty-deers-trade.md deleted file mode 100644 index ad90dedc06..0000000000 --- a/.changeset/pretty-deers-trade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add support for third level menu items. Collapsible items can be nested in each other, which creates subsubitems. diff --git a/.changeset/pretty-kangaroos-repair.md b/.changeset/pretty-kangaroos-repair.md deleted file mode 100644 index 49343b4ef5..0000000000 --- a/.changeset/pretty-kangaroos-repair.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Generate field resolver for root blocks - -This allows skipping the `@Field` annotation for root blocks in the entity and it doesn't need the field middleware anymore. diff --git a/.changeset/proud-cheetahs-sleep.md b/.changeset/proud-cheetahs-sleep.md deleted file mode 100644 index 79c548ace2..0000000000 --- a/.changeset/proud-cheetahs-sleep.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@comet/admin-color-picker": patch -"@comet/admin-react-select": patch -"@comet/admin-date-time": patch -"@comet/admin-rte": patch -"@comet/admin": patch ---- - -Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component diff --git a/.changeset/quick-foxes-notice.md b/.changeset/quick-foxes-notice.md deleted file mode 100644 index 437da160b5..0000000000 --- a/.changeset/quick-foxes-notice.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -Replace the `componentsProps` prop with `slotProps` in `FieldSet` diff --git a/.changeset/rare-boxes-guess.md b/.changeset/rare-boxes-guess.md deleted file mode 100644 index ec52553b6e..0000000000 --- a/.changeset/rare-boxes-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-admin": minor ---- - -Adapt `Header` and `UserHeaderItem` used in `AppHeader` for mobile devices (<900px) diff --git a/.changeset/rare-crabs-burn.md b/.changeset/rare-crabs-burn.md deleted file mode 100644 index aac1977c32..0000000000 --- a/.changeset/rare-crabs-burn.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Require `strategyName` in `createStaticCredentialsBasicStrategy` - -The `strategyName` is then used as SystemUser which allows to distinguish between different system users (e.g. activate logging) diff --git a/.changeset/real-roses-applaud.md b/.changeset/real-roses-applaud.md deleted file mode 100644 index 0b8df6d0a2..0000000000 --- a/.changeset/real-roses-applaud.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Rework `ContentScopeProvider` and `ContentScopeControls` - -The content scope controls were changed to display all available combinations in a single select. - -This requires a few breaking changes: - -1. The `values` props of `ContentScopeProvider` has been changed to an array: - - **Before** - - ```ts - const values: ContentScopeValues = { - domain: [ - { label: "Main", value: "main" }, - { label: "Secondary", value: "secondary" }, - ], - language: [ - { label: "English", value: "en" }, - { label: "German", value: "de" }, - ], - }; - ``` - - **Now** - - ```ts - const values: ContentScopeValues = [ - { - domain: { label: "Main", value: "main" }, - language: { label: "English", value: "en" }, - }, - { - domain: { label: "Main", value: "main" }, - language: { label: "German", value: "de" }, - }, - { - domain: { label: "Secondary", value: "secondary" }, - language: { label: "English", value: "en" }, - }, - ]; - ``` - -2. The `config` prop of `ContentScopeControls` has been removed. - You can use the props `searchable`, `groupBy`, and `icon` instead. - You may also remove the convenience wrapper defined in the application as it doesn't offer a real benefit anymore: - - ```diff - + import { ContentScopeControls } from "@comet/cms-admin"; - - import { ContentScopeControls as ContentScopeControlsLibrary } from "@comet/cms-admin"; - - - export const ContentScopeControls: React.FC = () => { - - return config={controlsConfig} />; - - }; - ``` diff --git a/.changeset/rotten-clocks-shop.md b/.changeset/rotten-clocks-shop.md deleted file mode 100644 index 7b78e1485f..0000000000 --- a/.changeset/rotten-clocks-shop.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add `GridColumnsButton` - -This button opens a panel to hide or show columns of `DataGrid`, similar to MUIs `GridToolbarColumnsButton`. diff --git a/.changeset/rotten-pots-itch.md b/.changeset/rotten-pots-itch.md deleted file mode 100644 index ab7d5acfe1..0000000000 --- a/.changeset/rotten-pots-itch.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -"@comet/admin": major ---- - -`FinalFormFileSelect` is now a simple final form wrapper around `FileSelect` - -Props now mirror those of `FileSelect` and are passed through to the `FileSelect` component. -Setting `defaultProps` in the theme must now be done with `CometAdminFileSelect` instead of `CometAdminFinalFormFileSelect`. - -Class keys have been removed. Apply custom styling to `CometAdminFileSelect` instead of `FinalFormFileSelect`. - -The default value for `maxSize` has been removed. -You may want to set the previous default value of 50 MB explicitly. - -```diff - -``` - -The `disableDropzone` prop has been removed. -Use `slotProps.dropzone.hideDroppableArea` instead. - -```diff - -``` - -The `disableSelectFileButton` prop has been removed. -Use `slotProps.dropzone.hideButton` instead. - -```diff - -``` diff --git a/.changeset/selfish-books-fail.md b/.changeset/selfish-books-fail.md deleted file mode 100644 index c187025397..0000000000 --- a/.changeset/selfish-books-fail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Pass `required` prop to children of `Field` component diff --git a/.changeset/selfish-dolls-beg.md b/.changeset/selfish-dolls-beg.md deleted file mode 100644 index 32bff15360..0000000000 --- a/.changeset/selfish-dolls-beg.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@comet/cms-site": minor ---- - -Add new technique for blocks to load additional data at page level when using SSR - -This works both server-side (SSR, SSG) and client-side (block preview). - -New Apis: - -- `recursivelyLoadBlockData`: used to call loaders for a block data tree -- `BlockLoader`: type of a loader function that is responsible for one block -- `useBlockPreviewFetch`: helper hook for block preview that creates client-side caching graphQLFetch/fetch -- `BlockLoaderDependencies`: interface with dependencies that get passed through recursivelyLoadBlockData into loader functions. Can be extended using module augmentation in application to inject eg. pageTreeNodeId. diff --git a/.changeset/selfish-shrimps-explode.md b/.changeset/selfish-shrimps-explode.md deleted file mode 100644 index 37ac0303fa..0000000000 --- a/.changeset/selfish-shrimps-explode.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Add support for enum array filter and sort diff --git a/.changeset/serious-bats-boil.md b/.changeset/serious-bats-boil.md deleted file mode 100644 index 7d4cf1da34..0000000000 --- a/.changeset/serious-bats-boil.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/cms-admin": minor -"@comet/admin": minor ---- - -Deprecate `SplitButton`, `FinalFormSaveSplitButton` and `SplitButtonContext` and remove all uses of these components in our libraries - -The reason is that we decided to retire the SplitButton pattern. diff --git a/.changeset/serious-ravens-matter.md b/.changeset/serious-ravens-matter.md deleted file mode 100644 index 306d89aa76..0000000000 --- a/.changeset/serious-ravens-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -Replace the `componentsProps` prop with `slotProps` in `InputWithPopper` and remove the `InputWithPopperComponentsProps` type diff --git a/.changeset/sharp-zebras-hear.md b/.changeset/sharp-zebras-hear.md deleted file mode 100644 index 6be4226c2a..0000000000 --- a/.changeset/sharp-zebras-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": minor ---- - -Stack: Update parent breadcrumb URL in state to not forget filters and other states when going back diff --git a/.changeset/short-donkeys-double.md b/.changeset/short-donkeys-double.md deleted file mode 100644 index e9f1bf341f..0000000000 --- a/.changeset/short-donkeys-double.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add `MenuItemGroup` component to group menu items - -**Example:** - -```tsx - - } to="/menu-item-1" /> - } to="/menu-item-2" /> - } to="/menu-item-3" /> - {/* Some more menu items... */} - -``` diff --git a/.changeset/shy-jars-float.md b/.changeset/shy-jars-float.md deleted file mode 100644 index 45dd6eb081..0000000000 --- a/.changeset/shy-jars-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": patch ---- - -API Generator: Add missing type for integer fields in input type diff --git a/.changeset/shy-scissors-joke.md b/.changeset/shy-scissors-joke.md deleted file mode 100644 index 410ceb8ece..0000000000 --- a/.changeset/shy-scissors-joke.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@comet/cms-api": major ---- - -API Generator: Remove support for `visible` boolean, use `status` enum instead. - -Recommended enum values: Published/Unpublished or Visible/Invisible or Active/Deleted or Active/Archived - -Remove support for update visibility mutation, use existing generic update instead diff --git a/.changeset/sixty-cougars-begin.md b/.changeset/sixty-cougars-begin.md deleted file mode 100644 index fae0d16b5e..0000000000 --- a/.changeset/sixty-cougars-begin.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Add `search` argument to `OneToManyFilter` and `ManyToManyFilter` - -Performs a search like the `search` argument in the list query. diff --git a/.changeset/small-eggs-learn.md b/.changeset/small-eggs-learn.md deleted file mode 100644 index a6e22563b8..0000000000 --- a/.changeset/small-eggs-learn.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@comet/cms-api": major ---- - -API Generator: Replace graphql-type-json with graphql-scalars for JSON columns - -**Upgrading** - -1. Install graphql-scalars: `npm install graphql-scalars` -2. Uninstall graphql-type-json: `npm install graphql-type-json` -3. Update imports: - - ```diff - - import { GraphQLJSONObject } from "graphql-type-json"; - + import { GraphQLJSONObject } from "graphql-scalars"; - ``` diff --git a/.changeset/small-snails-mate.md b/.changeset/small-snails-mate.md deleted file mode 100644 index f77b840307..0000000000 --- a/.changeset/small-snails-mate.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@comet/cms-admin": major -"@comet/cms-site": major ---- - -Support single host for block preview - -The content scope is passed through the iframe-bridge in the admin and accessible in the site in the IFrameBridgeProvider. -Breaking: `previewUrl`-property of `SiteConfig` has changed to `blockPreviewBaseUrl` diff --git a/.changeset/smooth-chefs-flow.md b/.changeset/smooth-chefs-flow.md deleted file mode 100644 index 365c7ae2ec..0000000000 --- a/.changeset/smooth-chefs-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Adapt `Typography` headlines for mobile devices (<900px) diff --git a/.changeset/spotty-penguins-wash.md b/.changeset/spotty-penguins-wash.md deleted file mode 100644 index 99280a87c9..0000000000 --- a/.changeset/spotty-penguins-wash.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@comet/blocks-admin": major -"@comet/cms-site": major -"@comet/cms-api": major ---- - -Remove `aspectRatio` from `YouTubeBlock` - -The block's aspect ratio options (4x3, 16x9) proved too inflexible to be of actual use in an application. Therefore, the aspect ratio field was removed. It should be defined in the application instead. - -**Migrate** - -The block requires an aspect ratio in the site. It should be set using the `aspectRatio` prop (default: `16x9`): - -```diff - -``` diff --git a/.changeset/stale-pandas-watch.md b/.changeset/stale-pandas-watch.md deleted file mode 100644 index 66d8e919b9..0000000000 --- a/.changeset/stale-pandas-watch.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/cms-admin": patch ---- - -Redirect to edit page after adding a redirect - -Previously, the user wasn't redirected to the edit page after creating a new redirect. -This caused strange validation errors and made it impossible to edit the redirect after creating it. diff --git a/.changeset/strange-clouds-pretend.md b/.changeset/strange-clouds-pretend.md deleted file mode 100644 index 15bddf2e89..0000000000 --- a/.changeset/strange-clouds-pretend.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -"@comet/cms-admin": major ---- - -Replace `additionalMimeTypes` and `overrideAcceptedMimeTypes` in `DamConfigProvider` with `acceptedMimeTypes` - -You can now add mime types like this: - -```tsx - - {/* ... */} - -``` - -And remove them like this: - -```tsx - mimeType !== "application/zip"), - }} -> - {/* ... */} - -``` - -Don't forget to also remove/add the mime types in the API's `DamModule` diff --git a/.changeset/strange-coins-hug.md b/.changeset/strange-coins-hug.md deleted file mode 100644 index 35a58ee4da..0000000000 --- a/.changeset/strange-coins-hug.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@comet/admin": minor ---- - -Automatically set `fullWidth` for `FieldContainer` with `variant="horizontal"` - -Horizontal fields are automatically responsive: -If they are less than 600px wide, the layout automatically changes to vertical. -For this to work correctly, the fields must be `fullWidth`. -Therefore, `fullWidth` is now `true` by default for horizontal fields. diff --git a/.changeset/strange-frogs-remain.md b/.changeset/strange-frogs-remain.md deleted file mode 100644 index 37112066b7..0000000000 --- a/.changeset/strange-frogs-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/eslint-config": major ---- - -nextjs/react: Enable `react/jsx-no-useless-fragment` rule diff --git a/.changeset/strange-steaks-pull.md b/.changeset/strange-steaks-pull.md deleted file mode 100644 index d0f4dff674..0000000000 --- a/.changeset/strange-steaks-pull.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `message` class-key from `Alert` - -Use the `.MuiAlert-message` selector instead to style the message of the underlying MUI `Alert` component. diff --git a/.changeset/ten-buses-lie.md b/.changeset/ten-buses-lie.md deleted file mode 100644 index 4944e37d2e..0000000000 --- a/.changeset/ten-buses-lie.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@comet/cms-api": major ---- - -API Generator: Remove generated service - -The `Service#getFindCondition` method is replaced with the new `gqlArgsToMikroOrmQuery` function, which detects an entity's searchable fields from its metadata. -Consequently, the generated service isn't needed anymore and will therefore no longer be generated. -Remove the service from the module after re-running the API Generator. diff --git a/.changeset/ten-turkeys-poke.md b/.changeset/ten-turkeys-poke.md deleted file mode 100644 index 2d0f065aa4..0000000000 --- a/.changeset/ten-turkeys-poke.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -"@comet/admin-date-time": major ---- - -Rename multiple props and class-keys and remove the `componentsProps` types: - -- `DatePicker`: - - - Replace the `componentsProps` prop with `slotProps` - - Remove the `DatePickerComponentsProps` type - -- `DateRangePicker`: - - - Replace the `componentsProps` prop with `slotProps` - - Remove the `DateRangePickerComponentsProps` type - - Rename the `calendar` class-key to `dateRange` - -- `DateTimePicker`: - - - Replace the `componentsProps` prop with `slotProps` - - Remove the `DateTimePickerComponentsProps` type - - Replace the `formControl` class-key with two separate class-keys: `dateFormControl` and `timeFormControl` - -- `TimeRangePicker`: - - - Replace the `componentsProps` prop with `slotProps` - - Remove the `TimeRangePickerComponentsProps` and `TimeRangePickerIndividualPickerProps` types - - Replace the `formControl` class-key with two separate class-keys: `startFormControl` and `endFormControl` - - Replace the `timePicker` class-key with two separate class-keys: `startTimePicker` and `endTimePicker` diff --git a/.changeset/tender-dots-warn.md b/.changeset/tender-dots-warn.md deleted file mode 100644 index 4ce98620f7..0000000000 --- a/.changeset/tender-dots-warn.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `paper` class-key from `FilterBarPopoverFilter` - -Instead of using `styleOverrides` for `paper` in the theme, use the `slotProps` and `sx` props. diff --git a/.changeset/tender-pigs-rest.md b/.changeset/tender-pigs-rest.md deleted file mode 100644 index 4f761bfd73..0000000000 --- a/.changeset/tender-pigs-rest.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@comet/admin-theme": minor ---- - -Add custom `Typography` variants for displaying inline lists - -```tsx - - Lorem ipsum - Lorem ipsum - Lorem ipsum - -``` - -Hint: To use the custom variants without getting a type error, you must adjust the `vendors.d.ts` in your project: - -```diff -+ /// - -// ... -``` diff --git a/.changeset/thin-ligers-pull.md b/.changeset/thin-ligers-pull.md deleted file mode 100644 index 6f2236cc91..0000000000 --- a/.changeset/thin-ligers-pull.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-react-select": major ---- - -Remove `ControlInput` component - -`ControlInput` was never intended to be exported, use MUI's `InputBase` instead. diff --git a/.changeset/thirty-countries-refuse.md b/.changeset/thirty-countries-refuse.md deleted file mode 100644 index 54c6c9c3ee..0000000000 --- a/.changeset/thirty-countries-refuse.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Remove `next/link` legacy behavior as default behavior - -Previously, Next required the `Link` component to have a child `` tag. To style this tag correctly in the application, none of the library link blocks (`DamFileDownloadLinkBlock`, `ExternalLinkBlock`, `EmailLinkBlock`, `InternalLinkBlock`, and `PhoneLinkBlock`) rendered the tag, but cloned the children with the correct props instead. - -However, since Next v13 the `Link` component no longer requires a child `` tag. Consequently, we don't need to render the tag for the `InternalLinkBlock` (which uses `Link` internally) anymore. In order to style all link blocks correctly, we now render an `` tag for all other link blocks. - -**Upgrade** - -To upgrade, either remove all `` tags from your link block usages, or add the `legacyBehavior` prop to all library link blocks. diff --git a/.changeset/tidy-impalas-refuse.md b/.changeset/tidy-impalas-refuse.md deleted file mode 100644 index 113f173e47..0000000000 --- a/.changeset/tidy-impalas-refuse.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-date-time": major ---- - -Remove `clearable` prop from `DatePicker` - -The clear button will automatically be shown for all optional fields. diff --git a/.changeset/tough-zoos-refuse.md b/.changeset/tough-zoos-refuse.md deleted file mode 100644 index 7a4e60cc4e..0000000000 --- a/.changeset/tough-zoos-refuse.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `disabled` and `focusVisible` class-keys and rename the `inner` class-key to `content` in `AppHeaderButton` - -Use the `:disabled` selector instead when styling the disabled state. -Use the `:focus` selector instead when styling the focus state. diff --git a/.changeset/tricky-paws-march.md b/.changeset/tricky-paws-march.md deleted file mode 100644 index 35bfd67fe8..0000000000 --- a/.changeset/tricky-paws-march.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove `endAdornment` prop from `FinalFormSelect` component - -The reason were conflicts with the clearable prop. This decision was based on the fact that MUI doesn't support endAdornment on selects (see: [mui/material-ui#17799](https://github.com/mui/material-ui/issues/17799)), and that there are no common use cases where both `endAdornment` and `clearable` are needed simultaneously. diff --git a/.changeset/twelve-spoons-play.md b/.changeset/twelve-spoons-play.md deleted file mode 100644 index 077fd13a40..0000000000 --- a/.changeset/twelve-spoons-play.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `disabled` class-key in `ClearInputButton` - -Use the `:disabled` selector instead when styling the disabled state. diff --git a/.changeset/twenty-impalas-count.md b/.changeset/twenty-impalas-count.md deleted file mode 100644 index 9fb5bbab97..0000000000 --- a/.changeset/twenty-impalas-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": major ---- - -Increase minimum supported version of `@mikro-orm/core`, `@mikro-orm/migrations`, and `@mikro-orm/postgresql` to v5.8.4 diff --git a/.changeset/two-lions-promise.md b/.changeset/two-lions-promise.md deleted file mode 100644 index 4a57683e17..0000000000 --- a/.changeset/two-lions-promise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": major ---- - -`MenuItem` no longer supports props from MUI's `ListItem` but those from `ListItemButton` instead diff --git a/.changeset/two-walls-fetch.md b/.changeset/two-walls-fetch.md deleted file mode 100644 index fc5ed810ef..0000000000 --- a/.changeset/two-walls-fetch.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@comet/cms-admin": minor -"@comet/cms-site": minor -"@comet/cms-api": minor ---- - -Add preview image to `YouTubeVideoBlock` and `DamVideoBlock` - -The `YouTubeVideoBlock` and the `DamVideoBlock` now support a preview image out of the box. For customisation the default `VideoPreviewImage` component can be overridden with the optional `renderPreviewImage` method. - -It is recommended to replace the custom implemented video blocks in the projects with the updated `YouTubeVideoBlock` and `DamVideoBlock` from the library. diff --git a/.changeset/unlucky-points-matter.md b/.changeset/unlucky-points-matter.md deleted file mode 100644 index 9fb776f22b..0000000000 --- a/.changeset/unlucky-points-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/cms-api": minor ---- - -API Generator: Add support for filtering many-to-many relations by id diff --git a/.changeset/violet-wombats-try.md b/.changeset/violet-wombats-try.md deleted file mode 100644 index ba2f8739fb..0000000000 --- a/.changeset/violet-wombats-try.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@comet/admin": major ---- - -Remove the `popoverPaper` class-key and rename the `popoverRoot` class-key to `popover` in `AppHeaderDropdown` - -Instead of using `styleOverrides` for `popoverPaper` in the theme, use the `slotProps` and `sx` props. -Use the `popover` prop instead of `popoverRoot` to override styles. diff --git a/.changeset/weak-comics-rhyme.md b/.changeset/weak-comics-rhyme.md deleted file mode 100644 index df5724714f..0000000000 --- a/.changeset/weak-comics-rhyme.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@comet/cms-site": major ---- - -Remove server-only code from client bundle - -Make sure to upgrade to Next 14.2.0 or later. -Enable `optimizePackageImports` for `@comet/cms-site` in `next.config.js`: - -```diff -const nextConfig = { - /* ... */ -+ experimental: { -+ optimizePackageImports: ["@comet/cms-site"], -+ }, -}; - -module.exports = withBundleAnalyzer(nextConfig); -``` diff --git a/.changeset/weak-moles-destroy.md b/.changeset/weak-moles-destroy.md deleted file mode 100644 index 0df4d8e361..0000000000 --- a/.changeset/weak-moles-destroy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@comet/admin": patch ---- - -Fix a bug where the `disabled` prop would not be passed to the children of `Field` diff --git a/.changeset/wise-moose-argue.md b/.changeset/wise-moose-argue.md deleted file mode 100644 index 89411e55ca..0000000000 --- a/.changeset/wise-moose-argue.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -"@comet/admin": minor ---- - -Add `helperIcon` prop to MenuItemGroup. Its intended purpose is to render an icon with a `Tooltip` behind the group section title, if the menu is not collapsed. - -### Examples: - -**Render only an icon:** - -```tsx -}> - {/* ... */} - -``` - -**Render an icon with tooltip:** - -```tsx - - - - } -> - {/* ... */} - -``` diff --git a/.changeset/yellow-houses-talk.md b/.changeset/yellow-houses-talk.md deleted file mode 100644 index 82ab535d20..0000000000 --- a/.changeset/yellow-houses-talk.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -"@comet/admin-color-picker": major -"@comet/admin-react-select": major -"@comet/admin-date-time": major -"@comet/blocks-admin": major -"@comet/admin-theme": major -"@comet/admin-rte": major -"@comet/cms-admin": major -"@comet/admin": major ---- - -Change the method of overriding the styling of Admin components - -- Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. -- Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). -- Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. -- The `$` syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion - -```diff - const theme = createCometTheme({ - components: { - CometAdminMyComponent: { - styleOverrides: { -- root: { -- "&$hasShadow": { -- boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", -- }, -- "& $header": { -- backgroundColor: "lime", -- }, -- }, -+ hasShadow: { -+ boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", -+ }, -+ header: { -+ backgroundColor: "lime", -+ }, - }, - }, - }, - }); -``` - -- Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: - -```diff --import { withStyles } from "@mui/styles"; -- --const StyledMyComponent = withStyles({ -- root: { -- backgroundColor: "lime", -- }, -- header: { -- backgroundColor: "fuchsia", -- }, --})(MyComponent); -- --// ... -- --; -+ -``` - -- The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: - -```diff --declare module "@mui/styles/defaultTheme" { -- // eslint-disable-next-line @typescript-eslint/no-empty-interface -- export interface DefaultTheme extends Theme {} --} -``` - -- Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. - The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. - For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. - The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. - Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. - - This affects the following components: - - - `AppHeader` - - `AppHeaderMenuButton` - - `ClearInputAdornment` - - `Tooltip` - - `CancelButton` - - `DeleteButton` - - `OkayButton` - - `SaveButton` - - `StackBackButton` - - `DatePicker` - - `DateRangePicker` - - `TimePicker` - -- For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles diff --git a/.changeset/yellow-seahorses-lick.md b/.changeset/yellow-seahorses-lick.md deleted file mode 100644 index 4ae4d4f142..0000000000 --- a/.changeset/yellow-seahorses-lick.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@comet/cms-admin": major -"@comet/cms-api": major -"@comet/eslint-config": minor -"@comet/cms-site": minor ---- - -Use the Next.js Preview Mode for the site preview - -The preview is entered by navigating to an API Route in the site, which has to be executed in a secured environment. -In the API Route the current scope is checked (and possibly stored), then the client is redirected to the preview. diff --git a/.changeset/young-lies-cry.md b/.changeset/young-lies-cry.md deleted file mode 100644 index 45d31e62bb..0000000000 --- a/.changeset/young-lies-cry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@comet/admin-theme": major ---- - -Rework shadows - -- Change shadows 1 - 4 diff --git a/packages/admin/admin-babel-preset/CHANGELOG.md b/packages/admin/admin-babel-preset/CHANGELOG.md index 79ad16438b..d9ebca0f06 100644 --- a/packages/admin/admin-babel-preset/CHANGELOG.md +++ b/packages/admin/admin-babel-preset/CHANGELOG.md @@ -1,5 +1,7 @@ # @comet/admin-babel-preset +## 7.0.0 + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/admin/admin-babel-preset/package.json b/packages/admin/admin-babel-preset/package.json index 1ec5ee661e..a289f4af29 100644 --- a/packages/admin/admin-babel-preset/package.json +++ b/packages/admin/admin-babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-babel-preset", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", diff --git a/packages/admin/admin-color-picker/CHANGELOG.md b/packages/admin/admin-color-picker/CHANGELOG.md index 33bf919a4d..c0b8ff9acc 100644 --- a/packages/admin/admin-color-picker/CHANGELOG.md +++ b/packages/admin/admin-color-picker/CHANGELOG.md @@ -1,5 +1,165 @@ # @comet/admin-color-picker +## 7.0.0 + +### Major Changes + +- b87c3c292: Replace the `componentsProps` prop with `slotProps` in `ColorPicker` and remove the `ColorPickerComponentsProps` type +- cb544bc3e: Remove `clearable` prop and add a `required` prop to `ColorPicker` + + The clear button will automatically be shown for all optional fields. + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin-color-picker syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Patch Changes + +- b5753e612: Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [54f775497] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c46146cb3] +- Updated dependencies [6054fdcab] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [956111ab2] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [51a0861d8] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] + - @comet/admin@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/admin-color-picker/package.json b/packages/admin/admin-color-picker/package.json index 10fab2794a..db3e0c2add 100644 --- a/packages/admin/admin-color-picker/package.json +++ b/packages/admin/admin-color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-color-picker", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -26,8 +26,8 @@ "start:types": "tsc --project ./tsconfig.json --emitDeclarationOnly --watch --preserveWatchOutput" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", "clsx": "^1.1.1", "react-colorful": "^5.5.1", "tinycolor2": "^1.4.1", @@ -36,8 +36,8 @@ "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", diff --git a/packages/admin/admin-date-time/CHANGELOG.md b/packages/admin/admin-date-time/CHANGELOG.md index 7a73fb7da3..3be15c1230 100644 --- a/packages/admin/admin-date-time/CHANGELOG.md +++ b/packages/admin/admin-date-time/CHANGELOG.md @@ -1,5 +1,222 @@ # @comet/admin-date-time +## 7.0.0 + +### Major Changes + +- ad73068f4: Change `DatePicker` and `DateRangePicker` values from `Date` to `string` + + This affects the `value` prop and the value returned by the `onChange` event. + + The value of `DatePicker` is a string in the format `YYYY-MM-DD`. + The value of `DateRangePicker` is an object with `start` and `end` keys, each as a string in the format `YYYY-MM-DD`. + + The code that handles values from these components may need to be adjusted. + This may include how the values are stored in or sent to the database. + + ```diff + - const [date, setDate] = useState(new Date("2024-03-10")); + + const [date, setDate] = useState("2024-03-10"); + return ; + ``` + + ```diff + const [dateRange, setDateRange] = useState({ + - start: new Date("2024-03-10"), + - end: new Date("2024-03-16"), + + start: "2024-03-10", + + end: "2024-03-16", + }); + return ; + ``` + + The reason for this change is that when selecting a date like `2024-04-10` in a timezone ahead of UTC, it would be stored in a `Date` object as e.g. `2024-04-09T22:00:00.000Z`. When only the date is saved to the database, without the time, it would be saved as `2024-04-09`, which differs from the selected date. + +- cb544bc3e: Remove the `clearable` prop and add a `required` prop to `DateRangePicker`, `DateTimePicker`, `TimePicker` and `TimeRangePicker` + + The clear button will automatically be shown for all optional fields. + +- b87c3c292: Rename multiple props and class-keys and remove the `componentsProps` types: + + - `DatePicker`: + + - Replace the `componentsProps` prop with `slotProps` + - Remove the `DatePickerComponentsProps` type + + - `DateRangePicker`: + + - Replace the `componentsProps` prop with `slotProps` + - Remove the `DateRangePickerComponentsProps` type + - Rename the `calendar` class-key to `dateRange` + + - `DateTimePicker`: + + - Replace the `componentsProps` prop with `slotProps` + - Remove the `DateTimePickerComponentsProps` type + - Replace the `formControl` class-key with two separate class-keys: `dateFormControl` and `timeFormControl` + + - `TimeRangePicker`: + + - Replace the `componentsProps` prop with `slotProps` + - Remove the `TimeRangePickerComponentsProps` and `TimeRangePickerIndividualPickerProps` types + - Replace the `formControl` class-key with two separate class-keys: `startFormControl` and `endFormControl` + - Replace the `timePicker` class-key with two separate class-keys: `startTimePicker` and `endTimePicker` + +- f8114cd39: Remove `clearable` prop from `DatePicker` + + The clear button will automatically be shown for all optional fields. + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin-date-time syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Patch Changes + +- b5753e612: Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [54f775497] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c46146cb3] +- Updated dependencies [6054fdcab] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [956111ab2] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [51a0861d8] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] + - @comet/admin@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/admin-date-time/package.json b/packages/admin/admin-date-time/package.json index e2f80d7e64..b47c5e0fb7 100644 --- a/packages/admin/admin-date-time/package.json +++ b/packages/admin/admin-date-time/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-date-time", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -26,8 +26,8 @@ "start:types": "tsc --project ./tsconfig.json --emitDeclarationOnly --watch --preserveWatchOutput" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", "@mui/utils": "^5.4.1", "clsx": "^1.1.1", "date-fns": "^2.28.0", @@ -36,8 +36,8 @@ "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@types/react": "^17.0", "@types/react-date-range": "^1.4.3", diff --git a/packages/admin/admin-icons/CHANGELOG.md b/packages/admin/admin-icons/CHANGELOG.md index 484c0a3009..9d25e87ed5 100644 --- a/packages/admin/admin-icons/CHANGELOG.md +++ b/packages/admin/admin-icons/CHANGELOG.md @@ -1,5 +1,7 @@ # @comet/admin-icons +## 7.0.0 + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/admin/admin-icons/package.json b/packages/admin/admin-icons/package.json index 38a3186cf4..2dd312776e 100644 --- a/packages/admin/admin-icons/package.json +++ b/packages/admin/admin-icons/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-icons", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -25,8 +25,8 @@ "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@types/cli-progress": "^3.8.0", "@types/node": "^18.0.0", diff --git a/packages/admin/admin-react-select/CHANGELOG.md b/packages/admin/admin-react-select/CHANGELOG.md index 1ea84f50d3..d030e698e4 100644 --- a/packages/admin/admin-react-select/CHANGELOG.md +++ b/packages/admin/admin-react-select/CHANGELOG.md @@ -1,5 +1,164 @@ # @comet/admin-react-select +## 7.0.0 + +### Major Changes + +- e00c8e1fd: Remove `ControlInput` component + + `ControlInput` was never intended to be exported, use MUI's `InputBase` instead. + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin-react-select syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Patch Changes + +- b5753e612: Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [54f775497] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c46146cb3] +- Updated dependencies [6054fdcab] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [956111ab2] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [51a0861d8] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] + - @comet/admin@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/admin-react-select/package.json b/packages/admin/admin-react-select/package.json index 2a71c3c256..a894bb224b 100644 --- a/packages/admin/admin-react-select/package.json +++ b/packages/admin/admin-react-select/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-react-select", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -26,15 +26,15 @@ "start:types": "tsc --project ./tsconfig.json --emitDeclarationOnly --watch --preserveWatchOutput" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", "classnames": "^2.2.6" }, "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", diff --git a/packages/admin/admin-rte/CHANGELOG.md b/packages/admin/admin-rte/CHANGELOG.md index 5e12aa9844..94926f287b 100644 --- a/packages/admin/admin-rte/CHANGELOG.md +++ b/packages/admin/admin-rte/CHANGELOG.md @@ -1,5 +1,160 @@ # @comet/admin-rte +## 7.0.0 + +### Major Changes + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin-rte syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Patch Changes + +- b5753e612: Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [54f775497] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c46146cb3] +- Updated dependencies [6054fdcab] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [956111ab2] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [51a0861d8] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] + - @comet/admin@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/admin-rte/package.json b/packages/admin/admin-rte/package.json index b826d1734b..df4a92af80 100644 --- a/packages/admin/admin-rte/package.json +++ b/packages/admin/admin-rte/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-rte", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -28,8 +28,8 @@ "test:watch": "jest --watch" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", "detect-browser": "^5.2.1", "draft-js-export-html": "^1.4.1", "draft-js-import-html": "^1.4.1", @@ -39,8 +39,8 @@ "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.0.0", diff --git a/packages/admin/admin-theme/CHANGELOG.md b/packages/admin/admin-theme/CHANGELOG.md index 6f7011c1d7..1771bebe58 100644 --- a/packages/admin/admin-theme/CHANGELOG.md +++ b/packages/admin/admin-theme/CHANGELOG.md @@ -1,5 +1,186 @@ # @comet/admin-theme +## 7.0.0 + +### Major Changes + +- 803bc607f: Rework theme of MUI's `Chip` to match the updated Comet CI +- 33ba50719: Rework `typographyOptions` + + - Replace `typographyOptions` with `createTypographyOptions()` to enable using the theme's breakpoints for media queries + - Add new default styles for variants `subtitle1`, `subtitle2`, `caption` and `overline` + - Remove custom `fontWeights` + - Switch the font from `Roboto` to `Roboto Flex` + + The font switch requires you to make the following two changes in your admin application: + + **Note: The `@comet/upgrade` script handles these changes automatically.** + + ```diff + // package.json + - "@fontsource/roboto": "^4.5.5", + + "@fontsource-variable/roboto-flex": "^5.0.0", + ``` + + ```diff + // App.tsx + - import "@fontsource/roboto/100.css"; + - import "@fontsource/roboto/300.css"; + - import "@fontsource/roboto/400.css"; + - import "@fontsource/roboto/500.css"; + + import "@fontsource-variable/roboto-flex/full.css"; + ``` + +- 33ba50719: Rework colors + + - Rename `bluePalette` to `primaryPalette` + - Rename `neutrals` to `greyPalette` + - Remove `greenPalette` + - Change colors in all palettes + - Change `text` colors + - Add `highlight` colors `purple`, `green`, `orange`, `yellow` and `red` to palette + + Hint: To use the `highlight` colors without getting a type error, you must adjust the `vendors.d.ts` in your project: + + ```diff + + /// + + // ... + ``` + +- 33ba50719: Change `Link` text styling +- cce88d448: Adapt `Typography` headlines for mobile devices (<900px) +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin-theme syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +- 33ba50719: Rework shadows + + - Change shadows 1 - 4 + +### Minor Changes + +- c702cc5b2: Override the default theme of `Badge` + + If no children are passed, the Badge renders as is without position relative and absolute. + +- 535444623: Slightly increase the default size of dialogs +- f9615fbf4: Adapt styling of filter panel in `DataGrid` for mobile devices (<900px) +- 33ba50719: Add `breakpointsOptions` to theme +- 865f253d8: Add custom `Typography` variants for displaying inline lists + + ```tsx + + Lorem ipsum + Lorem ipsum + Lorem ipsum + + ``` + + Hint: To use the custom variants without getting a type error, you must adjust the `vendors.d.ts` in your project: + + ```diff + + /// + + // ... + ``` + +### Patch Changes + +- @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/admin-theme/package.json b/packages/admin/admin-theme/package.json index f49f4ba446..c62747b36a 100644 --- a/packages/admin/admin-theme/package.json +++ b/packages/admin/admin-theme/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin-theme", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -26,14 +26,14 @@ "start:types": "tsc --project ./tsconfig.json --emitDeclarationOnly --watch --preserveWatchOutput" }, "dependencies": { - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin-icons": "workspace:^7.0.0", "@mui/utils": "^5.4.1" }, "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@mui/material": "^5.0.0", "@mui/system": "^5.0.0", "@mui/x-data-grid": "^5.0.0", diff --git a/packages/admin/admin/CHANGELOG.md b/packages/admin/admin/CHANGELOG.md index afb07959d7..30ca9cdee1 100644 --- a/packages/admin/admin/CHANGELOG.md +++ b/packages/admin/admin/CHANGELOG.md @@ -1,5 +1,419 @@ # @comet/admin +## 7.0.0 + +### Major Changes + +- 949356e84: Remove `clearable` prop from `FinalFormSelect` and `FinalFormAsyncSelect` + + `FinalFormSelect` and `FinalFormAsyncSelect` are now clearable when `required` is not set. + +- 51a0861d8: Create a subroute by default in `SaveBoundary` + + The default path is `./save`, you can change it using the `subRoutePath` prop. + +- 73140014f: Change theming method of `Menu` + + - Rename `permanent` class-key to `permanentDrawer` and `temporary` class-key to `temporaryDrawer` + - Replace the `permanentDrawerProps` and `temporaryDrawerProps` props with `slotProps` + +- 9a4530b06: Remove the `listItem` class key from `MenuCollapsibleItemClassKey` due to a larger overhaul of the menu components +- dc8bb6a99: Remove the `openedIcon` and `closedIcon` props from `MenuCollapsibleItem` and add `iconMapping` instead + + The icon shown as the collapse indicator will be chosen from `iconMapping`, depending on the collapsed states of the Menu and the Item. + +- 8cc51b368: Remove `popoverProps` from `AppHeaderDropdown` + + Use `slotProps.popover` instead. + +- 6054fdcab: Remove the `requiredSymbol` prop from `FieldContainer` and use MUIs native implementation + + This prop was used to display a custom required symbol next to the label of the field. We now use the native implementation of the required attribute of MUI to ensure better accessibility and compatibility with screen readers. + +- d0869ac82: Rework `Toolbar` + + - The `Toolbar` is now split into a top and a bottom bar. + + The top bar displays a scope indicator and breadcrumbs. The bottom bar behaves like the old `Toolbar`. + + - The styling of `Toolbar`, `ToolbarItem`, `ToolbarActions`, `ToolbarAutomaticTitleItem` and `ToolbarBackButton` was adjusted + + - The new `ToolbarActionButton` should be used for buttons inside the `ToolbarActions` + + It automatically switches from a normal `Button` to an `IconButton` for smaller screen sizes. + + - To show a scope indicator, you must pass a `` to the `Toolbar` via the `scopeIndicator` prop + +- 9a4530b06: Remove `temporaryDrawerProps`, `permanentDrawerProps`, `temporaryDrawerPaperProps` and `permanentDrawerPaperProps` props from `Menu` component. + + Use `slotProps` instead. + +- 47ec528a4: Remove the `FieldContainerComponent` component + + `FieldContainerComponent` was never intended to be exported, use `FieldContainer` instead. + +- 956111ab2: Rename the `FilterBarMoveFilersClassKey` type to `FilterBarMoreFiltersClassKey` +- 19eaee4ca: Remove the `disabled` class-key in `TabScrollButton` + + Use the `:disabled` selector instead when styling the disabled state. + +- 9a4530b06: Remove the `MenuLevel` type + + The type can be used from `MenuItemProps['level']` instead, if necessary. + +- 04ed68cc9: Remove the `components` and `componentProps` props from `CopyToClipboardButton` + + Instead, for the icons, use the `copyIcon` and `successIcon` props to pass a `ReactNode` instead of separately passing in values to the `components` and `componentProps` objects. + Use `slotPops` to pass props to the remaining elements. + +- 61b2acfb2: Add `FeedbackButton` component +- 2a7bc765c: Replace the `componentsProps` prop with `slotProps` in `FieldSet` +- 27efe7bd8: `FinalFormFileSelect` is now a simple final form wrapper around `FileSelect` + + Props now mirror those of `FileSelect` and are passed through to the `FileSelect` component. + Setting `defaultProps` in the theme must now be done with `CometAdminFileSelect` instead of `CometAdminFinalFormFileSelect`. + + Class keys have been removed. Apply custom styling to `CometAdminFileSelect` instead of `FinalFormFileSelect`. + + The default value for `maxSize` has been removed. + You may want to set the previous default value of 50 MB explicitly. + + ```diff + + ``` + + The `disableDropzone` prop has been removed. + Use `slotProps.dropzone.hideDroppableArea` instead. + + ```diff + + ``` + + The `disableSelectFileButton` prop has been removed. + Use `slotProps.dropzone.hideButton` instead. + + ```diff + + ``` + +- b87c3c292: Replace the `componentsProps` prop with `slotProps` in `InputWithPopper` and remove the `InputWithPopperComponentsProps` type +- 2a7bc765c: Remove the `message` class-key from `Alert` + + Use the `.MuiAlert-message` selector instead to style the message of the underlying MUI `Alert` component. + +- d2e64d1ec: Remove the `paper` class-key from `FilterBarPopoverFilter` + + Instead of using `styleOverrides` for `paper` in the theme, use the `slotProps` and `sx` props. + +- 241249bd4: Remove the `disabled` and `focusVisible` class-keys and rename the `inner` class-key to `content` in `AppHeaderButton` + + Use the `:disabled` selector instead when styling the disabled state. + Use the `:focus` selector instead when styling the focus state. + +- be4e6392d: Remove `endAdornment` prop from `FinalFormSelect` component + + The reason were conflicts with the clearable prop. This decision was based on the fact that MUI doesn't support endAdornment on selects (see: [mui/material-ui#17799](https://github.com/mui/material-ui/issues/17799)), and that there are no common use cases where both `endAdornment` and `clearable` are needed simultaneously. + +- a53545438: Remove the `disabled` class-key in `ClearInputButton` + + Use the `:disabled` selector instead when styling the disabled state. + +- 1a1d83156: `MenuItem` no longer supports props from MUI's `ListItem` but those from `ListItemButton` instead +- a2f278bbd: Remove the `popoverPaper` class-key and rename the `popoverRoot` class-key to `popover` in `AppHeaderDropdown` + + Instead of using `styleOverrides` for `popoverPaper` in the theme, use the `slotProps` and `sx` props. + Use the `popover` prop instead of `popoverRoot` to override styles. + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/admin syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Minor Changes + +- 05ce68ec0: Add `StackToolbar`, a variant of `Toolbar` component that hides itself in a nested stack +- dc8bb6a99: Add hover effect for collapsed menu icons. This ensures that navigation is also possible in collapsed state. +- 54f775497: Add new `DataGridToolbar` component + + The "normal" `Toolbar` is meant to be used on page-level to show the current scope, breadcrumbs and page-wide action buttons (like save). + The `DataGridToolbar`, however, is meant to be used in DataGrids to contain a search input, filter options, bulk actions and an add button. + + You can use it like this: + + ```tsx + {/* ... */}, + }} + /> + ``` + +- e3efdfcc3: Add the ability to change by which fields a DataGrid column is sorted using `sortBy` in the column definition + + This can be useful for custom columns that do not represent an actual field in the data, e.g., columns that render the data of multiple fields. + + ```tsx + const columns: GridColDef[] = [ + { + field: "fullName", + sortBy: ["firstName", "lastName"], + renderCell: ({ row }) => `${row.firstName} ${row.lastName}`, + }, + ]; + ``` + +- 02d33e230: Show icons in permanent menu even in closed state. +- a0bd09afa: Add `ForcePromptRoute`, a `Route` that triggers a prompt even if it is a subroute + + Used in `StackSwitch` so that navigating to a nested stack subpage will show a prompt (if dirty) + +- c46146cb3: Add new `FileSelect`, `FileDropzone` and `FileSelectListItem` components + + `FileSelect` combines `FileDropzone` and `FileSelectListItem` to handle the user's selection of files, display those files below, and handle the download and removal actions. + + `FileDropzone` is a wrapper around [react-dropzone](https://www.npmjs.com/package/react-dropzone) that manages error and disabled states. + + `FileSelectListItem` is used to display a list of files, including loading, skeleton, and error states and options to download and delete the file. + +- 758c65656: Only use horizontal layout in `FieldContainer` when it exceeds `600px` in width +- 0263a45fa: Add the ability to make `DataGrid` columns responsive by setting the `visible` property of the column definition to a media query + + This can be used to hide certain columns on smaller screens and show a combined column instead. + + This will only work when using `usePersistentColumnState` with `DataGridPro`/`DataGridPremium`. + When defining the columns, use the `GridColDef` type from `@comet/admin` instead of `@mui/x-data-grid`. + + ```ts + const columns: GridColDef[] = [ + { + field: "fullName", + visible: theme.breakpoints.down("md"), + }, + { + field: "firstName", + visible: theme.breakpoints.up("md"), + }, + { + field: "lastName", + visible: theme.breakpoints.up("md"), + }, + ]; + ``` + +- 4ca4830f3: Router Prompt: actively reset form state when choosing discard in the prompt dialog +- 3397ec1b6: Add the `GridCellContent` component + + Used to display primary and secondary texts and an icon in a `DataGrid` cell using the columns `renderCell` function. + + ```tsx + const columns: GridColDef[] = [ + { + field: "title", + renderCell: ({ row }) => {row.title}, + }, + { + field: "overview", + renderCell: ({ row }) => } />, + }, + ]; + ``` + +- 20b2bafd8: Add setting `signInUrl` to `createErrorDialogApolloLink` +- 51a0861d8: Support relative paths in `SubRoute` component using `./subroute` notation +- 9c4b7c974: Add support for third level menu items. Collapsible items can be nested in each other, which creates subsubitems. +- 774977311: Add `GridColumnsButton` + + This button opens a panel to hide or show columns of `DataGrid`, similar to MUIs `GridToolbarColumnsButton`. + +- f8114cd39: Pass `required` prop to children of `Field` component +- 569ad0463: Deprecate `SplitButton`, `FinalFormSaveSplitButton` and `SplitButtonContext` and remove all uses of these components in our libraries + + The reason is that we decided to retire the SplitButton pattern. + +- 170720b0c: Stack: Update parent breadcrumb URL in state to not forget filters and other states when going back +- f06f4bea6: Add `MenuItemGroup` component to group menu items + + **Example:** + + ```tsx + + } to="/menu-item-1" /> + } to="/menu-item-2" /> + } to="/menu-item-3" /> + {/* Some more menu items... */} + + ``` + +- 119714999: Automatically set `fullWidth` for `FieldContainer` with `variant="horizontal"` + + Horizontal fields are automatically responsive: + If they are less than 600px wide, the layout automatically changes to vertical. + For this to work correctly, the fields must be `fullWidth`. + Therefore, `fullWidth` is now `true` by default for horizontal fields. + +- b0249e3bc: Add `helperIcon` prop to MenuItemGroup. Its intended purpose is to render an icon with a `Tooltip` behind the group section title, if the menu is not collapsed. + + ### Examples: + + **Render only an icon:** + + ```tsx + }> + {/* ... */} + + ``` + + **Render an icon with tooltip:** + + ```tsx + + + + } + > + {/* ... */} + + ``` + +### Patch Changes + +- b5753e612: Allow partial props in the theme's `defaultProps` instead of requiring all props when setting the `defaultProps` of a component +- 66330e4e6: Fix a bug where the `disabled` prop would not be passed to the children of `Field` +- Updated dependencies [803bc607f] +- Updated dependencies [33ba50719] +- Updated dependencies [33ba50719] +- Updated dependencies [c702cc5b2] +- Updated dependencies [535444623] +- Updated dependencies [33ba50719] +- Updated dependencies [f9615fbf4] +- Updated dependencies [33ba50719] +- Updated dependencies [cce88d448] +- Updated dependencies [865f253d8] +- Updated dependencies [92eae2ba9] +- Updated dependencies [33ba50719] + - @comet/admin-theme@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Minor Changes diff --git a/packages/admin/admin/package.json b/packages/admin/admin/package.json index a90f6d2b59..36911799d4 100644 --- a/packages/admin/admin/package.json +++ b/packages/admin/admin/package.json @@ -1,6 +1,6 @@ { "name": "@comet/admin", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -28,8 +28,8 @@ "test:watch": "jest --watch" }, "dependencies": { - "@comet/admin-icons": "workspace:^7.0.0-beta.6", - "@comet/admin-theme": "workspace:^7.0.0-beta.6", + "@comet/admin-icons": "workspace:^7.0.0", + "@comet/admin-theme": "workspace:^7.0.0", "@mui/lab": "^5.0.0-alpha.76", "@mui/private-theming": "^5.0.0", "clsx": "^1.1.1", @@ -49,8 +49,8 @@ "@apollo/client": "^3.7.0", "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/material": "^5.0.0", diff --git a/packages/admin/blocks-admin/CHANGELOG.md b/packages/admin/blocks-admin/CHANGELOG.md index 9a9fa0ff66..29ebd4d447 100644 --- a/packages/admin/blocks-admin/CHANGELOG.md +++ b/packages/admin/blocks-admin/CHANGELOG.md @@ -1,5 +1,188 @@ # @comet/blocks-admin +## 7.0.0 + +### Major Changes + +- b7560e3a7: Move `YouTubeVideoBlock` to `@cms` packages + + **Migrate** + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-admin"; + + import { YouTubeVideoBlock } from "@comet/cms-admin"; + ``` + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-api"; + + import { YouTubeVideoBlock } from "@comet/cms-api"; + ``` + +- a58918893: Remove `aspectRatio` from `YouTubeBlock` + + The block's aspect ratio options (4x3, 16x9) proved too inflexible to be of actual use in an application. Therefore, the aspect ratio field was removed. It should be defined in the application instead. + + **Migrate** + + The block requires an aspect ratio in the site. It should be set using the `aspectRatio` prop (default: `16x9`): + + ```diff + + ``` + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/blocks-admin syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +### Patch Changes + +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [54f775497] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c46146cb3] +- Updated dependencies [6054fdcab] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [956111ab2] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [51a0861d8] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] + - @comet/admin@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/blocks-admin/package.json b/packages/admin/blocks-admin/package.json index 92c0eaaca5..28fbd8aad6 100644 --- a/packages/admin/blocks-admin/package.json +++ b/packages/admin/blocks-admin/package.json @@ -1,6 +1,6 @@ { "name": "@comet/blocks-admin", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -30,8 +30,8 @@ "test:watch": "jest --watch" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", "@mui/lab": "^5.0.0-alpha.76", "clipboard-copy": "^4.0.0", "clsx": "^1.1.1", @@ -43,9 +43,9 @@ "devDependencies": { "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/cli": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/cli": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/lab": "^5.0.0-alpha.76", diff --git a/packages/admin/cms-admin/CHANGELOG.md b/packages/admin/cms-admin/CHANGELOG.md index f2f3264ee0..b3701bd70e 100644 --- a/packages/admin/cms-admin/CHANGELOG.md +++ b/packages/admin/cms-admin/CHANGELOG.md @@ -1,5 +1,450 @@ # @comet/cms-admin +## 7.0.0 + +### Major Changes + +- 0588e212c: Remove `language` field from `User` object + + - Providing the locale is not mandatory for ID-Tokens + - Does not have a real use case (better rely on the Accept-Language header of the browser to determine the language of the current user) + +- 3574617ea: Remove `EditPageLayout` + + You can completely remove `EditPageLayout` from your application. + Instead, use `MainContent` to wrap all your page content except the `Toolbar`. + If needed, wrap `MainContent` and `Toolbar` in a fragment. + + Example: + + ```diff + - + + <> + + // ... + + -
+ + + // ... + -
+ + + -
+ + + ``` + +- 0e6debb06: CRUD Generator: Remove `lastUpdatedAt` argument from update mutations +- 2abc096fe: Replace the `ContentScopeIndicator` with a new version intended for use in the new `Toolbar` + + The old `ContentScopeIndicator` was a purely cosmetic component. Hence, the logic for displaying the current scope had to be implemented in the project (usually in a project-internal `ContentScopeIndicator` component). + + The new `ContentScopeIndicator` has the logic for displaying the current scope built-in. Thus, you can remove your project's `ContentScopeIndicator` implementation and directly use the `ContentScopeIndicator` from this library. + + Usage: + + - Per default, the `ContentScopeIndicator` displays the current `ContentScope` + - Pass a scope object via the `scope` prop if your page has a custom scope + - Pass the `global` prop if your page has no scope + - Pass `children` if you want to render completely custom content + +- c8e7a0496: Restructure `MasterMenuData` + + Items now need an explicit `type`. There are four types available: + + - `route` + + ```diff + { + + type: "route", + primary: , + icon: , + route: { + path: "/dashboard", + component: Dashboard, + }, + }, + ``` + + - `externalLink` + + ```diff + { + + type: "externalLink", + primary: , + icon: , + href: "https://comet-dxp.com", + }, + ``` + + - `collapsible` + + ```diff + { + + type: "collapsible", + primary: , + icon: , + - submenu: [ + + items: [ + // ... + ], + }, + ``` + + - `group` (new) + + ```diff + { + + type: "group", + + title: , + + items: [ + + // ... + + ] + }, + ``` + +- 06768a70f: Make icon required for top level menu and group items + + This fixes the problem, that there was no icon or text to display in the collapsed state of the menu if no icon was passed. + Icons are required for all top level menu items and the items of groups. Groups themselves do not require an icon. + +- ebf597120: Remove unused/unnecessary peer dependencies + + Some dependencies were incorrectly marked as peer dependencies. + If you don't use them in your application, you may remove the following dependencies: + + - Admin: `axios` + - API: `@aws-sdk/client-s3`, `@azure/storage-blob` and `pg-error-constants` + +- b7560e3a7: Move `YouTubeVideoBlock` to `@cms` packages + + **Migrate** + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-admin"; + + import { YouTubeVideoBlock } from "@comet/cms-admin"; + ``` + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-api"; + + import { YouTubeVideoBlock } from "@comet/cms-api"; + ``` + +- b777136f8: Rework `ContentScopeProvider` and `ContentScopeControls` + + The content scope controls were changed to display all available combinations in a single select. + + This requires a few breaking changes: + + 1. The `values` props of `ContentScopeProvider` has been changed to an array: + + **Before** + + ```ts + const values: ContentScopeValues = { + domain: [ + { label: "Main", value: "main" }, + { label: "Secondary", value: "secondary" }, + ], + language: [ + { label: "English", value: "en" }, + { label: "German", value: "de" }, + ], + }; + ``` + + **Now** + + ```ts + const values: ContentScopeValues = [ + { + domain: { label: "Main", value: "main" }, + language: { label: "English", value: "en" }, + }, + { + domain: { label: "Main", value: "main" }, + language: { label: "German", value: "de" }, + }, + { + domain: { label: "Secondary", value: "secondary" }, + language: { label: "English", value: "en" }, + }, + ]; + ``` + + 2. The `config` prop of `ContentScopeControls` has been removed. + You can use the props `searchable`, `groupBy`, and `icon` instead. + You may also remove the convenience wrapper defined in the application as it doesn't offer a real benefit anymore: + + ```diff + + import { ContentScopeControls } from "@comet/cms-admin"; + - import { ContentScopeControls as ContentScopeControlsLibrary } from "@comet/cms-admin"; + + - export const ContentScopeControls: React.FC = () => { + - return config={controlsConfig} />; + - }; + ``` + +- ae0142029: Support single host for block preview + + The content scope is passed through the iframe-bridge in the admin and accessible in the site in the IFrameBridgeProvider. + Breaking: `previewUrl`-property of `SiteConfig` has changed to `blockPreviewBaseUrl` + +- c3940df58: Replace `additionalMimeTypes` and `overrideAcceptedMimeTypes` in `DamConfigProvider` with `acceptedMimeTypes` + + You can now add mime types like this: + + ```tsx + + {/* ... */} + + ``` + + And remove them like this: + + ```tsx + mimeType !== "application/zip"), + }} + > + {/* ... */} + + ``` + + Don't forget to also remove/add the mime types in the API's `DamModule` + +- 92eae2ba9: Change the method of overriding the styling of Admin components + + - Remove dependency on the legacy `@mui/styles` package in favor of `@mui/material/styles`. + - Add the ability to style components using [MUI's `sx` prop](https://mui.com/system/getting-started/the-sx-prop/). + - Add the ability to style individual elements (slots) of a component using the `slotProps` and `sx` props. + - The `# @comet/cms-admin syntax in the theme's `styleOverrides` is no longer supported, see: https://mui.com/material-ui/migration/v5-style-changes/#migrate-theme-styleoverrides-to-emotion + + ```diff + const theme = createCometTheme({ + components: { + CometAdminMyComponent: { + styleOverrides: { + - root: { + - "&$hasShadow": { + - boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + - }, + - "& $header": { + - backgroundColor: "lime", + - }, + - }, + + hasShadow: { + + boxShadow: "2px 2px 5px 0 rgba(0, 0, 0, 0.25)", + + }, + + header: { + + backgroundColor: "lime", + + }, + }, + }, + }, + }); + ``` + + - Overriding a component's styles using `withStyles` is no longer supported. Use the `sx` and `slotProps` props instead: + + ```diff + -import { withStyles } from "@mui/styles"; + - + -const StyledMyComponent = withStyles({ + - root: { + - backgroundColor: "lime", + - }, + - header: { + - backgroundColor: "fuchsia", + - }, + -})(MyComponent); + - + -// ... + - + -; + + + ``` + + - The module augmentation for the `DefaultTheme` type from `@mui/styles/defaultTheme` is no longer needed and needs to be removed from the admins theme file, usually located in `admin/src/theme.ts`: + + ```diff + -declare module "@mui/styles/defaultTheme" { + - // eslint-disable-next-line @typescript-eslint/no-empty-interface + - export interface DefaultTheme extends Theme {} + -} + ``` + + - Class-keys originating from MUI components have been removed from Comet Admin components, causing certain class-names and `styleOverrides` to no longer be applied. + The components `root` class-key is not affected. Other class-keys will retain the class-names and `styleOverrides` from the underlying MUI component. + For example, in `ClearInputAdornment` (when used with `position="end"`) the class-name `CometAdminClearInputAdornment-positionEnd` and the `styleOverrides` for `CometAdminClearInputAdornment.positionEnd` will no longer be applied. + The component will retain the class-names `MuiInputAdornment-positionEnd`, `MuiInputAdornment-root`, and `CometAdminClearInputAdornment-root`. + Also, the `styleOverrides` for `MuiInputAdornment.positionEnd`, `MuiInputAdornment.root`, and `CometAdminClearInputAdornment.root` will continue to be applied. + + This affects the following components: + + - `AppHeader` + - `AppHeaderMenuButton` + - `ClearInputAdornment` + - `Tooltip` + - `CancelButton` + - `DeleteButton` + - `OkayButton` + - `SaveButton` + - `StackBackButton` + - `DatePicker` + - `DateRangePicker` + - `TimePicker` + + - For more details, see MUI's migration guide: https://mui.com/material-ui/migration/v5-style-changes/#mui-styles + +- 769bd72f0: Use the Next.js Preview Mode for the site preview + + The preview is entered by navigating to an API Route in the site, which has to be executed in a secured environment. + In the API Route the current scope is checked (and possibly stored), then the client is redirected to the preview. + +### Minor Changes + +- b777136f8: Add `ContentScopeSelect` component + + This can be used as the basis for both content-driven and data-driven applications. + + **Example** + + ```tsx + function ContentScopeControls() { + const [value, setValue] = useState({ domain: "main", language: "en" }); + + return ( + { + setValue(value); + }} + options={[ + { domain: { label: "Main", value: "main" }, language: { label: "English", value: "en" } }, + { domain: { label: "Main", value: "main" }, language: { label: "German", value: "de" } }, + { domain: { label: "Secondary", value: "secondary" }, language: { label: "English", value: "en" } }, + { domain: { label: "Secondary", value: "secondary" }, language: { label: "German", value: "de" } }, + ]} + /> + ); + } + ``` + +- 2486e8a91: Add future Admin Generator that works with configuration files +- 5c5500733: Remove "Re-login"-button from `CurrentUserProvider` + + The button is already implemented in `createErrorDialogApolloLink()`. The correct arrangement of + the components in `App.tsx` (see migration guide) makes the double implementation needless. + +- 8d920da56: CRUD Generator: Add support for date-only fields +- 52a925e0f: Admin Generator: Use variant="horizontal" for all generated form fields +- 3b1dc72d3: Adapt `Header` and `UserHeaderItem` used in `AppHeader` for mobile devices (<900px) +- 569ad0463: Deprecate `SplitButton`, `FinalFormSaveSplitButton` and `SplitButtonContext` and remove all uses of these components in our libraries + + The reason is that we decided to retire the SplitButton pattern. + +- b7560e3a7: Add preview image to `YouTubeVideoBlock` and `DamVideoBlock` + + The `YouTubeVideoBlock` and the `DamVideoBlock` now support a preview image out of the box. For customisation the default `VideoPreviewImage` component can be overridden with the optional `renderPreviewImage` method. + + It is recommended to replace the custom implemented video blocks in the projects with the updated `YouTubeVideoBlock` and `DamVideoBlock` from the library. + +### Patch Changes + +- 53fe8d76e: Redirect to edit page after adding a redirect + + Previously, the user wasn't redirected to the edit page after creating a new redirect. + This caused strange validation errors and made it impossible to edit the redirect after creating it. + +- Updated dependencies [05ce68ec0] +- Updated dependencies [949356e84] +- Updated dependencies [51a0861d8] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [803bc607f] +- Updated dependencies [54f775497] +- Updated dependencies [33ba50719] +- Updated dependencies [73140014f] +- Updated dependencies [9a4530b06] +- Updated dependencies [dc8bb6a99] +- Updated dependencies [33ba50719] +- Updated dependencies [e3efdfcc3] +- Updated dependencies [02d33e230] +- Updated dependencies [a0bd09afa] +- Updated dependencies [8cc51b368] +- Updated dependencies [c702cc5b2] +- Updated dependencies [c46146cb3] +- Updated dependencies [ad73068f4] +- Updated dependencies [6054fdcab] +- Updated dependencies [535444623] +- Updated dependencies [d0869ac82] +- Updated dependencies [9a4530b06] +- Updated dependencies [47ec528a4] +- Updated dependencies [33ba50719] +- Updated dependencies [956111ab2] +- Updated dependencies [f9615fbf4] +- Updated dependencies [19eaee4ca] +- Updated dependencies [758c65656] +- Updated dependencies [9a4530b06] +- Updated dependencies [cb544bc3e] +- Updated dependencies [04ed68cc9] +- Updated dependencies [61b2acfb2] +- Updated dependencies [0263a45fa] +- Updated dependencies [4ca4830f3] +- Updated dependencies [3397ec1b6] +- Updated dependencies [20b2bafd8] +- Updated dependencies [33ba50719] +- Updated dependencies [51a0861d8] +- Updated dependencies [b7560e3a7] +- Updated dependencies [9c4b7c974] +- Updated dependencies [b5753e612] +- Updated dependencies [2a7bc765c] +- Updated dependencies [774977311] +- Updated dependencies [27efe7bd8] +- Updated dependencies [f8114cd39] +- Updated dependencies [569ad0463] +- Updated dependencies [b87c3c292] +- Updated dependencies [170720b0c] +- Updated dependencies [f06f4bea6] +- Updated dependencies [cce88d448] +- Updated dependencies [a58918893] +- Updated dependencies [119714999] +- Updated dependencies [2a7bc765c] +- Updated dependencies [b87c3c292] +- Updated dependencies [d2e64d1ec] +- Updated dependencies [865f253d8] +- Updated dependencies [f8114cd39] +- Updated dependencies [241249bd4] +- Updated dependencies [be4e6392d] +- Updated dependencies [a53545438] +- Updated dependencies [1a1d83156] +- Updated dependencies [a2f278bbd] +- Updated dependencies [66330e4e6] +- Updated dependencies [b0249e3bc] +- Updated dependencies [92eae2ba9] +- Updated dependencies [33ba50719] + - @comet/admin@7.0.0 + - @comet/admin-theme@7.0.0 + - @comet/admin-date-time@7.0.0 + - @comet/blocks-admin@7.0.0 + - @comet/admin-rte@7.0.0 + - @comet/admin-icons@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/admin/cms-admin/package.json b/packages/admin/cms-admin/package.json index e10cb2bda9..7b7733e33a 100644 --- a/packages/admin/cms-admin/package.json +++ b/packages/admin/cms-admin/package.json @@ -1,6 +1,6 @@ { "name": "@comet/cms-admin", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -35,12 +35,12 @@ "test:watch": "jest --watch" }, "dependencies": { - "@comet/admin": "workspace:^7.0.0-beta.6", - "@comet/admin-date-time": "workspace:^7.0.0-beta.6", - "@comet/admin-icons": "workspace:^7.0.0-beta.6", - "@comet/admin-rte": "workspace:^7.0.0-beta.6", - "@comet/admin-theme": "workspace:^7.0.0-beta.6", - "@comet/blocks-admin": "workspace:^7.0.0-beta.6", + "@comet/admin": "workspace:^7.0.0", + "@comet/admin-date-time": "workspace:^7.0.0", + "@comet/admin-icons": "workspace:^7.0.0", + "@comet/admin-rte": "workspace:^7.0.0", + "@comet/admin-theme": "workspace:^7.0.0", + "@comet/blocks-admin": "workspace:^7.0.0", "@graphql-tools/graphql-file-loader": "^7.5.17", "@graphql-tools/load": "^7.8.14", "@graphql-typed-document-node/core": "^3.1.1", @@ -83,9 +83,9 @@ "@apollo/client": "^3.7.0", "@babel/cli": "^7.17.6", "@babel/core": "^7.20.12", - "@comet/admin-babel-preset": "workspace:^7.0.0-beta.6", - "@comet/cli": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/admin-babel-preset": "workspace:^7.0.0", + "@comet/cli": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@graphql-codegen/cli": "^2.0.0", diff --git a/packages/api/blocks-api/CHANGELOG.md b/packages/api/blocks-api/CHANGELOG.md index 8441c4da0b..3392af469d 100644 --- a/packages/api/blocks-api/CHANGELOG.md +++ b/packages/api/blocks-api/CHANGELOG.md @@ -1,5 +1,86 @@ # @comet/blocks-api +## 7.0.0 + +### Major Changes + +- e15927594: Support "real" dependency injection in `BlockData#transformToPlain` + + Previously we supported poor man's dependency injection using the `TransformDependencies` object in `transformToPlain`. + This is now replaced by a technique that allows actual dependency injection. + + **Example** + + ```ts + class NewsLinkBlockData extends BlockData { + @BlockField({ nullable: true }) + id?: string; + + transformToPlain() { + // Return service that does the transformation + return NewsLinkBlockTransformerService; + } + } + + type TransformResponse = { + news?: { + id: string; + slug: string; + }; + }; + + @Injectable() + class NewsLinkBlockTransformerService implements BlockTransformerServiceInterface { + // Use dependency injection here + constructor(@InjectRepository(News) private readonly repository: EntityRepository) {} + + async transformToPlain(block: NewsLinkBlockData, context: BlockContext) { + if (!block.id) { + return {}; + } + + const news = await this.repository.findOneOrFail(block.id); + + return { + news: { + id: news.id, + slug: news.slug, + }, + }; + } + } + ``` + + Adding this new technique results in a few breaking changes: + + - Remove dynamic registration of `BlocksModule` + - Pass `moduleRef` to `BlocksTransformerMiddlewareFactory` instead of `dependencies` + - Remove `dependencies` from `BlockData#transformToPlain` + + See the [migration guide](https://docs.comet-dxp.com/docs/migration/migration-from-v6-to-v7) on how to migrate. + +- ebf597120: Remove unused/unnecessary peer dependencies + + Some dependencies were incorrectly marked as peer dependencies. + If you don't use them in your application, you may remove the following dependencies: + + - Admin: `axios` + - API: `@aws-sdk/client-s3`, `@azure/storage-blob` and `pg-error-constants` + +- b7560e3a7: Move `YouTubeVideoBlock` to `@cms` packages + + **Migrate** + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-admin"; + + import { YouTubeVideoBlock } from "@comet/cms-admin"; + ``` + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-api"; + + import { YouTubeVideoBlock } from "@comet/cms-api"; + ``` + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/api/blocks-api/package.json b/packages/api/blocks-api/package.json index 55588658c2..614a2f7598 100644 --- a/packages/api/blocks-api/package.json +++ b/packages/api/blocks-api/package.json @@ -1,6 +1,6 @@ { "name": "@comet/blocks-api", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -31,7 +31,7 @@ "rimraf": "^3.0.0" }, "devDependencies": { - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/eslint-config": "workspace:^7.0.0", "@nestjs/common": "^9.0.0", "@types/draft-js": "^0.11.10", "@types/jest": "^29.5.0", diff --git a/packages/api/cms-api/CHANGELOG.md b/packages/api/cms-api/CHANGELOG.md index 4672840a60..152692ac49 100644 --- a/packages/api/cms-api/CHANGELOG.md +++ b/packages/api/cms-api/CHANGELOG.md @@ -1,5 +1,374 @@ # @comet/cms-api +## 7.0.0 + +### Major Changes + +- 6ac10edf1: Remove `download` helper + + Use `createFileUploadInputFromUrl` instead. + +- 9a1b01669: Remove CDN config from DAM + + It was a bad idea to introduce this in the first place, because `@comet/cms-api` should not be opinionated about how the CDN works. + + Modern applications require all traffic to be routed through a CDN. Cloudflare offers a tunnel, which made the origin-check obsolete, so we introduced a flag to disable the origin check. + + Also changes the behavior of the `FilesService::createFileUrl()`-method which now expects an options-object as second argument. + + ## How to migrate (only required if CDN is used): + + Remove the following env vars from the API + + ``` + DAM_CDN_ENABLED= + DAM_CDN_DOMAIN= + DAM_CDN_ORIGIN_HEADER= + DAM_DISABLE_CDN_ORIGIN_HEADER_CHECK=false + ``` + + If you want to enable the origin check: + + 1. Set the following env vars for the API + + ``` + CDN_ORIGIN_CHECK_SECRET="Use value from DAM_CDN_ORIGIN_HEADER to avoid downtime" + ``` + + _environment-variables.ts_ + + ``` + @IsOptional() + @IsString() + CDN_ORIGIN_CHECK_SECRET: string; + ``` + + _config.ts_ + + ``` + cdn: { + originCheckSecret: envVars.CDN_ORIGIN_CHECK_SECRET, + }, + ``` + + 2. Add CdnGuard + + ``` + // if CDN is enabled, make sure all traffic is either coming from the CDN or internal sources + if (config.cdn.originCheckSecret) { + app.useGlobalGuards(new CdnGuard({ headerName: "x-cdn-origin-check", headerValue: config.cdn.originCheckSecret })); + } + ``` + + 3. DNS changes might be required. `api.example.com` should point to CDN, CDN should point to internal API domain + +- 6ac10edf1: Remove `FileUploadService` + + Use `createFileUploadInputFromUrl` instead of `FileUploadService#createFileUploadInputFromUrl`. + +- 0588e212c: Remove `language` field from `User` object + + - Providing the locale is not mandatory for ID-Tokens + - Does not have a real use case (better rely on the Accept-Language header of the browser to determine the language of the current user) + +- 46b86ba5f: `FilesService#createFileDownloadUrl` now expects an options object as second parameter + + ```diff + - this.filesService.createFileDownloadUrl(file, previewDamUrls) + + this.filesService.createFileDownloadUrl(file, { previewDamUrls, relativeDamUrls }) + ``` + +- 0e6debb06: CRUD Generator: Remove `lastUpdatedAt` argument from update mutations +- ebf597120: Make `@nestjs/platform-express` a peer dependency + + Make sure that `@nestjs/platform-express` is installed in the application. + +- e15927594: Support "real" dependency injection in `BlockData#transformToPlain` + + Previously we supported poor man's dependency injection using the `TransformDependencies` object in `transformToPlain`. + This is now replaced by a technique that allows actual dependency injection. + + **Example** + + ```ts + class NewsLinkBlockData extends BlockData { + @BlockField({ nullable: true }) + id?: string; + + transformToPlain() { + // Return service that does the transformation + return NewsLinkBlockTransformerService; + } + } + + type TransformResponse = { + news?: { + id: string; + slug: string; + }; + }; + + @Injectable() + class NewsLinkBlockTransformerService implements BlockTransformerServiceInterface { + // Use dependency injection here + constructor(@InjectRepository(News) private readonly repository: EntityRepository) {} + + async transformToPlain(block: NewsLinkBlockData, context: BlockContext) { + if (!block.id) { + return {}; + } + + const news = await this.repository.findOneOrFail(block.id); + + return { + news: { + id: news.id, + slug: news.slug, + }, + }; + } + } + ``` + + Adding this new technique results in a few breaking changes: + + - Remove dynamic registration of `BlocksModule` + - Pass `moduleRef` to `BlocksTransformerMiddlewareFactory` instead of `dependencies` + - Remove `dependencies` from `BlockData#transformToPlain` + + See the [migration guide](https://docs.comet-dxp.com/docs/migration/migration-from-v6-to-v7) on how to migrate. + +- 9bed75638: API Generator: Add new `dedicatedResolverArg` option to `@CrudField` to generate better API for Many-to-one-relations + + - Add foreign id as argument to create mutation + - Add foreign id as argument to list query + +- c3940df58: Replace `additionalMimeTypes` and `overrideAcceptedMimeTypes` in `DamModule#damConfig` with `acceptedMimeTypes` + + You can now add mime types like this: + + ```ts + DamModule.register({ + damConfig: { + acceptedMimeTypes: [...damDefaultAcceptedMimetypes, "something-else"], + }, + }); + ``` + + And remove them like this: + + ```ts + DamModule.register({ + damConfig: { + acceptedMimeTypes: damDefaultAcceptedMimetypes.filter((mimeType) => mimeType !== "application/zip"), + }, + }); + ``` + + Don't forget to also remove/add the mime types in the admin's `DamConfigProvider` + +- 4485d1540: filtersToMikroOrmQuery: Move second argument (`applyFilter` callback) into an options object +- 28322b422: Refactor auth-decorators + + - Remove `@PublicApi()`-decorator + - Rename `@DisableGlobalGuard()`-decorator to `@DisableCometGuards()` + + The `@DisableCometGuards()`-decorator will only disable the AuthGuard when no `x-include-invisible-content`-header is set. + +- c3940df58: Rename `defaultDamAcceptedMimetypes` to `damDefaultAcceptedMimetypes` +- caefa1c5d: Rename `DateFilter` to `DateTimeFilter` + + This leaves room for a future DateFilter that only filters by date, not time. + + **Upgrading** + + 1. Change import + + ```diff + - import { DateFilter } from "@comet/cms-api"; + + import { DateTimeFilter } from "@comet/cms-api"; + ``` + + 2. Re-run API Generator. + +- ebf597120: Remove unused/unnecessary peer dependencies + + Some dependencies were incorrectly marked as peer dependencies. + If you don't use them in your application, you may remove the following dependencies: + + - Admin: `axios` + - API: `@aws-sdk/client-s3`, `@azure/storage-blob` and `pg-error-constants` + +- 6ac10edf1: Rename "public uploads" to "file uploads" + + The name "public uploads" was not fitting since the uploads can also be used for "private" uploads in the Admin. + The feature was therefore renamed to "file uploads". + + This requires the following changes: + + - Use `FileUploadsModule` instead of `PublicUploadModule` + - Use `FileUpload` instead of `PublicUpload` + - Use `FileUploadsService` instead of `PublicUploadsService` + - Change the upload URL from `/public-upload/files/upload` to `/files-uploads/upload` + +- 17c7f79a2: Secure file uploads upload endpoint by default + + The `/file-uploads/upload` endpoint now requires the `fileUploads` permission by default. + + Use the `upload.public` option to make the endpoint public: + + ```diff + FileUploadsModule.register({ + /* ... */, + + upload: { + + public: true, + + }, + }), + ``` + +- b7560e3a7: Move `YouTubeVideoBlock` to `@cms` packages + + **Migrate** + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-admin"; + + import { YouTubeVideoBlock } from "@comet/cms-admin"; + ``` + + ```diff + - import { YouTubeVideoBlock } from "@comet/blocks-api"; + + import { YouTubeVideoBlock } from "@comet/cms-api"; + ``` + +- 1d2f54bee: Require `strategyName` in `createStaticCredentialsBasicStrategy` + + The `strategyName` is then used as SystemUser which allows to distinguish between different system users (e.g. activate logging) + +- 2497a062f: API Generator: Remove support for `visible` boolean, use `status` enum instead. + + Recommended enum values: Published/Unpublished or Visible/Invisible or Active/Deleted or Active/Archived + + Remove support for update visibility mutation, use existing generic update instead + +- fe22985d6: API Generator: Replace graphql-type-json with graphql-scalars for JSON columns + + **Upgrading** + + 1. Install graphql-scalars: `npm install graphql-scalars` + 2. Uninstall graphql-type-json: `npm install graphql-type-json` + 3. Update imports: + + ```diff + - import { GraphQLJSONObject } from "graphql-type-json"; + + import { GraphQLJSONObject } from "graphql-scalars"; + ``` + +- a58918893: Remove `aspectRatio` from `YouTubeBlock` + + The block's aspect ratio options (4x3, 16x9) proved too inflexible to be of actual use in an application. Therefore, the aspect ratio field was removed. It should be defined in the application instead. + + **Migrate** + + The block requires an aspect ratio in the site. It should be set using the `aspectRatio` prop (default: `16x9`): + + ```diff + + ``` + +- 4485d1540: API Generator: Remove generated service + + The `Service#getFindCondition` method is replaced with the new `gqlArgsToMikroOrmQuery` function, which detects an entity's searchable fields from its metadata. + Consequently, the generated service isn't needed anymore and will therefore no longer be generated. + Remove the service from the module after re-running the API Generator. + +- 3ea123f68: Increase minimum supported version of `@mikro-orm/core`, `@mikro-orm/migrations`, and `@mikro-orm/postgresql` to v5.8.4 +- 769bd72f0: Use the Next.js Preview Mode for the site preview + + The preview is entered by navigating to an API Route in the site, which has to be executed in a secured environment. + In the API Route the current scope is checked (and possibly stored), then the client is redirected to the preview. + +### Minor Changes + +- 5e8713488: API Generator: Add support for filtering one-to-many relations by id +- f1d0f023d: API Generator: Add `list` option to `@CrudGenerator()` to allow disabling the list query + + Related DTO classes will still be generated as they might be useful for application code. + +- bb04fb863: API Generator: Change default value for input field if property has no initializer + + Previously, the following property of an entity + + ```ts + @Property({ type: types.date, nullable: true }) + @Field({ nullable: true }) + availableSince?: Date; + ``` + + resulted in the following input being generated: + + ```ts + @IsNullable() + @IsDate() + @Field({ nullable: true }) + availableSince?: Date; + ``` + + This was problematic for two reasons: + + 1. The error message would be misleading when trying to create an entity without providing a value for the property. For example, a valid GraphQL mutation + + ```graphql + mutation CreateProduct { + createProduct(input: { title: "A", slug: "A", description: "FOO" }) { + id + availableSince + } + } + ``` + + would result in the following error: + + ``` + "isDate": "availableSince must be a Date instance" + ``` + + 2. Relying on the initializer as the default value is not obvious and appears somewhat magical. + + To address this, we now use `null` as the default value for nullable properties if no initializer is provided. If an initializer is provided, it is used as the default value. + +- 8d920da56: CRUD Generator: Add support for date-only fields +- 36cdd70f1: InternalLinkBlock: add scope to targetPage in output + + This allows for example using the language from scope as url prefix in a multi-language site + +- bfa94b74b: API Generator: Generate field resolver for root blocks + + This allows skipping the `@Field` annotation for root blocks in the entity and it doesn't need the field middleware anymore. + +- f38ecc186: API Generator: Add support for enum array filter and sort +- 4485d1540: API Generator: Add `search` argument to `OneToManyFilter` and `ManyToManyFilter` + + Performs a search like the `search` argument in the list query. + +- b7560e3a7: Add preview image to `YouTubeVideoBlock` and `DamVideoBlock` + + The `YouTubeVideoBlock` and the `DamVideoBlock` now support a preview image out of the box. For customisation the default `VideoPreviewImage` component can be overridden with the optional `renderPreviewImage` method. + + It is recommended to replace the custom implemented video blocks in the projects with the updated `YouTubeVideoBlock` and `DamVideoBlock` from the library. + +- 2f0675b83: API Generator: Add support for filtering many-to-many relations by id + +### Patch Changes + +- 9c8a9a190: API Generator: Add missing type for integer fields in input type +- Updated dependencies [e15927594] +- Updated dependencies [ebf597120] +- Updated dependencies [b7560e3a7] + - @comet/blocks-api@7.0.0 + ## 7.0.0-beta.6 ### Patch Changes diff --git a/packages/api/cms-api/package.json b/packages/api/cms-api/package.json index ef32e4ff81..92f831d253 100644 --- a/packages/api/cms-api/package.json +++ b/packages/api/cms-api/package.json @@ -1,6 +1,6 @@ { "name": "@comet/cms-api", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -36,7 +36,7 @@ "@azure-rest/ai-translation-text": "^1.0.0-beta.1", "@azure/openai": "1.0.0-beta.11", "@azure/storage-blob": "^12.23.0", - "@comet/blocks-api": "workspace:^7.0.0-beta.6", + "@comet/blocks-api": "workspace:^7.0.0", "@fast-csv/parse": "^4.3.6", "@golevelup/nestjs-discovery": "^3.0.0", "@hapi/accept": "^5.0.2", @@ -84,7 +84,7 @@ }, "devDependencies": { "@aws-sdk/types": "^3.47.0", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/eslint-config": "workspace:^7.0.0", "@golevelup/ts-jest": "^0.4.0", "@kubernetes/client-node": "^0.18.1", "@mikro-orm/core": "^5.9.8", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 18601ff8ea..aad41d5c9d 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,7 @@ # @comet/cli +## 7.0.0 + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/cli/package.json b/packages/cli/package.json index 2a3dc4bca5..66df9bc85a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@comet/cli", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -30,7 +30,7 @@ "prettier": "^2.7.1" }, "devDependencies": { - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/eslint-config": "workspace:^7.0.0", "@types/node": "^18.0.0", "eslint": "^8.0.0", "npm-run-all": "^4.1.5", diff --git a/packages/eslint-config/CHANGELOG.md b/packages/eslint-config/CHANGELOG.md index f7846bfd57..847ba5a37d 100644 --- a/packages/eslint-config/CHANGELOG.md +++ b/packages/eslint-config/CHANGELOG.md @@ -1,5 +1,46 @@ # @comet/eslint-config +## 7.0.0 + +### Major Changes + +- 45585f4cc: Add the rule `@typescript-eslint/prefer-enum-initializers` to require enum initializers + + ```ts + // ✅ + enum ExampleEnum { + One = "One", + Two = "Two", + } + ``` + + ```ts + // ❌ + enum ExampleEnum { + One, + Two, + } + ``` + +- af37ac9d1: nextjs: Enable `react/jsx-curly-brace-presence` rule +- 7a473ab8d: Prevent `@mui/icons-material` icon imports + + Icons used in Comet DXP applications should match the Comet CI. + Use icons from `@comet/admin-icons` instead. + +- 2e20a8684: nextjs/react: Enable `react/jsx-no-useless-fragment` rule + +### Minor Changes + +- 769bd72f0: Use the Next.js Preview Mode for the site preview + + The preview is entered by navigating to an API Route in the site, which has to be executed in a secured environment. + In the API Route the current scope is checked (and possibly stored), then the client is redirected to the preview. + +### Patch Changes + +- @comet/eslint-plugin@7.0.0 + ## 7.0.0-beta.6 ### Major Changes diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 90861935b7..35165b4915 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@comet/eslint-config", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -15,7 +15,7 @@ }, "dependencies": { "@calm/eslint-plugin-react-intl": "^1.4.1", - "@comet/eslint-plugin": "workspace:^7.0.0-beta.6", + "@comet/eslint-plugin": "workspace:^7.0.0", "@next/eslint-plugin-next": "^14.0.0", "@typescript-eslint/eslint-plugin": "^5.48.2", "@typescript-eslint/parser": "^5.48.2", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 012852e6b9..69e40422e0 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,5 +1,7 @@ # @comet/eslint-plugin +## 7.0.0 + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index c3a192440a..b61f52ec2b 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@comet/eslint-plugin", - "version": "7.0.0-beta.6", + "version": "7.0.0", "main": "lib/index.js", "scripts": { "build": "$npm_execpath run clean && tsc", diff --git a/packages/site/cms-site/CHANGELOG.md b/packages/site/cms-site/CHANGELOG.md index d68b0b6826..5053793c6b 100644 --- a/packages/site/cms-site/CHANGELOG.md +++ b/packages/site/cms-site/CHANGELOG.md @@ -1,5 +1,207 @@ # @comet/cms-site +## 7.0.0 + +### Major Changes + +- 4f32ad014: Bump styled-components peer dependency to v6 + + Follow the official [migration guide](https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6) to upgrade. + +- 9351b1452: Upgrade to Next 14 and React 18 + + Add "use client" directive to components that currently require it (as they use styled-components or a context) + +- 15eb9e173: Revise `PixelImageBlock` to correctly use the "new" `next/image` component + + See the [docs](https://nextjs.org/docs/pages/api-reference/components/image-legacy#comparison) for a comparison between the new and the legacy component. + + **Migrate** + + Remove the `layout` prop from the block as it can lead to errors with the default implementation (`layout="responsive"` is not compatible with the new `fill` prop). + + - `layout={"responsive" | "inherit"}` can safely be removed + + ```diff + + ``` + + - `layout={"fill"}` can be replaced with `fill={true}` + + ```diff + + ``` + + Notes: + + The `PixelImageBlock` is usually wrapped in a `DamImageBlock` in the application. The `layout` prop should be removed from it as well. + + You can use the newly added `fill` prop of the `next/image` component by embedding the `PixelImageBlock` in a parent element that assigns the `position` style. See the [docs](https://nextjs.org/docs/pages/api-reference/components/image#fill) for more information. + +- 86358bf87: Fix an issue where the block preview could break a block's styling and HTML structure + + This was caused by a `div` added around every block to enable the selection and highlighting of the block in the block preview. + The `div` is still present but now uses `display: contents`, so its effect should be minimal. + + Common issues that should now be resolved include: + + - The image inside, e.g., a `PixelImageBlock`, would not be visible because the image's size depends on the parent `div`'s size. + - Blocks used as children of elements with `display: flex` or `display: grid` could not position themselves correctly. + +- 6986cdc82: Require `aspectRatio` prop for `PixelImageBlock` and `Image` + + The `16x9` default aspect ratio has repeatedly led to incorrectly displayed images on the site. + Therefore, it has been removed. + Instead, consider which aspect ratio to use for each image. + + **Example** + + ```diff + + ``` + +- ae0142029: Support single host for block preview + + The content scope is passed through the iframe-bridge in the admin and accessible in the site in the IFrameBridgeProvider. + Breaking: `previewUrl`-property of `SiteConfig` has changed to `blockPreviewBaseUrl` + +- a58918893: Remove `aspectRatio` from `YouTubeBlock` + + The block's aspect ratio options (4x3, 16x9) proved too inflexible to be of actual use in an application. Therefore, the aspect ratio field was removed. It should be defined in the application instead. + + **Migrate** + + The block requires an aspect ratio in the site. It should be set using the `aspectRatio` prop (default: `16x9`): + + ```diff + + ``` + +- 7f1e78448: Remove `next/link` legacy behavior as default behavior + + Previously, Next required the `Link` component to have a child `
` tag. To style this tag correctly in the application, none of the library link blocks (`DamFileDownloadLinkBlock`, `ExternalLinkBlock`, `EmailLinkBlock`, `InternalLinkBlock`, and `PhoneLinkBlock`) rendered the tag, but cloned the children with the correct props instead. + + However, since Next v13 the `Link` component no longer requires a child `` tag. Consequently, we don't need to render the tag for the `InternalLinkBlock` (which uses `Link` internally) anymore. In order to style all link blocks correctly, we now render an `` tag for all other link blocks. + + **Upgrade** + + To upgrade, either remove all `` tags from your link block usages, or add the `legacyBehavior` prop to all library link blocks. + +- ba4e509ef: Remove server-only code from client bundle + + Make sure to upgrade to Next 14.2.0 or later. + Enable `optimizePackageImports` for `@comet/cms-site` in `next.config.js`: + + ```diff + const nextConfig = { + /* ... */ + + experimental: { + + optimizePackageImports: ["@comet/cms-site"], + + }, + }; + + module.exports = withBundleAnalyzer(nextConfig); + ``` + +### Minor Changes + +- 36cdd70f1: Deprecate `InternalLinkBlock` component, instead there should be a copy of this component in the application for flexibility (e.g., support for internationalized routing) +- 6d56606a8: Store site preview scope in cookie and add `previewParams()` helper to access it + + - Requires the new `SITE_PREVIEW_SECRET` environment variable that must contain a random secret (not required for local development) + - Requires a Route Handler located at `app/api/site-preview/route.ts`: + - The previewParams() return a promise + + ```ts + import { sitePreviewRoute } from "@comet/cms-site"; + import { createGraphQLFetch } from "@src/util/graphQLClient"; + import { type NextRequest } from "next/server"; + + export const dynamic = "force-dynamic"; + + export async function GET(request: NextRequest) { + return sitePreviewRoute(request, createGraphQLFetch()); + } + ``` + +- 4f46b3e3e: Add optional `fill` prop to `YouTubeVideoBlock` and `DamVideoBlock` to support same behavior as in `PixelImageBlock` +- a80ab10f3: Add GraphQL fetch client + + - `createGraphQLFetch`: simple graphql client around fetch, usage: createGraphQLFetch(fetch, url)(gql, variables) + - `type GraphQLFetch = (query: string, variables?: V, init?: RequestInit) => Promise` + - `gql` for tagging queries + - `createFetchWithDefaults` fetch decorator that adds default values (eg. headers or next.revalidate) + - `createFetchWithPreviewHeaders` fetch decorator that adds comet preview headers (based on SitePreviewData) + + Example helper in application: + + ``` + export const graphQLApiUrl = `${typeof window === "undefined" ? process.env.API_URL_INTERNAL : process.env.NEXT_PUBLIC_API_URL}/graphql`; + export function createGraphQLFetch(previewData?: SitePreviewData) { + return createGraphQLFetchLibrary( + createFetchWithDefaults(createFetchWithPreviewHeaders(fetch, previewData), { next: { revalidate: 15 * 60 } }), + graphQLApiUrl, + ); + + } + ``` + + Usage example: + + ``` + const graphqlFetch = createGraphQLFetch(previewData); + const data = await graphqlFetch( + exampleQuery, + { + exampleVariable: "foo" + } + ); + ``` + +- cf9496fdb: Add `legacyPagesRouterSitePreviewApiHandler` helper + + Used to enable the site preview (Preview Mode) for projects which use the Pages Router. This helper is added to ease migrating. New projects should use the App Router instead. + +- fc27014bc: Add new technique for blocks to load additional data at page level when using SSR + + This works both server-side (SSR, SSG) and client-side (block preview). + + New Apis: + + - `recursivelyLoadBlockData`: used to call loaders for a block data tree + - `BlockLoader`: type of a loader function that is responsible for one block + - `useBlockPreviewFetch`: helper hook for block preview that creates client-side caching graphQLFetch/fetch + - `BlockLoaderDependencies`: interface with dependencies that get passed through recursivelyLoadBlockData into loader functions. Can be extended using module augmentation in application to inject eg. pageTreeNodeId. + +- b7560e3a7: Add preview image to `YouTubeVideoBlock` and `DamVideoBlock` + + The `YouTubeVideoBlock` and the `DamVideoBlock` now support a preview image out of the box. For customisation the default `VideoPreviewImage` component can be overridden with the optional `renderPreviewImage` method. + + It is recommended to replace the custom implemented video blocks in the projects with the updated `YouTubeVideoBlock` and `DamVideoBlock` from the library. + +- 769bd72f0: Use the Next.js Preview Mode for the site preview + + The preview is entered by navigating to an API Route in the site, which has to be executed in a secured environment. + In the API Route the current scope is checked (and possibly stored), then the client is redirected to the preview. + ## 7.0.0-beta.6 ## 7.0.0-beta.5 diff --git a/packages/site/cms-site/package.json b/packages/site/cms-site/package.json index 23c9cde75c..b28422667d 100644 --- a/packages/site/cms-site/package.json +++ b/packages/site/cms-site/package.json @@ -1,6 +1,6 @@ { "name": "@comet/cms-site", - "version": "7.0.0-beta.6", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/vivid-planet/comet", @@ -33,8 +33,8 @@ "use-debounce": "^6.0.0" }, "devDependencies": { - "@comet/cli": "workspace:^7.0.0-beta.6", - "@comet/eslint-config": "workspace:^7.0.0-beta.6", + "@comet/cli": "workspace:^7.0.0", + "@comet/eslint-config": "workspace:^7.0.0", "@gitbeaker/node": "^34.0.0", "@types/draft-js": "^0.11.10", "@types/jest": "^29.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64c5056b08..3367457300 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1079,10 +1079,10 @@ importers: packages/admin/admin: dependencies: '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons '@comet/admin-theme': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-theme '@mui/lab': specifier: ^5.0.0-alpha.76 @@ -1137,10 +1137,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@emotion/react': specifier: ^11.5.0 @@ -1302,10 +1302,10 @@ importers: packages/admin/admin-color-picker: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons clsx: specifier: ^1.1.1 @@ -1327,10 +1327,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1378,10 +1378,10 @@ importers: packages/admin/admin-date-time: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons '@mui/utils': specifier: ^5.4.1 @@ -1403,10 +1403,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1460,10 +1460,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1517,10 +1517,10 @@ importers: packages/admin/admin-react-select: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons classnames: specifier: ^2.2.6 @@ -1533,10 +1533,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1584,10 +1584,10 @@ importers: packages/admin/admin-rte: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons detect-browser: specifier: ^5.2.1 @@ -1612,10 +1612,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1693,7 +1693,7 @@ importers: packages/admin/admin-theme: dependencies: '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons '@mui/utils': specifier: ^5.4.1 @@ -1706,10 +1706,10 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@mui/material': specifier: ^5.0.0 @@ -1751,10 +1751,10 @@ importers: packages/admin/blocks-admin: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons '@mui/lab': specifier: ^5.0.0-alpha.76 @@ -1785,13 +1785,13 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/cli': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../cli '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@emotion/react': specifier: ^11.5.0 @@ -1881,22 +1881,22 @@ importers: packages/admin/cms-admin: dependencies: '@comet/admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin '@comet/admin-date-time': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-date-time '@comet/admin-icons': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-icons '@comet/admin-rte': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-rte '@comet/admin-theme': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-theme '@comet/blocks-admin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../blocks-admin '@graphql-tools/graphql-file-loader': specifier: ^7.5.17 @@ -2020,13 +2020,13 @@ importers: specifier: ^7.20.12 version: 7.20.12 '@comet/admin-babel-preset': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../admin-babel-preset '@comet/cli': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../cli '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@emotion/react': specifier: ^11.5.0 @@ -2204,7 +2204,7 @@ importers: version: 3.0.2 devDependencies: '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@nestjs/common': specifier: ^9.0.0 @@ -2267,7 +2267,7 @@ importers: specifier: ^12.23.0 version: 12.23.0 '@comet/blocks-api': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../blocks-api '@fast-csv/parse': specifier: ^4.3.6 @@ -2406,7 +2406,7 @@ importers: specifier: ^3.47.0 version: 3.254.0 '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@golevelup/ts-jest': specifier: ^0.4.0 @@ -2539,7 +2539,7 @@ importers: version: 2.8.3 devDependencies: '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../eslint-config '@types/node': specifier: ^18.0.0 @@ -2566,7 +2566,7 @@ importers: specifier: ^1.4.1 version: 1.4.1 '@comet/eslint-plugin': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../eslint-plugin '@next/eslint-plugin-next': specifier: ^14.0.0 @@ -2670,10 +2670,10 @@ importers: version: 6.0.1(react@18.2.0) devDependencies: '@comet/cli': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../cli '@comet/eslint-config': - specifier: workspace:^7.0.0-beta.6 + specifier: workspace:^7.0.0 version: link:../../eslint-config '@gitbeaker/node': specifier: ^34.0.0