@webiny/api-graphql 0.0.0-unstable.7c2def32a7 → 0.0.0-unstable.9609e4e0c9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtInTypes/NumberScalar.js +4 -4
- package/builtInTypes/NumberScalar.js.map +1 -1
- package/builtInTypes/TimeScalar.js +2 -2
- package/builtInTypes/TimeScalar.js.map +1 -1
- package/graphql/abstractions.public.d.ts +16 -2
- package/graphql/abstractions.public.js.map +1 -1
- package/package.json +15 -15
|
@@ -5,9 +5,9 @@ const parseValue = (value)=>{
|
|
|
5
5
|
if (null !== String(value).match(/^0x/)) throw new error("Value sent must be a non-hex number.", "INVALID_VALUE", {
|
|
6
6
|
value
|
|
7
7
|
});
|
|
8
|
-
if ("number" == typeof value) return value;
|
|
9
|
-
if (null == value) return null;
|
|
10
|
-
if (true === isNaN(value)) throw new error("Value sent must be a number.", "INVALID_VALUE", {
|
|
8
|
+
else if ("number" == typeof value) return value;
|
|
9
|
+
else if (null == value) return null;
|
|
10
|
+
else if (true === isNaN(value)) throw new error("Value sent must be a number.", "INVALID_VALUE", {
|
|
11
11
|
value
|
|
12
12
|
});
|
|
13
13
|
return parseFloat(value);
|
|
@@ -32,7 +32,7 @@ const NumberScalar = new GraphQLScalarType({
|
|
|
32
32
|
parseValue: parseValue,
|
|
33
33
|
parseLiteral: (ast)=>{
|
|
34
34
|
if (ast.kind === Kind.INT) return Number(ast.value);
|
|
35
|
-
if (ast.kind === Kind.FLOAT) return parseFloat(ast.value);
|
|
35
|
+
else if (ast.kind === Kind.FLOAT) return parseFloat(ast.value);
|
|
36
36
|
throw new Error(`Expected type Number, found {${ast.kind}}`);
|
|
37
37
|
}
|
|
38
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtInTypes/NumberScalar.js","sources":["../../src/builtInTypes/NumberScalar.ts"],"sourcesContent":["import { GraphQLScalarType } from \"graphql\";\nimport { Kind } from \"graphql/language/index.js\";\nimport WebinyError from \"@webiny/error\";\n\nconst parseValue = (value: any) => {\n if (String(value).match(/^0x/) !== null) {\n throw new WebinyError(\"Value sent must be a non-hex number.\", \"INVALID_VALUE\", {\n value\n });\n } else if (typeof value === \"number\") {\n return value;\n } else if (value === null || value === undefined) {\n return null;\n } else if (isNaN(value) === true) {\n throw new WebinyError(\"Value sent must be a number.\", \"INVALID_VALUE\", {\n value\n });\n }\n return parseFloat(value);\n};\n\nexport const NumberScalar = new GraphQLScalarType({\n name: \"Number\",\n description: \"A custom input type to be used with numbers. Supports Int and Float.\",\n serialize: (value: any) => {\n try {\n return parseValue(value);\n } catch {\n console.log({\n message: \"Value sent must be a number.\",\n code: \"INVALID_VALUE\",\n data: {\n value\n }\n });\n return null;\n }\n },\n parseValue,\n parseLiteral: ast => {\n if (ast.kind === Kind.INT) {\n return Number(ast.value);\n } else if (ast.kind === Kind.FLOAT) {\n return parseFloat(ast.value);\n }\n throw new Error(`Expected type Number, found {${ast.kind}}`);\n }\n});\n"],"names":["parseValue","value","String","WebinyError","isNaN","parseFloat","NumberScalar","GraphQLScalarType","console","ast","Kind","Number","Error"],"mappings":";;;AAIA,MAAMA,aAAa,CAACC;IAChB,IAAIC,AAA+B,SAA/BA,OAAOD,OAAO,KAAK,CAAC,QACpB,MAAM,IAAIE,MAAY,wCAAwC,iBAAiB;QAC3EF;IACJ;
|
|
1
|
+
{"version":3,"file":"builtInTypes/NumberScalar.js","sources":["../../src/builtInTypes/NumberScalar.ts"],"sourcesContent":["import { GraphQLScalarType } from \"graphql\";\nimport { Kind } from \"graphql/language/index.js\";\nimport WebinyError from \"@webiny/error\";\n\nconst parseValue = (value: any) => {\n if (String(value).match(/^0x/) !== null) {\n throw new WebinyError(\"Value sent must be a non-hex number.\", \"INVALID_VALUE\", {\n value\n });\n } else if (typeof value === \"number\") {\n return value;\n } else if (value === null || value === undefined) {\n return null;\n } else if (isNaN(value) === true) {\n throw new WebinyError(\"Value sent must be a number.\", \"INVALID_VALUE\", {\n value\n });\n }\n return parseFloat(value);\n};\n\nexport const NumberScalar = new GraphQLScalarType({\n name: \"Number\",\n description: \"A custom input type to be used with numbers. Supports Int and Float.\",\n serialize: (value: any) => {\n try {\n return parseValue(value);\n } catch {\n console.log({\n message: \"Value sent must be a number.\",\n code: \"INVALID_VALUE\",\n data: {\n value\n }\n });\n return null;\n }\n },\n parseValue,\n parseLiteral: ast => {\n if (ast.kind === Kind.INT) {\n return Number(ast.value);\n } else if (ast.kind === Kind.FLOAT) {\n return parseFloat(ast.value);\n }\n throw new Error(`Expected type Number, found {${ast.kind}}`);\n }\n});\n"],"names":["parseValue","value","String","WebinyError","isNaN","parseFloat","NumberScalar","GraphQLScalarType","console","ast","Kind","Number","Error"],"mappings":";;;AAIA,MAAMA,aAAa,CAACC;IAChB,IAAIC,AAA+B,SAA/BA,OAAOD,OAAO,KAAK,CAAC,QACpB,MAAM,IAAIE,MAAY,wCAAwC,iBAAiB;QAC3EF;IACJ;SACG,IAAI,AAAiB,YAAjB,OAAOA,OACd,OAAOA;SACJ,IAAIA,QAAAA,OACP,OAAO;SACJ,IAAIG,AAAiB,SAAjBA,MAAMH,QACb,MAAM,IAAIE,MAAY,gCAAgC,iBAAiB;QACnEF;IACJ;IAEJ,OAAOI,WAAWJ;AACtB;AAEO,MAAMK,eAAe,IAAIC,kBAAkB;IAC9C,MAAM;IACN,aAAa;IACb,WAAW,CAACN;QACR,IAAI;YACA,OAAOD,WAAWC;QACtB,EAAE,OAAM;YACJO,QAAQ,GAAG,CAAC;gBACR,SAAS;gBACT,MAAM;gBACN,MAAM;oBACFP;gBACJ;YACJ;YACA,OAAO;QACX;IACJ;IACAD,YAAAA;IACA,cAAcS,CAAAA;QACV,IAAIA,IAAI,IAAI,KAAKC,KAAK,GAAG,EACrB,OAAOC,OAAOF,IAAI,KAAK;aACpB,IAAIA,IAAI,IAAI,KAAKC,KAAK,KAAK,EAC9B,OAAOL,WAAWI,IAAI,KAAK;QAE/B,MAAM,IAAIG,MAAM,CAAC,6BAA6B,EAAEH,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/D;AACJ"}
|
|
@@ -13,10 +13,10 @@ const parseTime = (value)=>{
|
|
|
13
13
|
if (hours >= 24) throw new error("There cannot be more than 24 hours.", "TIME_VALIDATION_ERROR", {
|
|
14
14
|
value
|
|
15
15
|
});
|
|
16
|
-
if (minutes >= 60) throw new error("There cannot be more than 59 minutes.", "TIME_VALIDATION_ERROR", {
|
|
16
|
+
else if (minutes >= 60) throw new error("There cannot be more than 59 minutes.", "TIME_VALIDATION_ERROR", {
|
|
17
17
|
value
|
|
18
18
|
});
|
|
19
|
-
if (seconds >= 60) throw new error("There cannot be more than 59 seconds.", "TIME_VALIDATION_ERROR", {
|
|
19
|
+
else if (seconds >= 60) throw new error("There cannot be more than 59 seconds.", "TIME_VALIDATION_ERROR", {
|
|
20
20
|
value
|
|
21
21
|
});
|
|
22
22
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtInTypes/TimeScalar.js","sources":["../../src/builtInTypes/TimeScalar.ts"],"sourcesContent":["import { GraphQLScalarType } from \"graphql\";\nimport WebinyError from \"@webiny/error\";\n\nconst re = /^([0-9]{2}):([0-9]{2})(:([0-9]{2}))?$/;\n\nconst parseTime = (value?: unknown) => {\n if (typeof value !== \"string\" || !value || value.match(re) === null) {\n throw new WebinyError(\"Value does not look like time.\", \"TIME_VALIDATION_ERROR\", { value });\n }\n const parsed = value.split(\":\").map(Number);\n if (parsed.length < 2) {\n throw new WebinyError(`Could not parse the value.`, \"TIME_VALIDATION_ERROR\", { value });\n }\n const [hours, minutes, seconds = 0] = parsed;\n if (hours >= 24) {\n throw new WebinyError(`There cannot be more than 24 hours.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n } else if (minutes >= 60) {\n throw new WebinyError(`There cannot be more than 59 minutes.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n } else if (seconds >= 60) {\n throw new WebinyError(`There cannot be more than 59 seconds.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n }\n return {\n hours,\n minutes,\n seconds\n };\n};\n\nconst convertToTime = (value: unknown): string => {\n const { hours, minutes, seconds } = parseTime(value);\n return `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(\n seconds\n ).padStart(2, \"0\")}`;\n};\n\nexport const TimeScalar = new GraphQLScalarType({\n name: \"Time\",\n description: \"A custom type to support time-only input.\",\n // sending to client\n serialize: convertToTime,\n // received from client\n parseValue: convertToTime\n});\n"],"names":["re","parseTime","value","WebinyError","parsed","Number","hours","minutes","seconds","convertToTime","String","TimeScalar","GraphQLScalarType"],"mappings":";;AAGA,MAAMA,KAAK;AAEX,MAAMC,YAAY,CAACC;IACf,IAAI,AAAiB,YAAjB,OAAOA,SAAsB,CAACA,SAASA,AAAoB,SAApBA,MAAM,KAAK,CAACF,KACnD,MAAM,IAAIG,MAAY,kCAAkC,yBAAyB;QAAED;IAAM;IAE7F,MAAME,SAASF,MAAM,KAAK,CAAC,KAAK,GAAG,CAACG;IACpC,IAAID,OAAO,MAAM,GAAG,GAChB,MAAM,IAAID,MAAY,8BAA8B,yBAAyB;QAAED;IAAM;IAEzF,MAAM,CAACI,OAAOC,SAASC,UAAU,CAAC,CAAC,GAAGJ;IACtC,IAAIE,SAAS,IACT,MAAM,IAAIH,MAAY,uCAAuC,yBAAyB;QAClFD;IACJ;
|
|
1
|
+
{"version":3,"file":"builtInTypes/TimeScalar.js","sources":["../../src/builtInTypes/TimeScalar.ts"],"sourcesContent":["import { GraphQLScalarType } from \"graphql\";\nimport WebinyError from \"@webiny/error\";\n\nconst re = /^([0-9]{2}):([0-9]{2})(:([0-9]{2}))?$/;\n\nconst parseTime = (value?: unknown) => {\n if (typeof value !== \"string\" || !value || value.match(re) === null) {\n throw new WebinyError(\"Value does not look like time.\", \"TIME_VALIDATION_ERROR\", { value });\n }\n const parsed = value.split(\":\").map(Number);\n if (parsed.length < 2) {\n throw new WebinyError(`Could not parse the value.`, \"TIME_VALIDATION_ERROR\", { value });\n }\n const [hours, minutes, seconds = 0] = parsed;\n if (hours >= 24) {\n throw new WebinyError(`There cannot be more than 24 hours.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n } else if (minutes >= 60) {\n throw new WebinyError(`There cannot be more than 59 minutes.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n } else if (seconds >= 60) {\n throw new WebinyError(`There cannot be more than 59 seconds.`, \"TIME_VALIDATION_ERROR\", {\n value\n });\n }\n return {\n hours,\n minutes,\n seconds\n };\n};\n\nconst convertToTime = (value: unknown): string => {\n const { hours, minutes, seconds } = parseTime(value);\n return `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(\n seconds\n ).padStart(2, \"0\")}`;\n};\n\nexport const TimeScalar = new GraphQLScalarType({\n name: \"Time\",\n description: \"A custom type to support time-only input.\",\n // sending to client\n serialize: convertToTime,\n // received from client\n parseValue: convertToTime\n});\n"],"names":["re","parseTime","value","WebinyError","parsed","Number","hours","minutes","seconds","convertToTime","String","TimeScalar","GraphQLScalarType"],"mappings":";;AAGA,MAAMA,KAAK;AAEX,MAAMC,YAAY,CAACC;IACf,IAAI,AAAiB,YAAjB,OAAOA,SAAsB,CAACA,SAASA,AAAoB,SAApBA,MAAM,KAAK,CAACF,KACnD,MAAM,IAAIG,MAAY,kCAAkC,yBAAyB;QAAED;IAAM;IAE7F,MAAME,SAASF,MAAM,KAAK,CAAC,KAAK,GAAG,CAACG;IACpC,IAAID,OAAO,MAAM,GAAG,GAChB,MAAM,IAAID,MAAY,8BAA8B,yBAAyB;QAAED;IAAM;IAEzF,MAAM,CAACI,OAAOC,SAASC,UAAU,CAAC,CAAC,GAAGJ;IACtC,IAAIE,SAAS,IACT,MAAM,IAAIH,MAAY,uCAAuC,yBAAyB;QAClFD;IACJ;SACG,IAAIK,WAAW,IAClB,MAAM,IAAIJ,MAAY,yCAAyC,yBAAyB;QACpFD;IACJ;SACG,IAAIM,WAAW,IAClB,MAAM,IAAIL,MAAY,yCAAyC,yBAAyB;QACpFD;IACJ;IAEJ,OAAO;QACHI;QACAC;QACAC;IACJ;AACJ;AAEA,MAAMC,gBAAgB,CAACP;IACnB,MAAM,EAAEI,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGP,UAAUC;IAC9C,OAAO,GAAGQ,OAAOJ,OAAO,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAEI,OAAOH,SAAS,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAEG,OAC5EF,SACF,QAAQ,CAAC,GAAG,MAAM;AACxB;AAEO,MAAMG,aAAa,IAAIC,kBAAkB;IAC5C,MAAM;IACN,aAAa;IAEb,WAAWH;IAEX,YAAYA;AAChB"}
|
|
@@ -7,16 +7,30 @@ export interface IGraphQLSchema {
|
|
|
7
7
|
}
|
|
8
8
|
/** Define custom GraphQL schema extensions. */
|
|
9
9
|
export interface IGraphQLSchemaFactory {
|
|
10
|
+
/**
|
|
11
|
+
* Resolvers added here end up in a schema that is cached across requests. They must get
|
|
12
|
+
* request-scoped services through `addResolver({ dependencies })`, never from `this`.
|
|
13
|
+
*/
|
|
10
14
|
execute(builder: GraphQLSchemaBuilder.Interface): Promise<GraphQLSchemaBuilder.Interface>;
|
|
11
15
|
/**
|
|
12
16
|
* Returns what this factory's type definitions and resolver paths depend on: the same key must
|
|
13
17
|
* always mean the same output. When every factory has one, the GraphQL engine runs the factories
|
|
14
18
|
* only if no schema is cached under the combined key yet. Leave it out and the factories run on
|
|
15
|
-
* every request
|
|
19
|
+
* every request, but a schema with the same output is still served from the cache, with the
|
|
20
|
+
* resolvers of the request that first built it. Use `staticSchemaKey()` for a factory whose
|
|
21
|
+
* output never changes.
|
|
16
22
|
*/
|
|
17
23
|
getSchemaKey?(): string | Promise<string>;
|
|
18
24
|
}
|
|
19
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Define custom GraphQL schema extensions.
|
|
27
|
+
*
|
|
28
|
+
* The built schema is cached across requests. Constructor dependencies are injected only for the
|
|
29
|
+
* request that builds it, so a resolver must never read them (`this.identityContext` and similar):
|
|
30
|
+
* every later request served from the cache would run with that request's identity, tenant and
|
|
31
|
+
* use cases. Declare what a resolver needs in `builder.addResolver({ dependencies })`, which
|
|
32
|
+
* resolves it from the current request, and register the factory with `dependencies: []`.
|
|
33
|
+
*/
|
|
20
34
|
export declare const GraphQLSchemaFactory: import("@webiny/di").Abstraction<IGraphQLSchemaFactory>;
|
|
21
35
|
export declare namespace GraphQLSchemaFactory {
|
|
22
36
|
type Interface = IGraphQLSchemaFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql/abstractions.public.js","sources":["../../src/graphql/abstractions.public.ts"],"sourcesContent":["/**\n * This file contains abstraction for use by third party developers.\n */\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n Resolvers as IResolvers,\n TypeDefs as ITypeDefs,\n ResolverDecorators as IResolverDecorators\n} from \"~/types.js\";\nimport type { GraphQLSchemaBuilder } from \"~/features/GraphQLSchemaBuilder/abstractions.js\";\n\nexport interface IGraphQLSchema {\n typeDefs?: ITypeDefs;\n resolvers?: IResolvers<any>;\n resolverDecorators?: IResolverDecorators;\n}\n\n/** Define custom GraphQL schema extensions. */\nexport interface IGraphQLSchemaFactory {\n execute(builder: GraphQLSchemaBuilder.Interface): Promise<GraphQLSchemaBuilder.Interface>;\n /**\n * Returns what this factory's type definitions and resolver paths depend on: the same key must\n * always mean the same output. When every factory has one, the GraphQL engine runs the factories\n * only if no schema is cached under the combined key yet. Leave it out and the factories run on\n * every request. Use `staticSchemaKey()` for a factory whose output never changes.\n */\n getSchemaKey?(): string | Promise<string>;\n}\n\n
|
|
1
|
+
{"version":3,"file":"graphql/abstractions.public.js","sources":["../../src/graphql/abstractions.public.ts"],"sourcesContent":["/**\n * This file contains abstraction for use by third party developers.\n */\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n Resolvers as IResolvers,\n TypeDefs as ITypeDefs,\n ResolverDecorators as IResolverDecorators\n} from \"~/types.js\";\nimport type { GraphQLSchemaBuilder } from \"~/features/GraphQLSchemaBuilder/abstractions.js\";\n\nexport interface IGraphQLSchema {\n typeDefs?: ITypeDefs;\n resolvers?: IResolvers<any>;\n resolverDecorators?: IResolverDecorators;\n}\n\n/** Define custom GraphQL schema extensions. */\nexport interface IGraphQLSchemaFactory {\n /**\n * Resolvers added here end up in a schema that is cached across requests. They must get\n * request-scoped services through `addResolver({ dependencies })`, never from `this`.\n */\n execute(builder: GraphQLSchemaBuilder.Interface): Promise<GraphQLSchemaBuilder.Interface>;\n /**\n * Returns what this factory's type definitions and resolver paths depend on: the same key must\n * always mean the same output. When every factory has one, the GraphQL engine runs the factories\n * only if no schema is cached under the combined key yet. Leave it out and the factories run on\n * every request, but a schema with the same output is still served from the cache, with the\n * resolvers of the request that first built it. Use `staticSchemaKey()` for a factory whose\n * output never changes.\n */\n getSchemaKey?(): string | Promise<string>;\n}\n\n/**\n * Define custom GraphQL schema extensions.\n *\n * The built schema is cached across requests. Constructor dependencies are injected only for the\n * request that builds it, so a resolver must never read them (`this.identityContext` and similar):\n * every later request served from the cache would run with that request's identity, tenant and\n * use cases. Declare what a resolver needs in `builder.addResolver({ dependencies })`, which\n * resolves it from the current request, and register the factory with `dependencies: []`.\n */\nexport const GraphQLSchemaFactory =\n createAbstraction<IGraphQLSchemaFactory>(\"GraphQLSchemaFactory\");\n\nexport namespace GraphQLSchemaFactory {\n export type Interface = IGraphQLSchemaFactory;\n export type SchemaBuilder = GraphQLSchemaBuilder.Interface;\n export type Return = Promise<GraphQLSchemaBuilder.Interface>;\n}\n"],"names":["GraphQLSchemaFactory","createAbstraction"],"mappings":";AA4CO,MAAMA,uBACTC,kBAAyC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-graphql",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.9609e4e0c9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -18,26 +18,26 @@
|
|
|
18
18
|
"Adrian Smijulj <adrian@webiny.com>"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@graphql-tools/merge": "
|
|
22
|
-
"@graphql-tools/resolvers-composition": "
|
|
23
|
-
"@graphql-tools/schema": "
|
|
24
|
-
"@graphql-tools/utils": "
|
|
25
|
-
"@webiny/api": "0.0.0-unstable.
|
|
21
|
+
"@graphql-tools/merge": "10.0.7",
|
|
22
|
+
"@graphql-tools/resolvers-composition": "8.0.7",
|
|
23
|
+
"@graphql-tools/schema": "11.0.7",
|
|
24
|
+
"@graphql-tools/utils": "13.2.0",
|
|
25
|
+
"@webiny/api": "0.0.0-unstable.9609e4e0c9",
|
|
26
26
|
"@webiny/di": "2.0.0",
|
|
27
|
-
"@webiny/error": "0.0.0-unstable.
|
|
28
|
-
"@webiny/event-handler-core": "0.0.0-unstable.
|
|
29
|
-
"@webiny/feature": "0.0.0-unstable.
|
|
30
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
31
|
-
"@webiny/utils": "0.0.0-unstable.
|
|
27
|
+
"@webiny/error": "0.0.0-unstable.9609e4e0c9",
|
|
28
|
+
"@webiny/event-handler-core": "0.0.0-unstable.9609e4e0c9",
|
|
29
|
+
"@webiny/feature": "0.0.0-unstable.9609e4e0c9",
|
|
30
|
+
"@webiny/plugins": "0.0.0-unstable.9609e4e0c9",
|
|
31
|
+
"@webiny/utils": "0.0.0-unstable.9609e4e0c9",
|
|
32
32
|
"graphql": "16.14.2",
|
|
33
|
-
"graphql-scalars": "2.0.
|
|
34
|
-
"zod": "4.
|
|
33
|
+
"graphql-scalars": "2.0.1",
|
|
34
|
+
"zod": "4.6.7"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@webiny/build-tools": "0.0.0-unstable.
|
|
37
|
+
"@webiny/build-tools": "0.0.0-unstable.9609e4e0c9",
|
|
38
38
|
"rimraf": "6.1.3",
|
|
39
39
|
"typescript": "7.0.2",
|
|
40
|
-
"vitest": "
|
|
40
|
+
"vitest": "5.0.5"
|
|
41
41
|
},
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|