@takeshape/schema 10.52.5 → 11.0.1

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.
Files changed (89) hide show
  1. package/dist/migration/index.d.ts +1 -0
  2. package/dist/migration/index.d.ts.map +1 -1
  3. package/dist/migration/index.js +3 -1
  4. package/dist/migration/to/v3.46.0.d.ts +5 -0
  5. package/dist/migration/to/v3.46.0.d.ts.map +1 -0
  6. package/dist/migration/to/v3.46.0.js +37 -0
  7. package/dist/project-schema/index.d.ts +4 -1
  8. package/dist/project-schema/index.d.ts.map +1 -1
  9. package/dist/project-schema/index.js +17 -3
  10. package/dist/project-schema/latest.d.ts +56 -3
  11. package/dist/project-schema/latest.d.ts.map +1 -1
  12. package/dist/project-schema/migrate.d.ts.map +1 -1
  13. package/dist/project-schema/migrate.js +3 -0
  14. package/dist/project-schema/v3.46.0.d.ts +1704 -0
  15. package/dist/project-schema/v3.46.0.d.ts.map +1 -0
  16. package/dist/project-schema/v3.46.0.js +5 -0
  17. package/dist/refs.d.ts.map +1 -1
  18. package/dist/refs.js +2 -2
  19. package/dist/schemas/index.d.ts +2 -2
  20. package/dist/schemas/index.d.ts.map +1 -1
  21. package/dist/schemas/index.js +5 -4
  22. package/dist/schemas/index.ts +4 -2
  23. package/dist/schemas/project-schema/latest.json +81 -4
  24. package/dist/schemas/project-schema/v3.46.0.json +3565 -0
  25. package/dist/schemas/project-schema.json +3 -0
  26. package/dist/types/utils.d.ts +5 -1
  27. package/dist/types/utils.d.ts.map +1 -1
  28. package/dist/types/utils.js +17 -0
  29. package/dist/validate.d.ts.map +1 -1
  30. package/dist/validate.js +32 -2
  31. package/es/migration/index.js +3 -1
  32. package/es/migration/to/v3.46.0.js +31 -0
  33. package/es/project-schema/index.js +3 -1
  34. package/es/project-schema/migrate.js +4 -1
  35. package/es/project-schema/v3.46.0.js +1 -0
  36. package/es/refs.js +2 -2
  37. package/es/schemas/index.js +4 -3
  38. package/es/schemas/index.ts +4 -2
  39. package/es/schemas/project-schema/latest.json +81 -4
  40. package/es/schemas/project-schema/v3.46.0.json +3565 -0
  41. package/es/schemas/project-schema.json +3 -0
  42. package/es/types/utils.js +13 -0
  43. package/es/validate.js +33 -3
  44. package/examples/latest/all-fields-shapes-inline.json +1 -1
  45. package/examples/latest/all-fields-shapes.json +1 -1
  46. package/examples/latest/betzino.json +1 -1
  47. package/examples/latest/blog-schema.json +1 -1
  48. package/examples/latest/brewery-schema.json +1 -1
  49. package/examples/latest/clear-cache-schema.json +1 -1
  50. package/examples/latest/complex-project-schema.json +1 -1
  51. package/examples/latest/complex-schema.json +1 -1
  52. package/examples/latest/edit-schema.json +1 -1
  53. package/examples/latest/fabric-ecommerce.json +1 -1
  54. package/examples/latest/frank-and-fred-schema.json +1 -1
  55. package/examples/latest/klirr-schema.json +1 -1
  56. package/examples/latest/massive-schema.json +1 -1
  57. package/examples/latest/mill-components-schema.json +1 -1
  58. package/examples/latest/nested-shape-arrays.json +1 -1
  59. package/examples/latest/one-earth.json +1 -1
  60. package/examples/latest/pet-oneof-array.json +1 -1
  61. package/examples/latest/post-schema.json +1 -1
  62. package/examples/latest/pruned-shopify-product-schema.json +1 -1
  63. package/examples/latest/rag-example.json +2 -2
  64. package/examples/latest/real-world-schema.json +1 -1
  65. package/examples/latest/recursive-repeater-schema.json +1 -1
  66. package/examples/latest/recursive-schema.json +1 -1
  67. package/examples/latest/rick-and-morty-ast.json +1 -1
  68. package/examples/latest/rick-and-morty-graphql.json +1 -1
  69. package/examples/latest/rick-and-morty-rest.json +1 -1
  70. package/examples/latest/rick-and-morty-with-indexing.json +1 -1
  71. package/examples/latest/schema-where-filter.json +1 -1
  72. package/examples/latest/schema-with-repeater-draftjs.json +1 -1
  73. package/examples/latest/schema-with-rick-and-morty.json +1 -1
  74. package/examples/latest/shape-books-v3_2_0.json +1 -1
  75. package/examples/latest/shape-books.json +1 -1
  76. package/examples/latest/shape-editor-schema-edited.json +1 -1
  77. package/examples/latest/shape-editor-schema-initial.json +1 -1
  78. package/examples/latest/shapedb-crud-every-prop-type.json +1 -1
  79. package/examples/latest/shopify-lookbook.json +1 -1
  80. package/examples/latest/shopify-product-2022-07.json +1 -1
  81. package/examples/latest/shopify-product-2023-04.json +1 -1
  82. package/examples/latest/shopify-store-with-widget.json +1 -1
  83. package/examples/latest/stripe-product-runtime-schema.json +1 -1
  84. package/examples/latest/stripe-starter-resolved.json +1 -1
  85. package/examples/latest/user-schema-no-required.json +1 -1
  86. package/examples/latest/user-schema-with-defaults.json +1 -1
  87. package/examples/latest/valvoline-ai-demo.json +2 -2
  88. package/examples/latest/vector-search-schema.json +1 -1
  89. package/package.json +6 -6
@@ -165,6 +165,9 @@
165
165
  {
166
166
  "$ref": "https://schema.takeshape.io/project-schema/v3.45.0#"
167
167
  },
168
+ {
169
+ "$ref": "https://schema.takeshape.io/project-schema/v3.46.0#"
170
+ },
168
171
  {
169
172
  "$ref": "https://schema.takeshape.io/project-schema/v4.0.0#"
170
173
  }
package/es/types/utils.js CHANGED
@@ -49,9 +49,22 @@ export function isAwsLambdaResolver(resolver) {
49
49
  export function isUtilResolver(resolver) {
50
50
  return isBasicResolver(resolver) && utilResolver.properties.name.enum.includes(resolver.name);
51
51
  }
52
+ export const aiResolverNames = ['ai:generateText', 'ai:chat'];
53
+ export function isAIResolverName(name) {
54
+ return name ? aiResolverNames.includes(name) : false;
55
+ }
56
+ export function isAIGenerateTextResolver(resolver) {
57
+ return isBasicResolver(resolver) && isAIResolverName(resolver.name);
58
+ }
52
59
  export function isProjectSchemaWithServices(schema) {
53
60
  return !isUndefined(schema.services);
54
61
  }
62
+ export function containsResolver(resolver, predicate) {
63
+ if (isBasicResolver(resolver)) {
64
+ return predicate(resolver);
65
+ }
66
+ return Boolean(resolver.compose.find(resolver => containsResolver(resolver, predicate)));
67
+ }
55
68
 
56
69
  /** Directive Mapping Utils **/
57
70
 
package/es/validate.js CHANGED
@@ -22,7 +22,7 @@ import authSchemas from './schemas/auth-schemas.json';
22
22
  import { getAllRefs, getShape } from './schema-util';
23
23
  import { builtInShapes } from './builtin-schema';
24
24
  import { isValidTemplate } from './template-shapes';
25
- import { isBasicResolver, isComposeResolver, isExtendsSchema, isObjectSchema } from './types/utils';
25
+ import { isAIGenerateTextResolver, isBasicResolver, isComposeResolver, isExtendsSchema, isObjectSchema } from './types/utils';
26
26
  import { refItemToNamespacedShapeName, getRefShapeName, parsePropertyRef, propertyRefItemToResolverPath, createGetNamespace, propertyRefItemToPath, atRefToRefItem, refItemToShape, refItemToAtRef } from './refs';
27
27
  import { scalars } from './scalars';
28
28
  import { isUnionSchema } from './unions';
@@ -225,6 +225,36 @@ function validateResolver(projectSchema, basePath, baseResolver) {
225
225
  pushErrors(errors, validateAITGuardrail(resolver.guardrails[i], path.concat(['guardrails', i])));
226
226
  }
227
227
  }
228
+ const {
229
+ toolChoice
230
+ } = resolver.options ?? {};
231
+ if (toolChoice === 'required') {
232
+ if (!resolver.tools?.length) {
233
+ errors.push({
234
+ type: 'notFound',
235
+ path: path.concat(['options', 'toolChoice']),
236
+ message: `Must have at least one tool configured to specify "required"`
237
+ });
238
+ }
239
+ } else if (toolChoice && toolChoice !== 'auto' && toolChoice !== 'none') {
240
+ const parsed = parsePropertyRef(toolChoice);
241
+ if (parsed) {
242
+ const matchingTool = resolver.tools?.find(tool => isEqual(parsed, parsePropertyRef(getToolRef(tool))));
243
+ if (!matchingTool) {
244
+ errors.push({
245
+ type: 'notFound',
246
+ path: path.concat(['options', 'toolChoice']),
247
+ message: `Missing tool "${toolChoice}" must be specified in "tools" array`
248
+ });
249
+ }
250
+ } else {
251
+ errors.push({
252
+ type: 'conflict',
253
+ path: path.concat(['options', 'toolChoice']),
254
+ message: `Unable to parse property ref "${toolChoice}"`
255
+ });
256
+ }
257
+ }
228
258
  };
229
259
  const getNamespace = createGetNamespace(projectSchema);
230
260
  for (const [resolver, path] of enumerateBasicResolvers(baseResolver, basePath)) {
@@ -250,7 +280,7 @@ function validateResolver(projectSchema, basePath, baseResolver) {
250
280
  }
251
281
  if (resolver.name === 'delegate') {
252
282
  pushErrors(errors, validateDeletgateResolver(resolver, path));
253
- } else if (resolver.name === 'ai:generateText') {
283
+ } else if (isAIGenerateTextResolver(resolver)) {
254
284
  validateAIGenerateTextResolver(resolver, path);
255
285
  }
256
286
  } else {
@@ -322,7 +352,7 @@ async function validateResolverReferences(context, projectSchema, basePath, base
322
352
  message: `Missing resolver config at property ref "${resolver.to}"`
323
353
  });
324
354
  }
325
- } else if (resolver.name === 'ai:generateText') {
355
+ } else if (isAIGenerateTextResolver(resolver)) {
326
356
  if (resolver.tools) {
327
357
  await pMap(resolver.tools, async (tool, i) => {
328
358
  const toolRef = getToolRef(tool);
@@ -494,6 +494,6 @@
494
494
  }
495
495
  }
496
496
  },
497
- "schemaVersion": "3.45.0",
497
+ "schemaVersion": "3.46.0",
498
498
  "apiVersion": "2"
499
499
  }
@@ -915,6 +915,6 @@
915
915
  }
916
916
  }
917
917
  },
918
- "schemaVersion": "3.45.0",
918
+ "schemaVersion": "3.46.0",
919
919
  "apiVersion": "2"
920
920
  }
@@ -52781,6 +52781,6 @@
52781
52781
  }
52782
52782
  }
52783
52783
  },
52784
- "schemaVersion": "3.45.0",
52784
+ "schemaVersion": "3.46.0",
52785
52785
  "services": {}
52786
52786
  }
@@ -399,6 +399,6 @@
399
399
  }
400
400
  }
401
401
  },
402
- "schemaVersion": "3.45.0",
402
+ "schemaVersion": "3.46.0",
403
403
  "services": {}
404
404
  }
@@ -387,6 +387,6 @@
387
387
  }
388
388
  }
389
389
  },
390
- "schemaVersion": "3.45.0",
390
+ "schemaVersion": "3.46.0",
391
391
  "services": {}
392
392
  }
@@ -40,7 +40,7 @@
40
40
  "shapes": {},
41
41
  "workflows": {},
42
42
  "forms": {},
43
- "schemaVersion": "3.45.0",
43
+ "schemaVersion": "3.46.0",
44
44
  "apiVersion": "2",
45
45
  "services": {
46
46
  "graphql": {
@@ -4350,6 +4350,6 @@
4350
4350
  }
4351
4351
  }
4352
4352
  },
4353
- "schemaVersion": "3.45.0",
4353
+ "schemaVersion": "3.46.0",
4354
4354
  "services": {}
4355
4355
  }
@@ -15,7 +15,7 @@
15
15
  "apiVersion": "1",
16
16
  "queries": {},
17
17
  "mutations": {},
18
- "schemaVersion": "3.45.0",
18
+ "schemaVersion": "3.46.0",
19
19
  "shapes": {
20
20
  "DocumentUploadForm": {
21
21
  "id": "HJPFlRKkr",
@@ -97,6 +97,6 @@
97
97
  }
98
98
  }
99
99
  },
100
- "schemaVersion": "3.45.0",
100
+ "schemaVersion": "3.46.0",
101
101
  "apiVersion": "2"
102
102
  }
@@ -10474,5 +10474,5 @@
10474
10474
  }
10475
10475
  }
10476
10476
  },
10477
- "schemaVersion": "3.45.0"
10477
+ "schemaVersion": "3.46.0"
10478
10478
  }
@@ -23446,6 +23446,6 @@
23446
23446
  }
23447
23447
  }
23448
23448
  },
23449
- "schemaVersion": "3.45.0",
23449
+ "schemaVersion": "3.46.0",
23450
23450
  "services": {}
23451
23451
  }
@@ -35163,6 +35163,6 @@
35163
35163
  }
35164
35164
  }
35165
35165
  },
35166
- "schemaVersion": "3.45.0",
35166
+ "schemaVersion": "3.46.0",
35167
35167
  "services": {}
35168
35168
  }
@@ -8053,6 +8053,6 @@
8053
8053
  }
8054
8054
  }
8055
8055
  },
8056
- "schemaVersion": "3.45.0",
8056
+ "schemaVersion": "3.46.0",
8057
8057
  "services": {}
8058
8058
  }
@@ -1884,6 +1884,6 @@
1884
1884
  }
1885
1885
  }
1886
1886
  },
1887
- "schemaVersion": "3.45.0",
1887
+ "schemaVersion": "3.46.0",
1888
1888
  "services": {}
1889
1889
  }
@@ -234,6 +234,6 @@
234
234
  }
235
235
  }
236
236
  },
237
- "schemaVersion": "3.45.0",
237
+ "schemaVersion": "3.46.0",
238
238
  "apiVersion": "2"
239
239
  }
@@ -14766,6 +14766,6 @@
14766
14766
  }
14767
14767
  }
14768
14768
  },
14769
- "schemaVersion": "3.45.0",
14769
+ "schemaVersion": "3.46.0",
14770
14770
  "services": {}
14771
14771
  }
@@ -388,6 +388,6 @@
388
388
  }
389
389
  }
390
390
  },
391
- "schemaVersion": "3.45.0",
391
+ "schemaVersion": "3.46.0",
392
392
  "services": {}
393
393
  }
@@ -226,6 +226,6 @@
226
226
  }
227
227
  }
228
228
  },
229
- "schemaVersion": "3.45.0",
229
+ "schemaVersion": "3.46.0",
230
230
  "services": {}
231
231
  }
@@ -9756,5 +9756,5 @@
9756
9756
  }
9757
9757
  }
9758
9758
  },
9759
- "schemaVersion": "3.45.0"
9759
+ "schemaVersion": "3.46.0"
9760
9760
  }
@@ -179,7 +179,7 @@
179
179
  }
180
180
  },
181
181
  {
182
- "name": "ai:generateText",
182
+ "name": "ai:chat",
183
183
  "service": "openai",
184
184
  "model": "gpt-3.5-turbo",
185
185
  "systemPrompt": "You are a helpful assistant.",
@@ -314,6 +314,6 @@
314
314
  }
315
315
  }
316
316
  },
317
- "schemaVersion": "3.45.0",
317
+ "schemaVersion": "3.46.0",
318
318
  "apiVersion": "2"
319
319
  }
@@ -806,6 +806,6 @@
806
806
  }
807
807
  }
808
808
  },
809
- "schemaVersion": "3.45.0",
809
+ "schemaVersion": "3.46.0",
810
810
  "services": {}
811
811
  }
@@ -142,6 +142,6 @@
142
142
  }
143
143
  }
144
144
  },
145
- "schemaVersion": "3.45.0",
145
+ "schemaVersion": "3.46.0",
146
146
  "services": {}
147
147
  }
@@ -149,6 +149,6 @@
149
149
  }
150
150
  }
151
151
  },
152
- "schemaVersion": "3.45.0",
152
+ "schemaVersion": "3.46.0",
153
153
  "services": {}
154
154
  }
@@ -2633,5 +2633,5 @@
2633
2633
  }
2634
2634
  }
2635
2635
  },
2636
- "schemaVersion": "3.45.0"
2636
+ "schemaVersion": "3.46.0"
2637
2637
  }
@@ -2105,5 +2105,5 @@
2105
2105
  }
2106
2106
  }
2107
2107
  },
2108
- "schemaVersion": "3.45.0"
2108
+ "schemaVersion": "3.46.0"
2109
2109
  }
@@ -91,5 +91,5 @@
91
91
  }
92
92
  }
93
93
  },
94
- "schemaVersion": "3.45.0"
94
+ "schemaVersion": "3.46.0"
95
95
  }
@@ -198,7 +198,7 @@
198
198
  },
199
199
  "workflows": {},
200
200
  "forms": {},
201
- "schemaVersion": "3.45.0",
201
+ "schemaVersion": "3.46.0",
202
202
  "apiVersion": "2",
203
203
  "services": {
204
204
  "rick-and-morty": {
@@ -428,7 +428,7 @@
428
428
  }
429
429
  }
430
430
  },
431
- "schemaVersion": "3.45.0",
431
+ "schemaVersion": "3.46.0",
432
432
  "apiVersion": "2",
433
433
  "services": {
434
434
  "rick-and-morty": {
@@ -397,6 +397,6 @@
397
397
  }
398
398
  }
399
399
  },
400
- "schemaVersion": "3.45.0",
400
+ "schemaVersion": "3.46.0",
401
401
  "services": {}
402
402
  }
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "workflows": {},
44
44
  "forms": {},
45
- "schemaVersion": "3.45.0",
45
+ "schemaVersion": "3.46.0",
46
46
  "apiVersion": "2",
47
47
  "services": {
48
48
  "rick-and-morty": {
@@ -1129,6 +1129,6 @@
1129
1129
  }
1130
1130
  }
1131
1131
  },
1132
- "schemaVersion": "3.45.0",
1132
+ "schemaVersion": "3.46.0",
1133
1133
  "services": {}
1134
1134
  }
@@ -1129,6 +1129,6 @@
1129
1129
  }
1130
1130
  }
1131
1131
  },
1132
- "schemaVersion": "3.45.0",
1132
+ "schemaVersion": "3.46.0",
1133
1133
  "services": {}
1134
1134
  }
@@ -1004,6 +1004,6 @@
1004
1004
  }
1005
1005
  }
1006
1006
  },
1007
- "schemaVersion": "3.45.0",
1007
+ "schemaVersion": "3.46.0",
1008
1008
  "apiVersion": "2"
1009
1009
  }
@@ -406,6 +406,6 @@
406
406
  }
407
407
  }
408
408
  },
409
- "schemaVersion": "3.45.0",
409
+ "schemaVersion": "3.46.0",
410
410
  "apiVersion": "2"
411
411
  }
@@ -271,6 +271,6 @@
271
271
  }
272
272
  }
273
273
  },
274
- "schemaVersion": "3.45.0",
274
+ "schemaVersion": "3.46.0",
275
275
  "apiVersion": "2"
276
276
  }
@@ -1147,5 +1147,5 @@
1147
1147
  }
1148
1148
  }
1149
1149
  },
1150
- "schemaVersion": "3.45.0"
1150
+ "schemaVersion": "3.46.0"
1151
1151
  }
@@ -5,7 +5,7 @@
5
5
  "en-us"
6
6
  ],
7
7
  "apiVersion": "2",
8
- "schemaVersion": "3.45.0",
8
+ "schemaVersion": "3.46.0",
9
9
  "queries": {
10
10
  "getAsset": {
11
11
  "shape": "Asset",
@@ -49144,7 +49144,7 @@
49144
49144
  }
49145
49145
  }
49146
49146
  },
49147
- "schemaVersion": "3.45.0",
49147
+ "schemaVersion": "3.46.0",
49148
49148
  "apiVersion": "2",
49149
49149
  "services": {
49150
49150
  "shopify": {
@@ -12297,5 +12297,5 @@
12297
12297
  }
12298
12298
  }
12299
12299
  },
12300
- "schemaVersion": "3.45.0"
12300
+ "schemaVersion": "3.46.0"
12301
12301
  }
@@ -5,7 +5,7 @@
5
5
  "en-us"
6
6
  ],
7
7
  "apiVersion": "2",
8
- "schemaVersion": "3.45.0",
8
+ "schemaVersion": "3.46.0",
9
9
  "queries": {
10
10
  "getAsset": {
11
11
  "shape": "Asset",
@@ -28916,5 +28916,5 @@
28916
28916
  }
28917
28917
  }
28918
28918
  },
28919
- "schemaVersion": "3.45.0"
28919
+ "schemaVersion": "3.46.0"
28920
28920
  }
@@ -165,6 +165,6 @@
165
165
  }
166
166
  }
167
167
  },
168
- "schemaVersion": "3.45.0",
168
+ "schemaVersion": "3.46.0",
169
169
  "services": {}
170
170
  }
@@ -190,6 +190,6 @@
190
190
  }
191
191
  }
192
192
  },
193
- "schemaVersion": "3.45.0",
193
+ "schemaVersion": "3.46.0",
194
194
  "services": {}
195
195
  }
@@ -930,7 +930,7 @@
930
930
  "shape": "ChatResponse",
931
931
  "args": "ChatArgs",
932
932
  "resolver": {
933
- "name": "ai:generateText",
933
+ "name": "ai:chat",
934
934
  "service": "openai",
935
935
  "model": "gpt-4o",
936
936
  "systemPrompt": "You are a very helpful assistant. \n\nFirst you must verify the user's car's \"fitment data\" which is defined as the year, make, model and engine. The year must be between 1918 and 2025. The make must be validated by the getMakes tool. The model must be validated with the getModels tool. The engine must be validated with the getEngines tool. Do not assume any fitment data always present the options available from the appropriate tool call. \n\nAfter verifying the \"fitment data\" you should suggest up to five compatible products using the listProducts tool. Please include product IDs from Shopify only, where appropriate, on their own line, with 2 line breaks before and after, with no markdown or styling, in the format: `gid://shopify/Product/8133116887317`",
@@ -1630,6 +1630,6 @@
1630
1630
  }
1631
1631
  }
1632
1632
  },
1633
- "schemaVersion": "3.45.0",
1633
+ "schemaVersion": "3.46.0",
1634
1634
  "apiVersion": "2"
1635
1635
  }
@@ -434,7 +434,7 @@
434
434
  }
435
435
  }
436
436
  },
437
- "schemaVersion": "3.45.0",
437
+ "schemaVersion": "3.46.0",
438
438
  "apiVersion": "2",
439
439
  "services": {
440
440
  "openai": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takeshape/schema",
3
- "version": "10.52.5",
3
+ "version": "11.0.1",
4
4
  "description": "TakeShape Schema",
5
5
  "homepage": "https://www.takeshape.io",
6
6
  "repository": {
@@ -28,9 +28,9 @@
28
28
  "p-reduce": "^2.1.0",
29
29
  "semver": "^7.3.2",
30
30
  "tiny-invariant": "^1.2.0",
31
- "@takeshape/errors": "10.52.5",
32
- "@takeshape/json-schema": "10.52.5",
33
- "@takeshape/util": "10.52.5"
31
+ "@takeshape/errors": "11.0.1",
32
+ "@takeshape/json-schema": "11.0.1",
33
+ "@takeshape/util": "11.0.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@takeshape/json-schema-to-typescript": "^11.0.0",
@@ -46,10 +46,10 @@
46
46
  "meow": "^9.0.0",
47
47
  "p-map": "^5.0.0",
48
48
  "shortid": "^2.2.15",
49
- "@takeshape/infra": "10.52.5"
49
+ "@takeshape/infra": "11.0.1"
50
50
  },
51
51
  "engines": {
52
- "node": ">=18"
52
+ "node": ">=20"
53
53
  },
54
54
  "scripts": {
55
55
  "build": "pnpm build:js && pnpm build:es && pnpm build:types && pnpm build:json && pnpm build:copy",