zod-openapi 0.3.0 → 0.4.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 (44) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +52 -8
  3. package/lib-commonjs/create/components.js +11 -5
  4. package/lib-commonjs/create/components.js.map +1 -1
  5. package/lib-commonjs/create/document.js +1 -1
  6. package/lib-commonjs/create/document.js.map +1 -1
  7. package/lib-commonjs/create/schema/index.js +115 -132
  8. package/lib-commonjs/create/schema/index.js.map +1 -1
  9. package/lib-commonjs/create/schema/nativeEnum.js +11 -3
  10. package/lib-commonjs/create/schema/nativeEnum.js.map +1 -1
  11. package/lib-commonjs/create/schema/nullable.js +20 -16
  12. package/lib-commonjs/create/schema/nullable.js.map +1 -1
  13. package/lib-commonjs/create/schema/number.js +12 -5
  14. package/lib-commonjs/create/schema/number.js.map +1 -1
  15. package/lib-commonjs/create/schema/tuple.js +25 -5
  16. package/lib-commonjs/create/schema/tuple.js.map +1 -1
  17. package/lib-commonjs/extendZod.js.map +1 -1
  18. package/lib-commonjs/openapi.js +13 -0
  19. package/lib-commonjs/openapi.js.map +1 -0
  20. package/lib-es2015/create/components.js +11 -5
  21. package/lib-es2015/create/components.js.map +1 -1
  22. package/lib-es2015/create/document.js +1 -1
  23. package/lib-es2015/create/document.js.map +1 -1
  24. package/lib-es2015/create/schema/index.js +3 -3
  25. package/lib-es2015/create/schema/index.js.map +1 -1
  26. package/lib-es2015/create/schema/nativeEnum.js +11 -3
  27. package/lib-es2015/create/schema/nativeEnum.js.map +1 -1
  28. package/lib-es2015/create/schema/nullable.js +20 -15
  29. package/lib-es2015/create/schema/nullable.js.map +1 -1
  30. package/lib-es2015/create/schema/number.js +12 -5
  31. package/lib-es2015/create/schema/number.js.map +1 -1
  32. package/lib-es2015/create/schema/tuple.js +25 -5
  33. package/lib-es2015/create/schema/tuple.js.map +1 -1
  34. package/lib-es2015/extendZod.js.map +1 -1
  35. package/lib-es2015/openapi.js +9 -0
  36. package/lib-es2015/openapi.js.map +1 -0
  37. package/lib-types/create/components.d.ts +7 -6
  38. package/lib-types/create/document.d.ts +13 -11
  39. package/lib-types/create/schema/nativeEnum.d.ts +2 -1
  40. package/lib-types/create/schema/nullable.d.ts +0 -1
  41. package/lib-types/create/schema/number.d.ts +2 -1
  42. package/lib-types/extendZod.d.ts +5 -3
  43. package/lib-types/openapi.d.ts +3 -0
  44. package/package.json +9 -6
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  ### MIT License
2
2
 
3
- Copyright (c) 2020 SEEK
3
+ Copyright (c) 2020 Sam Chung
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,8 +1,18 @@
1
1
  # zod-openapi
2
2
 
3
+ A Typescript library to create full OpenAPI 3 documentation from [Zod](https://github.com/colinhacks/zod) Types.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/zod-openapi)](https://www.npmjs.com/package/zod-openapi)
6
+ [![npm downloads](https://img.shields.io/npm/dm/zod-openapi)](https://www.npmjs.com/package/zod-openapi)
3
7
  [![Powered by skuba](https://img.shields.io/badge/🤿%20skuba-powered-009DC4)](https://github.com/seek-oss/skuba)
4
8
 
5
- A Typescript library to create full OpenAPI 3.1 documentation from Zod Schemas.
9
+ ## Install
10
+
11
+ Install via npm:
12
+
13
+ ```bash
14
+ npm install zod zod-openapi
15
+ ```
6
16
 
7
17
  ## API
8
18
 
@@ -288,6 +298,20 @@ Wherever `title` is used in schemas across the document, it will instead be crea
288
298
 
289
299
  This can be an extremely powerful way to generate better Open API documentation. There are some Open API features like [discriminator mapping](https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/) which require all schemas in the union to contain a ref.
290
300
 
301
+ To display components which are not referenced by simply add the Zod Schema to the schema components directly.
302
+
303
+ eg.
304
+
305
+ ```typescript
306
+ {
307
+ "components": {
308
+ "schemas": {
309
+ MyJobSchema // note: this will register this Zod Schema as MyJobSchema unless `ref` is specified on the type
310
+ }
311
+ }
312
+ }
313
+ ```
314
+
291
315
  #### Parameters
292
316
 
293
317
  Query, Path, Header & Cookie parameters can be similarly registered:
@@ -312,6 +336,14 @@ const header = z.string().openapi({
312
336
  });
313
337
  ```
314
338
 
339
+ ## Supported OpenAPI Versions
340
+
341
+ - '3.0.0'
342
+ - '3.0.1'
343
+ - '3.0.2'
344
+ - '3.0.3'
345
+ - '3.1.0'
346
+
315
347
  ## Supported Zod Schema
316
348
 
317
349
  - ZodArray
@@ -352,6 +384,10 @@ eg.
352
384
  z.custom().openapi({ type: 'string' });
353
385
  ```
354
386
 
387
+ ## Ecosystem
388
+
389
+ - [eslint-plugin-zod-openapi](https://github.com/samchungy/eslint-plugin-zod-openapi) - Eslint rules for zod-openapi. This includes features which can autogenerate Typescript comments for your Zod types based on your `description`, `example` and `deprecated` fields.
390
+
355
391
  ## Development
356
392
 
357
393
  ### Prerequisites
@@ -379,15 +415,23 @@ yarn format
379
415
  yarn lint
380
416
  ```
381
417
 
382
- ### Package
418
+ ### Release
383
419
 
384
- ```shell
385
- # Compile source
386
- yarn build
420
+ To release a new version
387
421
 
388
- # Review bundle
389
- npm pack
390
- ```
422
+ 1. Create a [new GitHub Release](https://github.com/samchungy/zod-openapi/releases/new)
423
+ 2. Select `🏷️ Choose a tag`, enter a version number. eg. `v1.2.0` and click `+ Create new tag: vX.X.X on publish`.
424
+ 3. Click the `Generate release notes` button and adjust the description.
425
+ 4. Tick the `Set as the latest release` box and click `Publish release`. This will trigger the `Release` workflow.
426
+ 5. Check the `Pull Requests` tab for a PR labelled `Release vX.X.X`.
427
+ 6. Click `Merge Pull Request` on that Pull Request to update master with the new package version.
428
+
429
+ To release a new beta version
430
+
431
+ 1. Create a [new GitHub Release](https://github.com/samchungy/zod-openapi/releases/new)
432
+ 2. Select `🏷️ Choose a tag`, enter a version number with a `-beta.X` suffix eg. `v1.2.0-beta.1` and click `+ Create new tag: vX.X.X-beta.X on publish`.
433
+ 3. Click the `Generate release notes` button and adjust the description.
434
+ 4. Tick the `Set as a pre-release` box and click `Publish release`. This will trigger the `Prerelease` workflow.
391
435
 
392
436
  ## Credits
393
437
 
@@ -3,8 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createComponents = exports.createComponentSchemaRef = exports.getDefaultComponents = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const metadata_1 = require("./schema/metadata");
6
- const getDefaultComponents = (componentsObject) => {
7
- const defaultComponents = { schemas: {}, parameters: {}, headers: {} };
6
+ const getDefaultComponents = (componentsObject, openapi = '3.1.0') => {
7
+ const defaultComponents = {
8
+ schemas: {},
9
+ parameters: {},
10
+ headers: {},
11
+ openapi,
12
+ };
8
13
  if (!componentsObject) {
9
14
  return defaultComponents;
10
15
  }
@@ -19,18 +24,19 @@ const createSchemas = (schemas, components) => {
19
24
  return;
20
25
  }
21
26
  return Object.entries(schemas).forEach(([key, schema]) => {
27
+ const ref = schema instanceof zod_1.ZodType ? schema._def.openapi?.ref ?? key : key;
22
28
  const component = components.schemas[key];
23
29
  if (component) {
24
- throw new Error(`schemaRef "${key}" is already registered`);
30
+ throw new Error(`schemaRef "${ref}" is already registered`);
25
31
  }
26
32
  if (schema instanceof zod_1.ZodType) {
27
- components.schemas[key] = {
33
+ components.schemas[ref] = {
28
34
  schemaObject: (0, metadata_1.createSchemaWithMetadata)(schema, components),
29
35
  zodSchema: schema,
30
36
  };
31
37
  return;
32
38
  }
33
- components.schemas[key] = {
39
+ components.schemas[ref] = {
34
40
  schemaObject: schema,
35
41
  };
36
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/create/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/create/components.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const components_1 = require("./components");
6
6
  const paths_1 = require("./paths");
7
7
  const createDocument = (zodOpenApiObject) => {
8
8
  const { schemas, parameters, headers, ...rest } = zodOpenApiObject.components ?? {};
9
- const components = (0, components_1.getDefaultComponents)({ headers, schemas, parameters });
9
+ const components = (0, components_1.getDefaultComponents)({ headers, schemas, parameters }, zodOpenApiObject.openapi);
10
10
  return {
11
11
  ...zodOpenApiObject,
12
12
  paths: (0, paths_1.createPaths)(zodOpenApiObject.paths, components),
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/create/document.ts"],"names":[],"mappings":";;;AACA,+BAAiC;AAGjC,6CAAsE;AACtE,mCAAsC;AA+E/B,MAAM,cAAc,GAAG,CAC5B,gBAAkC,EACb,EAAE;IACvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAC7C,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,iCAAoB,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1E,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,IAAA,mBAAW,EAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;QACtD,QAAQ,EAAE,IAAA,mBAAW,EAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5D,UAAU,EAAE,IAAA,6BAAgB,EAAC,IAAI,EAAE,UAAU,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,cAAc,kBAazB;AAEK,MAAM,kBAAkB,GAAG,CAChC,MAAwB,EACxB,WAGC,EACO,EAAE;IACV,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,EACR,WAAW,EAAE,QAAQ,EACrB,WAAW,EAAE,OAAO,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B;AAEK,MAAM,kBAAkB,GAAG,CAChC,MAAwB,EACxB,cAGI,EAAE,EACE,EAAE;IACV,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAA,gBAAS,EAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACxE,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/create/document.ts"],"names":[],"mappings":";;;AACA,+BAAiC;AAKjC,6CAAsE;AACtE,mCAAsC;AA4F/B,MAAM,cAAc,GAAG,CAC5B,gBAAkC,EACb,EAAE;IACvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAC7C,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,iCAAoB,EACrC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAChC,gBAAgB,CAAC,OAAO,CACzB,CAAC;IAEF,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,IAAA,mBAAW,EAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;QACtD,QAAQ,EAAE,IAAA,mBAAW,EAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5D,UAAU,EAAE,IAAA,6BAAgB,EAAC,IAAI,EAAE,UAAU,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEK,MAAM,kBAAkB,GAAG,CAChC,MAAwB,EACxB,WAGC,EACO,EAAE;IACV,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,EACR,WAAW,EAAE,QAAQ,EACrB,WAAW,EAAE,OAAO,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B;AAEK,MAAM,kBAAkB,GAAG,CAChC,MAAwB,EACxB,cAGI,EAAE,EACE,EAAE;IACV,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAA,gBAAS,EAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACxE,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B"}
@@ -1,144 +1,127 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.createSchemaOrRef =
4
- exports.createRegisteredSchema =
5
- exports.createSchema =
6
- void 0;
7
- const zod_1 = require('zod');
8
- const components_1 = require('../components');
9
- const array_1 = require('./array');
10
- const boolean_1 = require('./boolean');
11
- const date_1 = require('./date');
12
- const default_1 = require('./default');
13
- const discriminatedUnion_1 = require('./discriminatedUnion');
14
- const effects_1 = require('./effects');
15
- const enum_1 = require('./enum');
16
- const intersection_1 = require('./intersection');
17
- const literal_1 = require('./literal');
18
- const metadata_1 = require('./metadata');
19
- const nativeEnum_1 = require('./nativeEnum');
20
- const null_1 = require('./null');
21
- const nullable_1 = require('./nullable');
22
- const number_1 = require('./number');
23
- const object_1 = require('./object');
24
- const optional_1 = require('./optional');
25
- const record_1 = require('./record');
26
- const string_1 = require('./string');
27
- const tuple_1 = require('./tuple');
28
- const union_1 = require('./union');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSchemaOrRef = exports.createRegisteredSchema = exports.createSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const components_1 = require("../components");
6
+ const array_1 = require("./array");
7
+ const boolean_1 = require("./boolean");
8
+ const date_1 = require("./date");
9
+ const default_1 = require("./default");
10
+ const discriminatedUnion_1 = require("./discriminatedUnion");
11
+ const effects_1 = require("./effects");
12
+ const enum_1 = require("./enum");
13
+ const intersection_1 = require("./intersection");
14
+ const literal_1 = require("./literal");
15
+ const metadata_1 = require("./metadata");
16
+ const nativeEnum_1 = require("./nativeEnum");
17
+ const null_1 = require("./null");
18
+ const nullable_1 = require("./nullable");
19
+ const number_1 = require("./number");
20
+ const object_1 = require("./object");
21
+ const optional_1 = require("./optional");
22
+ const record_1 = require("./record");
23
+ const string_1 = require("./string");
24
+ const tuple_1 = require("./tuple");
25
+ const union_1 = require("./union");
29
26
  const createSchema = (zodSchema, components) => {
30
- if (zodSchema instanceof zod_1.ZodString) {
31
- return (0, string_1.createStringSchema)(zodSchema);
32
- }
33
- if (zodSchema instanceof zod_1.ZodNumber) {
34
- return (0, number_1.createNumberSchema)(zodSchema);
35
- }
36
- if (zodSchema instanceof zod_1.ZodBoolean) {
37
- return (0, boolean_1.createBooleanSchema)(zodSchema);
38
- }
39
- if (zodSchema instanceof zod_1.ZodEnum) {
40
- return (0, enum_1.createEnumSchema)(zodSchema);
41
- }
42
- if (zodSchema instanceof zod_1.ZodLiteral) {
43
- return (0, literal_1.createLiteralSchema)(zodSchema);
44
- }
45
- if (zodSchema instanceof zod_1.ZodNativeEnum) {
46
- return (0, nativeEnum_1.createNativeEnumSchema)(zodSchema);
47
- }
48
- if (zodSchema instanceof zod_1.ZodArray) {
49
- return (0, array_1.createArraySchema)(zodSchema, components);
50
- }
51
- if (zodSchema instanceof zod_1.ZodObject) {
52
- return (0, object_1.createObjectSchema)(zodSchema, components);
53
- }
54
- if (zodSchema instanceof zod_1.ZodUnion) {
55
- return (0, union_1.createUnionSchema)(zodSchema, components);
56
- }
57
- if (zodSchema instanceof zod_1.ZodDiscriminatedUnion) {
58
- return (0, discriminatedUnion_1.createDiscriminatedUnionSchema)(
59
- zodSchema,
60
- components,
61
- );
62
- }
63
- if (zodSchema instanceof zod_1.ZodNull) {
64
- return (0, null_1.createNullSchema)(zodSchema);
65
- }
66
- if (zodSchema instanceof zod_1.ZodNullable) {
67
- return (0, nullable_1.createNullableSchema)(zodSchema, components);
68
- }
69
- if (zodSchema instanceof zod_1.ZodOptional) {
70
- return (0, optional_1.createOptionalSchema)(zodSchema, components);
71
- }
72
- if (zodSchema instanceof zod_1.ZodDefault) {
73
- return (0, default_1.createDefaultSchema)(zodSchema, components);
74
- }
75
- if (zodSchema instanceof zod_1.ZodRecord) {
76
- return (0, record_1.createRecordSchema)(zodSchema, components);
77
- }
78
- if (zodSchema instanceof zod_1.ZodTuple) {
79
- return (0, tuple_1.createTupleSchema)(zodSchema, components);
80
- }
81
- if (zodSchema instanceof zod_1.ZodDate) {
82
- return (0, date_1.createDateSchema)(zodSchema);
83
- }
84
- if (
85
- zodSchema._def.effect?.type === 'refinement' ||
86
- zodSchema._def.effect?.type === 'preprocess'
87
- ) {
88
- return (0, effects_1.createEffectsSchema)(zodSchema, components);
89
- }
90
- if (zodSchema instanceof zod_1.ZodNativeEnum) {
91
- return (0, nativeEnum_1.createNativeEnumSchema)(zodSchema);
92
- }
93
- if (zodSchema instanceof zod_1.ZodIntersection) {
94
- return (0, intersection_1.createIntersectionSchema)(zodSchema, components);
95
- }
96
- if (!zodSchema._def.openapi?.type) {
97
- console.log(zodSchema);
98
- throw new Error(
99
- `Unknown schema ${zodSchema.toString()}. Please assign it a manual type`,
100
- );
101
- }
102
- return {};
27
+ if (zodSchema instanceof zod_1.ZodString) {
28
+ return (0, string_1.createStringSchema)(zodSchema);
29
+ }
30
+ if (zodSchema instanceof zod_1.ZodNumber) {
31
+ return (0, number_1.createNumberSchema)(zodSchema, components);
32
+ }
33
+ if (zodSchema instanceof zod_1.ZodBoolean) {
34
+ return (0, boolean_1.createBooleanSchema)(zodSchema);
35
+ }
36
+ if (zodSchema instanceof zod_1.ZodEnum) {
37
+ return (0, enum_1.createEnumSchema)(zodSchema);
38
+ }
39
+ if (zodSchema instanceof zod_1.ZodLiteral) {
40
+ return (0, literal_1.createLiteralSchema)(zodSchema);
41
+ }
42
+ if (zodSchema instanceof zod_1.ZodNativeEnum) {
43
+ return (0, nativeEnum_1.createNativeEnumSchema)(zodSchema, components);
44
+ }
45
+ if (zodSchema instanceof zod_1.ZodArray) {
46
+ return (0, array_1.createArraySchema)(zodSchema, components);
47
+ }
48
+ if (zodSchema instanceof zod_1.ZodObject) {
49
+ return (0, object_1.createObjectSchema)(zodSchema, components);
50
+ }
51
+ if (zodSchema instanceof zod_1.ZodUnion) {
52
+ return (0, union_1.createUnionSchema)(zodSchema, components);
53
+ }
54
+ if (zodSchema instanceof zod_1.ZodDiscriminatedUnion) {
55
+ return (0, discriminatedUnion_1.createDiscriminatedUnionSchema)(zodSchema, components);
56
+ }
57
+ if (zodSchema instanceof zod_1.ZodNull) {
58
+ return (0, null_1.createNullSchema)(zodSchema);
59
+ }
60
+ if (zodSchema instanceof zod_1.ZodNullable) {
61
+ return (0, nullable_1.createNullableSchema)(zodSchema, components);
62
+ }
63
+ if (zodSchema instanceof zod_1.ZodOptional) {
64
+ return (0, optional_1.createOptionalSchema)(zodSchema, components);
65
+ }
66
+ if (zodSchema instanceof zod_1.ZodDefault) {
67
+ return (0, default_1.createDefaultSchema)(zodSchema, components);
68
+ }
69
+ if (zodSchema instanceof zod_1.ZodRecord) {
70
+ return (0, record_1.createRecordSchema)(zodSchema, components);
71
+ }
72
+ if (zodSchema instanceof zod_1.ZodTuple) {
73
+ return (0, tuple_1.createTupleSchema)(zodSchema, components);
74
+ }
75
+ if (zodSchema instanceof zod_1.ZodDate) {
76
+ return (0, date_1.createDateSchema)(zodSchema);
77
+ }
78
+ if (zodSchema instanceof zod_1.ZodEffects &&
79
+ (zodSchema._def.effect.type === 'refinement' ||
80
+ zodSchema._def.effect.type === 'preprocess')) {
81
+ return (0, effects_1.createEffectsSchema)(zodSchema, components);
82
+ }
83
+ if (zodSchema instanceof zod_1.ZodNativeEnum) {
84
+ return (0, nativeEnum_1.createNativeEnumSchema)(zodSchema, components);
85
+ }
86
+ if (zodSchema instanceof zod_1.ZodIntersection) {
87
+ return (0, intersection_1.createIntersectionSchema)(zodSchema, components);
88
+ }
89
+ if (!zodSchema._def.openapi?.type) {
90
+ throw new Error(`Unknown schema ${zodSchema.toString()}. Please assign it a manual type`);
91
+ }
92
+ return {};
103
93
  };
104
94
  exports.createSchema = createSchema;
105
95
  const createRegisteredSchema = (zodSchema, schemaRef, components) => {
106
- const component = components.schemas[schemaRef];
107
- if (component) {
108
- if (component.zodSchema !== zodSchema) {
109
- throw new Error(`schemaRef "${schemaRef}" is already registered`);
96
+ const component = components.schemas[schemaRef];
97
+ if (component) {
98
+ if (component.zodSchema !== zodSchema) {
99
+ throw new Error(`schemaRef "${schemaRef}" is already registered`);
100
+ }
101
+ return {
102
+ $ref: (0, components_1.createComponentSchemaRef)(schemaRef),
103
+ };
110
104
  }
105
+ // Optional Objects can return a reference object
106
+ const schemaOrRef = (0, metadata_1.createSchemaWithMetadata)(zodSchema, components);
107
+ if ('$ref' in schemaOrRef) {
108
+ throw new Error('Unexpected Error: received a reference object');
109
+ }
110
+ components.schemas[schemaRef] = {
111
+ schemaObject: schemaOrRef,
112
+ zodSchema,
113
+ };
111
114
  return {
112
- $ref: (0, components_1.createComponentSchemaRef)(schemaRef),
115
+ $ref: (0, components_1.createComponentSchemaRef)(schemaRef),
113
116
  };
114
- }
115
- // Optional Objects can return a reference object
116
- const schemaOrRef = (0, metadata_1.createSchemaWithMetadata)(
117
- zodSchema,
118
- components,
119
- );
120
- if ('$ref' in schemaOrRef) {
121
- throw new Error('Unexpected Error: received a reference object');
122
- }
123
- components.schemas[schemaRef] = {
124
- schemaObject: schemaOrRef,
125
- zodSchema,
126
- };
127
- return {
128
- $ref: (0, components_1.createComponentSchemaRef)(schemaRef),
129
- };
130
117
  };
131
118
  exports.createRegisteredSchema = createRegisteredSchema;
132
119
  const createSchemaOrRef = (zodSchema, components) => {
133
- const schemaRef = zodSchema._def.openapi?.ref;
134
- if (schemaRef) {
135
- return (0, exports.createRegisteredSchema)(
136
- zodSchema,
137
- schemaRef,
138
- components,
139
- );
140
- }
141
- return (0, metadata_1.createSchemaWithMetadata)(zodSchema, components);
120
+ const schemaRef = zodSchema._def.openapi?.ref;
121
+ if (schemaRef) {
122
+ return (0, exports.createRegisteredSchema)(zodSchema, schemaRef, components);
123
+ }
124
+ return (0, metadata_1.createSchemaWithMetadata)(zodSchema, components);
142
125
  };
143
126
  exports.createSchemaOrRef = createSchemaOrRef;
144
- //# sourceMappingURL=index.js.map
127
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/create/schema/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/create/schema/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sortStringsAndNumbers = exports.getValidEnumValues = exports.createNativeEnumSchema = void 0;
4
- const createNativeEnumSchema = (zodEnum) => {
4
+ const openapi_1 = require("../../openapi");
5
+ const createNativeEnumSchema = (zodEnum, components) => {
5
6
  const enumValues = (0, exports.getValidEnumValues)(zodEnum._def.values);
6
7
  const { numbers, strings } = (0, exports.sortStringsAndNumbers)(enumValues);
7
8
  if (strings.length && numbers.length) {
9
+ if ((0, openapi_1.satisfiesVersion)(components.openapi, '3.1.0'))
10
+ return {
11
+ type: ['string', 'number'],
12
+ enum: [...strings, ...numbers],
13
+ };
8
14
  return {
9
- type: ['string', 'number'],
10
- enum: [...strings, ...numbers],
15
+ oneOf: [
16
+ { type: 'string', enum: strings },
17
+ { type: 'number', enum: numbers },
18
+ ],
11
19
  };
12
20
  }
13
21
  if (strings.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"nativeEnum.js","sourceRoot":"","sources":["../../../src/create/schema/nativeEnum.ts"],"names":[],"mappings":";;;AAGO,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACmB,EAAE;IAC9C,MAAM,UAAU,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAA,6BAAqB,EAAC,UAAU,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;QACpC,OAAO;YACL,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC1B,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;SAC/B,CAAC;KACH;IAED,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;SACd,CAAC;KACH;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,sBAAsB,0BAwBjC;AAOK,MAAM,kBAAkB,GAAG,CAAC,UAAoB,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CACzD,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,MAA2B,EACR,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;CAC9E,CAAC,CAAC;AALU,QAAA,qBAAqB,yBAK/B"}
1
+ {"version":3,"file":"nativeEnum.js","sourceRoot":"","sources":["../../../src/create/schema/nativeEnum.ts"],"names":[],"mappings":";;;AAGA,2CAAiD;AAG1C,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACzB,UAA4B,EACgB,EAAE;IAC9C,MAAM,UAAU,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAA,6BAAqB,EAAC,UAAU,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;QACpC,IAAI,IAAA,0BAAgB,EAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;YAC/C,OAAO;gBACL,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC1B,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;aAC/B,CAAC;QACJ,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;aAClC;SACF,CAAC;KACH;IAED,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;SACd,CAAC;KACH;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,sBAAsB,0BAgCjC;AAOK,MAAM,kBAAkB,GAAG,CAAC,UAAoB,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CACzD,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,MAA2B,EACR,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;CAC9E,CAAC,CAAC;AALU,QAAA,qBAAqB,yBAK/B"}
@@ -1,36 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapNullType = exports.createNullableSchema = void 0;
3
+ exports.createNullableSchema = void 0;
4
+ const openapi_1 = require("../../openapi");
4
5
  const _1 = require(".");
5
6
  const createNullableSchema = (zodNullable, components) => {
6
7
  const schemaOrReference = (0, _1.createSchemaOrRef)(zodNullable.unwrap(), components);
7
- if ('$ref' in schemaOrReference) {
8
+ if ('$ref' in schemaOrReference || schemaOrReference.allOf) {
8
9
  return {
9
- oneOf: mapNullOf([schemaOrReference]),
10
+ oneOf: mapNullOf([schemaOrReference], components.openapi),
10
11
  };
11
12
  }
12
13
  if (schemaOrReference.oneOf) {
13
14
  const { oneOf, ...schema } = schemaOrReference;
14
15
  return {
15
- oneOf: mapNullOf(oneOf),
16
+ oneOf: mapNullOf(oneOf, components.openapi),
16
17
  ...schema,
17
18
  };
18
19
  }
19
- if (schemaOrReference.allOf) {
20
- return {
21
- oneOf: [schemaOrReference, { type: 'null' }],
22
- };
23
- }
24
20
  if (schemaOrReference.anyOf) {
25
21
  const { anyOf, ...schema } = schemaOrReference;
26
22
  return {
27
- anyOf: mapNullOf(anyOf),
23
+ anyOf: mapNullOf(anyOf, components.openapi),
28
24
  ...schema,
29
25
  };
30
26
  }
31
27
  const { type, ...schema } = schemaOrReference;
28
+ if ((0, openapi_1.satisfiesVersion)(components.openapi, '3.1.0')) {
29
+ return {
30
+ type: mapNullType(type),
31
+ ...schema,
32
+ };
33
+ }
32
34
  return {
33
- type: (0, exports.mapNullType)(type),
35
+ type,
36
+ nullable: true,
34
37
  ...schema,
35
38
  };
36
39
  };
@@ -44,9 +47,10 @@ const mapNullType = (type) => {
44
47
  }
45
48
  return [type, 'null'];
46
49
  };
47
- exports.mapNullType = mapNullType;
48
- const mapNullOf = (ofSchema) => [
49
- ...ofSchema,
50
- { type: 'null' },
51
- ];
50
+ const mapNullOf = (ofSchema, openapi) => {
51
+ if ((0, openapi_1.satisfiesVersion)(openapi, '3.1.0')) {
52
+ return [...ofSchema, { type: 'null' }];
53
+ }
54
+ return [...ofSchema, { nullable: true }];
55
+ };
52
56
  //# sourceMappingURL=nullable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../src/create/schema/nullable.ts"],"names":[],"mappings":";;;AAKA,wBAAsC;AAE/B,MAAM,oBAAoB,GAAG,CAClC,WAA6B,EAC7B,UAA4B,EACR,EAAE;IACtB,MAAM,iBAAiB,GAAG,IAAA,oBAAiB,EACzC,WAAW,CAAC,MAAM,EAAgB,EAClC,UAAU,CACX,CAAC;IAEF,IAAI,MAAM,IAAI,iBAAiB,EAAE;QAC/B,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;SACtC,CAAC;KACH;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;YACvB,GAAG,MAAM;SACV,CAAC;KACH;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC3B,OAAO;YACL,KAAK,EAAE,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC7C,CAAC;KACH;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;YACvB,GAAG,MAAM;SACV,CAAC;KACH;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;QACvB,GAAG,MAAM;KACV,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,oBAAoB,wBA2C/B;AAEK,MAAM,WAAW,GAAG,CACzB,IAAgC,EACJ,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,MAAM,CAAC;KACf;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;KAC1B;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC;AAZW,QAAA,WAAW,eAYtB;AAEF,MAAM,SAAS,GAAG,CAChB,QAAwD,EACR,EAAE,CAAC;IACnD,GAAG,QAAQ;IACX,EAAE,IAAI,EAAE,MAAM,EAAE;CACjB,CAAC"}
1
+ {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../src/create/schema/nullable.ts"],"names":[],"mappings":";;;AAGA,2CAAiD;AAIjD,wBAAsC;AAE/B,MAAM,oBAAoB,GAAG,CAClC,WAA6B,EAC7B,UAA4B,EACR,EAAE;IACtB,MAAM,iBAAiB,GAAG,IAAA,oBAAiB,EACzC,WAAW,CAAC,MAAM,EAAgB,EAClC,UAAU,CACX,CAAC;IAEF,IAAI,MAAM,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC;SAC1D,CAAC;KACH;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;YAC3C,GAAG,MAAM;SACV,CAAC;KACH;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;YAC3C,GAAG,MAAM;SACV,CAAC;KACH;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC;IAE9C,IAAI,IAAA,0BAAgB,EAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QACjD,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;YACvB,GAAG,MAAM;SACV,CAAC;KACH;IAED,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,GAAG,MAAM;KACV,CAAC;AACJ,CAAC,CAAC;AA7CW,QAAA,oBAAoB,wBA6C/B;AAEF,MAAM,WAAW,GAAG,CAClB,IAAgC,EACJ,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,MAAM,CAAC;KACf;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;KAC1B;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,QAAwD,EACxD,OAA0B,EACsB,EAAE;IAClD,IAAI,IAAA,0BAAgB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QACtC,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KACxC;IACD,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC"}
@@ -1,22 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createNumberSchema = void 0;
4
- const createNumberSchema = (zodNumber) => {
4
+ const openapi_1 = require("../../openapi");
5
+ const createNumberSchema = (zodNumber, components) => {
5
6
  const zodNumberChecks = getZodNumberChecks(zodNumber);
6
7
  return {
7
8
  type: mapNumberType(zodNumberChecks),
8
- ...mapRanges(zodNumberChecks),
9
+ ...mapRanges(zodNumberChecks, components.openapi), // union types are too pesky to drill through
9
10
  };
10
11
  };
11
12
  exports.createNumberSchema = createNumberSchema;
12
- const mapRanges = (zodNumberChecks) => {
13
+ const mapRanges = (zodNumberChecks, openapi) => {
13
14
  const minimum = zodNumberChecks.min?.value;
14
15
  const maximum = zodNumberChecks.max?.value;
16
+ const exclusiveMinimum = zodNumberChecks.min?.inclusive;
17
+ const exclusiveMaximum = zodNumberChecks.max?.inclusive;
15
18
  return {
16
19
  ...(minimum !== undefined && { minimum }),
17
20
  ...(maximum !== undefined && { maximum }),
18
- ...(zodNumberChecks.min?.inclusive && { exclusiveMinimum: minimum }),
19
- ...(zodNumberChecks.max?.inclusive && { exclusiveMaximum: maximum }),
21
+ ...(exclusiveMinimum && {
22
+ exclusiveMinimum: (0, openapi_1.satisfiesVersion)(openapi, '3.1.0') ? minimum : true,
23
+ }),
24
+ ...(exclusiveMaximum && {
25
+ exclusiveMaximum: (0, openapi_1.satisfiesVersion)(openapi, '3.1.0') ? maximum : true,
26
+ }),
20
27
  };
21
28
  };
22
29
  const getZodNumberChecks = (zodNumber) => zodNumber._def.checks.reduce((acc, check) => {
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/create/schema/number.ts"],"names":[],"mappings":";;;AAGO,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACA,EAAE;IACtB,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC;QACpC,GAAG,SAAS,CAAC,eAAe,CAAC;KAC9B,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEF,MAAM,SAAS,GAAG,CAChB,eAAkC,EAIlC,EAAE;IACF,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3C,OAAO;QACL,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QACpE,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAqB,EAAE,CACrE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IAC7D,mEAAmE;IACnE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAY,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAE,CAAC,CAAC;AAET,MAAM,aAAa,GAAG,CACpB,eAAkC,EACN,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/create/schema/number.ts"],"names":[],"mappings":";;;AAGA,2CAAiD;AAI1C,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,UAA4B,EACR,EAAE;IACtB,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC;QACpC,GAAI,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAwB,EAAE,6CAA6C;KACzH,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,kBAAkB,sBAU7B;AAEF,MAAM,SAAS,GAAG,CAChB,eAAkC,EAClC,OAA0B,EAI1B,EAAE;IACF,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;IAE3C,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC;IACxD,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC;IAExD,OAAO;QACL,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,gBAAgB,IAAI;YACtB,gBAAgB,EAAE,IAAA,0BAAgB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtE,CAAC;QACF,GAAG,CAAC,gBAAgB,IAAI;YACtB,gBAAgB,EAAE,IAAA,0BAAgB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtE,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAqB,EAAE,CACrE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IAC7D,mEAAmE;IACnE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAY,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAE,CAAC,CAAC;AAET,MAAM,aAAa,GAAG,CACpB,eAAkC,EACN,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC"}