From 187b275611baf4b6dedb51a96f355a16ab49cae5 Mon Sep 17 00:00:00 2001 From: Niko Sams Date: Fri, 10 Nov 2023 10:21:57 +0100 Subject: [PATCH] Demo Admin Products Form: add nested object as fields --- demo/admin/package.json | 1 + demo/admin/src/products/ProductForm.gql.ts | 5 + demo/admin/src/products/ProductForm.tsx | 60 +++++++-- demo/api/schema.gql | 4 +- .../src/products/entities/product.entity.ts | 6 +- .../products/generated/dto/product.input.ts | 6 +- pnpm-lock.yaml | 121 +++++++++--------- 7 files changed, 120 insertions(+), 83 deletions(-) diff --git a/demo/admin/package.json b/demo/admin/package.json index 57033507d8..eebe975ab5 100644 --- a/demo/admin/package.json +++ b/demo/admin/package.json @@ -138,6 +138,7 @@ "prettier": "^2.0.0", "style-loader": "^3.0.0", "ts-node": "^10.0.0", + "type-fest": "^4.6.0", "typescript": "^4.0.0", "webpack": "^5.0.0", "webpack-cli": "^4.0.0", diff --git a/demo/admin/src/products/ProductForm.gql.ts b/demo/admin/src/products/ProductForm.gql.ts index 311d38a87d..62125a1410 100644 --- a/demo/admin/src/products/ProductForm.gql.ts +++ b/demo/admin/src/products/ProductForm.gql.ts @@ -17,6 +17,11 @@ export const productFormFragment = gql` id title } + packageDimensions { + width + height + depth + } } `; diff --git a/demo/admin/src/products/ProductForm.tsx b/demo/admin/src/products/ProductForm.tsx index acc1dd39ff..d397f832ae 100644 --- a/demo/admin/src/products/ProductForm.tsx +++ b/demo/admin/src/products/ProductForm.tsx @@ -7,6 +7,7 @@ import { FinalFormSaveSplitButton, FinalFormSelect, FinalFormSubmitEvent, + FormSection, Loading, MainContent, Toolbar, @@ -29,6 +30,7 @@ import { filter } from "graphql-anywhere"; import isEqual from "lodash.isequal"; import React from "react"; import { FormattedMessage } from "react-intl"; +import { MergeDeep } from "type-fest"; import { createProductMutation, @@ -62,10 +64,18 @@ const rootBlocks = { image: DamImageBlock, }; -type FormValues = Omit & { - price: string; - image: BlockState; -}; +type FormValues = MergeDeep< + GQLProductFormManualFragment, + { + price: string; + image: BlockState; + packageDimensions: { + width: string; + height: string; + depth: string; + }; + } +>; function ProductForm({ id }: FormProps): React.ReactElement { const stackApi = useStackApi(); @@ -84,6 +94,12 @@ function ProductForm({ id }: FormProps): React.ReactElement { ...filter(productFormFragment, data.product), price: String(data.product.price), image: rootBlocks.image.input2State(data.product.image), + packageDimensions: { + ...data.product.packageDimensions, + width: String(data.product.packageDimensions.width), + height: String(data.product.packageDimensions.height), + depth: String(data.product.packageDimensions.depth), + }, } : { image: rootBlocks.image.defaultValues(), @@ -113,7 +129,12 @@ function ProductForm({ id }: FormProps): React.ReactElement { variants: [], articleNumbers: [], discounts: [], - packageDimensions: { width: 0, height: 0, depth: 0 }, + packageDimensions: { + ...formValues.packageDimensions, + width: parseFloat(formValues.packageDimensions.width), + height: parseFloat(formValues.packageDimensions.height), + depth: parseFloat(formValues.packageDimensions.depth), + }, statistics: { views: 0 }, }; if (mode === "edit") { @@ -228,9 +249,6 @@ function ProductForm({ id }: FormProps): React.ReactElement { component={FinalFormSelect} {...categorySelectAsyncProps} getOptionLabel={(option: GQLProductCategorySelectFragment) => option.title} - getOptionSelected={(option: GQLProductCategorySelectFragment, value: GQLProductCategorySelectFragment) => { - return option.id === value.id; - }} /> option.title} - getOptionSelected={(option: GQLProductTagsSelectFragment, value: GQLProductTagsSelectFragment) => { - return option.id === value.id; - }} /> {createFinalFormBlock(rootBlocks.image)} + }> + } + /> + } + /> + } + /> + )} diff --git a/demo/api/schema.gql b/demo/api/schema.gql index 5f46b83ac6..3d5efe2168 100644 --- a/demo/api/schema.gql +++ b/demo/api/schema.gql @@ -451,7 +451,7 @@ type Product implements DocumentInterface { discounts: [ProductDiscounts!]! articleNumbers: [String!]! dimensions: ProductDimensions - packageDimensions: ProductPackageDimensions + packageDimensions: ProductPackageDimensions! statistics: ProductStatistics createdAt: DateTime! category: ProductCategory @@ -1116,7 +1116,7 @@ input ProductInput { discounts: [ProductDiscountsInput!]! = [] articleNumbers: [String!]! = [] dimensions: ProductDimensionsInput - packageDimensions: ProductPackageDimensionsInput + packageDimensions: ProductPackageDimensionsInput! statistics: ProductStatisticsInput variants: [ProductVariantInput!]! = [] category: ID = null diff --git a/demo/api/src/products/entities/product.entity.ts b/demo/api/src/products/entities/product.entity.ts index 3f7fa4ffef..d3e320fd75 100644 --- a/demo/api/src/products/entities/product.entity.ts +++ b/demo/api/src/products/entities/product.entity.ts @@ -147,9 +147,9 @@ export class Product extends BaseEntity implements DocumentInterf @Field(() => ProductDimensions, { nullable: true }) dimensions?: ProductDimensions = undefined; - @Embedded(() => ProductPackageDimensions, { nullable: true }) - @Field(() => ProductPackageDimensions, { nullable: true }) - packageDimensions?: ProductPackageDimensions = undefined; + @Embedded(() => ProductPackageDimensions) + @Field(() => ProductPackageDimensions) + packageDimensions: ProductPackageDimensions; @OneToOne(() => ProductStatistics, { inversedBy: "product", owner: true, ref: true, nullable: true }) @Field(() => ProductStatistics, { nullable: true }) diff --git a/demo/api/src/products/generated/dto/product.input.ts b/demo/api/src/products/generated/dto/product.input.ts index 48f522f147..9868db3e31 100644 --- a/demo/api/src/products/generated/dto/product.input.ts +++ b/demo/api/src/products/generated/dto/product.input.ts @@ -69,11 +69,11 @@ export class ProductInput { @Field(() => ProductDimensions, { nullable: true }) dimensions?: ProductDimensions; - @IsNullable() + @IsNotEmpty() @ValidateNested() @Type(() => ProductPackageDimensions) - @Field(() => ProductPackageDimensions, { nullable: true }) - packageDimensions?: ProductPackageDimensions; + @Field(() => ProductPackageDimensions) + packageDimensions: ProductPackageDimensions; @IsNullable() @Field(() => ProductStatisticsInput, { nullable: true }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eaaef4688f..3bc194892b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -393,6 +393,9 @@ importers: ts-node: specifier: ^10.0.0 version: 10.9.1(@types/node@18.15.3)(typescript@4.9.4) + type-fest: + specifier: ^4.6.0 + version: 4.6.0 typescript: specifier: ^4.0.0 version: 4.9.4 @@ -3200,7 +3203,7 @@ packages: '@babel/generator': 7.20.7 '@babel/parser': 7.20.13 '@babel/runtime': 7.20.13 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 babel-preset-fbjs: 3.4.0(@babel/core@7.22.11) chalk: 4.1.2 @@ -4250,10 +4253,10 @@ packages: '@babel/helpers': 7.20.13 '@babel/parser': 7.20.13 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 @@ -4276,10 +4279,10 @@ packages: '@babel/helpers': 7.20.13 '@babel/parser': 7.20.13 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -4301,7 +4304,7 @@ packages: '@babel/traverse': 7.22.11 '@babel/types': 7.22.11 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4440,8 +4443,8 @@ packages: '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.22.11) '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/traverse': 7.20.13 - debug: 4.3.4(supports-color@9.3.1) + '@babel/traverse': 7.20.13(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -4457,7 +4460,7 @@ packages: '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -4472,7 +4475,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -4548,7 +4551,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -4621,7 +4624,7 @@ packages: '@babel/helper-member-expression-to-functions': 7.20.7 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -4686,7 +4689,7 @@ packages: dependencies: '@babel/helper-function-name': 7.19.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -4696,7 +4699,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -6729,23 +6732,6 @@ packages: '@babel/parser': 7.22.14 '@babel/types': 7.22.11 - /@babel/traverse@7.20.13: - resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.13 - '@babel/types': 7.20.7 - debug: 4.3.4(supports-color@9.3.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.20.13(supports-color@5.5.0): resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} engines: {node: '>=6.9.0'} @@ -6775,7 +6761,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.14 '@babel/types': 7.22.11 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7068,7 +7054,7 @@ packages: '@babel/preset-typescript': 7.18.6(@babel/core@7.22.11) '@babel/runtime': 7.20.13 '@babel/runtime-corejs3': 7.22.6 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@docusaurus/cssnano-preset': 2.4.1 '@docusaurus/logger': 2.4.1 '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) @@ -7177,7 +7163,7 @@ packages: react-dom: ^16.8.4 || ^17.0.0 dependencies: '@babel/parser': 7.20.13 - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@docusaurus/logger': 2.4.1 '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) '@mdx-js/mdx': 1.6.22 @@ -8130,7 +8116,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) espree: 9.5.2 globals: 13.19.0 ignore: 5.2.4 @@ -8146,7 +8132,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) espree: 9.5.2 globals: 13.19.0 ignore: 5.2.4 @@ -8954,7 +8940,7 @@ packages: dependencies: '@babel/parser': 7.20.13 '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.20.12) - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 '@graphql-tools/utils': 9.1.4(graphql@15.8.0) graphql: 15.8.0 @@ -9137,7 +9123,7 @@ packages: '@types/json-stable-stringify': 1.0.34 '@types/jsonwebtoken': 9.0.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) dotenv: 16.0.3 graphql: 15.8.0 graphql-request: 5.1.0(graphql@15.8.0) @@ -9488,7 +9474,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10146,7 +10132,7 @@ packages: dependencies: '@open-draft/until': 1.0.3 '@xmldom/xmldom': 0.7.10 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) headers-utils: 3.0.2 outvariant: 1.4.0 strict-event-emitter: 0.2.8 @@ -12725,7 +12711,7 @@ packages: '@babel/parser': 7.20.13 '@babel/plugin-transform-react-jsx': 7.20.13(@babel/core@7.22.11) '@babel/preset-env': 7.20.2(@babel/core@7.22.11) - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/mdx1-csf': 0.0.1(@babel/core@7.22.11) @@ -12961,7 +12947,7 @@ packages: typescript: '>= 3.x' webpack: '>= 4' dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.0.4 @@ -14505,7 +14491,7 @@ packages: '@typescript-eslint/scope-manager': 5.49.0 '@typescript-eslint/type-utils': 5.49.0(eslint@8.32.0)(typescript@4.9.4) '@typescript-eslint/utils': 5.49.0(eslint@8.32.0)(typescript@4.9.4) - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.32.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -14530,7 +14516,7 @@ packages: '@typescript-eslint/scope-manager': 5.49.0 '@typescript-eslint/types': 5.49.0 '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.4) - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.32.0 typescript: 4.9.4 transitivePeerDependencies: @@ -14557,7 +14543,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.4) '@typescript-eslint/utils': 5.49.0(eslint@8.32.0)(typescript@4.9.4) - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.32.0 tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 @@ -14581,7 +14567,7 @@ packages: dependencies: '@typescript-eslint/types': 5.49.0 '@typescript-eslint/visitor-keys': 5.49.0 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 @@ -15216,7 +15202,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -15225,7 +15211,7 @@ packages: resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -18345,6 +18331,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 9.3.1 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -18582,7 +18569,7 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -18998,7 +18985,7 @@ packages: basic-auth: 2.0.1 cookie: 0.5.0 core-util-is: 1.0.3 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) elastic-apm-http-client: 11.2.0 end-of-stream: 1.4.4 error-callsites: 2.0.4 @@ -19352,7 +19339,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.12.0 eslint: 8.32.0 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.49.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.32.0) @@ -19639,7 +19626,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -19689,7 +19676,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -19779,7 +19766,7 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} dependencies: - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 c8: 7.12.0 transitivePeerDependencies: @@ -21270,7 +21257,7 @@ packages: peerDependencies: graphql: '>=0.9 <0.14 || ^14.0.2 || ^15.4.0 || ^16.3.0' dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) graphql: 15.8.0 tslib: 2.4.1 transitivePeerDependencies: @@ -21799,7 +21786,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -21856,7 +21843,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -22770,7 +22757,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -23216,7 +23203,7 @@ packages: '@babel/generator': 7.20.7 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.11) '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.22.11) - '@babel/traverse': 7.20.13 + '@babel/traverse': 7.20.13(supports-color@5.5.0) '@babel/types': 7.20.7 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 @@ -23658,7 +23645,7 @@ packages: dependencies: '@types/express': 4.17.16 '@types/jsonwebtoken': 9.0.1 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) jose: 4.11.2 limiter: 1.1.5 lru-memoizer: 2.1.4 @@ -23749,7 +23736,7 @@ packages: dependencies: colorette: 2.0.19 commander: 9.5.0 - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) escalade: 3.1.1 esm: 3.2.25 get-package-type: 0.1.0 @@ -28131,7 +28118,7 @@ packages: resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==} engines: {node: '>=6'} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) module-details-from-path: 1.0.3 resolve: 1.22.1 transitivePeerDependencies: @@ -28960,7 +28947,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -28973,7 +28960,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@9.3.1) + debug: 4.3.4(supports-color@5.5.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -29565,6 +29552,7 @@ packages: /supports-color@9.3.1: resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} engines: {node: '>=12'} + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -30391,6 +30379,11 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + /type-fest@4.6.0: + resolution: {integrity: sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==} + engines: {node: '>=16'} + dev: true + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'}