zod-openapi 2.10.0-beta.1 → 2.10.0

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/README.md CHANGED
@@ -53,6 +53,7 @@ Use the `.openapi()` method to add metadata to a specific Zod type. The `.openap
53
53
  | `ref` | Use this to [auto register a schema](#creating-components) |
54
54
  | `refType` | Use this to set the creation type for a component which is not referenced in the document. |
55
55
  | `type` | Use this to override the generated type. If this is provided no metadata will be generated. |
56
+ | `unionOneOf` | Set to `true` to force a ZodUnion to output `oneOf` instead of `allOf` |
56
57
 
57
58
  ### `createDocument`
58
59
 
@@ -543,6 +544,7 @@ For example in `z.string().nullable()` will be rendered differently
543
544
  - `items` mapping for `.rest()`
544
545
  - `prefixItems` mapping for OpenAPI 3.1.0+
545
546
  - ZodUnion
547
+ - By default it outputs an `allOf` schema. Use `unionOneOf` to change this to output `oneOf` instead.
546
548
  - ZodUnknown
547
549
 
548
550
  If this library cannot determine a type for a Zod Schema, it will throw an error. To avoid this, declare a manual `type` in the `.openapi()` section of that schema.
@@ -565,118 +567,9 @@ See the library in use in the [examples](./examples/) folder.
565
567
 
566
568
  - [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.
567
569
 
568
- ## Credits
570
+ ## Comparisons
569
571
 
570
- ### [@asteasolutions/zod-to-openapi](https://github.com/asteasolutions/zod-to-openapi)
571
-
572
- zod-openapi was created while trying to add a feature to support auto registering schemas. This proved to be extra challenging given the overall structure of the library so I decided re-write the whole thing. I was a big contributor to this library and love everything it's done, however I could not go past a few issues.
573
-
574
- 1. The underlying structure of the library consists of tightly coupled classes which require you to create an awkward Registry class to create references. This would mean you would need to ship a registry class instance along with your types which makes sharing types difficult.
575
-
576
- 2. No auto registering schema. Most users do not want to think about this so having to import and call `.register()` is a nuisance.
577
- 3. When you register a schema using the registry you need to use the outputted type from the `.register()` call. You do not need to do such a thing with this library.
578
-
579
- 4. No transform support or safety. You can use a `type` to override the transform type but what happens when that transform logic changes?
580
-
581
- 5. No input/output validation with components. What happens when you register a component with a transform which technically comprises of two types in a request and a response?
582
-
583
- Did I really rewrite an entire library just for this? Absolutely. I believe that creating documentation and types should be as simple and as frictionless as possible.
584
-
585
- #### Migration
586
-
587
- 1. Delete the OpenAPIRegistry and OpenAPIGenerator classes
588
- 2. Replace any `.register()` call made and replace them with `ref` in `.openapi()` or alternatively, add them directly to the components section of the schema.
589
-
590
- ```ts
591
- const registry = new OpenAPIRegistry();
592
-
593
- const foo = registry.register(
594
- 'foo',
595
- z.string().openapi({ description: 'foo' }),
596
- );
597
- const bar = z.object({ foo });
598
-
599
- // Replace with:
600
- const foo = z.string().openapi({ ref: 'foo', description: 'foo' });
601
- const bar = z.object({ foo });
602
-
603
- // or
604
- const foo = z.string().openapi({ description: 'foo' });
605
- const bar = z.object({ foo });
606
-
607
- const document = createDocument({
608
- components: {
609
- schemas: {
610
- foo,
611
- },
612
- },
613
- });
614
- ```
615
-
616
- 3. Replace `registry.registerComponent()` with a regular OpenAPI component in the document.
617
-
618
- ```ts
619
- const registry = new OpenAPIRegistry();
620
-
621
- registry.registerComponent('securitySchemes', 'auth', {
622
- type: 'http',
623
- scheme: 'bearer',
624
- bearerFormat: 'JWT',
625
- description: 'An auth token issued by oauth',
626
- });
627
- // Replace with regular component declaration
628
-
629
- const document = createDocument({
630
- components: {
631
- // declare directly in components
632
- securitySchemes: {
633
- auth: {
634
- type: 'http',
635
- scheme: 'bearer',
636
- bearerFormat: 'JWT',
637
- description: 'An auth token issued by oauth',
638
- },
639
- },
640
- },
641
- });
642
- ```
643
-
644
- 4. Replace `registry.registerPath()` with a regular OpenAPI paths in the document.
645
-
646
- ```ts
647
- const registry = new OpenAPIRegistry();
648
-
649
- registry.registerPath({
650
- method: 'get',
651
- path: '/foo',
652
- request: {
653
- query: z.object({ a: z.string() }),
654
- params: z.object({ b: z.string() }),
655
- body: z.object({ c: z.string() }),
656
- headers: z.object({ d: z.string() })
657
- },
658
- responses: {},
659
- });
660
- // Replace with regular path declaration
661
-
662
- const getFoo: ZodOpenApiPathItemObject = {
663
- get: {
664
- requestParams: {
665
- query: z.object({ a: z.string() }),
666
- path: z.object({ b: z.string() }), // params -> path
667
- header: z.object({ c: z.string() }) // headers -> header
668
- }, // renamed from request -> requestParams
669
- requestBody: z.object({c: z.string() }) // request.body -> requestBody
670
- responses: {},
671
- },
672
- };
673
-
674
- const document = createDocument({
675
- paths: {
676
- '/foo': getFoo,
677
- },
678
- });
679
- ```
572
+ ### [@asteasolutions/zod-to-openapi](./docs/comparisons.md)
680
573
 
681
574
  ## Development
682
575
 
@@ -753,6 +753,11 @@ var createUnionSchema = (zodUnion, state) => {
753
753
  const schemas = zodUnion.options.map(
754
754
  (option, index) => createSchemaObject(option, state, [`union option ${index}`])
755
755
  );
756
+ if (zodUnion._def.openapi?.unionOneOf) {
757
+ return {
758
+ oneOf: schemas
759
+ };
760
+ }
756
761
  return {
757
762
  anyOf: schemas
758
763
  };
@@ -873,7 +878,15 @@ var createNewSchema = (zodSchema, newState, subpath) => {
873
878
  );
874
879
  }
875
880
  newState.visited.add(zodSchema);
876
- const { effectType, param, header, ref, refType, ...additionalMetadata } = zodSchema._def.openapi ?? {};
881
+ const {
882
+ effectType,
883
+ param,
884
+ header,
885
+ ref,
886
+ refType,
887
+ unionOneOf,
888
+ ...additionalMetadata
889
+ } = zodSchema._def.openapi ?? {};
877
890
  const schema = createSchemaSwitch(zodSchema, newState);
878
891
  const description = zodSchema.description;
879
892
  const schemaWithMetadata = enhanceWithMetadata(schema, {
@@ -1674,4 +1687,3 @@ __export(api_exports, {
1674
1687
  oas30,
1675
1688
  oas31
1676
1689
  });
1677
- //# sourceMappingURL=index.js.map
package/lib-esm/index.js CHANGED
@@ -729,6 +729,11 @@ var createUnionSchema = (zodUnion, state) => {
729
729
  const schemas = zodUnion.options.map(
730
730
  (option, index) => createSchemaObject(option, state, [`union option ${index}`])
731
731
  );
732
+ if (zodUnion._def.openapi?.unionOneOf) {
733
+ return {
734
+ oneOf: schemas
735
+ };
736
+ }
732
737
  return {
733
738
  anyOf: schemas
734
739
  };
@@ -849,7 +854,15 @@ var createNewSchema = (zodSchema, newState, subpath) => {
849
854
  );
850
855
  }
851
856
  newState.visited.add(zodSchema);
852
- const { effectType, param, header, ref, refType, ...additionalMetadata } = zodSchema._def.openapi ?? {};
857
+ const {
858
+ effectType,
859
+ param,
860
+ header,
861
+ ref,
862
+ refType,
863
+ unionOneOf,
864
+ ...additionalMetadata
865
+ } = zodSchema._def.openapi ?? {};
853
866
  const schema = createSchemaSwitch(zodSchema, newState);
854
867
  const description = zodSchema.description;
855
868
  const schemaWithMetadata = enhanceWithMetadata(schema, {
@@ -1649,4 +1662,3 @@ export {
1649
1662
  oas30_exports as oas30,
1650
1663
  oas31_exports as oas31
1651
1664
  };
1652
- //# sourceMappingURL=index.js.map
@@ -6,6 +6,10 @@ interface ZodOpenApiMetadata<T extends ZodTypeAny, TInferred = z.input<T> | z.ou
6
6
  example?: TInferred;
7
7
  examples?: [TInferred, ...TInferred[]];
8
8
  default?: T extends ZodDate ? string : TInferred;
9
+ /**
10
+ * Use this field to set the output of a ZodUnion to be `oneOf` instead of `allOf`
11
+ */
12
+ unionOneOf?: boolean;
9
13
  /**
10
14
  * Use this field to output this Zod Schema in the components schemas section. Any usage of this Zod Schema will then be transformed into a $ref.
11
15
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-openapi",
3
- "version": "2.10.0-beta.1",
3
+ "version": "2.10.0",
4
4
  "description": "Convert Zod Schemas to OpenAPI v3.x documentation",
5
5
  "keywords": [
6
6
  "typescript",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {},
45
45
  "devDependencies": {
46
- "@redocly/cli": "1.2.0",
46
+ "@redocly/cli": "1.4.0",
47
47
  "@types/node": "^20.3.0",
48
48
  "eslint-plugin-zod-openapi": "^0.1.0",
49
49
  "openapi3-ts": "4.1.2",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/zodType.ts", "../src/create/schema/metadata.ts", "../src/create/schema/parsers/array.ts", "../src/create/schema/parsers/boolean.ts", "../src/create/schema/parsers/brand.ts", "../src/create/schema/parsers/catch.ts", "../src/create/schema/parsers/date.ts", "../src/create/schema/parsers/default.ts", "../src/create/schema/parsers/discriminatedUnion.ts", "../src/create/schema/parsers/enum.ts", "../src/create/schema/parsers/intersection.ts", "../src/create/schema/parsers/lazy.ts", "../src/create/schema/parsers/literal.ts", "../src/create/schema/parsers/manual.ts", "../src/openapi.ts", "../src/create/schema/parsers/nativeEnum.ts", "../src/create/schema/parsers/null.ts", "../src/create/schema/parsers/nullable.ts", "../src/create/schema/parsers/number.ts", "../src/create/schema/parsers/optional.ts", "../src/create/schema/parsers/object.ts", "../src/create/schema/parsers/pipeline.ts", "../src/create/schema/parsers/preprocess.ts", "../src/create/schema/parsers/readonly.ts", "../src/create/schema/parsers/record.ts", "../src/create/schema/parsers/refine.ts", "../src/create/schema/parsers/set.ts", "../src/create/schema/parsers/string.ts", "../src/create/schema/parsers/transform.ts", "../src/create/schema/parsers/tuple.ts", "../src/create/schema/parsers/union.ts", "../src/create/schema/parsers/unknown.ts", "../src/create/schema/parsers/index.ts", "../src/create/schema/index.ts", "../src/create/parameters.ts", "../src/create/content.ts", "../src/create/specificationExtension.ts", "../src/create/responses.ts", "../src/create/paths.ts", "../src/create/components.ts", "../src/create/document.ts", "../src/extendZod.ts", "../src/openapi3-ts/dist/oas30.ts", "../src/openapi3-ts/dist/oas31.ts", "../src/api.ts"],
4
- "sourcesContent": ["export * from './create/document';\nexport * from './extendZod';\nexport * from './openapi3-ts/dist';\nexport * as api from './api';\n", "// Inspired by https://github.com/asteasolutions/zod-to-openapi/blob/master/src/lib/zod-is-type.ts\n\nimport type {\n ArrayCardinality,\n EnumLike,\n UnknownKeysParam,\n ZodAny,\n ZodArray,\n ZodBigInt,\n ZodBoolean,\n ZodBranded,\n ZodCatch,\n ZodDate,\n ZodDefault,\n ZodDiscriminatedUnion,\n ZodDiscriminatedUnionOption,\n ZodEffects,\n ZodEnum,\n ZodFirstPartyTypeKind,\n ZodFunction,\n ZodIntersection,\n ZodLazy,\n ZodLiteral,\n ZodMap,\n ZodNaN,\n ZodNativeEnum,\n ZodNever,\n ZodNull,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodRawShape,\n ZodReadonly,\n ZodRecord,\n ZodSet,\n ZodString,\n ZodSymbol,\n ZodTuple,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodUndefined,\n ZodUnion,\n ZodUnknown,\n ZodVoid,\n objectInputType,\n objectOutputType,\n} from 'zod';\n\ntype ZodTypeMap<\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n V,\n W extends ZodRawShape,\n B extends string | number | symbol,\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n Enum extends [string, ...string[]],\n Returns extends ZodTypeAny,\n Args extends ZodTuple,\n ELike extends EnumLike,\n Union extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<W, Catchall, UnknownKeys>,\n Input = objectInputType<W, Catchall, UnknownKeys>,\n Cardinality extends ArrayCardinality = 'many',\n> = {\n ZodAny: ZodAny;\n ZodArray: ZodArray<T, Cardinality>;\n ZodBigInt: ZodBigInt;\n ZodBoolean: ZodBoolean;\n ZodBranded: ZodBranded<T, B>;\n ZodCatch: ZodCatch<T>;\n ZodDate: ZodDate;\n ZodDefault: ZodDefault<T>;\n ZodDiscriminatedUnion: ZodDiscriminatedUnion<Discriminator, Options>;\n ZodEffects: ZodEffects<T>;\n ZodEnum: ZodEnum<Enum>;\n ZodFunction: ZodFunction<Args, Returns>;\n ZodIntersection: ZodIntersection<T, U>;\n ZodLazy: ZodLazy<T>;\n ZodLiteral: ZodLiteral<V>;\n ZodMap: ZodMap;\n ZodNaN: ZodNaN;\n ZodNativeEnum: ZodNativeEnum<ELike>;\n ZodNever: ZodNever;\n ZodNull: ZodNull;\n ZodNullable: ZodNullable<T>;\n ZodNumber: ZodNumber;\n ZodObject: ZodObject<W, UnknownKeys, Catchall, Output, Input>;\n ZodOptional: ZodOptional<T>;\n ZodPipeline: ZodPipeline<T, U>;\n ZodPromise: ZodPromise<T>;\n ZodReadonly: ZodReadonly<T>;\n ZodRecord: ZodRecord;\n ZodSet: ZodSet;\n ZodString: ZodString;\n ZodSymbol: ZodSymbol;\n ZodTuple: ZodTuple;\n ZodUndefined: ZodUndefined;\n ZodUnion: ZodUnion<Union>;\n ZodUnknown: ZodUnknown;\n ZodVoid: ZodVoid;\n};\n\nexport const isZodType = <\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n V,\n W extends ZodRawShape,\n B extends string | number | symbol,\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n Enum extends [string, ...string[]],\n Returns extends ZodTypeAny,\n Args extends ZodTuple,\n ELike extends EnumLike,\n Union extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n K extends keyof ZodTypeMap<\n T,\n U,\n V,\n W,\n B,\n Discriminator,\n Options,\n Enum,\n Returns,\n Args,\n ELike,\n Union,\n UnknownKeys,\n Catchall,\n Output,\n Input,\n Cardinality\n >,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<W, Catchall, UnknownKeys>,\n Input = objectInputType<W, Catchall, UnknownKeys>,\n Cardinality extends ArrayCardinality = 'many',\n>(\n zodType: unknown,\n typeName: K,\n): zodType is ZodTypeMap<\n T,\n U,\n V,\n W,\n B,\n Discriminator,\n Options,\n Enum,\n Returns,\n Args,\n ELike,\n Union,\n UnknownKeys,\n Catchall,\n Output,\n Input,\n Cardinality\n>[K] =>\n (\n (zodType as ZodType)?._def as ZodTypeDef & {\n typeName: ZodFirstPartyTypeKind; // FIXME: https://github.com/colinhacks/zod/pull/2459\n }\n )?.typeName === typeName;\n\nexport const isAnyZodType = (zodType: unknown): zodType is ZodType =>\n Boolean(\n (\n (zodType as ZodType)?._def as ZodTypeDef & {\n typeName: ZodFirstPartyTypeKind;\n }\n )?.typeName,\n );\n", "import type { oas31 } from '../../openapi3-ts/dist';\n\nexport const enhanceWithMetadata = (\n schemaObject: oas31.SchemaObject | oas31.ReferenceObject,\n metadata: oas31.SchemaObject | oas31.ReferenceObject,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if ('$ref' in schemaObject) {\n if (Object.values(metadata).every((val) => val === undefined)) {\n return schemaObject;\n }\n\n return {\n allOf: [schemaObject, metadata],\n };\n }\n\n return {\n ...schemaObject,\n ...metadata,\n };\n};\n", "import type { ArrayCardinality, ZodArray, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createArraySchema = <\n T extends ZodTypeAny,\n Cardinality extends ArrayCardinality = 'many',\n>(\n zodArray: ZodArray<T, Cardinality>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const zodType = zodArray._def.type;\n const minItems =\n zodArray._def.exactLength?.value ?? zodArray._def.minLength?.value;\n const maxItems =\n zodArray._def.exactLength?.value ?? zodArray._def.maxLength?.value;\n return {\n type: 'array',\n items: createSchemaObject(zodType, state, ['array items']),\n ...(minItems !== undefined && { minItems }),\n ...(maxItems !== undefined && { maxItems }),\n };\n};\n", "import type { ZodBoolean } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createBooleanSchema = (\n _zodBoolean: ZodBoolean,\n): oas31.SchemaObject => ({\n type: 'boolean',\n});\n", "import type { ZodBranded, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\nexport const createBrandedSchema = <\n T extends ZodTypeAny,\n B extends string | number | symbol,\n>(\n zodBranded: ZodBranded<T, B>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodBranded._def.type, state, ['brand']);\n", "import type { ZodCatch, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createCatchSchema = <T extends ZodTypeAny>(\n zodCatch: ZodCatch<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodCatch._def.innerType, state, ['catch']);\n", "import type { ZodDate } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createDateSchema = (_zodDate: ZodDate): oas31.SchemaObject => ({\n type: 'string',\n});\n", "import type { ZodDefault, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\nimport { enhanceWithMetadata } from '../metadata';\n\nexport const createDefaultSchema = <T extends ZodTypeAny>(\n zodDefault: ZodDefault<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n const schemaObject = createSchemaObject(zodDefault._def.innerType, state, [\n 'default',\n ]);\n\n return enhanceWithMetadata(schemaObject, {\n default: zodDefault._def.defaultValue(),\n });\n};\n", "import type {\n AnyZodObject,\n ZodDiscriminatedUnion,\n ZodDiscriminatedUnionOption,\n ZodLiteralDef,\n ZodRawShape,\n} from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createDiscriminatedUnionSchema = <\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n>(\n zodDiscriminatedUnion: ZodDiscriminatedUnion<Discriminator, Options>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const options = zodDiscriminatedUnion.options;\n const schemas = options.map((option, index) =>\n createSchemaObject(option, state, [`discriminated union option ${index}`]),\n );\n const discriminator = mapDiscriminator(\n schemas,\n options,\n zodDiscriminatedUnion.discriminator,\n state,\n );\n return {\n oneOf: schemas,\n ...(discriminator && { discriminator }),\n };\n};\n\nexport const mapDiscriminator = (\n schemas: Array<oas31.SchemaObject | oas31.ReferenceObject>,\n zodObjects: AnyZodObject[],\n discriminator: unknown,\n state: SchemaState,\n): oas31.SchemaObject['discriminator'] => {\n if (typeof discriminator !== 'string') {\n return undefined;\n }\n\n const mapping: NonNullable<oas31.DiscriminatorObject['mapping']> = {};\n for (const [index, zodObject] of zodObjects.entries()) {\n const schema = schemas[index] as oas31.SchemaObject | oas31.ReferenceObject;\n const componentSchemaRef = '$ref' in schema ? schema?.$ref : undefined;\n if (!componentSchemaRef) {\n return undefined;\n }\n\n const value = (zodObject.shape as ZodRawShape)[discriminator];\n\n if (isZodType(value, 'ZodEnum')) {\n for (const enumValue of value._def.values as string[]) {\n mapping[enumValue] = componentSchemaRef;\n }\n continue;\n }\n\n const literalValue = (value?._def as ZodLiteralDef<unknown>).value;\n\n if (typeof literalValue !== 'string') {\n throw new Error(\n `Discriminator ${discriminator} could not be found in on index ${index} of a discriminated union at ${state.path.join(\n ' > ',\n )}`,\n );\n }\n\n mapping[literalValue] = componentSchemaRef;\n }\n\n return {\n propertyName: discriminator,\n mapping,\n };\n};\n", "import type { ZodEnum } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createEnumSchema = <T extends [string, ...string[]]>(\n zodEnum: ZodEnum<T>,\n): oas31.SchemaObject => ({\n type: 'string',\n enum: zodEnum._def.values,\n});\n", "import type { ZodIntersection, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createIntersectionSchema = <\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n>(\n zodIntersection: ZodIntersection<T, U>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => ({\n allOf: [\n createSchemaObject(zodIntersection._def.left, state, ['intersection left']),\n createSchemaObject(zodIntersection._def.right, state, [\n 'intersection right',\n ]),\n ],\n});\n", "import type { ZodLazy, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createLazySchema = <T extends ZodTypeAny>(\n zodLazy: ZodLazy<T>,\n state: SchemaState,\n): oas31.ReferenceObject | oas31.SchemaObject => {\n const innerSchema = zodLazy._def.getter();\n return createSchemaObject(innerSchema, state, ['lazy schema']);\n};\n", "import type { ZodLiteral } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createLiteralSchema = (\n zodLiteral: ZodLiteral<unknown>,\n): oas31.SchemaObject => ({\n type: typeof zodLiteral.value as oas31.SchemaObject['type'],\n enum: [zodLiteral._def.value],\n});\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport type { SchemaState } from '../../schema';\n\nexport const createManualTypeSchema = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n): oas31.SchemaObject => {\n if (!zodSchema._def.openapi?.type) {\n const zodType = zodSchema.constructor.name;\n if (isZodType(zodSchema, 'ZodEffects')) {\n const schemaName = `${zodType} - ${zodSchema._def.effect.type}`;\n throw new Error(\n `Unknown schema ${schemaName} at ${state.path.join(\n ' > ',\n )}. Please assign it a manual 'type', wrap it in a ZodPipeline or change the 'effectType'.`,\n );\n }\n throw new Error(\n `Unknown schema ${zodType}. Please assign it a manual 'type'.`,\n );\n }\n\n return {\n type: zodSchema._def.openapi.type,\n };\n};\n", "export const openApiVersions = [\n '3.0.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.1.0',\n] as const;\n\nexport type OpenApiVersion = (typeof openApiVersions)[number];\n\nexport const satisfiesVersion = (\n test: OpenApiVersion,\n against: OpenApiVersion,\n) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);\n", "import type { EnumLike, ZodNativeEnum } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport type { SchemaState } from '../../schema';\n\nexport const createNativeEnumSchema = <T extends EnumLike>(\n zodEnum: ZodNativeEnum<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n const enumValues = getValidEnumValues(zodEnum._def.values);\n const { numbers, strings } = sortStringsAndNumbers(enumValues);\n\n if (strings.length && numbers.length) {\n if (satisfiesVersion(state.components.openapi, '3.1.0'))\n return {\n type: ['string', 'number'],\n enum: [...strings, ...numbers],\n };\n return {\n oneOf: [\n { type: 'string', enum: strings },\n { type: 'number', enum: numbers },\n ],\n };\n }\n\n if (strings.length) {\n return {\n type: 'string',\n enum: strings,\n };\n }\n\n return {\n type: 'number',\n enum: numbers,\n };\n};\n\ninterface StringsAndNumbers {\n strings: string[];\n numbers: number[];\n}\n\nexport const getValidEnumValues = (enumValues: EnumLike) => {\n const keys = Object.keys(enumValues).filter(\n (key) => typeof enumValues[enumValues[key] as number] !== 'number',\n );\n return keys.map((key) => enumValues[key] as number);\n};\n\nexport const sortStringsAndNumbers = (\n values: Array<string | number>,\n): StringsAndNumbers => ({\n strings: values.filter((value): value is string => typeof value === 'string'),\n numbers: values.filter((value): value is number => typeof value === 'number'),\n});\n", "import type { ZodNull } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createNullSchema = (_zodNull: ZodNull): oas31.SchemaObject => ({\n type: 'null',\n});\n", "import type { ZodNullable, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport type { ZodOpenApiVersion } from '../../document';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createNullableSchema = <T extends ZodTypeAny>(\n zodNullable: ZodNullable<T>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schemaObject = createSchemaObject(zodNullable.unwrap(), state, [\n 'nullable',\n ]);\n\n if ('$ref' in schemaObject || schemaObject.allOf) {\n return {\n oneOf: mapNullOf([schemaObject], state.components.openapi),\n };\n }\n\n if (schemaObject.oneOf) {\n const { oneOf, ...schema } = schemaObject;\n return {\n oneOf: mapNullOf(oneOf, state.components.openapi),\n ...schema,\n };\n }\n\n if (schemaObject.anyOf) {\n const { anyOf, ...schema } = schemaObject;\n return {\n anyOf: mapNullOf(anyOf, state.components.openapi),\n ...schema,\n };\n }\n\n const { type, ...schema } = schemaObject;\n\n if (satisfiesVersion(state.components.openapi, '3.1.0')) {\n return {\n type: mapNullType(type),\n ...schema,\n };\n }\n\n return {\n type,\n nullable: true,\n ...schema,\n // https://github.com/OAI/OpenAPI-Specification/blob/main/proposals/2019-10-31-Clarify-Nullable.md#if-a-schema-specifies-nullable-true-and-enum-1-2-3-does-that-schema-allow-null-values-see-1900\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ...(schema.enum && { enum: [...schema.enum, null] }),\n } as oas31.SchemaObject;\n};\n\nconst mapNullType = (\n type: oas31.SchemaObject['type'],\n): oas31.SchemaObject['type'] => {\n if (!type) {\n return 'null';\n }\n\n if (Array.isArray(type)) {\n return [...type, 'null'];\n }\n\n return [type, 'null'];\n};\n\nconst mapNullOf = (\n ofSchema: Array<oas31.SchemaObject | oas31.ReferenceObject>,\n openapi: ZodOpenApiVersion,\n): Array<oas31.SchemaObject | oas31.ReferenceObject> => {\n if (satisfiesVersion(openapi, '3.1.0')) {\n return [...ofSchema, { type: 'null' }];\n }\n return [...ofSchema, { nullable: true } as oas31.SchemaObject];\n};\n", "import type { ZodNumber, ZodNumberCheck } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas30, oas31 } from '../../../openapi3-ts/dist';\nimport type { ZodOpenApiVersion } from '../../document';\nimport type { SchemaState } from '../../schema';\n\nexport const createNumberSchema = (\n zodNumber: ZodNumber,\n state: SchemaState,\n): oas31.SchemaObject => {\n const zodNumberChecks = getZodNumberChecks(zodNumber);\n\n const minimum = mapMinimum(zodNumberChecks, state.components.openapi);\n const maximum = mapMaximum(zodNumberChecks, state.components.openapi);\n\n return {\n type: mapNumberType(zodNumberChecks),\n ...(minimum && (minimum as oas31.SchemaObject)), // Union types are not easy to tame\n ...(maximum && (maximum as oas31.SchemaObject)),\n };\n};\n\nexport const mapMaximum = (\n zodNumberCheck: ZodNumberCheckMap,\n openapi: ZodOpenApiVersion,\n):\n | Pick<\n oas31.SchemaObject | oas30.SchemaObject,\n 'maximum' | 'exclusiveMaximum'\n >\n | undefined => {\n if (!zodNumberCheck.max) {\n return undefined;\n }\n\n const maximum = zodNumberCheck.max.value;\n if (zodNumberCheck.max.inclusive) {\n return { ...(maximum !== undefined && { maximum }) };\n }\n if (satisfiesVersion(openapi, '3.1.0')) {\n return { exclusiveMaximum: maximum };\n }\n return { maximum, exclusiveMaximum: true };\n};\nexport const mapMinimum = (\n zodNumberCheck: ZodNumberCheckMap,\n openapi: ZodOpenApiVersion,\n):\n | Pick<\n oas31.SchemaObject | oas30.SchemaObject,\n 'minimum' | 'exclusiveMinimum'\n >\n | undefined => {\n if (!zodNumberCheck.min) {\n return undefined;\n }\n\n const minimum = zodNumberCheck.min.value;\n if (zodNumberCheck.min.inclusive) {\n return { ...(minimum !== undefined && { minimum }) };\n }\n if (satisfiesVersion(openapi, '3.1.0')) {\n return { exclusiveMinimum: minimum };\n }\n return { minimum, exclusiveMinimum: true };\n};\n\ntype ZodNumberCheckMap = {\n [kind in ZodNumberCheck['kind']]?: Extract<ZodNumberCheck, { kind: kind }>;\n};\n\nconst getZodNumberChecks = (zodNumber: ZodNumber): ZodNumberCheckMap =>\n zodNumber._def.checks.reduce<ZodNumberCheckMap>((acc, check) => {\n // union type issues\n acc[check.kind] = check as never;\n return acc;\n }, {});\n\nconst mapNumberType = (\n zodNumberChecks: ZodNumberCheckMap,\n): oas31.SchemaObject['type'] => (zodNumberChecks.int ? 'integer' : 'number');\n", "import type { ZodOptional, ZodType, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createOptionalSchema = <T extends ZodTypeAny>(\n zodOptional: ZodOptional<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => // Optional doesn't change OpenAPI schema\n createSchemaObject(zodOptional.unwrap(), state, ['optional']);\n\nexport const isOptionalSchema = (\n zodSchema: ZodTypeAny,\n state: SchemaState,\n): boolean => {\n if (isZodType(zodSchema, 'ZodOptional')) {\n return true;\n }\n\n if (isZodType(zodSchema, 'ZodDefault')) {\n return state.type === 'input';\n }\n\n if (isZodType(zodSchema, 'ZodNullable') || isZodType(zodSchema, 'ZodCatch')) {\n return isOptionalSchema(zodSchema._def.innerType, state);\n }\n\n if (isZodType(zodSchema, 'ZodEffects')) {\n return isOptionalSchema(zodSchema._def.schema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodUnion') ||\n isZodType(zodSchema, 'ZodDiscriminatedUnion')\n ) {\n return (zodSchema._def.options as ZodTypeAny[]).some((schema) =>\n isOptionalSchema(schema, state),\n );\n }\n\n if (isZodType(zodSchema, 'ZodIntersection')) {\n return [zodSchema._def.left, zodSchema._def.right].some((schema) =>\n isOptionalSchema(schema, state),\n );\n }\n\n if (isZodType(zodSchema, 'ZodPipeline')) {\n if (\n state.effectType === 'input' ||\n (state.type === 'input' && state.effectType !== 'output')\n ) {\n return isOptionalSchema(zodSchema._def.in, state);\n }\n\n if (\n state.effectType === 'output' ||\n (state.type === 'output' && state.effectType !== 'input')\n ) {\n return isOptionalSchema(zodSchema._def.out, state);\n }\n }\n\n if (isZodType(zodSchema, 'ZodLazy')) {\n return isOptionalSchema(zodSchema._def.getter() as ZodType, state);\n }\n\n return zodSchema.isOptional();\n};\n", "import type {\n UnknownKeysParam,\n ZodObject,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n objectInputType,\n objectOutputType,\n} from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { createComponentSchemaRef } from '../../components';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nimport { isOptionalSchema } from './optional';\n\nexport const createObjectSchema = <\n T extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n>(\n zodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const extendedSchema = createExtendedSchema(\n zodObject,\n zodObject._def.extendMetadata?.extends,\n state,\n );\n\n if (extendedSchema) {\n return extendedSchema;\n }\n\n return createObjectSchemaFromShape(\n zodObject.shape,\n {\n unknownKeys: zodObject._def.unknownKeys,\n catchAll: zodObject._def.catchall as ZodType,\n },\n state,\n );\n};\n\nexport const createExtendedSchema = <\n T extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n>(\n zodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input>,\n baseZodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input> | undefined,\n state: SchemaState,\n): oas31.SchemaObject | undefined => {\n if (!baseZodObject) {\n return undefined;\n }\n\n const component = state.components.schemas.get(baseZodObject);\n if (component ?? baseZodObject._def.openapi?.ref) {\n createSchemaObject(baseZodObject, state, ['extended schema']);\n }\n\n const completeComponent = state.components.schemas.get(baseZodObject);\n if (!completeComponent) {\n return undefined;\n }\n\n const diffOpts = createDiffOpts(\n {\n unknownKeys: baseZodObject._def.unknownKeys,\n catchAll: baseZodObject._def.catchall as ZodType,\n },\n {\n unknownKeys: zodObject._def.unknownKeys,\n catchAll: zodObject._def.catchall as ZodType,\n },\n );\n if (!diffOpts) {\n return undefined;\n }\n\n const diffShape = createShapeDiff(\n baseZodObject._def.shape() as ZodRawShape,\n zodObject._def.shape() as ZodRawShape,\n );\n\n if (!diffShape) {\n return undefined;\n }\n\n return {\n allOf: [{ $ref: createComponentSchemaRef(completeComponent.ref) }],\n ...createObjectSchemaFromShape(diffShape, diffOpts, state),\n };\n};\n\nconst createDiffOpts = (\n baseOpts: AdditionalPropertyOptions,\n extendedOpts: AdditionalPropertyOptions,\n): AdditionalPropertyOptions | undefined => {\n if (\n baseOpts.unknownKeys === 'strict' ||\n !isZodType(baseOpts.catchAll, 'ZodNever')\n ) {\n return undefined;\n }\n\n return {\n catchAll: extendedOpts.catchAll,\n unknownKeys: extendedOpts.unknownKeys,\n };\n};\n\nconst createShapeDiff = (\n baseObj: ZodRawShape,\n extendedObj: ZodRawShape,\n): ZodRawShape | null => {\n const acc: ZodRawShape = {};\n\n for (const [key, val] of Object.entries(extendedObj)) {\n const baseValue = baseObj[key];\n if (val === baseValue) {\n continue;\n }\n\n if (baseValue === undefined) {\n acc[key] = extendedObj[key] as ZodTypeAny;\n continue;\n }\n\n return null;\n }\n\n return acc;\n};\n\ninterface AdditionalPropertyOptions {\n unknownKeys?: UnknownKeysParam;\n catchAll: ZodType;\n}\n\nexport const createObjectSchemaFromShape = (\n shape: ZodRawShape,\n { unknownKeys, catchAll }: AdditionalPropertyOptions,\n state: SchemaState,\n): oas31.SchemaObject => {\n const properties = mapProperties(shape, state);\n const required = mapRequired(shape, state);\n return {\n type: 'object',\n ...(properties && { properties }),\n ...(required && { required }),\n ...(unknownKeys === 'strict' && { additionalProperties: false }),\n ...(!isZodType(catchAll, 'ZodNever') && {\n additionalProperties: createSchemaObject(catchAll, state, [\n 'additional properties',\n ]),\n }),\n };\n};\n\nexport const mapRequired = (\n shape: ZodRawShape,\n state: SchemaState,\n): oas31.SchemaObject['required'] => {\n const required: string[] = Object.entries(shape)\n .filter(([_key, zodSchema]) => !isOptionalSchema(zodSchema, state))\n .map(([key]) => key);\n\n if (!required.length) {\n return undefined;\n }\n\n return required;\n};\n\nexport const mapProperties = (\n shape: ZodRawShape,\n state: SchemaState,\n): oas31.SchemaObject['properties'] =>\n Object.entries(shape).reduce<NonNullable<oas31.SchemaObject['properties']>>(\n (acc, [key, zodSchema]): NonNullable<oas31.SchemaObject['properties']> => {\n acc[key] = createSchemaObject(zodSchema, state, [`property: ${key}`]);\n return acc;\n },\n {},\n );\n", "import type { ZodPipeline, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createPipelineSchema = <\n A extends ZodTypeAny,\n B extends ZodTypeAny,\n>(\n zodPipeline: ZodPipeline<A, B>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodPipeline._def.openapi?.effectType === 'input') {\n return createSchemaObject(zodPipeline._def.in, state, ['pipeline input']);\n }\n\n if (zodPipeline._def.openapi?.effectType === 'output') {\n return createSchemaObject(zodPipeline._def.out, state, ['pipeline output']);\n }\n\n if (state.type === 'input') {\n state.effectType = 'input';\n return createSchemaObject(zodPipeline._def.in, state, ['pipeline input']);\n }\n\n state.effectType = 'output';\n return createSchemaObject(zodPipeline._def.out, state, ['pipeline output']);\n};\n", "import type { ZodEffects, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createPreprocessSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodPreprocess: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodPreprocess._def.schema, state, ['preprocess schema']);\n", "import type { ZodReadonly, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createReadonlySchema = <T extends ZodTypeAny>(\n zodReadonly: ZodReadonly<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => // Readonly doesn't change OpenAPI schema\n createSchemaObject(zodReadonly._def.innerType, state, ['readonly']);\n", "import type { KeySchema, ZodRecord, ZodString, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createRecordSchema = <\n Key extends KeySchema = ZodString,\n Value extends ZodTypeAny = ZodTypeAny,\n>(\n zodRecord: ZodRecord<Key, Value>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const additionalProperties = createSchemaObject(\n zodRecord.valueSchema as ZodTypeAny,\n state,\n ['record value'],\n );\n\n const keySchema = createSchemaObject(zodRecord.keySchema, state, [\n 'record key',\n ]);\n\n const maybeComponent =\n '$ref' in keySchema && state.components.schemas.get(zodRecord.keySchema);\n const maybeSchema =\n maybeComponent &&\n maybeComponent.type === 'complete' &&\n maybeComponent.schemaObject;\n\n const renderedKeySchema = maybeSchema || keySchema;\n\n if ('enum' in renderedKeySchema && renderedKeySchema.enum) {\n return {\n type: 'object',\n properties: (renderedKeySchema.enum as string[]).reduce<\n NonNullable<oas31.SchemaObject['properties']>\n >((acc, key) => {\n acc[key] = additionalProperties;\n return acc;\n }, {}),\n additionalProperties: false,\n };\n }\n\n if (\n satisfiesVersion(state.components.openapi, '3.1.0') &&\n 'type' in renderedKeySchema &&\n renderedKeySchema.type === 'string' &&\n Object.keys(renderedKeySchema).length > 1\n ) {\n return {\n type: 'object',\n // @ts-expect-error FIXME: https://github.com/metadevpro/openapi3-ts/pull/120\n propertyNames: keySchema,\n additionalProperties,\n };\n }\n\n return {\n type: 'object',\n additionalProperties,\n };\n};\n", "import type { ZodEffects, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createRefineSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodRefine: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodRefine._def.schema, state, ['refine schema']);\n", "import type { ZodSet, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createSetSchema = <Value extends ZodTypeAny = ZodTypeAny>(\n zodSet: ZodSet<Value>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schema = zodSet._def.valueType;\n const minItems = zodSet._def.minSize?.value;\n const maxItems = zodSet._def.maxSize?.value;\n return {\n type: 'array',\n items: createSchemaObject(schema, state, ['set items']),\n uniqueItems: true,\n ...(minItems !== undefined && { minItems }),\n ...(maxItems !== undefined && { maxItems }),\n };\n};\n", "import type { ZodString, ZodStringCheck } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createStringSchema = (\n zodString: ZodString,\n): oas31.SchemaObject => {\n const zodStringChecks = getZodStringChecks(zodString);\n const format = mapStringFormat(zodStringChecks);\n const patterns = mapPatterns(zodStringChecks);\n const minLength =\n zodStringChecks.length?.[0]?.value ?? zodStringChecks.min?.[0]?.value;\n const maxLength =\n zodStringChecks.length?.[0]?.value ?? zodStringChecks.max?.[0]?.value;\n\n if (patterns.length <= 1) {\n return {\n type: 'string',\n ...(format && { format }),\n ...(patterns[0] && { pattern: patterns[0] }),\n ...(minLength !== undefined && { minLength }),\n ...(maxLength !== undefined && { maxLength }),\n };\n }\n\n return {\n allOf: [\n {\n type: 'string',\n ...(format && { format }),\n ...(patterns[0] && { pattern: patterns[0] }),\n ...(minLength !== undefined && { minLength }),\n ...(maxLength !== undefined && { maxLength }),\n },\n ...patterns.slice(1).map(\n (pattern): oas31.SchemaObject => ({\n type: 'string',\n pattern,\n }),\n ),\n ],\n };\n};\n\ntype ZodStringCheckMap = {\n [kind in ZodStringCheck['kind']]?: [\n Extract<ZodStringCheck, { kind: kind }>,\n ...Array<Extract<ZodStringCheck, { kind: kind }>>,\n ];\n};\n\nconst getZodStringChecks = (zodString: ZodString): ZodStringCheckMap =>\n zodString._def.checks.reduce<ZodStringCheckMap>(\n (acc, check: ZodStringCheck) => {\n const mapping = acc[check.kind];\n if (mapping) {\n mapping.push(check as never);\n return acc;\n }\n\n acc[check.kind] = [check as never];\n return acc;\n },\n {},\n );\n\nconst mapPatterns = (zodStringChecks: ZodStringCheckMap): string[] => {\n const startsWith = mapStartsWith(zodStringChecks);\n const endsWith = mapEndsWith(zodStringChecks);\n const regex = mapRegex(zodStringChecks);\n const includes = mapIncludes(zodStringChecks);\n\n const patterns: string[] = [\n ...(regex ?? []),\n ...(startsWith ? [startsWith] : []),\n ...(endsWith ? [endsWith] : []),\n ...(includes ?? []),\n ];\n\n return patterns;\n};\n\nconst mapStartsWith = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['pattern'] => {\n if (zodStringChecks.startsWith?.[0]?.value) {\n return `^${zodStringChecks.startsWith[0].value}`;\n }\n\n return undefined;\n};\n\nconst mapEndsWith = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['pattern'] => {\n if (zodStringChecks.endsWith?.[0]?.value) {\n return `${zodStringChecks.endsWith[0].value}$`;\n }\n\n return undefined;\n};\n\nconst mapRegex = (zodStringChecks: ZodStringCheckMap): string[] | undefined =>\n zodStringChecks.regex?.map((regexCheck) => regexCheck.regex.source);\n\nconst mapIncludes = (\n zodStringChecks: ZodStringCheckMap,\n): string[] | undefined =>\n zodStringChecks.includes?.map((includeCheck) => {\n if (includeCheck.position === 0) {\n return `^${includeCheck.value}`;\n }\n if (includeCheck.position) {\n return `^.{${includeCheck.position}}${includeCheck.value}`;\n }\n return includeCheck.value;\n });\n\nconst mapStringFormat = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['format'] => {\n if (zodStringChecks.uuid) {\n return 'uuid';\n }\n\n if (zodStringChecks.datetime) {\n return 'date-time';\n }\n\n if (zodStringChecks.email) {\n return 'email';\n }\n\n if (zodStringChecks.url) {\n return 'uri';\n }\n\n return undefined;\n};\n", "import type { ZodEffects, ZodType, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nimport { createManualTypeSchema } from './manual';\n\nexport const createTransformSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodTransform: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodTransform._def.openapi?.effectType === 'output') {\n return createManualTypeSchema(zodTransform, state);\n }\n\n if (zodTransform._def.openapi?.effectType === 'input') {\n return createSchemaObject(zodTransform._def.schema, state, [\n 'transform input',\n ]);\n }\n\n if (state.type === 'output') {\n return createManualTypeSchema(zodTransform, state);\n }\n\n state.effectType = 'input';\n return createSchemaObject(zodTransform._def.schema, state, [\n 'transform input',\n ]);\n};\n\nexport const throwTransformError = (zodType: ZodType, state: SchemaState) => {\n throw new Error(\n `${JSON.stringify(zodType)} at ${state.path.join(\n ' > ',\n )} contains a transformation but is used in both an input and an output. This is likely a mistake. Set an \\`effectType\\`, wrap it in a ZodPipeline or assign it a manual type to resolve`,\n );\n};\n", "import type { ZodTuple, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createTupleSchema = <\n T extends [] | [ZodTypeAny, ...ZodTypeAny[]] = [ZodTypeAny, ...ZodTypeAny[]],\n Rest extends ZodTypeAny | null = null,\n>(\n zodTuple: ZodTuple<T, Rest>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const items = zodTuple.items;\n const rest = zodTuple._def.rest;\n return {\n type: 'array',\n ...mapItemProperties(items, rest, state),\n } as oas31.SchemaObject;\n};\n\nconst mapPrefixItems = (\n items: ZodTypeAny[],\n state: SchemaState,\n): oas31.SchemaObject['prefixItems'] | undefined => {\n if (items.length) {\n return items.map((item, index) =>\n createSchemaObject(item, state, [`tuple item ${index}`]),\n );\n }\n return undefined;\n};\n\nconst mapItemProperties = (\n items: ZodTypeAny[],\n rest: ZodTypeAny | null,\n state: SchemaState,\n): Pick<\n oas31.SchemaObject,\n 'items' | 'minItems' | 'maxItems' | 'prefixItems'\n> => {\n const prefixItems = mapPrefixItems(items, state);\n\n if (satisfiesVersion(state.components.openapi, '3.1.0')) {\n if (!rest) {\n return {\n maxItems: items.length,\n minItems: items.length,\n ...(prefixItems && { prefixItems }),\n };\n }\n\n return {\n items: createSchemaObject(rest, state, ['tuple items']),\n ...(prefixItems && { prefixItems }),\n };\n }\n\n if (!rest) {\n return {\n maxItems: items.length,\n minItems: items.length,\n ...(prefixItems && { items: { oneOf: prefixItems } }),\n };\n }\n\n return {\n ...(prefixItems && {\n items: {\n oneOf: [\n ...prefixItems,\n createSchemaObject(rest, state, ['tuple items']),\n ],\n },\n }),\n };\n};\n", "import type { ZodTypeAny, ZodUnion } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createUnionSchema = <\n T extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n>(\n zodUnion: ZodUnion<T>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schemas = zodUnion.options.map((option, index) =>\n createSchemaObject(option, state, [`union option ${index}`]),\n );\n return {\n anyOf: schemas,\n };\n};\n", "import type { ZodAny, ZodUnknown } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createUnknownSchema = (\n _zodUnknown: ZodUnknown | ZodAny,\n): oas31.SchemaObject => ({});\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport type { SchemaState } from '../../schema';\n\nimport { createArraySchema } from './array';\nimport { createBooleanSchema } from './boolean';\nimport { createBrandedSchema } from './brand';\nimport { createCatchSchema } from './catch';\nimport { createDateSchema } from './date';\nimport { createDefaultSchema } from './default';\nimport { createDiscriminatedUnionSchema } from './discriminatedUnion';\nimport { createEnumSchema } from './enum';\nimport { createIntersectionSchema } from './intersection';\nimport { createLazySchema } from './lazy';\nimport { createLiteralSchema } from './literal';\nimport { createManualTypeSchema } from './manual';\nimport { createNativeEnumSchema } from './nativeEnum';\nimport { createNullSchema } from './null';\nimport { createNullableSchema } from './nullable';\nimport { createNumberSchema } from './number';\nimport { createObjectSchema } from './object';\nimport { createOptionalSchema } from './optional';\nimport { createPipelineSchema } from './pipeline';\nimport { createPreprocessSchema } from './preprocess';\nimport { createReadonlySchema } from './readonly';\nimport { createRecordSchema } from './record';\nimport { createRefineSchema } from './refine';\nimport { createSetSchema } from './set';\nimport { createStringSchema } from './string';\nimport { createTransformSchema } from './transform';\nimport { createTupleSchema } from './tuple';\nimport { createUnionSchema } from './union';\nimport { createUnknownSchema } from './unknown';\n\nexport const createSchemaSwitch = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodSchema._def.openapi?.type) {\n return createManualTypeSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodString')) {\n return createStringSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNumber')) {\n return createNumberSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodBoolean')) {\n return createBooleanSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodEnum')) {\n return createEnumSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodLiteral')) {\n return createLiteralSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNativeEnum')) {\n return createNativeEnumSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodArray')) {\n return createArraySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodObject')) {\n return createObjectSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodUnion')) {\n return createUnionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDiscriminatedUnion')) {\n return createDiscriminatedUnionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodNull')) {\n return createNullSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNullable')) {\n return createNullableSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodOptional')) {\n return createOptionalSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodReadonly')) {\n return createReadonlySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDefault')) {\n return createDefaultSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodRecord')) {\n return createRecordSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodTuple')) {\n return createTupleSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDate')) {\n return createDateSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodPipeline')) {\n return createPipelineSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'transform'\n ) {\n return createTransformSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'preprocess'\n ) {\n return createPreprocessSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'refinement'\n ) {\n return createRefineSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodNativeEnum')) {\n return createNativeEnumSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodIntersection')) {\n return createIntersectionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodCatch')) {\n return createCatchSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodUnknown') || isZodType(zodSchema, 'ZodAny')) {\n return createUnknownSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodLazy')) {\n return createLazySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodBranded')) {\n return createBrandedSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodSet')) {\n return createSetSchema(zodSchema, state);\n }\n\n return createManualTypeSchema(zodSchema, state);\n};\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../openapi3-ts/dist';\nimport {\n type ComponentsObject,\n type CreationType,\n type SchemaComponent,\n createComponentSchemaRef,\n} from '../components';\n\nimport { enhanceWithMetadata } from './metadata';\nimport { createSchemaSwitch } from './parsers';\nimport { throwTransformError } from './parsers/transform';\n\nexport type LazyMap = Map<ZodType, true>;\n\nexport interface SchemaState {\n components: ComponentsObject;\n type: CreationType;\n effectType?: CreationType;\n path: string[];\n visited: Set<ZodType>;\n}\n\nexport const newSchemaState = (state: SchemaState): SchemaState => ({\n type: state.type,\n components: state.components,\n path: [...state.path],\n visited: new Set(state.visited),\n});\n\nexport const createNewSchema = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n newState: SchemaState,\n subpath: string[],\n): Schema => {\n newState.path.push(...subpath);\n if (newState.visited.has(zodSchema)) {\n throw new Error(\n `The schema at ${newState.path.join(\n ' > ',\n )} needs to be registered because it's circularly referenced`,\n );\n }\n newState.visited.add(zodSchema);\n const { effectType, param, header, ref, refType, ...additionalMetadata } =\n zodSchema._def.openapi ?? {};\n\n const schema = createSchemaSwitch(zodSchema, newState);\n const description = zodSchema.description;\n\n const schemaWithMetadata = enhanceWithMetadata(schema, {\n ...(description && { description }),\n ...additionalMetadata,\n });\n\n return {\n schema: schemaWithMetadata,\n newState,\n };\n};\n\nexport const createNewRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n ref: string,\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): Schema => {\n state.components.schemas.set(zodSchema, {\n type: 'in-progress',\n ref,\n });\n\n const newSchema = createNewSchema(\n zodSchema,\n newSchemaState({ ...state, visited: new Set() }),\n subpath,\n );\n\n state.components.schemas.set(zodSchema, {\n type: 'complete',\n ref,\n schemaObject: newSchema.schema,\n creationType: newSchema.newState?.effectType,\n });\n\n return {\n schema: { $ref: createComponentSchemaRef(ref) },\n newState: newSchema.newState,\n };\n};\n\nexport const createExistingRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n component: SchemaComponent | undefined,\n state: SchemaState,\n subpath: string[],\n): Schema | undefined => {\n const newState = newSchemaState(state);\n newState.path.push(...subpath);\n\n if (component && component.type === 'complete') {\n if (component.creationType && component.creationType !== state.type) {\n throwTransformError(zodSchema, newState);\n }\n\n return {\n schema: { $ref: createComponentSchemaRef(component.ref) },\n newState: {\n ...newState,\n effectType: component.creationType,\n },\n };\n }\n\n if (component && component.type === 'in-progress') {\n return {\n schema: { $ref: createComponentSchemaRef(component.ref) },\n newState,\n };\n }\n\n return;\n};\n\ntype Schema = {\n schema: oas31.ReferenceObject | oas31.SchemaObject;\n newState: SchemaState;\n};\n\nexport const createSchemaOrRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): Schema => {\n const component = state.components.schemas.get(zodSchema);\n const existingRef = createExistingRef(zodSchema, component, state, subpath);\n\n if (existingRef) {\n return existingRef;\n }\n\n const ref = zodSchema._def.openapi?.ref ?? component?.ref;\n if (ref) {\n return createNewRef(ref, zodSchema, state, subpath);\n }\n\n return createNewSchema(zodSchema, newSchemaState(state), subpath);\n};\n\nexport const createSchemaObject = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): oas31.ReferenceObject | oas31.SchemaObject => {\n const { schema, newState } = createSchemaOrRef(zodSchema, state, subpath);\n if (newState?.effectType) {\n if (\n state.type !== newState?.effectType ||\n (state.effectType && newState.effectType !== state.effectType)\n ) {\n throwTransformError(zodSchema, newState);\n }\n state.effectType = newState.effectType;\n }\n return schema;\n};\n", "import type { AnyZodObject, ZodRawShape, ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type { ComponentsObject } from './components';\nimport type { ZodOpenApiParameters } from './document';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\nimport { isOptionalSchema } from './schema/parsers/optional';\n\nexport const createComponentParamRef = (ref: string) =>\n `#/components/parameters/${ref}`;\n\nexport const createBaseParameter = (\n schema: ZodType,\n components: ComponentsObject,\n subpath: string[],\n): oas31.BaseParameterObject => {\n const { ref, ...rest } = schema._def.openapi?.param ?? {};\n const state: SchemaState = newSchemaState({\n components,\n type: 'input',\n path: [],\n visited: new Set(),\n });\n const schemaObject = createSchemaObject(schema, state, [\n ...subpath,\n 'schema',\n ]);\n const required = !isOptionalSchema(schema, state);\n return {\n ...rest,\n ...(schema && { schema: schemaObject }),\n ...(required && { required }),\n };\n};\n\nexport const createParamOrRef = (\n zodSchema: ZodType,\n components: ComponentsObject,\n subpath: string[],\n type?: keyof ZodOpenApiParameters,\n name?: string,\n): oas31.ParameterObject | oas31.ReferenceObject => {\n const component = components.parameters.get(zodSchema);\n const paramType = zodSchema._def?.openapi?.param?.in ?? component?.in ?? type;\n const paramName =\n zodSchema._def?.openapi?.param?.name ?? component?.name ?? name;\n\n if (!paramType) {\n throw new Error('Parameter type missing');\n }\n\n if (!paramName) {\n throw new Error('Parameter name missing');\n }\n\n if (component && component.type === 'complete') {\n if (\n !('$ref' in component.paramObject) &&\n (component.in !== type || component.name !== name)\n ) {\n throw new Error(`parameterRef \"${component.ref}\" is already registered`);\n }\n return {\n $ref: createComponentParamRef(component.ref),\n };\n }\n\n // Optional Objects can return a reference object\n const baseParamOrRef = createBaseParameter(zodSchema, components, subpath);\n if ('$ref' in baseParamOrRef) {\n throw new Error('Unexpected Error: received a reference object');\n }\n\n const ref = zodSchema?._def?.openapi?.param?.ref ?? component?.ref;\n\n const paramObject: oas31.ParameterObject = {\n in: paramType,\n name: paramName,\n ...baseParamOrRef,\n };\n\n if (ref) {\n components.parameters.set(zodSchema, {\n type: 'complete',\n paramObject,\n ref,\n in: paramType,\n name: paramName,\n });\n\n return {\n $ref: createComponentParamRef(ref),\n };\n }\n\n return paramObject;\n};\n\nconst createParameters = (\n type: keyof ZodOpenApiParameters,\n zodObject: AnyZodObject | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> => {\n if (!zodObject) {\n return [];\n }\n\n return Object.entries(zodObject.shape as ZodRawShape).map(\n ([key, zodSchema]: [string, ZodType]) =>\n createParamOrRef(zodSchema, components, [...subpath, key], type, key),\n );\n};\n\nconst createRequestParams = (\n requestParams: ZodOpenApiParameters | undefined,\n components: ComponentsObject,\n subpath: string[],\n): NonNullable<oas31.OperationObject['parameters']> => {\n if (!requestParams) {\n return [];\n }\n\n const pathParams = createParameters('path', requestParams.path, components, [\n ...subpath,\n 'path',\n ]);\n const queryParams = createParameters(\n 'query',\n requestParams.query,\n components,\n [...subpath, 'query'],\n );\n const cookieParams = createParameters(\n 'cookie',\n requestParams.cookie,\n components,\n [...subpath, 'cookie'],\n );\n const headerParams = createParameters(\n 'header',\n requestParams.header,\n components,\n [...subpath, 'header'],\n );\n\n return [...pathParams, ...queryParams, ...cookieParams, ...headerParams];\n};\n\nexport const createManualParameters = (\n parameters:\n | Array<\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject\n | ZodType\n >\n | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> =>\n parameters?.map((param, index) => {\n if (isAnyZodType(param)) {\n return createParamOrRef(param, components, [\n ...subpath,\n `param index ${index}`,\n ]);\n }\n return param as oas31.ParameterObject | oas31.ReferenceObject;\n }) ?? [];\n\nexport const createParametersObject = (\n parameters:\n | Array<\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject\n | ZodType\n >\n | undefined,\n requestParams: ZodOpenApiParameters | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> | undefined => {\n const manualParameters = createManualParameters(\n parameters,\n components,\n subpath,\n );\n const createdParams = createRequestParams(requestParams, components, subpath);\n const combinedParameters: oas31.OperationObject['parameters'] = [\n ...manualParameters,\n ...createdParams,\n ];\n\n return combinedParameters.length ? combinedParameters : undefined;\n};\n", "import type { ZodType } from 'zod';\n\nimport type { oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type { ComponentsObject, CreationType } from './components';\nimport type {\n ZodOpenApiContentObject,\n ZodOpenApiMediaTypeObject,\n} from './document';\nimport { createSchemaObject, newSchemaState } from './schema';\n\nexport const createMediaTypeSchema = (\n schemaObject:\n | ZodType\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | undefined,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.SchemaObject | oas31.ReferenceObject | undefined => {\n if (!schemaObject) {\n return undefined;\n }\n\n if (!isAnyZodType(schemaObject)) {\n return schemaObject;\n }\n\n return createSchemaObject(\n schemaObject,\n newSchemaState({\n components,\n type,\n path: [],\n visited: new Set(),\n }),\n subpath,\n );\n};\n\nconst createMediaTypeObject = (\n mediaTypeObject: ZodOpenApiMediaTypeObject | undefined,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.MediaTypeObject | undefined => {\n if (!mediaTypeObject) {\n return undefined;\n }\n\n return {\n ...mediaTypeObject,\n schema: createMediaTypeSchema(mediaTypeObject.schema, components, type, [\n ...subpath,\n 'schema',\n ]),\n };\n};\n\nexport const createContent = (\n contentObject: ZodOpenApiContentObject,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.ContentObject =>\n Object.entries(contentObject).reduce<oas31.ContentObject>(\n (acc, [mediaType, zodOpenApiMediaTypeObject]): oas31.ContentObject => {\n const mediaTypeObject = createMediaTypeObject(\n zodOpenApiMediaTypeObject,\n components,\n type,\n [...subpath, mediaType],\n );\n\n if (mediaTypeObject) {\n acc[mediaType] = mediaTypeObject;\n }\n return acc;\n },\n {},\n );\n", "import type { oas31 } from '../openapi3-ts/dist';\n\nexport const isISpecificationExtension = (\n key: string,\n): key is oas31.IExtensionName => key.startsWith('x-');\n", "import type { AnyZodObject, ZodRawShape, ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport {\n type ComponentsObject,\n createComponentResponseRef,\n} from './components';\nimport { createContent } from './content';\nimport type {\n ZodOpenApiResponseObject,\n ZodOpenApiResponsesObject,\n} from './document';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\nimport { isOptionalSchema } from './schema/parsers/optional';\nimport { isISpecificationExtension } from './specificationExtension';\n\nexport const createResponseHeaders = (\n responseHeaders:\n | oas31.HeadersObject\n | oas30.HeadersObject\n | AnyZodObject\n | undefined,\n components: ComponentsObject,\n): oas31.ResponseObject['headers'] => {\n if (!responseHeaders) {\n return undefined;\n }\n\n if (isAnyZodType(responseHeaders)) {\n return Object.entries(responseHeaders.shape as ZodRawShape).reduce<\n NonNullable<oas31.ResponseObject['headers']>\n >((acc, [key, zodSchema]: [string, ZodType]) => {\n acc[key] = createHeaderOrRef(zodSchema, components);\n return acc;\n }, {});\n }\n\n return responseHeaders as oas31.ResponseObject['headers'];\n};\n\nexport const createHeaderOrRef = (\n schema: ZodType,\n components: ComponentsObject,\n): oas31.BaseParameterObject | oas31.ReferenceObject => {\n const component = components.headers.get(schema);\n if (component && component.type === 'complete') {\n return {\n $ref: createComponentHeaderRef(component.ref),\n };\n }\n\n // Optional Objects can return a reference object\n const baseHeader = createBaseHeader(schema, components);\n if ('$ref' in baseHeader) {\n throw new Error('Unexpected Error: received a reference object');\n }\n\n const ref = schema._def?.openapi?.header?.ref ?? component?.ref;\n\n if (ref) {\n components.headers.set(schema, {\n type: 'complete',\n headerObject: baseHeader,\n ref,\n });\n return {\n $ref: createComponentHeaderRef(ref),\n };\n }\n\n return baseHeader;\n};\n\nexport const createBaseHeader = (\n schema: ZodType,\n components: ComponentsObject,\n): oas31.BaseParameterObject => {\n const { ref, ...rest } = schema._def.openapi?.header ?? {};\n const state: SchemaState = newSchemaState({\n components,\n type: 'output',\n path: [],\n visited: new Set(),\n });\n const schemaObject = createSchemaObject(schema, state, ['header']);\n const required = !isOptionalSchema(schema, state);\n return {\n ...rest,\n ...(schema && { schema: schemaObject }),\n ...(required && { required }),\n };\n};\n\nexport const createComponentHeaderRef = (ref: string) =>\n `#/components/headers/${ref}`;\n\nexport const createResponse = (\n responseObject: ZodOpenApiResponseObject | oas31.ReferenceObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ResponseObject | oas31.ReferenceObject => {\n if ('$ref' in responseObject) {\n return responseObject;\n }\n\n const component = components.responses.get(responseObject);\n if (component && component.type === 'complete') {\n return { $ref: createComponentResponseRef(component.ref) };\n }\n\n const { content, headers, ref, ...rest } = responseObject;\n\n const maybeHeaders = createResponseHeaders(headers, components);\n\n const response: oas31.ResponseObject = {\n ...rest,\n ...(maybeHeaders && { headers: maybeHeaders }),\n ...(content && {\n content: createContent(content, components, 'output', [\n ...subpath,\n 'content',\n ]),\n }),\n };\n\n const responseRef = ref ?? component?.ref;\n\n if (responseRef) {\n components.responses.set(responseObject, {\n responseObject: response,\n ref: responseRef,\n type: 'complete',\n });\n return {\n $ref: createComponentResponseRef(responseRef),\n };\n }\n\n return response;\n};\n\nexport const createResponses = (\n responsesObject: ZodOpenApiResponsesObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ResponsesObject =>\n Object.entries(responsesObject).reduce<oas31.ResponsesObject>(\n (\n acc,\n [statusCode, responseObject]: [\n string,\n ZodOpenApiResponseObject | oas31.ReferenceObject,\n ],\n ): oas31.ResponsesObject => {\n if (isISpecificationExtension(statusCode)) {\n acc[statusCode] = responseObject;\n return acc;\n }\n acc[statusCode] = createResponse(responseObject, components, [\n ...subpath,\n statusCode,\n ]);\n return acc;\n },\n {},\n );\n", "import type { oas31 } from '../openapi3-ts/dist';\n\nimport {\n type ComponentsObject,\n createComponentRequestBodyRef,\n} from './components';\nimport { createContent } from './content';\nimport type {\n ZodOpenApiOperationObject,\n ZodOpenApiPathItemObject,\n ZodOpenApiPathsObject,\n ZodOpenApiRequestBodyObject,\n} from './document';\nimport { createParametersObject } from './parameters';\nimport { createResponses } from './responses';\nimport { isISpecificationExtension } from './specificationExtension';\n\nexport const createRequestBody = (\n requestBodyObject: ZodOpenApiRequestBodyObject | undefined,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ReferenceObject | oas31.RequestBodyObject | undefined => {\n if (!requestBodyObject) {\n return undefined;\n }\n\n const component = components.requestBodies.get(requestBodyObject);\n if (component && component.type === 'complete') {\n return {\n $ref: createComponentRequestBodyRef(component.ref),\n };\n }\n\n const ref = requestBodyObject.ref ?? component?.ref;\n\n const requestBody: oas31.RequestBodyObject = {\n ...requestBodyObject,\n content: createContent(requestBodyObject.content, components, 'input', [\n ...subpath,\n 'content',\n ]),\n };\n\n if (ref) {\n components.requestBodies.set(requestBodyObject, {\n type: 'complete',\n ref,\n requestBodyObject: requestBody,\n });\n return {\n $ref: createComponentRequestBodyRef(ref),\n };\n }\n\n return requestBody;\n};\n\nconst createOperation = (\n operationObject: ZodOpenApiOperationObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.OperationObject | undefined => {\n const { parameters, requestParams, requestBody, responses, ...rest } =\n operationObject;\n\n const maybeParameters = createParametersObject(\n parameters,\n requestParams,\n components,\n [...subpath, 'parameters'],\n );\n\n const maybeRequestBody = createRequestBody(\n operationObject.requestBody,\n components,\n [...subpath, 'request body'],\n );\n\n const maybeResponses = createResponses(\n operationObject.responses,\n components,\n [...subpath, 'responses'],\n );\n\n return {\n ...rest,\n ...(maybeParameters && { parameters: maybeParameters }),\n ...(maybeRequestBody && { requestBody: maybeRequestBody }),\n ...(maybeResponses && { responses: maybeResponses }),\n };\n};\n\nconst createPathItem = (\n pathObject: ZodOpenApiPathItemObject,\n components: ComponentsObject,\n path: string,\n): oas31.PathItemObject =>\n Object.entries(pathObject).reduce<oas31.PathItemObject>(\n (acc, [key, value]) => {\n if (!value) {\n return acc;\n }\n\n if (\n key === 'get' ||\n key === 'put' ||\n key === 'post' ||\n key === 'delete' ||\n key === 'options' ||\n key === 'head' ||\n key === 'patch' ||\n key === 'trace'\n ) {\n acc[key] = createOperation(\n value as ZodOpenApiOperationObject,\n components,\n [path, key],\n );\n return acc;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n acc[key as keyof typeof pathObject] = value;\n return acc;\n },\n {},\n );\n\nexport const createPaths = (\n pathsObject: ZodOpenApiPathsObject | undefined,\n components: ComponentsObject,\n): oas31.PathsObject | undefined => {\n if (!pathsObject) {\n return undefined;\n }\n\n return Object.entries(pathsObject).reduce<oas31.PathsObject>(\n (acc, [path, pathItemObject]): oas31.PathsObject => {\n if (isISpecificationExtension(path)) {\n acc[path] = pathItemObject;\n return acc;\n }\n acc[path] = createPathItem(pathItemObject, components, path);\n return acc;\n },\n {},\n );\n};\n", "import type { ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type {\n ZodOpenApiComponentsObject,\n ZodOpenApiRequestBodyObject,\n ZodOpenApiResponseObject,\n ZodOpenApiVersion,\n} from './document';\nimport { createParamOrRef } from './parameters';\nimport { createRequestBody } from './paths';\nimport { createHeaderOrRef, createResponse } from './responses';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\n\nexport type CreationType = 'input' | 'output';\n\nexport interface CompleteSchemaComponent extends BaseSchemaComponent {\n type: 'complete';\n schemaObject:\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | oas30.SchemaObject\n | oas30.ReferenceObject;\n /** Set when the created schemaObject is specific to a particular CreationType */\n creationType?: CreationType;\n}\n\n/**\n *\n */\nexport interface ManualSchemaComponent extends BaseSchemaComponent {\n type: 'manual';\n}\n\nexport interface InProgressSchemaComponent extends BaseSchemaComponent {\n type: 'in-progress';\n}\n\ninterface BaseSchemaComponent {\n ref: string;\n}\n\nexport type SchemaComponent =\n | CompleteSchemaComponent\n | ManualSchemaComponent\n | InProgressSchemaComponent;\n\nexport type SchemaComponentMap = Map<ZodType, SchemaComponent>;\n\nexport interface CompleteParameterComponent extends BaseParameterComponent {\n type: 'complete';\n paramObject:\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialParameterComponent extends BaseParameterComponent {\n type: 'manual';\n}\n\ninterface BaseParameterComponent {\n ref: string;\n in: oas31.ParameterLocation;\n name: string;\n}\n\nexport type ParameterComponent =\n | CompleteParameterComponent\n | PartialParameterComponent;\n\nexport type ParameterComponentMap = Map<ZodType, ParameterComponent>;\n\nexport interface CompleteHeaderComponent extends BaseHeaderComponent {\n type: 'complete';\n headerObject:\n | oas31.HeaderObject\n | oas31.ReferenceObject\n | oas30.HeaderObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialHeaderComponent extends BaseHeaderComponent {\n type: 'manual';\n}\n\ninterface BaseHeaderComponent {\n ref: string;\n}\n\nexport type HeaderComponent = CompleteHeaderComponent | PartialHeaderComponent;\n\nexport type HeaderComponentMap = Map<ZodType, HeaderComponent>;\n\ninterface BaseResponseComponent {\n ref: string;\n}\n\nexport interface CompleteResponseComponent extends BaseResponseComponent {\n type: 'complete';\n responseObject:\n | oas31.ResponseObject\n | oas31.ReferenceObject\n | oas30.ResponseObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialResponseComponent extends BaseResponseComponent {\n type: 'manual';\n}\n\nexport type ResponseComponent =\n | CompleteResponseComponent\n | PartialResponseComponent;\n\nexport type ResponseComponentMap = Map<\n ZodOpenApiResponseObject,\n ResponseComponent\n>;\n\ninterface BaseRequestBodyComponent {\n ref: string;\n}\n\nexport interface CompleteRequestBodyComponent extends BaseRequestBodyComponent {\n type: 'complete';\n requestBodyObject:\n | oas31.RequestBodyObject\n | oas31.ReferenceObject\n | oas30.RequestBodyObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialRequestBodyComponent extends BaseRequestBodyComponent {\n type: 'manual';\n}\n\nexport type RequestBodyComponent =\n | CompleteRequestBodyComponent\n | PartialRequestBodyComponent;\n\nexport type RequestBodyComponentMap = Map<\n ZodOpenApiRequestBodyObject,\n RequestBodyComponent\n>;\n\nexport interface ComponentsObject {\n schemas: SchemaComponentMap;\n parameters: ParameterComponentMap;\n headers: HeaderComponentMap;\n requestBodies: RequestBodyComponentMap;\n responses: ResponseComponentMap;\n openapi: ZodOpenApiVersion;\n}\n\nexport const getDefaultComponents = (\n componentsObject?: ZodOpenApiComponentsObject,\n openapi: ZodOpenApiVersion = '3.1.0',\n): ComponentsObject => {\n const defaultComponents: ComponentsObject = {\n schemas: new Map(),\n parameters: new Map(),\n headers: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n openapi,\n };\n if (!componentsObject) {\n return defaultComponents;\n }\n\n getSchemas(componentsObject.schemas, defaultComponents);\n getParameters(componentsObject.parameters, defaultComponents);\n getRequestBodies(componentsObject.requestBodies, defaultComponents);\n getHeaders(componentsObject.headers, defaultComponents);\n getResponses(componentsObject.responses, defaultComponents);\n\n return defaultComponents;\n};\n\nconst getSchemas = (\n schemas: ZodOpenApiComponentsObject['schemas'],\n components: ComponentsObject,\n): void => {\n if (!schemas) {\n return;\n }\n\n Object.entries(schemas).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.schemas.has(schema)) {\n throw new Error(\n `Schema ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.ref ?? key;\n components.schemas.set(schema, {\n type: 'manual',\n ref,\n });\n }\n });\n};\n\nconst getParameters = (\n parameters: ZodOpenApiComponentsObject['parameters'],\n components: ComponentsObject,\n): void => {\n if (!parameters) {\n return;\n }\n\n Object.entries(parameters).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.parameters.has(schema)) {\n throw new Error(\n `Parameter ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.param?.ref ?? key;\n const name = schema._def.openapi?.param?.name;\n const location = schema._def.openapi?.param?.in;\n\n if (!name || !location) {\n throw new Error('`name` or `in` missing in .openapi()');\n }\n components.parameters.set(schema, {\n type: 'manual',\n ref,\n in: location,\n name,\n });\n }\n });\n};\n\nconst getHeaders = (\n responseHeaders: ZodOpenApiComponentsObject['headers'],\n components: ComponentsObject,\n): void => {\n if (!responseHeaders) {\n return;\n }\n\n Object.entries(responseHeaders).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.parameters.has(schema)) {\n throw new Error(\n `Header ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.param?.ref ?? key;\n components.headers.set(schema, {\n type: 'manual',\n ref,\n });\n }\n });\n};\n\nconst getResponses = (\n responses: ZodOpenApiComponentsObject['responses'],\n components: ComponentsObject,\n): void => {\n if (!responses) {\n return;\n }\n\n Object.entries(responses).forEach(([key, responseObject]) => {\n if (components.responses.has(responseObject)) {\n throw new Error(\n `Header ${JSON.stringify(responseObject)} is already registered`,\n );\n }\n const ref = responseObject?.ref ?? key;\n components.responses.set(responseObject, {\n type: 'manual',\n ref,\n });\n });\n};\n\nconst getRequestBodies = (\n requestBodies: ZodOpenApiComponentsObject['requestBodies'],\n components: ComponentsObject,\n): void => {\n if (!requestBodies) {\n return;\n }\n\n Object.entries(requestBodies).forEach(([key, requestBody]) => {\n if (components.requestBodies.has(requestBody)) {\n throw new Error(\n `Header ${JSON.stringify(requestBody)} is already registered`,\n );\n }\n const ref = requestBody?.ref ?? key;\n components.requestBodies.set(requestBody, {\n type: 'manual',\n ref,\n });\n });\n};\n\nexport const createComponentSchemaRef = (schemaRef: string) =>\n `#/components/schemas/${schemaRef}`;\n\nexport const createComponentResponseRef = (responseRef: string) =>\n `#/components/responses/${responseRef}`;\n\nexport const createComponentRequestBodyRef = (requestBodyRef: string) =>\n `#/components/requestBodies/${requestBodyRef}`;\n\nexport const createComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject | undefined => {\n const combinedSchemas = createSchemaComponents(componentsObject, components);\n const combinedParameters = createParamComponents(\n componentsObject,\n components,\n );\n const combinedHeaders = createHeaderComponents(componentsObject, components);\n const combinedResponses = createResponseComponents(components);\n const combinedRequestBodies = createRequestBodiesComponents(components);\n\n const { schemas, parameters, headers, responses, requestBodies, ...rest } =\n componentsObject;\n\n const finalComponents: oas31.ComponentsObject = {\n ...rest,\n ...(combinedSchemas && { schemas: combinedSchemas }),\n ...(combinedParameters && { parameters: combinedParameters }),\n ...(combinedRequestBodies && { requestBodies: combinedRequestBodies }),\n ...(combinedHeaders && { headers: combinedHeaders }),\n ...(combinedResponses && { responses: combinedResponses }),\n };\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createSchemaComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['schemas'] => {\n Array.from(components.schemas).forEach(([schema, { type }], index) => {\n if (type === 'manual') {\n const state: SchemaState = newSchemaState({\n components,\n type: schema._def.openapi?.refType ?? 'output',\n path: [],\n visited: new Set(),\n });\n\n createSchemaObject(schema, state, [`component schema index ${index}`]);\n }\n });\n\n const customComponents = Object.entries(\n componentsObject.schemas ?? {},\n ).reduce<NonNullable<oas31.ComponentsObject['schemas']>>(\n (acc, [key, value]) => {\n if (isAnyZodType(value)) {\n return acc;\n }\n\n if (acc[key]) {\n throw new Error(`Schema \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.SchemaObject | oas31.ReferenceObject;\n return acc;\n },\n {},\n );\n\n const finalComponents = Array.from(components.schemas).reduce<\n NonNullable<oas31.ComponentsObject['schemas']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Schema \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.schemaObject as oas31.SchemaObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createParamComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['parameters'] => {\n Array.from(components.parameters).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createParamOrRef(\n schema,\n components,\n [`component parameter index ${index}`],\n component.in,\n component.ref,\n );\n }\n });\n\n const customComponents = Object.entries(\n componentsObject.parameters ?? {},\n ).reduce<NonNullable<oas31.ComponentsObject['parameters']>>(\n (acc, [key, value]) => {\n if (!isAnyZodType(value)) {\n if (acc[key]) {\n throw new Error(`Parameter \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.ParameterObject;\n }\n return acc;\n },\n {},\n );\n\n const finalComponents = Array.from(components.parameters).reduce<\n NonNullable<oas31.ComponentsObject['parameters']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Parameter \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.paramObject as oas31.ParameterObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createHeaderComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['headers'] => {\n Array.from(components.headers).forEach(([schema, component]) => {\n if (component.type === 'manual') {\n createHeaderOrRef(schema, components);\n }\n });\n\n const headers = componentsObject.headers ?? {};\n const customComponents = Object.entries(headers).reduce<\n NonNullable<oas31.ComponentsObject['headers']>\n >((acc, [key, value]) => {\n if (!isAnyZodType(value)) {\n if (acc[key]) {\n throw new Error(`Header Ref \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.HeaderObject;\n }\n return acc;\n }, {});\n\n const finalComponents = Array.from(components.headers).reduce<\n NonNullable<oas31.ComponentsObject['headers']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Header \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.headerObject as oas31.HeaderObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createResponseComponents = (\n components: ComponentsObject,\n): oas31.ComponentsObject['responses'] => {\n Array.from(components.responses).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createResponse(schema, components, [`component response index ${index}`]);\n }\n });\n\n const finalComponents = Array.from(components.responses).reduce<\n NonNullable<oas31.ComponentsObject['responses']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Response \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.responseObject as oas31.ResponseObject;\n }\n\n return acc;\n }, {});\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createRequestBodiesComponents = (\n components: ComponentsObject,\n): oas31.ComponentsObject['requestBodies'] => {\n Array.from(components.requestBodies).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createRequestBody(schema, components, [\n `component request body ${index}`,\n ]);\n }\n });\n\n const finalComponents = Array.from(components.requestBodies).reduce<\n NonNullable<oas31.ComponentsObject['requestBodies']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`RequestBody \"${component.ref}\" is already registered`);\n }\n acc[component.ref] =\n component.requestBodyObject as oas31.RequestBodyObject;\n }\n\n return acc;\n }, {});\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n", "import type { AnyZodObject, ZodType } from 'zod';\n\nimport type { OpenApiVersion } from '../openapi';\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\n\nimport { createComponents, getDefaultComponents } from './components';\nimport { createPaths } from './paths';\n\nexport interface ZodOpenApiMediaTypeObject\n extends Omit<oas31.MediaTypeObject & oas30.MediaTypeObject, 'schema'> {\n schema?: ZodType | oas31.SchemaObject | oas31.ReferenceObject;\n}\n\nexport interface ZodOpenApiContentObject {\n 'application/json'?: ZodOpenApiMediaTypeObject;\n [mediatype: string]: ZodOpenApiMediaTypeObject | undefined;\n}\n\nexport interface ZodOpenApiRequestBodyObject\n extends Omit<oas31.RequestBodyObject & oas30.RequestBodyObject, 'content'> {\n content: ZodOpenApiContentObject;\n /** Use this field to auto register this request body as a component */\n ref?: string;\n}\n\nexport interface ZodOpenApiResponseObject\n extends Omit<\n oas31.ResponseObject & oas30.ResponseObject,\n 'content' | 'headers'\n > {\n content?: ZodOpenApiContentObject;\n headers?: AnyZodObject | oas30.HeadersObject | oas31.HeadersObject;\n /** Use this field to auto register this response object as a component */\n ref?: string;\n}\n\nexport interface ZodOpenApiResponsesObject\n extends oas31.ISpecificationExtension {\n default?:\n | ZodOpenApiResponseObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject;\n [statuscode: `${1 | 2 | 3 | 4 | 5}${string}`]:\n | ZodOpenApiResponseObject\n | oas31.ReferenceObject;\n}\n\nexport type ZodOpenApiParameters = {\n [type in oas31.ParameterLocation & oas30.ParameterLocation]?: AnyZodObject;\n};\n\nexport interface ZodOpenApiOperationObject\n extends Omit<\n oas31.OperationObject & oas30.OperationObject,\n 'requestBody' | 'responses' | 'parameters'\n > {\n parameters?: Array<\n | ZodType\n | oas31.ParameterObject\n | oas30.ParameterObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n requestBody?: ZodOpenApiRequestBodyObject;\n requestParams?: ZodOpenApiParameters;\n responses: ZodOpenApiResponsesObject;\n}\n\nexport interface ZodOpenApiPathItemObject\n extends Omit<\n oas31.PathItemObject & oas30.PathItemObject,\n 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace'\n > {\n get?: ZodOpenApiOperationObject;\n put?: ZodOpenApiOperationObject;\n post?: ZodOpenApiOperationObject;\n delete?: ZodOpenApiOperationObject;\n options?: ZodOpenApiOperationObject;\n head?: ZodOpenApiOperationObject;\n patch?: ZodOpenApiOperationObject;\n trace?: ZodOpenApiOperationObject;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\nexport interface ZodOpenApiPathsObject extends oas31.ISpecificationExtension {\n [path: string]: ZodOpenApiPathItemObject;\n}\n\nexport interface ZodOpenApiComponentsObject\n extends Omit<\n oas31.ComponentsObject & oas30.ComponentsObject,\n 'schemas' | 'responses' | 'requestBodies' | 'headers' | 'parameters'\n > {\n parameters?: Record<\n string,\n | ZodType\n | oas31.ParameterObject\n | oas30.ParameterObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n schemas?: Record<\n string,\n | ZodType\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | oas30.SchemaObject\n | oas30.ReferenceObject\n >;\n requestBodies?: Record<string, ZodOpenApiRequestBodyObject>;\n headers?: Record<\n string,\n | ZodType\n | oas31.HeaderObject\n | oas30.HeaderObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n responses?: Record<string, ZodOpenApiResponseObject>;\n}\n\nexport type ZodOpenApiVersion = OpenApiVersion;\n\nexport interface ZodOpenApiObject\n extends Omit<\n oas31.OpenAPIObject,\n 'openapi' | 'paths' | 'webhooks' | 'components'\n > {\n openapi: ZodOpenApiVersion;\n paths?: ZodOpenApiPathsObject;\n webhooks?: ZodOpenApiPathsObject;\n components?: ZodOpenApiComponentsObject;\n}\n\nexport const createDocument = (\n zodOpenApiObject: ZodOpenApiObject,\n): oas31.OpenAPIObject => {\n const { paths, webhooks, components = {}, ...rest } = zodOpenApiObject;\n const defaultComponents = getDefaultComponents(\n components,\n zodOpenApiObject.openapi,\n );\n\n const createdPaths = createPaths(paths, defaultComponents);\n const createdWebhooks = createPaths(webhooks, defaultComponents);\n const createdComponents = createComponents(components, defaultComponents);\n\n return {\n ...rest,\n ...(createdPaths && { paths: createdPaths }),\n ...(createdWebhooks && { webhooks: createdWebhooks }),\n ...(createdComponents && { components: createdComponents }),\n };\n};\n", "import type {\n UnknownKeysParam,\n ZodDate,\n ZodObject,\n ZodRawShape,\n ZodTypeAny,\n z,\n} from 'zod';\n\nimport type { CreationType } from './create/components';\nimport type { oas30, oas31 } from './openapi3-ts/dist';\n\ntype SchemaObject = oas30.SchemaObject & oas31.SchemaObject;\n\ninterface ZodOpenApiMetadata<\n T extends ZodTypeAny,\n TInferred = z.input<T> | z.output<T>,\n> extends SchemaObject {\n example?: TInferred;\n examples?: [TInferred, ...TInferred[]];\n default?: T extends ZodDate ? string : TInferred;\n /**\n * Use this field to output this Zod Schema in the components schemas section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n /**\n * Use this field when you are manually adding a Zod Schema to the components section. This controls whether this should be rendered as request (`input`) or response (`output`). Defaults to `output`\n */\n refType?: CreationType;\n /**\n * Use this field to set the created type of an effect.\n */\n effectType?: CreationType;\n param?: Partial<oas31.ParameterObject> & {\n example?: TInferred;\n examples?: Record<\n string,\n (oas31.ExampleObject & { value: TInferred }) | oas31.ReferenceObject\n >;\n /**\n * Use this field to output this Zod Schema in the components parameters section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n };\n header?: Partial<oas31.HeaderObject & oas30.HeaderObject> & {\n /**\n * Use this field to output this Zod Schema in the components headers section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n };\n}\n\ninterface ZodOpenApiExtendMetadata {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends: ZodObject<any, any, any, any, any>;\n}\n\ndeclare module 'zod' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ZodType<Output, Def extends ZodTypeDef, Input = Output> {\n openapi<T extends ZodTypeAny>(this: T, metadata: ZodOpenApiMetadata<T>): T;\n }\n\n interface ZodTypeDef {\n openapi?: ZodOpenApiMetadata<ZodTypeAny>;\n }\n\n export interface ZodObjectDef<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n T extends ZodRawShape = ZodRawShape,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Catchall extends ZodTypeAny = ZodTypeAny,\n > extends ZodTypeDef {\n extendMetadata?: ZodOpenApiExtendMetadata;\n }\n}\n\nexport function extendZodWithOpenApi(zod: typeof z) {\n if (typeof zod.ZodType.prototype.openapi !== 'undefined') {\n return;\n }\n zod.ZodType.prototype.openapi = function (openapi) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n const result = new (this as any).constructor({\n ...this._def,\n openapi,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectExtend = zod.ZodObject.prototype.extend;\n\n zod.ZodObject.prototype.extend = function (\n ...args: [augmentation: ZodRawShape]\n ) {\n const extendResult = zodObjectExtend.apply(this, args);\n extendResult._def.extendMetadata = {\n extends: this,\n };\n delete extendResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return extendResult as any;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectOmit = zod.ZodObject.prototype.omit;\n\n zod.ZodObject.prototype.omit = function (\n ...args: [mask: Record<string, true | undefined>]\n ) {\n const omitResult = zodObjectOmit.apply(this, args);\n delete omitResult._def.extendMetadata;\n delete omitResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return omitResult as any;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectPick = zod.ZodObject.prototype.pick;\n\n zod.ZodObject.prototype.pick = function (\n ...args: [mask: Record<string, true | undefined>]\n ) {\n const pickResult = zodObjectPick.apply(this, args);\n delete pickResult._def.extendMetadata;\n delete pickResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return pickResult as any;\n };\n}\n", "export * from './dsl/openapi-builder30';\nexport * from './model/openapi30';\nexport type { Server, ServerVariable } from './model/server';\nexport type { IExtensionName, IExtensionType, ISpecificationExtension } from './model/specification-extension';\n", "export * from './dsl/openapi-builder31';\nexport * from './model/openapi31';\nexport type { Server, ServerVariable } from './model/server';\nexport type { IExtensionName, IExtensionType, ISpecificationExtension } from './model/specification-extension';\n", "export {\n createComponents,\n getDefaultComponents,\n type ComponentsObject,\n} from './create/components';\nexport { createMediaTypeSchema } from './create/content';\nexport { createParamOrRef } from './create/parameters';\n"],
5
- "mappings": "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",
6
- "names": ["schema"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/zodType.ts", "../src/create/schema/metadata.ts", "../src/create/schema/parsers/array.ts", "../src/create/schema/parsers/boolean.ts", "../src/create/schema/parsers/brand.ts", "../src/create/schema/parsers/catch.ts", "../src/create/schema/parsers/date.ts", "../src/create/schema/parsers/default.ts", "../src/create/schema/parsers/discriminatedUnion.ts", "../src/create/schema/parsers/enum.ts", "../src/create/schema/parsers/intersection.ts", "../src/create/schema/parsers/lazy.ts", "../src/create/schema/parsers/literal.ts", "../src/create/schema/parsers/manual.ts", "../src/openapi.ts", "../src/create/schema/parsers/nativeEnum.ts", "../src/create/schema/parsers/null.ts", "../src/create/schema/parsers/nullable.ts", "../src/create/schema/parsers/number.ts", "../src/create/schema/parsers/optional.ts", "../src/create/schema/parsers/object.ts", "../src/create/schema/parsers/pipeline.ts", "../src/create/schema/parsers/preprocess.ts", "../src/create/schema/parsers/readonly.ts", "../src/create/schema/parsers/record.ts", "../src/create/schema/parsers/refine.ts", "../src/create/schema/parsers/set.ts", "../src/create/schema/parsers/string.ts", "../src/create/schema/parsers/transform.ts", "../src/create/schema/parsers/tuple.ts", "../src/create/schema/parsers/union.ts", "../src/create/schema/parsers/unknown.ts", "../src/create/schema/parsers/index.ts", "../src/create/schema/index.ts", "../src/create/parameters.ts", "../src/create/content.ts", "../src/create/specificationExtension.ts", "../src/create/responses.ts", "../src/create/paths.ts", "../src/create/components.ts", "../src/create/document.ts", "../src/extendZod.ts", "../src/openapi3-ts/dist/oas30.ts", "../src/openapi3-ts/dist/oas31.ts", "../src/api.ts"],
4
- "sourcesContent": ["// Inspired by https://github.com/asteasolutions/zod-to-openapi/blob/master/src/lib/zod-is-type.ts\n\nimport type {\n ArrayCardinality,\n EnumLike,\n UnknownKeysParam,\n ZodAny,\n ZodArray,\n ZodBigInt,\n ZodBoolean,\n ZodBranded,\n ZodCatch,\n ZodDate,\n ZodDefault,\n ZodDiscriminatedUnion,\n ZodDiscriminatedUnionOption,\n ZodEffects,\n ZodEnum,\n ZodFirstPartyTypeKind,\n ZodFunction,\n ZodIntersection,\n ZodLazy,\n ZodLiteral,\n ZodMap,\n ZodNaN,\n ZodNativeEnum,\n ZodNever,\n ZodNull,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodRawShape,\n ZodReadonly,\n ZodRecord,\n ZodSet,\n ZodString,\n ZodSymbol,\n ZodTuple,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodUndefined,\n ZodUnion,\n ZodUnknown,\n ZodVoid,\n objectInputType,\n objectOutputType,\n} from 'zod';\n\ntype ZodTypeMap<\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n V,\n W extends ZodRawShape,\n B extends string | number | symbol,\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n Enum extends [string, ...string[]],\n Returns extends ZodTypeAny,\n Args extends ZodTuple,\n ELike extends EnumLike,\n Union extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<W, Catchall, UnknownKeys>,\n Input = objectInputType<W, Catchall, UnknownKeys>,\n Cardinality extends ArrayCardinality = 'many',\n> = {\n ZodAny: ZodAny;\n ZodArray: ZodArray<T, Cardinality>;\n ZodBigInt: ZodBigInt;\n ZodBoolean: ZodBoolean;\n ZodBranded: ZodBranded<T, B>;\n ZodCatch: ZodCatch<T>;\n ZodDate: ZodDate;\n ZodDefault: ZodDefault<T>;\n ZodDiscriminatedUnion: ZodDiscriminatedUnion<Discriminator, Options>;\n ZodEffects: ZodEffects<T>;\n ZodEnum: ZodEnum<Enum>;\n ZodFunction: ZodFunction<Args, Returns>;\n ZodIntersection: ZodIntersection<T, U>;\n ZodLazy: ZodLazy<T>;\n ZodLiteral: ZodLiteral<V>;\n ZodMap: ZodMap;\n ZodNaN: ZodNaN;\n ZodNativeEnum: ZodNativeEnum<ELike>;\n ZodNever: ZodNever;\n ZodNull: ZodNull;\n ZodNullable: ZodNullable<T>;\n ZodNumber: ZodNumber;\n ZodObject: ZodObject<W, UnknownKeys, Catchall, Output, Input>;\n ZodOptional: ZodOptional<T>;\n ZodPipeline: ZodPipeline<T, U>;\n ZodPromise: ZodPromise<T>;\n ZodReadonly: ZodReadonly<T>;\n ZodRecord: ZodRecord;\n ZodSet: ZodSet;\n ZodString: ZodString;\n ZodSymbol: ZodSymbol;\n ZodTuple: ZodTuple;\n ZodUndefined: ZodUndefined;\n ZodUnion: ZodUnion<Union>;\n ZodUnknown: ZodUnknown;\n ZodVoid: ZodVoid;\n};\n\nexport const isZodType = <\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n V,\n W extends ZodRawShape,\n B extends string | number | symbol,\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n Enum extends [string, ...string[]],\n Returns extends ZodTypeAny,\n Args extends ZodTuple,\n ELike extends EnumLike,\n Union extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n K extends keyof ZodTypeMap<\n T,\n U,\n V,\n W,\n B,\n Discriminator,\n Options,\n Enum,\n Returns,\n Args,\n ELike,\n Union,\n UnknownKeys,\n Catchall,\n Output,\n Input,\n Cardinality\n >,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<W, Catchall, UnknownKeys>,\n Input = objectInputType<W, Catchall, UnknownKeys>,\n Cardinality extends ArrayCardinality = 'many',\n>(\n zodType: unknown,\n typeName: K,\n): zodType is ZodTypeMap<\n T,\n U,\n V,\n W,\n B,\n Discriminator,\n Options,\n Enum,\n Returns,\n Args,\n ELike,\n Union,\n UnknownKeys,\n Catchall,\n Output,\n Input,\n Cardinality\n>[K] =>\n (\n (zodType as ZodType)?._def as ZodTypeDef & {\n typeName: ZodFirstPartyTypeKind; // FIXME: https://github.com/colinhacks/zod/pull/2459\n }\n )?.typeName === typeName;\n\nexport const isAnyZodType = (zodType: unknown): zodType is ZodType =>\n Boolean(\n (\n (zodType as ZodType)?._def as ZodTypeDef & {\n typeName: ZodFirstPartyTypeKind;\n }\n )?.typeName,\n );\n", "import type { oas31 } from '../../openapi3-ts/dist';\n\nexport const enhanceWithMetadata = (\n schemaObject: oas31.SchemaObject | oas31.ReferenceObject,\n metadata: oas31.SchemaObject | oas31.ReferenceObject,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if ('$ref' in schemaObject) {\n if (Object.values(metadata).every((val) => val === undefined)) {\n return schemaObject;\n }\n\n return {\n allOf: [schemaObject, metadata],\n };\n }\n\n return {\n ...schemaObject,\n ...metadata,\n };\n};\n", "import type { ArrayCardinality, ZodArray, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createArraySchema = <\n T extends ZodTypeAny,\n Cardinality extends ArrayCardinality = 'many',\n>(\n zodArray: ZodArray<T, Cardinality>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const zodType = zodArray._def.type;\n const minItems =\n zodArray._def.exactLength?.value ?? zodArray._def.minLength?.value;\n const maxItems =\n zodArray._def.exactLength?.value ?? zodArray._def.maxLength?.value;\n return {\n type: 'array',\n items: createSchemaObject(zodType, state, ['array items']),\n ...(minItems !== undefined && { minItems }),\n ...(maxItems !== undefined && { maxItems }),\n };\n};\n", "import type { ZodBoolean } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createBooleanSchema = (\n _zodBoolean: ZodBoolean,\n): oas31.SchemaObject => ({\n type: 'boolean',\n});\n", "import type { ZodBranded, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\nexport const createBrandedSchema = <\n T extends ZodTypeAny,\n B extends string | number | symbol,\n>(\n zodBranded: ZodBranded<T, B>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodBranded._def.type, state, ['brand']);\n", "import type { ZodCatch, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createCatchSchema = <T extends ZodTypeAny>(\n zodCatch: ZodCatch<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodCatch._def.innerType, state, ['catch']);\n", "import type { ZodDate } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createDateSchema = (_zodDate: ZodDate): oas31.SchemaObject => ({\n type: 'string',\n});\n", "import type { ZodDefault, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\nimport { enhanceWithMetadata } from '../metadata';\n\nexport const createDefaultSchema = <T extends ZodTypeAny>(\n zodDefault: ZodDefault<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n const schemaObject = createSchemaObject(zodDefault._def.innerType, state, [\n 'default',\n ]);\n\n return enhanceWithMetadata(schemaObject, {\n default: zodDefault._def.defaultValue(),\n });\n};\n", "import type {\n AnyZodObject,\n ZodDiscriminatedUnion,\n ZodDiscriminatedUnionOption,\n ZodLiteralDef,\n ZodRawShape,\n} from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createDiscriminatedUnionSchema = <\n Discriminator extends string,\n Options extends Array<ZodDiscriminatedUnionOption<Discriminator>>,\n>(\n zodDiscriminatedUnion: ZodDiscriminatedUnion<Discriminator, Options>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const options = zodDiscriminatedUnion.options;\n const schemas = options.map((option, index) =>\n createSchemaObject(option, state, [`discriminated union option ${index}`]),\n );\n const discriminator = mapDiscriminator(\n schemas,\n options,\n zodDiscriminatedUnion.discriminator,\n state,\n );\n return {\n oneOf: schemas,\n ...(discriminator && { discriminator }),\n };\n};\n\nexport const mapDiscriminator = (\n schemas: Array<oas31.SchemaObject | oas31.ReferenceObject>,\n zodObjects: AnyZodObject[],\n discriminator: unknown,\n state: SchemaState,\n): oas31.SchemaObject['discriminator'] => {\n if (typeof discriminator !== 'string') {\n return undefined;\n }\n\n const mapping: NonNullable<oas31.DiscriminatorObject['mapping']> = {};\n for (const [index, zodObject] of zodObjects.entries()) {\n const schema = schemas[index] as oas31.SchemaObject | oas31.ReferenceObject;\n const componentSchemaRef = '$ref' in schema ? schema?.$ref : undefined;\n if (!componentSchemaRef) {\n return undefined;\n }\n\n const value = (zodObject.shape as ZodRawShape)[discriminator];\n\n if (isZodType(value, 'ZodEnum')) {\n for (const enumValue of value._def.values as string[]) {\n mapping[enumValue] = componentSchemaRef;\n }\n continue;\n }\n\n const literalValue = (value?._def as ZodLiteralDef<unknown>).value;\n\n if (typeof literalValue !== 'string') {\n throw new Error(\n `Discriminator ${discriminator} could not be found in on index ${index} of a discriminated union at ${state.path.join(\n ' > ',\n )}`,\n );\n }\n\n mapping[literalValue] = componentSchemaRef;\n }\n\n return {\n propertyName: discriminator,\n mapping,\n };\n};\n", "import type { ZodEnum } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createEnumSchema = <T extends [string, ...string[]]>(\n zodEnum: ZodEnum<T>,\n): oas31.SchemaObject => ({\n type: 'string',\n enum: zodEnum._def.values,\n});\n", "import type { ZodIntersection, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createIntersectionSchema = <\n T extends ZodTypeAny,\n U extends ZodTypeAny,\n>(\n zodIntersection: ZodIntersection<T, U>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => ({\n allOf: [\n createSchemaObject(zodIntersection._def.left, state, ['intersection left']),\n createSchemaObject(zodIntersection._def.right, state, [\n 'intersection right',\n ]),\n ],\n});\n", "import type { ZodLazy, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createLazySchema = <T extends ZodTypeAny>(\n zodLazy: ZodLazy<T>,\n state: SchemaState,\n): oas31.ReferenceObject | oas31.SchemaObject => {\n const innerSchema = zodLazy._def.getter();\n return createSchemaObject(innerSchema, state, ['lazy schema']);\n};\n", "import type { ZodLiteral } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createLiteralSchema = (\n zodLiteral: ZodLiteral<unknown>,\n): oas31.SchemaObject => ({\n type: typeof zodLiteral.value as oas31.SchemaObject['type'],\n enum: [zodLiteral._def.value],\n});\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport type { SchemaState } from '../../schema';\n\nexport const createManualTypeSchema = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n): oas31.SchemaObject => {\n if (!zodSchema._def.openapi?.type) {\n const zodType = zodSchema.constructor.name;\n if (isZodType(zodSchema, 'ZodEffects')) {\n const schemaName = `${zodType} - ${zodSchema._def.effect.type}`;\n throw new Error(\n `Unknown schema ${schemaName} at ${state.path.join(\n ' > ',\n )}. Please assign it a manual 'type', wrap it in a ZodPipeline or change the 'effectType'.`,\n );\n }\n throw new Error(\n `Unknown schema ${zodType}. Please assign it a manual 'type'.`,\n );\n }\n\n return {\n type: zodSchema._def.openapi.type,\n };\n};\n", "export const openApiVersions = [\n '3.0.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.1.0',\n] as const;\n\nexport type OpenApiVersion = (typeof openApiVersions)[number];\n\nexport const satisfiesVersion = (\n test: OpenApiVersion,\n against: OpenApiVersion,\n) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);\n", "import type { EnumLike, ZodNativeEnum } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport type { SchemaState } from '../../schema';\n\nexport const createNativeEnumSchema = <T extends EnumLike>(\n zodEnum: ZodNativeEnum<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n const enumValues = getValidEnumValues(zodEnum._def.values);\n const { numbers, strings } = sortStringsAndNumbers(enumValues);\n\n if (strings.length && numbers.length) {\n if (satisfiesVersion(state.components.openapi, '3.1.0'))\n return {\n type: ['string', 'number'],\n enum: [...strings, ...numbers],\n };\n return {\n oneOf: [\n { type: 'string', enum: strings },\n { type: 'number', enum: numbers },\n ],\n };\n }\n\n if (strings.length) {\n return {\n type: 'string',\n enum: strings,\n };\n }\n\n return {\n type: 'number',\n enum: numbers,\n };\n};\n\ninterface StringsAndNumbers {\n strings: string[];\n numbers: number[];\n}\n\nexport const getValidEnumValues = (enumValues: EnumLike) => {\n const keys = Object.keys(enumValues).filter(\n (key) => typeof enumValues[enumValues[key] as number] !== 'number',\n );\n return keys.map((key) => enumValues[key] as number);\n};\n\nexport const sortStringsAndNumbers = (\n values: Array<string | number>,\n): StringsAndNumbers => ({\n strings: values.filter((value): value is string => typeof value === 'string'),\n numbers: values.filter((value): value is number => typeof value === 'number'),\n});\n", "import type { ZodNull } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createNullSchema = (_zodNull: ZodNull): oas31.SchemaObject => ({\n type: 'null',\n});\n", "import type { ZodNullable, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport type { ZodOpenApiVersion } from '../../document';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createNullableSchema = <T extends ZodTypeAny>(\n zodNullable: ZodNullable<T>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schemaObject = createSchemaObject(zodNullable.unwrap(), state, [\n 'nullable',\n ]);\n\n if ('$ref' in schemaObject || schemaObject.allOf) {\n return {\n oneOf: mapNullOf([schemaObject], state.components.openapi),\n };\n }\n\n if (schemaObject.oneOf) {\n const { oneOf, ...schema } = schemaObject;\n return {\n oneOf: mapNullOf(oneOf, state.components.openapi),\n ...schema,\n };\n }\n\n if (schemaObject.anyOf) {\n const { anyOf, ...schema } = schemaObject;\n return {\n anyOf: mapNullOf(anyOf, state.components.openapi),\n ...schema,\n };\n }\n\n const { type, ...schema } = schemaObject;\n\n if (satisfiesVersion(state.components.openapi, '3.1.0')) {\n return {\n type: mapNullType(type),\n ...schema,\n };\n }\n\n return {\n type,\n nullable: true,\n ...schema,\n // https://github.com/OAI/OpenAPI-Specification/blob/main/proposals/2019-10-31-Clarify-Nullable.md#if-a-schema-specifies-nullable-true-and-enum-1-2-3-does-that-schema-allow-null-values-see-1900\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ...(schema.enum && { enum: [...schema.enum, null] }),\n } as oas31.SchemaObject;\n};\n\nconst mapNullType = (\n type: oas31.SchemaObject['type'],\n): oas31.SchemaObject['type'] => {\n if (!type) {\n return 'null';\n }\n\n if (Array.isArray(type)) {\n return [...type, 'null'];\n }\n\n return [type, 'null'];\n};\n\nconst mapNullOf = (\n ofSchema: Array<oas31.SchemaObject | oas31.ReferenceObject>,\n openapi: ZodOpenApiVersion,\n): Array<oas31.SchemaObject | oas31.ReferenceObject> => {\n if (satisfiesVersion(openapi, '3.1.0')) {\n return [...ofSchema, { type: 'null' }];\n }\n return [...ofSchema, { nullable: true } as oas31.SchemaObject];\n};\n", "import type { ZodNumber, ZodNumberCheck } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas30, oas31 } from '../../../openapi3-ts/dist';\nimport type { ZodOpenApiVersion } from '../../document';\nimport type { SchemaState } from '../../schema';\n\nexport const createNumberSchema = (\n zodNumber: ZodNumber,\n state: SchemaState,\n): oas31.SchemaObject => {\n const zodNumberChecks = getZodNumberChecks(zodNumber);\n\n const minimum = mapMinimum(zodNumberChecks, state.components.openapi);\n const maximum = mapMaximum(zodNumberChecks, state.components.openapi);\n\n return {\n type: mapNumberType(zodNumberChecks),\n ...(minimum && (minimum as oas31.SchemaObject)), // Union types are not easy to tame\n ...(maximum && (maximum as oas31.SchemaObject)),\n };\n};\n\nexport const mapMaximum = (\n zodNumberCheck: ZodNumberCheckMap,\n openapi: ZodOpenApiVersion,\n):\n | Pick<\n oas31.SchemaObject | oas30.SchemaObject,\n 'maximum' | 'exclusiveMaximum'\n >\n | undefined => {\n if (!zodNumberCheck.max) {\n return undefined;\n }\n\n const maximum = zodNumberCheck.max.value;\n if (zodNumberCheck.max.inclusive) {\n return { ...(maximum !== undefined && { maximum }) };\n }\n if (satisfiesVersion(openapi, '3.1.0')) {\n return { exclusiveMaximum: maximum };\n }\n return { maximum, exclusiveMaximum: true };\n};\nexport const mapMinimum = (\n zodNumberCheck: ZodNumberCheckMap,\n openapi: ZodOpenApiVersion,\n):\n | Pick<\n oas31.SchemaObject | oas30.SchemaObject,\n 'minimum' | 'exclusiveMinimum'\n >\n | undefined => {\n if (!zodNumberCheck.min) {\n return undefined;\n }\n\n const minimum = zodNumberCheck.min.value;\n if (zodNumberCheck.min.inclusive) {\n return { ...(minimum !== undefined && { minimum }) };\n }\n if (satisfiesVersion(openapi, '3.1.0')) {\n return { exclusiveMinimum: minimum };\n }\n return { minimum, exclusiveMinimum: true };\n};\n\ntype ZodNumberCheckMap = {\n [kind in ZodNumberCheck['kind']]?: Extract<ZodNumberCheck, { kind: kind }>;\n};\n\nconst getZodNumberChecks = (zodNumber: ZodNumber): ZodNumberCheckMap =>\n zodNumber._def.checks.reduce<ZodNumberCheckMap>((acc, check) => {\n // union type issues\n acc[check.kind] = check as never;\n return acc;\n }, {});\n\nconst mapNumberType = (\n zodNumberChecks: ZodNumberCheckMap,\n): oas31.SchemaObject['type'] => (zodNumberChecks.int ? 'integer' : 'number');\n", "import type { ZodOptional, ZodType, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createOptionalSchema = <T extends ZodTypeAny>(\n zodOptional: ZodOptional<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => // Optional doesn't change OpenAPI schema\n createSchemaObject(zodOptional.unwrap(), state, ['optional']);\n\nexport const isOptionalSchema = (\n zodSchema: ZodTypeAny,\n state: SchemaState,\n): boolean => {\n if (isZodType(zodSchema, 'ZodOptional')) {\n return true;\n }\n\n if (isZodType(zodSchema, 'ZodDefault')) {\n return state.type === 'input';\n }\n\n if (isZodType(zodSchema, 'ZodNullable') || isZodType(zodSchema, 'ZodCatch')) {\n return isOptionalSchema(zodSchema._def.innerType, state);\n }\n\n if (isZodType(zodSchema, 'ZodEffects')) {\n return isOptionalSchema(zodSchema._def.schema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodUnion') ||\n isZodType(zodSchema, 'ZodDiscriminatedUnion')\n ) {\n return (zodSchema._def.options as ZodTypeAny[]).some((schema) =>\n isOptionalSchema(schema, state),\n );\n }\n\n if (isZodType(zodSchema, 'ZodIntersection')) {\n return [zodSchema._def.left, zodSchema._def.right].some((schema) =>\n isOptionalSchema(schema, state),\n );\n }\n\n if (isZodType(zodSchema, 'ZodPipeline')) {\n if (\n state.effectType === 'input' ||\n (state.type === 'input' && state.effectType !== 'output')\n ) {\n return isOptionalSchema(zodSchema._def.in, state);\n }\n\n if (\n state.effectType === 'output' ||\n (state.type === 'output' && state.effectType !== 'input')\n ) {\n return isOptionalSchema(zodSchema._def.out, state);\n }\n }\n\n if (isZodType(zodSchema, 'ZodLazy')) {\n return isOptionalSchema(zodSchema._def.getter() as ZodType, state);\n }\n\n return zodSchema.isOptional();\n};\n", "import type {\n UnknownKeysParam,\n ZodObject,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n objectInputType,\n objectOutputType,\n} from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport { createComponentSchemaRef } from '../../components';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nimport { isOptionalSchema } from './optional';\n\nexport const createObjectSchema = <\n T extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n>(\n zodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const extendedSchema = createExtendedSchema(\n zodObject,\n zodObject._def.extendMetadata?.extends,\n state,\n );\n\n if (extendedSchema) {\n return extendedSchema;\n }\n\n return createObjectSchemaFromShape(\n zodObject.shape,\n {\n unknownKeys: zodObject._def.unknownKeys,\n catchAll: zodObject._def.catchall as ZodType,\n },\n state,\n );\n};\n\nexport const createExtendedSchema = <\n T extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n>(\n zodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input>,\n baseZodObject: ZodObject<T, UnknownKeys, Catchall, Output, Input> | undefined,\n state: SchemaState,\n): oas31.SchemaObject | undefined => {\n if (!baseZodObject) {\n return undefined;\n }\n\n const component = state.components.schemas.get(baseZodObject);\n if (component ?? baseZodObject._def.openapi?.ref) {\n createSchemaObject(baseZodObject, state, ['extended schema']);\n }\n\n const completeComponent = state.components.schemas.get(baseZodObject);\n if (!completeComponent) {\n return undefined;\n }\n\n const diffOpts = createDiffOpts(\n {\n unknownKeys: baseZodObject._def.unknownKeys,\n catchAll: baseZodObject._def.catchall as ZodType,\n },\n {\n unknownKeys: zodObject._def.unknownKeys,\n catchAll: zodObject._def.catchall as ZodType,\n },\n );\n if (!diffOpts) {\n return undefined;\n }\n\n const diffShape = createShapeDiff(\n baseZodObject._def.shape() as ZodRawShape,\n zodObject._def.shape() as ZodRawShape,\n );\n\n if (!diffShape) {\n return undefined;\n }\n\n return {\n allOf: [{ $ref: createComponentSchemaRef(completeComponent.ref) }],\n ...createObjectSchemaFromShape(diffShape, diffOpts, state),\n };\n};\n\nconst createDiffOpts = (\n baseOpts: AdditionalPropertyOptions,\n extendedOpts: AdditionalPropertyOptions,\n): AdditionalPropertyOptions | undefined => {\n if (\n baseOpts.unknownKeys === 'strict' ||\n !isZodType(baseOpts.catchAll, 'ZodNever')\n ) {\n return undefined;\n }\n\n return {\n catchAll: extendedOpts.catchAll,\n unknownKeys: extendedOpts.unknownKeys,\n };\n};\n\nconst createShapeDiff = (\n baseObj: ZodRawShape,\n extendedObj: ZodRawShape,\n): ZodRawShape | null => {\n const acc: ZodRawShape = {};\n\n for (const [key, val] of Object.entries(extendedObj)) {\n const baseValue = baseObj[key];\n if (val === baseValue) {\n continue;\n }\n\n if (baseValue === undefined) {\n acc[key] = extendedObj[key] as ZodTypeAny;\n continue;\n }\n\n return null;\n }\n\n return acc;\n};\n\ninterface AdditionalPropertyOptions {\n unknownKeys?: UnknownKeysParam;\n catchAll: ZodType;\n}\n\nexport const createObjectSchemaFromShape = (\n shape: ZodRawShape,\n { unknownKeys, catchAll }: AdditionalPropertyOptions,\n state: SchemaState,\n): oas31.SchemaObject => {\n const properties = mapProperties(shape, state);\n const required = mapRequired(shape, state);\n return {\n type: 'object',\n ...(properties && { properties }),\n ...(required && { required }),\n ...(unknownKeys === 'strict' && { additionalProperties: false }),\n ...(!isZodType(catchAll, 'ZodNever') && {\n additionalProperties: createSchemaObject(catchAll, state, [\n 'additional properties',\n ]),\n }),\n };\n};\n\nexport const mapRequired = (\n shape: ZodRawShape,\n state: SchemaState,\n): oas31.SchemaObject['required'] => {\n const required: string[] = Object.entries(shape)\n .filter(([_key, zodSchema]) => !isOptionalSchema(zodSchema, state))\n .map(([key]) => key);\n\n if (!required.length) {\n return undefined;\n }\n\n return required;\n};\n\nexport const mapProperties = (\n shape: ZodRawShape,\n state: SchemaState,\n): oas31.SchemaObject['properties'] =>\n Object.entries(shape).reduce<NonNullable<oas31.SchemaObject['properties']>>(\n (acc, [key, zodSchema]): NonNullable<oas31.SchemaObject['properties']> => {\n acc[key] = createSchemaObject(zodSchema, state, [`property: ${key}`]);\n return acc;\n },\n {},\n );\n", "import type { ZodPipeline, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createPipelineSchema = <\n A extends ZodTypeAny,\n B extends ZodTypeAny,\n>(\n zodPipeline: ZodPipeline<A, B>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodPipeline._def.openapi?.effectType === 'input') {\n return createSchemaObject(zodPipeline._def.in, state, ['pipeline input']);\n }\n\n if (zodPipeline._def.openapi?.effectType === 'output') {\n return createSchemaObject(zodPipeline._def.out, state, ['pipeline output']);\n }\n\n if (state.type === 'input') {\n state.effectType = 'input';\n return createSchemaObject(zodPipeline._def.in, state, ['pipeline input']);\n }\n\n state.effectType = 'output';\n return createSchemaObject(zodPipeline._def.out, state, ['pipeline output']);\n};\n", "import type { ZodEffects, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createPreprocessSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodPreprocess: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodPreprocess._def.schema, state, ['preprocess schema']);\n", "import type { ZodReadonly, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createReadonlySchema = <T extends ZodTypeAny>(\n zodReadonly: ZodReadonly<T>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => // Readonly doesn't change OpenAPI schema\n createSchemaObject(zodReadonly._def.innerType, state, ['readonly']);\n", "import type { KeySchema, ZodRecord, ZodString, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createRecordSchema = <\n Key extends KeySchema = ZodString,\n Value extends ZodTypeAny = ZodTypeAny,\n>(\n zodRecord: ZodRecord<Key, Value>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const additionalProperties = createSchemaObject(\n zodRecord.valueSchema as ZodTypeAny,\n state,\n ['record value'],\n );\n\n const keySchema = createSchemaObject(zodRecord.keySchema, state, [\n 'record key',\n ]);\n\n const maybeComponent =\n '$ref' in keySchema && state.components.schemas.get(zodRecord.keySchema);\n const maybeSchema =\n maybeComponent &&\n maybeComponent.type === 'complete' &&\n maybeComponent.schemaObject;\n\n const renderedKeySchema = maybeSchema || keySchema;\n\n if ('enum' in renderedKeySchema && renderedKeySchema.enum) {\n return {\n type: 'object',\n properties: (renderedKeySchema.enum as string[]).reduce<\n NonNullable<oas31.SchemaObject['properties']>\n >((acc, key) => {\n acc[key] = additionalProperties;\n return acc;\n }, {}),\n additionalProperties: false,\n };\n }\n\n if (\n satisfiesVersion(state.components.openapi, '3.1.0') &&\n 'type' in renderedKeySchema &&\n renderedKeySchema.type === 'string' &&\n Object.keys(renderedKeySchema).length > 1\n ) {\n return {\n type: 'object',\n // @ts-expect-error FIXME: https://github.com/metadevpro/openapi3-ts/pull/120\n propertyNames: keySchema,\n additionalProperties,\n };\n }\n\n return {\n type: 'object',\n additionalProperties,\n };\n};\n", "import type { ZodEffects, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createRefineSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodRefine: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject =>\n createSchemaObject(zodRefine._def.schema, state, ['refine schema']);\n", "import type { ZodSet, ZodTypeAny } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createSetSchema = <Value extends ZodTypeAny = ZodTypeAny>(\n zodSet: ZodSet<Value>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schema = zodSet._def.valueType;\n const minItems = zodSet._def.minSize?.value;\n const maxItems = zodSet._def.maxSize?.value;\n return {\n type: 'array',\n items: createSchemaObject(schema, state, ['set items']),\n uniqueItems: true,\n ...(minItems !== undefined && { minItems }),\n ...(maxItems !== undefined && { maxItems }),\n };\n};\n", "import type { ZodString, ZodStringCheck } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createStringSchema = (\n zodString: ZodString,\n): oas31.SchemaObject => {\n const zodStringChecks = getZodStringChecks(zodString);\n const format = mapStringFormat(zodStringChecks);\n const patterns = mapPatterns(zodStringChecks);\n const minLength =\n zodStringChecks.length?.[0]?.value ?? zodStringChecks.min?.[0]?.value;\n const maxLength =\n zodStringChecks.length?.[0]?.value ?? zodStringChecks.max?.[0]?.value;\n\n if (patterns.length <= 1) {\n return {\n type: 'string',\n ...(format && { format }),\n ...(patterns[0] && { pattern: patterns[0] }),\n ...(minLength !== undefined && { minLength }),\n ...(maxLength !== undefined && { maxLength }),\n };\n }\n\n return {\n allOf: [\n {\n type: 'string',\n ...(format && { format }),\n ...(patterns[0] && { pattern: patterns[0] }),\n ...(minLength !== undefined && { minLength }),\n ...(maxLength !== undefined && { maxLength }),\n },\n ...patterns.slice(1).map(\n (pattern): oas31.SchemaObject => ({\n type: 'string',\n pattern,\n }),\n ),\n ],\n };\n};\n\ntype ZodStringCheckMap = {\n [kind in ZodStringCheck['kind']]?: [\n Extract<ZodStringCheck, { kind: kind }>,\n ...Array<Extract<ZodStringCheck, { kind: kind }>>,\n ];\n};\n\nconst getZodStringChecks = (zodString: ZodString): ZodStringCheckMap =>\n zodString._def.checks.reduce<ZodStringCheckMap>(\n (acc, check: ZodStringCheck) => {\n const mapping = acc[check.kind];\n if (mapping) {\n mapping.push(check as never);\n return acc;\n }\n\n acc[check.kind] = [check as never];\n return acc;\n },\n {},\n );\n\nconst mapPatterns = (zodStringChecks: ZodStringCheckMap): string[] => {\n const startsWith = mapStartsWith(zodStringChecks);\n const endsWith = mapEndsWith(zodStringChecks);\n const regex = mapRegex(zodStringChecks);\n const includes = mapIncludes(zodStringChecks);\n\n const patterns: string[] = [\n ...(regex ?? []),\n ...(startsWith ? [startsWith] : []),\n ...(endsWith ? [endsWith] : []),\n ...(includes ?? []),\n ];\n\n return patterns;\n};\n\nconst mapStartsWith = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['pattern'] => {\n if (zodStringChecks.startsWith?.[0]?.value) {\n return `^${zodStringChecks.startsWith[0].value}`;\n }\n\n return undefined;\n};\n\nconst mapEndsWith = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['pattern'] => {\n if (zodStringChecks.endsWith?.[0]?.value) {\n return `${zodStringChecks.endsWith[0].value}$`;\n }\n\n return undefined;\n};\n\nconst mapRegex = (zodStringChecks: ZodStringCheckMap): string[] | undefined =>\n zodStringChecks.regex?.map((regexCheck) => regexCheck.regex.source);\n\nconst mapIncludes = (\n zodStringChecks: ZodStringCheckMap,\n): string[] | undefined =>\n zodStringChecks.includes?.map((includeCheck) => {\n if (includeCheck.position === 0) {\n return `^${includeCheck.value}`;\n }\n if (includeCheck.position) {\n return `^.{${includeCheck.position}}${includeCheck.value}`;\n }\n return includeCheck.value;\n });\n\nconst mapStringFormat = (\n zodStringChecks: ZodStringCheckMap,\n): oas31.SchemaObject['format'] => {\n if (zodStringChecks.uuid) {\n return 'uuid';\n }\n\n if (zodStringChecks.datetime) {\n return 'date-time';\n }\n\n if (zodStringChecks.email) {\n return 'email';\n }\n\n if (zodStringChecks.url) {\n return 'uri';\n }\n\n return undefined;\n};\n", "import type { ZodEffects, ZodType, ZodTypeAny, input, output } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nimport { createManualTypeSchema } from './manual';\n\nexport const createTransformSchema = <\n T extends ZodTypeAny,\n Output = output<T>,\n Input = input<T>,\n>(\n zodTransform: ZodEffects<T, Output, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodTransform._def.openapi?.effectType === 'output') {\n return createManualTypeSchema(zodTransform, state);\n }\n\n if (zodTransform._def.openapi?.effectType === 'input') {\n return createSchemaObject(zodTransform._def.schema, state, [\n 'transform input',\n ]);\n }\n\n if (state.type === 'output') {\n return createManualTypeSchema(zodTransform, state);\n }\n\n state.effectType = 'input';\n return createSchemaObject(zodTransform._def.schema, state, [\n 'transform input',\n ]);\n};\n\nexport const throwTransformError = (zodType: ZodType, state: SchemaState) => {\n throw new Error(\n `${JSON.stringify(zodType)} at ${state.path.join(\n ' > ',\n )} contains a transformation but is used in both an input and an output. This is likely a mistake. Set an \\`effectType\\`, wrap it in a ZodPipeline or assign it a manual type to resolve`,\n );\n};\n", "import type { ZodTuple, ZodTypeAny } from 'zod';\n\nimport { satisfiesVersion } from '../../../openapi';\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createTupleSchema = <\n T extends [] | [ZodTypeAny, ...ZodTypeAny[]] = [ZodTypeAny, ...ZodTypeAny[]],\n Rest extends ZodTypeAny | null = null,\n>(\n zodTuple: ZodTuple<T, Rest>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const items = zodTuple.items;\n const rest = zodTuple._def.rest;\n return {\n type: 'array',\n ...mapItemProperties(items, rest, state),\n } as oas31.SchemaObject;\n};\n\nconst mapPrefixItems = (\n items: ZodTypeAny[],\n state: SchemaState,\n): oas31.SchemaObject['prefixItems'] | undefined => {\n if (items.length) {\n return items.map((item, index) =>\n createSchemaObject(item, state, [`tuple item ${index}`]),\n );\n }\n return undefined;\n};\n\nconst mapItemProperties = (\n items: ZodTypeAny[],\n rest: ZodTypeAny | null,\n state: SchemaState,\n): Pick<\n oas31.SchemaObject,\n 'items' | 'minItems' | 'maxItems' | 'prefixItems'\n> => {\n const prefixItems = mapPrefixItems(items, state);\n\n if (satisfiesVersion(state.components.openapi, '3.1.0')) {\n if (!rest) {\n return {\n maxItems: items.length,\n minItems: items.length,\n ...(prefixItems && { prefixItems }),\n };\n }\n\n return {\n items: createSchemaObject(rest, state, ['tuple items']),\n ...(prefixItems && { prefixItems }),\n };\n }\n\n if (!rest) {\n return {\n maxItems: items.length,\n minItems: items.length,\n ...(prefixItems && { items: { oneOf: prefixItems } }),\n };\n }\n\n return {\n ...(prefixItems && {\n items: {\n oneOf: [\n ...prefixItems,\n createSchemaObject(rest, state, ['tuple items']),\n ],\n },\n }),\n };\n};\n", "import type { ZodTypeAny, ZodUnion } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { type SchemaState, createSchemaObject } from '../../schema';\n\nexport const createUnionSchema = <\n T extends readonly [ZodTypeAny, ...ZodTypeAny[]],\n>(\n zodUnion: ZodUnion<T>,\n state: SchemaState,\n): oas31.SchemaObject => {\n const schemas = zodUnion.options.map((option, index) =>\n createSchemaObject(option, state, [`union option ${index}`]),\n );\n return {\n anyOf: schemas,\n };\n};\n", "import type { ZodAny, ZodUnknown } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\n\nexport const createUnknownSchema = (\n _zodUnknown: ZodUnknown | ZodAny,\n): oas31.SchemaObject => ({});\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../../openapi3-ts/dist';\nimport { isZodType } from '../../../zodType';\nimport type { SchemaState } from '../../schema';\n\nimport { createArraySchema } from './array';\nimport { createBooleanSchema } from './boolean';\nimport { createBrandedSchema } from './brand';\nimport { createCatchSchema } from './catch';\nimport { createDateSchema } from './date';\nimport { createDefaultSchema } from './default';\nimport { createDiscriminatedUnionSchema } from './discriminatedUnion';\nimport { createEnumSchema } from './enum';\nimport { createIntersectionSchema } from './intersection';\nimport { createLazySchema } from './lazy';\nimport { createLiteralSchema } from './literal';\nimport { createManualTypeSchema } from './manual';\nimport { createNativeEnumSchema } from './nativeEnum';\nimport { createNullSchema } from './null';\nimport { createNullableSchema } from './nullable';\nimport { createNumberSchema } from './number';\nimport { createObjectSchema } from './object';\nimport { createOptionalSchema } from './optional';\nimport { createPipelineSchema } from './pipeline';\nimport { createPreprocessSchema } from './preprocess';\nimport { createReadonlySchema } from './readonly';\nimport { createRecordSchema } from './record';\nimport { createRefineSchema } from './refine';\nimport { createSetSchema } from './set';\nimport { createStringSchema } from './string';\nimport { createTransformSchema } from './transform';\nimport { createTupleSchema } from './tuple';\nimport { createUnionSchema } from './union';\nimport { createUnknownSchema } from './unknown';\n\nexport const createSchemaSwitch = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n): oas31.SchemaObject | oas31.ReferenceObject => {\n if (zodSchema._def.openapi?.type) {\n return createManualTypeSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodString')) {\n return createStringSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNumber')) {\n return createNumberSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodBoolean')) {\n return createBooleanSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodEnum')) {\n return createEnumSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodLiteral')) {\n return createLiteralSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNativeEnum')) {\n return createNativeEnumSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodArray')) {\n return createArraySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodObject')) {\n return createObjectSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodUnion')) {\n return createUnionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDiscriminatedUnion')) {\n return createDiscriminatedUnionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodNull')) {\n return createNullSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodNullable')) {\n return createNullableSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodOptional')) {\n return createOptionalSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodReadonly')) {\n return createReadonlySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDefault')) {\n return createDefaultSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodRecord')) {\n return createRecordSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodTuple')) {\n return createTupleSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodDate')) {\n return createDateSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodPipeline')) {\n return createPipelineSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'transform'\n ) {\n return createTransformSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'preprocess'\n ) {\n return createPreprocessSchema(zodSchema, state);\n }\n\n if (\n isZodType(zodSchema, 'ZodEffects') &&\n zodSchema._def.effect.type === 'refinement'\n ) {\n return createRefineSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodNativeEnum')) {\n return createNativeEnumSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodIntersection')) {\n return createIntersectionSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodCatch')) {\n return createCatchSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodUnknown') || isZodType(zodSchema, 'ZodAny')) {\n return createUnknownSchema(zodSchema);\n }\n\n if (isZodType(zodSchema, 'ZodLazy')) {\n return createLazySchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodBranded')) {\n return createBrandedSchema(zodSchema, state);\n }\n\n if (isZodType(zodSchema, 'ZodSet')) {\n return createSetSchema(zodSchema, state);\n }\n\n return createManualTypeSchema(zodSchema, state);\n};\n", "import type { ZodType, ZodTypeDef } from 'zod';\n\nimport type { oas31 } from '../../openapi3-ts/dist';\nimport {\n type ComponentsObject,\n type CreationType,\n type SchemaComponent,\n createComponentSchemaRef,\n} from '../components';\n\nimport { enhanceWithMetadata } from './metadata';\nimport { createSchemaSwitch } from './parsers';\nimport { throwTransformError } from './parsers/transform';\n\nexport type LazyMap = Map<ZodType, true>;\n\nexport interface SchemaState {\n components: ComponentsObject;\n type: CreationType;\n effectType?: CreationType;\n path: string[];\n visited: Set<ZodType>;\n}\n\nexport const newSchemaState = (state: SchemaState): SchemaState => ({\n type: state.type,\n components: state.components,\n path: [...state.path],\n visited: new Set(state.visited),\n});\n\nexport const createNewSchema = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n newState: SchemaState,\n subpath: string[],\n): Schema => {\n newState.path.push(...subpath);\n if (newState.visited.has(zodSchema)) {\n throw new Error(\n `The schema at ${newState.path.join(\n ' > ',\n )} needs to be registered because it's circularly referenced`,\n );\n }\n newState.visited.add(zodSchema);\n const { effectType, param, header, ref, refType, ...additionalMetadata } =\n zodSchema._def.openapi ?? {};\n\n const schema = createSchemaSwitch(zodSchema, newState);\n const description = zodSchema.description;\n\n const schemaWithMetadata = enhanceWithMetadata(schema, {\n ...(description && { description }),\n ...additionalMetadata,\n });\n\n return {\n schema: schemaWithMetadata,\n newState,\n };\n};\n\nexport const createNewRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n ref: string,\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): Schema => {\n state.components.schemas.set(zodSchema, {\n type: 'in-progress',\n ref,\n });\n\n const newSchema = createNewSchema(\n zodSchema,\n newSchemaState({ ...state, visited: new Set() }),\n subpath,\n );\n\n state.components.schemas.set(zodSchema, {\n type: 'complete',\n ref,\n schemaObject: newSchema.schema,\n creationType: newSchema.newState?.effectType,\n });\n\n return {\n schema: { $ref: createComponentSchemaRef(ref) },\n newState: newSchema.newState,\n };\n};\n\nexport const createExistingRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n component: SchemaComponent | undefined,\n state: SchemaState,\n subpath: string[],\n): Schema | undefined => {\n const newState = newSchemaState(state);\n newState.path.push(...subpath);\n\n if (component && component.type === 'complete') {\n if (component.creationType && component.creationType !== state.type) {\n throwTransformError(zodSchema, newState);\n }\n\n return {\n schema: { $ref: createComponentSchemaRef(component.ref) },\n newState: {\n ...newState,\n effectType: component.creationType,\n },\n };\n }\n\n if (component && component.type === 'in-progress') {\n return {\n schema: { $ref: createComponentSchemaRef(component.ref) },\n newState,\n };\n }\n\n return;\n};\n\ntype Schema = {\n schema: oas31.ReferenceObject | oas31.SchemaObject;\n newState: SchemaState;\n};\n\nexport const createSchemaOrRef = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): Schema => {\n const component = state.components.schemas.get(zodSchema);\n const existingRef = createExistingRef(zodSchema, component, state, subpath);\n\n if (existingRef) {\n return existingRef;\n }\n\n const ref = zodSchema._def.openapi?.ref ?? component?.ref;\n if (ref) {\n return createNewRef(ref, zodSchema, state, subpath);\n }\n\n return createNewSchema(zodSchema, newSchemaState(state), subpath);\n};\n\nexport const createSchemaObject = <\n Output = unknown,\n Def extends ZodTypeDef = ZodTypeDef,\n Input = Output,\n>(\n zodSchema: ZodType<Output, Def, Input>,\n state: SchemaState,\n subpath: string[],\n): oas31.ReferenceObject | oas31.SchemaObject => {\n const { schema, newState } = createSchemaOrRef(zodSchema, state, subpath);\n if (newState?.effectType) {\n if (\n state.type !== newState?.effectType ||\n (state.effectType && newState.effectType !== state.effectType)\n ) {\n throwTransformError(zodSchema, newState);\n }\n state.effectType = newState.effectType;\n }\n return schema;\n};\n", "import type { AnyZodObject, ZodRawShape, ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type { ComponentsObject } from './components';\nimport type { ZodOpenApiParameters } from './document';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\nimport { isOptionalSchema } from './schema/parsers/optional';\n\nexport const createComponentParamRef = (ref: string) =>\n `#/components/parameters/${ref}`;\n\nexport const createBaseParameter = (\n schema: ZodType,\n components: ComponentsObject,\n subpath: string[],\n): oas31.BaseParameterObject => {\n const { ref, ...rest } = schema._def.openapi?.param ?? {};\n const state: SchemaState = newSchemaState({\n components,\n type: 'input',\n path: [],\n visited: new Set(),\n });\n const schemaObject = createSchemaObject(schema, state, [\n ...subpath,\n 'schema',\n ]);\n const required = !isOptionalSchema(schema, state);\n return {\n ...rest,\n ...(schema && { schema: schemaObject }),\n ...(required && { required }),\n };\n};\n\nexport const createParamOrRef = (\n zodSchema: ZodType,\n components: ComponentsObject,\n subpath: string[],\n type?: keyof ZodOpenApiParameters,\n name?: string,\n): oas31.ParameterObject | oas31.ReferenceObject => {\n const component = components.parameters.get(zodSchema);\n const paramType = zodSchema._def?.openapi?.param?.in ?? component?.in ?? type;\n const paramName =\n zodSchema._def?.openapi?.param?.name ?? component?.name ?? name;\n\n if (!paramType) {\n throw new Error('Parameter type missing');\n }\n\n if (!paramName) {\n throw new Error('Parameter name missing');\n }\n\n if (component && component.type === 'complete') {\n if (\n !('$ref' in component.paramObject) &&\n (component.in !== type || component.name !== name)\n ) {\n throw new Error(`parameterRef \"${component.ref}\" is already registered`);\n }\n return {\n $ref: createComponentParamRef(component.ref),\n };\n }\n\n // Optional Objects can return a reference object\n const baseParamOrRef = createBaseParameter(zodSchema, components, subpath);\n if ('$ref' in baseParamOrRef) {\n throw new Error('Unexpected Error: received a reference object');\n }\n\n const ref = zodSchema?._def?.openapi?.param?.ref ?? component?.ref;\n\n const paramObject: oas31.ParameterObject = {\n in: paramType,\n name: paramName,\n ...baseParamOrRef,\n };\n\n if (ref) {\n components.parameters.set(zodSchema, {\n type: 'complete',\n paramObject,\n ref,\n in: paramType,\n name: paramName,\n });\n\n return {\n $ref: createComponentParamRef(ref),\n };\n }\n\n return paramObject;\n};\n\nconst createParameters = (\n type: keyof ZodOpenApiParameters,\n zodObject: AnyZodObject | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> => {\n if (!zodObject) {\n return [];\n }\n\n return Object.entries(zodObject.shape as ZodRawShape).map(\n ([key, zodSchema]: [string, ZodType]) =>\n createParamOrRef(zodSchema, components, [...subpath, key], type, key),\n );\n};\n\nconst createRequestParams = (\n requestParams: ZodOpenApiParameters | undefined,\n components: ComponentsObject,\n subpath: string[],\n): NonNullable<oas31.OperationObject['parameters']> => {\n if (!requestParams) {\n return [];\n }\n\n const pathParams = createParameters('path', requestParams.path, components, [\n ...subpath,\n 'path',\n ]);\n const queryParams = createParameters(\n 'query',\n requestParams.query,\n components,\n [...subpath, 'query'],\n );\n const cookieParams = createParameters(\n 'cookie',\n requestParams.cookie,\n components,\n [...subpath, 'cookie'],\n );\n const headerParams = createParameters(\n 'header',\n requestParams.header,\n components,\n [...subpath, 'header'],\n );\n\n return [...pathParams, ...queryParams, ...cookieParams, ...headerParams];\n};\n\nexport const createManualParameters = (\n parameters:\n | Array<\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject\n | ZodType\n >\n | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> =>\n parameters?.map((param, index) => {\n if (isAnyZodType(param)) {\n return createParamOrRef(param, components, [\n ...subpath,\n `param index ${index}`,\n ]);\n }\n return param as oas31.ParameterObject | oas31.ReferenceObject;\n }) ?? [];\n\nexport const createParametersObject = (\n parameters:\n | Array<\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject\n | ZodType\n >\n | undefined,\n requestParams: ZodOpenApiParameters | undefined,\n components: ComponentsObject,\n subpath: string[],\n): Array<oas31.ParameterObject | oas31.ReferenceObject> | undefined => {\n const manualParameters = createManualParameters(\n parameters,\n components,\n subpath,\n );\n const createdParams = createRequestParams(requestParams, components, subpath);\n const combinedParameters: oas31.OperationObject['parameters'] = [\n ...manualParameters,\n ...createdParams,\n ];\n\n return combinedParameters.length ? combinedParameters : undefined;\n};\n", "import type { ZodType } from 'zod';\n\nimport type { oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type { ComponentsObject, CreationType } from './components';\nimport type {\n ZodOpenApiContentObject,\n ZodOpenApiMediaTypeObject,\n} from './document';\nimport { createSchemaObject, newSchemaState } from './schema';\n\nexport const createMediaTypeSchema = (\n schemaObject:\n | ZodType\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | undefined,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.SchemaObject | oas31.ReferenceObject | undefined => {\n if (!schemaObject) {\n return undefined;\n }\n\n if (!isAnyZodType(schemaObject)) {\n return schemaObject;\n }\n\n return createSchemaObject(\n schemaObject,\n newSchemaState({\n components,\n type,\n path: [],\n visited: new Set(),\n }),\n subpath,\n );\n};\n\nconst createMediaTypeObject = (\n mediaTypeObject: ZodOpenApiMediaTypeObject | undefined,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.MediaTypeObject | undefined => {\n if (!mediaTypeObject) {\n return undefined;\n }\n\n return {\n ...mediaTypeObject,\n schema: createMediaTypeSchema(mediaTypeObject.schema, components, type, [\n ...subpath,\n 'schema',\n ]),\n };\n};\n\nexport const createContent = (\n contentObject: ZodOpenApiContentObject,\n components: ComponentsObject,\n type: CreationType,\n subpath: string[],\n): oas31.ContentObject =>\n Object.entries(contentObject).reduce<oas31.ContentObject>(\n (acc, [mediaType, zodOpenApiMediaTypeObject]): oas31.ContentObject => {\n const mediaTypeObject = createMediaTypeObject(\n zodOpenApiMediaTypeObject,\n components,\n type,\n [...subpath, mediaType],\n );\n\n if (mediaTypeObject) {\n acc[mediaType] = mediaTypeObject;\n }\n return acc;\n },\n {},\n );\n", "import type { oas31 } from '../openapi3-ts/dist';\n\nexport const isISpecificationExtension = (\n key: string,\n): key is oas31.IExtensionName => key.startsWith('x-');\n", "import type { AnyZodObject, ZodRawShape, ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport {\n type ComponentsObject,\n createComponentResponseRef,\n} from './components';\nimport { createContent } from './content';\nimport type {\n ZodOpenApiResponseObject,\n ZodOpenApiResponsesObject,\n} from './document';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\nimport { isOptionalSchema } from './schema/parsers/optional';\nimport { isISpecificationExtension } from './specificationExtension';\n\nexport const createResponseHeaders = (\n responseHeaders:\n | oas31.HeadersObject\n | oas30.HeadersObject\n | AnyZodObject\n | undefined,\n components: ComponentsObject,\n): oas31.ResponseObject['headers'] => {\n if (!responseHeaders) {\n return undefined;\n }\n\n if (isAnyZodType(responseHeaders)) {\n return Object.entries(responseHeaders.shape as ZodRawShape).reduce<\n NonNullable<oas31.ResponseObject['headers']>\n >((acc, [key, zodSchema]: [string, ZodType]) => {\n acc[key] = createHeaderOrRef(zodSchema, components);\n return acc;\n }, {});\n }\n\n return responseHeaders as oas31.ResponseObject['headers'];\n};\n\nexport const createHeaderOrRef = (\n schema: ZodType,\n components: ComponentsObject,\n): oas31.BaseParameterObject | oas31.ReferenceObject => {\n const component = components.headers.get(schema);\n if (component && component.type === 'complete') {\n return {\n $ref: createComponentHeaderRef(component.ref),\n };\n }\n\n // Optional Objects can return a reference object\n const baseHeader = createBaseHeader(schema, components);\n if ('$ref' in baseHeader) {\n throw new Error('Unexpected Error: received a reference object');\n }\n\n const ref = schema._def?.openapi?.header?.ref ?? component?.ref;\n\n if (ref) {\n components.headers.set(schema, {\n type: 'complete',\n headerObject: baseHeader,\n ref,\n });\n return {\n $ref: createComponentHeaderRef(ref),\n };\n }\n\n return baseHeader;\n};\n\nexport const createBaseHeader = (\n schema: ZodType,\n components: ComponentsObject,\n): oas31.BaseParameterObject => {\n const { ref, ...rest } = schema._def.openapi?.header ?? {};\n const state: SchemaState = newSchemaState({\n components,\n type: 'output',\n path: [],\n visited: new Set(),\n });\n const schemaObject = createSchemaObject(schema, state, ['header']);\n const required = !isOptionalSchema(schema, state);\n return {\n ...rest,\n ...(schema && { schema: schemaObject }),\n ...(required && { required }),\n };\n};\n\nexport const createComponentHeaderRef = (ref: string) =>\n `#/components/headers/${ref}`;\n\nexport const createResponse = (\n responseObject: ZodOpenApiResponseObject | oas31.ReferenceObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ResponseObject | oas31.ReferenceObject => {\n if ('$ref' in responseObject) {\n return responseObject;\n }\n\n const component = components.responses.get(responseObject);\n if (component && component.type === 'complete') {\n return { $ref: createComponentResponseRef(component.ref) };\n }\n\n const { content, headers, ref, ...rest } = responseObject;\n\n const maybeHeaders = createResponseHeaders(headers, components);\n\n const response: oas31.ResponseObject = {\n ...rest,\n ...(maybeHeaders && { headers: maybeHeaders }),\n ...(content && {\n content: createContent(content, components, 'output', [\n ...subpath,\n 'content',\n ]),\n }),\n };\n\n const responseRef = ref ?? component?.ref;\n\n if (responseRef) {\n components.responses.set(responseObject, {\n responseObject: response,\n ref: responseRef,\n type: 'complete',\n });\n return {\n $ref: createComponentResponseRef(responseRef),\n };\n }\n\n return response;\n};\n\nexport const createResponses = (\n responsesObject: ZodOpenApiResponsesObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ResponsesObject =>\n Object.entries(responsesObject).reduce<oas31.ResponsesObject>(\n (\n acc,\n [statusCode, responseObject]: [\n string,\n ZodOpenApiResponseObject | oas31.ReferenceObject,\n ],\n ): oas31.ResponsesObject => {\n if (isISpecificationExtension(statusCode)) {\n acc[statusCode] = responseObject;\n return acc;\n }\n acc[statusCode] = createResponse(responseObject, components, [\n ...subpath,\n statusCode,\n ]);\n return acc;\n },\n {},\n );\n", "import type { oas31 } from '../openapi3-ts/dist';\n\nimport {\n type ComponentsObject,\n createComponentRequestBodyRef,\n} from './components';\nimport { createContent } from './content';\nimport type {\n ZodOpenApiOperationObject,\n ZodOpenApiPathItemObject,\n ZodOpenApiPathsObject,\n ZodOpenApiRequestBodyObject,\n} from './document';\nimport { createParametersObject } from './parameters';\nimport { createResponses } from './responses';\nimport { isISpecificationExtension } from './specificationExtension';\n\nexport const createRequestBody = (\n requestBodyObject: ZodOpenApiRequestBodyObject | undefined,\n components: ComponentsObject,\n subpath: string[],\n): oas31.ReferenceObject | oas31.RequestBodyObject | undefined => {\n if (!requestBodyObject) {\n return undefined;\n }\n\n const component = components.requestBodies.get(requestBodyObject);\n if (component && component.type === 'complete') {\n return {\n $ref: createComponentRequestBodyRef(component.ref),\n };\n }\n\n const ref = requestBodyObject.ref ?? component?.ref;\n\n const requestBody: oas31.RequestBodyObject = {\n ...requestBodyObject,\n content: createContent(requestBodyObject.content, components, 'input', [\n ...subpath,\n 'content',\n ]),\n };\n\n if (ref) {\n components.requestBodies.set(requestBodyObject, {\n type: 'complete',\n ref,\n requestBodyObject: requestBody,\n });\n return {\n $ref: createComponentRequestBodyRef(ref),\n };\n }\n\n return requestBody;\n};\n\nconst createOperation = (\n operationObject: ZodOpenApiOperationObject,\n components: ComponentsObject,\n subpath: string[],\n): oas31.OperationObject | undefined => {\n const { parameters, requestParams, requestBody, responses, ...rest } =\n operationObject;\n\n const maybeParameters = createParametersObject(\n parameters,\n requestParams,\n components,\n [...subpath, 'parameters'],\n );\n\n const maybeRequestBody = createRequestBody(\n operationObject.requestBody,\n components,\n [...subpath, 'request body'],\n );\n\n const maybeResponses = createResponses(\n operationObject.responses,\n components,\n [...subpath, 'responses'],\n );\n\n return {\n ...rest,\n ...(maybeParameters && { parameters: maybeParameters }),\n ...(maybeRequestBody && { requestBody: maybeRequestBody }),\n ...(maybeResponses && { responses: maybeResponses }),\n };\n};\n\nconst createPathItem = (\n pathObject: ZodOpenApiPathItemObject,\n components: ComponentsObject,\n path: string,\n): oas31.PathItemObject =>\n Object.entries(pathObject).reduce<oas31.PathItemObject>(\n (acc, [key, value]) => {\n if (!value) {\n return acc;\n }\n\n if (\n key === 'get' ||\n key === 'put' ||\n key === 'post' ||\n key === 'delete' ||\n key === 'options' ||\n key === 'head' ||\n key === 'patch' ||\n key === 'trace'\n ) {\n acc[key] = createOperation(\n value as ZodOpenApiOperationObject,\n components,\n [path, key],\n );\n return acc;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n acc[key as keyof typeof pathObject] = value;\n return acc;\n },\n {},\n );\n\nexport const createPaths = (\n pathsObject: ZodOpenApiPathsObject | undefined,\n components: ComponentsObject,\n): oas31.PathsObject | undefined => {\n if (!pathsObject) {\n return undefined;\n }\n\n return Object.entries(pathsObject).reduce<oas31.PathsObject>(\n (acc, [path, pathItemObject]): oas31.PathsObject => {\n if (isISpecificationExtension(path)) {\n acc[path] = pathItemObject;\n return acc;\n }\n acc[path] = createPathItem(pathItemObject, components, path);\n return acc;\n },\n {},\n );\n};\n", "import type { ZodType } from 'zod';\n\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\nimport { isAnyZodType } from '../zodType';\n\nimport type {\n ZodOpenApiComponentsObject,\n ZodOpenApiRequestBodyObject,\n ZodOpenApiResponseObject,\n ZodOpenApiVersion,\n} from './document';\nimport { createParamOrRef } from './parameters';\nimport { createRequestBody } from './paths';\nimport { createHeaderOrRef, createResponse } from './responses';\nimport { type SchemaState, createSchemaObject, newSchemaState } from './schema';\n\nexport type CreationType = 'input' | 'output';\n\nexport interface CompleteSchemaComponent extends BaseSchemaComponent {\n type: 'complete';\n schemaObject:\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | oas30.SchemaObject\n | oas30.ReferenceObject;\n /** Set when the created schemaObject is specific to a particular CreationType */\n creationType?: CreationType;\n}\n\n/**\n *\n */\nexport interface ManualSchemaComponent extends BaseSchemaComponent {\n type: 'manual';\n}\n\nexport interface InProgressSchemaComponent extends BaseSchemaComponent {\n type: 'in-progress';\n}\n\ninterface BaseSchemaComponent {\n ref: string;\n}\n\nexport type SchemaComponent =\n | CompleteSchemaComponent\n | ManualSchemaComponent\n | InProgressSchemaComponent;\n\nexport type SchemaComponentMap = Map<ZodType, SchemaComponent>;\n\nexport interface CompleteParameterComponent extends BaseParameterComponent {\n type: 'complete';\n paramObject:\n | oas31.ParameterObject\n | oas31.ReferenceObject\n | oas30.ParameterObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialParameterComponent extends BaseParameterComponent {\n type: 'manual';\n}\n\ninterface BaseParameterComponent {\n ref: string;\n in: oas31.ParameterLocation;\n name: string;\n}\n\nexport type ParameterComponent =\n | CompleteParameterComponent\n | PartialParameterComponent;\n\nexport type ParameterComponentMap = Map<ZodType, ParameterComponent>;\n\nexport interface CompleteHeaderComponent extends BaseHeaderComponent {\n type: 'complete';\n headerObject:\n | oas31.HeaderObject\n | oas31.ReferenceObject\n | oas30.HeaderObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialHeaderComponent extends BaseHeaderComponent {\n type: 'manual';\n}\n\ninterface BaseHeaderComponent {\n ref: string;\n}\n\nexport type HeaderComponent = CompleteHeaderComponent | PartialHeaderComponent;\n\nexport type HeaderComponentMap = Map<ZodType, HeaderComponent>;\n\ninterface BaseResponseComponent {\n ref: string;\n}\n\nexport interface CompleteResponseComponent extends BaseResponseComponent {\n type: 'complete';\n responseObject:\n | oas31.ResponseObject\n | oas31.ReferenceObject\n | oas30.ResponseObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialResponseComponent extends BaseResponseComponent {\n type: 'manual';\n}\n\nexport type ResponseComponent =\n | CompleteResponseComponent\n | PartialResponseComponent;\n\nexport type ResponseComponentMap = Map<\n ZodOpenApiResponseObject,\n ResponseComponent\n>;\n\ninterface BaseRequestBodyComponent {\n ref: string;\n}\n\nexport interface CompleteRequestBodyComponent extends BaseRequestBodyComponent {\n type: 'complete';\n requestBodyObject:\n | oas31.RequestBodyObject\n | oas31.ReferenceObject\n | oas30.RequestBodyObject\n | oas30.ReferenceObject;\n}\n\nexport interface PartialRequestBodyComponent extends BaseRequestBodyComponent {\n type: 'manual';\n}\n\nexport type RequestBodyComponent =\n | CompleteRequestBodyComponent\n | PartialRequestBodyComponent;\n\nexport type RequestBodyComponentMap = Map<\n ZodOpenApiRequestBodyObject,\n RequestBodyComponent\n>;\n\nexport interface ComponentsObject {\n schemas: SchemaComponentMap;\n parameters: ParameterComponentMap;\n headers: HeaderComponentMap;\n requestBodies: RequestBodyComponentMap;\n responses: ResponseComponentMap;\n openapi: ZodOpenApiVersion;\n}\n\nexport const getDefaultComponents = (\n componentsObject?: ZodOpenApiComponentsObject,\n openapi: ZodOpenApiVersion = '3.1.0',\n): ComponentsObject => {\n const defaultComponents: ComponentsObject = {\n schemas: new Map(),\n parameters: new Map(),\n headers: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n openapi,\n };\n if (!componentsObject) {\n return defaultComponents;\n }\n\n getSchemas(componentsObject.schemas, defaultComponents);\n getParameters(componentsObject.parameters, defaultComponents);\n getRequestBodies(componentsObject.requestBodies, defaultComponents);\n getHeaders(componentsObject.headers, defaultComponents);\n getResponses(componentsObject.responses, defaultComponents);\n\n return defaultComponents;\n};\n\nconst getSchemas = (\n schemas: ZodOpenApiComponentsObject['schemas'],\n components: ComponentsObject,\n): void => {\n if (!schemas) {\n return;\n }\n\n Object.entries(schemas).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.schemas.has(schema)) {\n throw new Error(\n `Schema ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.ref ?? key;\n components.schemas.set(schema, {\n type: 'manual',\n ref,\n });\n }\n });\n};\n\nconst getParameters = (\n parameters: ZodOpenApiComponentsObject['parameters'],\n components: ComponentsObject,\n): void => {\n if (!parameters) {\n return;\n }\n\n Object.entries(parameters).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.parameters.has(schema)) {\n throw new Error(\n `Parameter ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.param?.ref ?? key;\n const name = schema._def.openapi?.param?.name;\n const location = schema._def.openapi?.param?.in;\n\n if (!name || !location) {\n throw new Error('`name` or `in` missing in .openapi()');\n }\n components.parameters.set(schema, {\n type: 'manual',\n ref,\n in: location,\n name,\n });\n }\n });\n};\n\nconst getHeaders = (\n responseHeaders: ZodOpenApiComponentsObject['headers'],\n components: ComponentsObject,\n): void => {\n if (!responseHeaders) {\n return;\n }\n\n Object.entries(responseHeaders).forEach(([key, schema]) => {\n if (isAnyZodType(schema)) {\n if (components.parameters.has(schema)) {\n throw new Error(\n `Header ${JSON.stringify(schema._def)} is already registered`,\n );\n }\n const ref = schema._def.openapi?.param?.ref ?? key;\n components.headers.set(schema, {\n type: 'manual',\n ref,\n });\n }\n });\n};\n\nconst getResponses = (\n responses: ZodOpenApiComponentsObject['responses'],\n components: ComponentsObject,\n): void => {\n if (!responses) {\n return;\n }\n\n Object.entries(responses).forEach(([key, responseObject]) => {\n if (components.responses.has(responseObject)) {\n throw new Error(\n `Header ${JSON.stringify(responseObject)} is already registered`,\n );\n }\n const ref = responseObject?.ref ?? key;\n components.responses.set(responseObject, {\n type: 'manual',\n ref,\n });\n });\n};\n\nconst getRequestBodies = (\n requestBodies: ZodOpenApiComponentsObject['requestBodies'],\n components: ComponentsObject,\n): void => {\n if (!requestBodies) {\n return;\n }\n\n Object.entries(requestBodies).forEach(([key, requestBody]) => {\n if (components.requestBodies.has(requestBody)) {\n throw new Error(\n `Header ${JSON.stringify(requestBody)} is already registered`,\n );\n }\n const ref = requestBody?.ref ?? key;\n components.requestBodies.set(requestBody, {\n type: 'manual',\n ref,\n });\n });\n};\n\nexport const createComponentSchemaRef = (schemaRef: string) =>\n `#/components/schemas/${schemaRef}`;\n\nexport const createComponentResponseRef = (responseRef: string) =>\n `#/components/responses/${responseRef}`;\n\nexport const createComponentRequestBodyRef = (requestBodyRef: string) =>\n `#/components/requestBodies/${requestBodyRef}`;\n\nexport const createComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject | undefined => {\n const combinedSchemas = createSchemaComponents(componentsObject, components);\n const combinedParameters = createParamComponents(\n componentsObject,\n components,\n );\n const combinedHeaders = createHeaderComponents(componentsObject, components);\n const combinedResponses = createResponseComponents(components);\n const combinedRequestBodies = createRequestBodiesComponents(components);\n\n const { schemas, parameters, headers, responses, requestBodies, ...rest } =\n componentsObject;\n\n const finalComponents: oas31.ComponentsObject = {\n ...rest,\n ...(combinedSchemas && { schemas: combinedSchemas }),\n ...(combinedParameters && { parameters: combinedParameters }),\n ...(combinedRequestBodies && { requestBodies: combinedRequestBodies }),\n ...(combinedHeaders && { headers: combinedHeaders }),\n ...(combinedResponses && { responses: combinedResponses }),\n };\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createSchemaComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['schemas'] => {\n Array.from(components.schemas).forEach(([schema, { type }], index) => {\n if (type === 'manual') {\n const state: SchemaState = newSchemaState({\n components,\n type: schema._def.openapi?.refType ?? 'output',\n path: [],\n visited: new Set(),\n });\n\n createSchemaObject(schema, state, [`component schema index ${index}`]);\n }\n });\n\n const customComponents = Object.entries(\n componentsObject.schemas ?? {},\n ).reduce<NonNullable<oas31.ComponentsObject['schemas']>>(\n (acc, [key, value]) => {\n if (isAnyZodType(value)) {\n return acc;\n }\n\n if (acc[key]) {\n throw new Error(`Schema \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.SchemaObject | oas31.ReferenceObject;\n return acc;\n },\n {},\n );\n\n const finalComponents = Array.from(components.schemas).reduce<\n NonNullable<oas31.ComponentsObject['schemas']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Schema \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.schemaObject as oas31.SchemaObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createParamComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['parameters'] => {\n Array.from(components.parameters).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createParamOrRef(\n schema,\n components,\n [`component parameter index ${index}`],\n component.in,\n component.ref,\n );\n }\n });\n\n const customComponents = Object.entries(\n componentsObject.parameters ?? {},\n ).reduce<NonNullable<oas31.ComponentsObject['parameters']>>(\n (acc, [key, value]) => {\n if (!isAnyZodType(value)) {\n if (acc[key]) {\n throw new Error(`Parameter \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.ParameterObject;\n }\n return acc;\n },\n {},\n );\n\n const finalComponents = Array.from(components.parameters).reduce<\n NonNullable<oas31.ComponentsObject['parameters']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Parameter \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.paramObject as oas31.ParameterObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createHeaderComponents = (\n componentsObject: ZodOpenApiComponentsObject,\n components: ComponentsObject,\n): oas31.ComponentsObject['headers'] => {\n Array.from(components.headers).forEach(([schema, component]) => {\n if (component.type === 'manual') {\n createHeaderOrRef(schema, components);\n }\n });\n\n const headers = componentsObject.headers ?? {};\n const customComponents = Object.entries(headers).reduce<\n NonNullable<oas31.ComponentsObject['headers']>\n >((acc, [key, value]) => {\n if (!isAnyZodType(value)) {\n if (acc[key]) {\n throw new Error(`Header Ref \"${key}\" is already registered`);\n }\n\n acc[key] = value as oas31.HeaderObject;\n }\n return acc;\n }, {});\n\n const finalComponents = Array.from(components.headers).reduce<\n NonNullable<oas31.ComponentsObject['headers']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Header \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.headerObject as oas31.HeaderObject;\n }\n\n return acc;\n }, customComponents);\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createResponseComponents = (\n components: ComponentsObject,\n): oas31.ComponentsObject['responses'] => {\n Array.from(components.responses).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createResponse(schema, components, [`component response index ${index}`]);\n }\n });\n\n const finalComponents = Array.from(components.responses).reduce<\n NonNullable<oas31.ComponentsObject['responses']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`Response \"${component.ref}\" is already registered`);\n }\n acc[component.ref] = component.responseObject as oas31.ResponseObject;\n }\n\n return acc;\n }, {});\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n\nconst createRequestBodiesComponents = (\n components: ComponentsObject,\n): oas31.ComponentsObject['requestBodies'] => {\n Array.from(components.requestBodies).forEach(([schema, component], index) => {\n if (component.type === 'manual') {\n createRequestBody(schema, components, [\n `component request body ${index}`,\n ]);\n }\n });\n\n const finalComponents = Array.from(components.requestBodies).reduce<\n NonNullable<oas31.ComponentsObject['requestBodies']>\n >((acc, [_zodType, component]) => {\n if (component.type === 'complete') {\n if (acc[component.ref]) {\n throw new Error(`RequestBody \"${component.ref}\" is already registered`);\n }\n acc[component.ref] =\n component.requestBodyObject as oas31.RequestBodyObject;\n }\n\n return acc;\n }, {});\n\n return Object.keys(finalComponents).length ? finalComponents : undefined;\n};\n", "import type { AnyZodObject, ZodType } from 'zod';\n\nimport type { OpenApiVersion } from '../openapi';\nimport type { oas30, oas31 } from '../openapi3-ts/dist';\n\nimport { createComponents, getDefaultComponents } from './components';\nimport { createPaths } from './paths';\n\nexport interface ZodOpenApiMediaTypeObject\n extends Omit<oas31.MediaTypeObject & oas30.MediaTypeObject, 'schema'> {\n schema?: ZodType | oas31.SchemaObject | oas31.ReferenceObject;\n}\n\nexport interface ZodOpenApiContentObject {\n 'application/json'?: ZodOpenApiMediaTypeObject;\n [mediatype: string]: ZodOpenApiMediaTypeObject | undefined;\n}\n\nexport interface ZodOpenApiRequestBodyObject\n extends Omit<oas31.RequestBodyObject & oas30.RequestBodyObject, 'content'> {\n content: ZodOpenApiContentObject;\n /** Use this field to auto register this request body as a component */\n ref?: string;\n}\n\nexport interface ZodOpenApiResponseObject\n extends Omit<\n oas31.ResponseObject & oas30.ResponseObject,\n 'content' | 'headers'\n > {\n content?: ZodOpenApiContentObject;\n headers?: AnyZodObject | oas30.HeadersObject | oas31.HeadersObject;\n /** Use this field to auto register this response object as a component */\n ref?: string;\n}\n\nexport interface ZodOpenApiResponsesObject\n extends oas31.ISpecificationExtension {\n default?:\n | ZodOpenApiResponseObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject;\n [statuscode: `${1 | 2 | 3 | 4 | 5}${string}`]:\n | ZodOpenApiResponseObject\n | oas31.ReferenceObject;\n}\n\nexport type ZodOpenApiParameters = {\n [type in oas31.ParameterLocation & oas30.ParameterLocation]?: AnyZodObject;\n};\n\nexport interface ZodOpenApiOperationObject\n extends Omit<\n oas31.OperationObject & oas30.OperationObject,\n 'requestBody' | 'responses' | 'parameters'\n > {\n parameters?: Array<\n | ZodType\n | oas31.ParameterObject\n | oas30.ParameterObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n requestBody?: ZodOpenApiRequestBodyObject;\n requestParams?: ZodOpenApiParameters;\n responses: ZodOpenApiResponsesObject;\n}\n\nexport interface ZodOpenApiPathItemObject\n extends Omit<\n oas31.PathItemObject & oas30.PathItemObject,\n 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace'\n > {\n get?: ZodOpenApiOperationObject;\n put?: ZodOpenApiOperationObject;\n post?: ZodOpenApiOperationObject;\n delete?: ZodOpenApiOperationObject;\n options?: ZodOpenApiOperationObject;\n head?: ZodOpenApiOperationObject;\n patch?: ZodOpenApiOperationObject;\n trace?: ZodOpenApiOperationObject;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\nexport interface ZodOpenApiPathsObject extends oas31.ISpecificationExtension {\n [path: string]: ZodOpenApiPathItemObject;\n}\n\nexport interface ZodOpenApiComponentsObject\n extends Omit<\n oas31.ComponentsObject & oas30.ComponentsObject,\n 'schemas' | 'responses' | 'requestBodies' | 'headers' | 'parameters'\n > {\n parameters?: Record<\n string,\n | ZodType\n | oas31.ParameterObject\n | oas30.ParameterObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n schemas?: Record<\n string,\n | ZodType\n | oas31.SchemaObject\n | oas31.ReferenceObject\n | oas30.SchemaObject\n | oas30.ReferenceObject\n >;\n requestBodies?: Record<string, ZodOpenApiRequestBodyObject>;\n headers?: Record<\n string,\n | ZodType\n | oas31.HeaderObject\n | oas30.HeaderObject\n | oas31.ReferenceObject\n | oas30.ReferenceObject\n >;\n responses?: Record<string, ZodOpenApiResponseObject>;\n}\n\nexport type ZodOpenApiVersion = OpenApiVersion;\n\nexport interface ZodOpenApiObject\n extends Omit<\n oas31.OpenAPIObject,\n 'openapi' | 'paths' | 'webhooks' | 'components'\n > {\n openapi: ZodOpenApiVersion;\n paths?: ZodOpenApiPathsObject;\n webhooks?: ZodOpenApiPathsObject;\n components?: ZodOpenApiComponentsObject;\n}\n\nexport const createDocument = (\n zodOpenApiObject: ZodOpenApiObject,\n): oas31.OpenAPIObject => {\n const { paths, webhooks, components = {}, ...rest } = zodOpenApiObject;\n const defaultComponents = getDefaultComponents(\n components,\n zodOpenApiObject.openapi,\n );\n\n const createdPaths = createPaths(paths, defaultComponents);\n const createdWebhooks = createPaths(webhooks, defaultComponents);\n const createdComponents = createComponents(components, defaultComponents);\n\n return {\n ...rest,\n ...(createdPaths && { paths: createdPaths }),\n ...(createdWebhooks && { webhooks: createdWebhooks }),\n ...(createdComponents && { components: createdComponents }),\n };\n};\n", "import type {\n UnknownKeysParam,\n ZodDate,\n ZodObject,\n ZodRawShape,\n ZodTypeAny,\n z,\n} from 'zod';\n\nimport type { CreationType } from './create/components';\nimport type { oas30, oas31 } from './openapi3-ts/dist';\n\ntype SchemaObject = oas30.SchemaObject & oas31.SchemaObject;\n\ninterface ZodOpenApiMetadata<\n T extends ZodTypeAny,\n TInferred = z.input<T> | z.output<T>,\n> extends SchemaObject {\n example?: TInferred;\n examples?: [TInferred, ...TInferred[]];\n default?: T extends ZodDate ? string : TInferred;\n /**\n * Use this field to output this Zod Schema in the components schemas section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n /**\n * Use this field when you are manually adding a Zod Schema to the components section. This controls whether this should be rendered as request (`input`) or response (`output`). Defaults to `output`\n */\n refType?: CreationType;\n /**\n * Use this field to set the created type of an effect.\n */\n effectType?: CreationType;\n param?: Partial<oas31.ParameterObject> & {\n example?: TInferred;\n examples?: Record<\n string,\n (oas31.ExampleObject & { value: TInferred }) | oas31.ReferenceObject\n >;\n /**\n * Use this field to output this Zod Schema in the components parameters section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n };\n header?: Partial<oas31.HeaderObject & oas30.HeaderObject> & {\n /**\n * Use this field to output this Zod Schema in the components headers section. Any usage of this Zod Schema will then be transformed into a $ref.\n */\n ref?: string;\n };\n}\n\ninterface ZodOpenApiExtendMetadata {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends: ZodObject<any, any, any, any, any>;\n}\n\ndeclare module 'zod' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ZodType<Output, Def extends ZodTypeDef, Input = Output> {\n openapi<T extends ZodTypeAny>(this: T, metadata: ZodOpenApiMetadata<T>): T;\n }\n\n interface ZodTypeDef {\n openapi?: ZodOpenApiMetadata<ZodTypeAny>;\n }\n\n export interface ZodObjectDef<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n T extends ZodRawShape = ZodRawShape,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Catchall extends ZodTypeAny = ZodTypeAny,\n > extends ZodTypeDef {\n extendMetadata?: ZodOpenApiExtendMetadata;\n }\n}\n\nexport function extendZodWithOpenApi(zod: typeof z) {\n if (typeof zod.ZodType.prototype.openapi !== 'undefined') {\n return;\n }\n zod.ZodType.prototype.openapi = function (openapi) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n const result = new (this as any).constructor({\n ...this._def,\n openapi,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectExtend = zod.ZodObject.prototype.extend;\n\n zod.ZodObject.prototype.extend = function (\n ...args: [augmentation: ZodRawShape]\n ) {\n const extendResult = zodObjectExtend.apply(this, args);\n extendResult._def.extendMetadata = {\n extends: this,\n };\n delete extendResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return extendResult as any;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectOmit = zod.ZodObject.prototype.omit;\n\n zod.ZodObject.prototype.omit = function (\n ...args: [mask: Record<string, true | undefined>]\n ) {\n const omitResult = zodObjectOmit.apply(this, args);\n delete omitResult._def.extendMetadata;\n delete omitResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return omitResult as any;\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const zodObjectPick = zod.ZodObject.prototype.pick;\n\n zod.ZodObject.prototype.pick = function (\n ...args: [mask: Record<string, true | undefined>]\n ) {\n const pickResult = zodObjectPick.apply(this, args);\n delete pickResult._def.extendMetadata;\n delete pickResult._def.openapi;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n return pickResult as any;\n };\n}\n", "export * from './dsl/openapi-builder30';\nexport * from './model/openapi30';\nexport type { Server, ServerVariable } from './model/server';\nexport type { IExtensionName, IExtensionType, ISpecificationExtension } from './model/specification-extension';\n", "export * from './dsl/openapi-builder31';\nexport * from './model/openapi31';\nexport type { Server, ServerVariable } from './model/server';\nexport type { IExtensionName, IExtensionType, ISpecificationExtension } from './model/specification-extension';\n", "export {\n createComponents,\n getDefaultComponents,\n type ComponentsObject,\n} from './create/components';\nexport { createMediaTypeSchema } from './create/content';\nexport { createParamOrRef } from './create/parameters';\n"],
5
- "mappings": ";;;;;;;AA6GO,IAAM,YAAY,CAsCvB,SACA,aAqBG,SAAqB,MAGrB,aAAa;AAEX,IAAM,eAAe,CAAC,YAC3B;AAAA,EAEK,SAAqB,MAGrB;AACL;;;ACnLK,IAAM,sBAAsB,CACjC,cACA,aAC+C;AAC/C,MAAI,UAAU,cAAc;AAC1B,QAAI,OAAO,OAAO,QAAQ,EAAE,MAAM,CAAC,QAAQ,QAAQ,MAAS,GAAG;AAC7D,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,OAAO,CAAC,cAAc,QAAQ;AAAA,IAChC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;;;ACfO,IAAM,oBAAoB,CAI/B,UACA,UACuB;AACvB,QAAM,UAAU,SAAS,KAAK;AAC9B,QAAM,WACJ,SAAS,KAAK,aAAa,SAAS,SAAS,KAAK,WAAW;AAC/D,QAAM,WACJ,SAAS,KAAK,aAAa,SAAS,SAAS,KAAK,WAAW;AAC/D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,mBAAmB,SAAS,OAAO,CAAC,aAAa,CAAC;AAAA,IACzD,GAAI,aAAa,UAAa,EAAE,SAAS;AAAA,IACzC,GAAI,aAAa,UAAa,EAAE,SAAS;AAAA,EAC3C;AACF;;;ACnBO,IAAM,sBAAsB,CACjC,iBACwB;AAAA,EACxB,MAAM;AACR;;;ACJO,IAAM,sBAAsB,CAIjC,YACA,UAEA,mBAAmB,WAAW,KAAK,MAAM,OAAO,CAAC,OAAO,CAAC;;;ACNpD,IAAM,oBAAoB,CAC/B,UACA,UAEA,mBAAmB,SAAS,KAAK,WAAW,OAAO,CAAC,OAAO,CAAC;;;ACLvD,IAAM,mBAAmB,CAAC,cAA2C;AAAA,EAC1E,MAAM;AACR;;;ACAO,IAAM,sBAAsB,CACjC,YACA,UAC+C;AAC/C,QAAM,eAAe,mBAAmB,WAAW,KAAK,WAAW,OAAO;AAAA,IACxE;AAAA,EACF,CAAC;AAED,SAAO,oBAAoB,cAAc;AAAA,IACvC,SAAS,WAAW,KAAK,aAAa;AAAA,EACxC,CAAC;AACH;;;ACLO,IAAM,iCAAiC,CAI5C,uBACA,UACuB;AACvB,QAAM,UAAU,sBAAsB;AACtC,QAAM,UAAU,QAAQ;AAAA,IAAI,CAAC,QAAQ,UACnC,mBAAmB,QAAQ,OAAO,CAAC,8BAA8B,KAAK,EAAE,CAAC;AAAA,EAC3E;AACA,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,GAAI,iBAAiB,EAAE,cAAc;AAAA,EACvC;AACF;AAEO,IAAM,mBAAmB,CAC9B,SACA,YACA,eACA,UACwC;AACxC,MAAI,OAAO,kBAAkB,UAAU;AACrC,WAAO;AAAA,EACT;AAEA,QAAM,UAA6D,CAAC;AACpE,aAAW,CAAC,OAAO,SAAS,KAAK,WAAW,QAAQ,GAAG;AACrD,UAAM,SAAS,QAAQ,KAAK;AAC5B,UAAM,qBAAqB,UAAU,SAAS,QAAQ,OAAO;AAC7D,QAAI,CAAC,oBAAoB;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,QAAS,UAAU,MAAsB,aAAa;AAE5D,QAAI,UAAU,OAAO,SAAS,GAAG;AAC/B,iBAAW,aAAa,MAAM,KAAK,QAAoB;AACrD,gBAAQ,SAAS,IAAI;AAAA,MACvB;AACA;AAAA,IACF;AAEA,UAAM,gBAAgB,OAAO,MAAgC;AAE7D,QAAI,OAAO,iBAAiB,UAAU;AACpC,YAAM,IAAI;AAAA,QACR,iBAAiB,aAAa,mCAAmC,KAAK,gCAAgC,MAAM,KAAK;AAAA,UAC/G;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,YAAQ,YAAY,IAAI;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,cAAc;AAAA,IACd;AAAA,EACF;AACF;;;AC3EO,IAAM,mBAAmB,CAC9B,aACwB;AAAA,EACxB,MAAM;AAAA,EACN,MAAM,QAAQ,KAAK;AACrB;;;ACJO,IAAM,2BAA2B,CAItC,iBACA,WACgD;AAAA,EAChD,OAAO;AAAA,IACL,mBAAmB,gBAAgB,KAAK,MAAM,OAAO,CAAC,mBAAmB,CAAC;AAAA,IAC1E,mBAAmB,gBAAgB,KAAK,OAAO,OAAO;AAAA,MACpD;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,mBAAmB,CAC9B,SACA,UAC+C;AAC/C,QAAM,cAAc,QAAQ,KAAK,OAAO;AACxC,SAAO,mBAAmB,aAAa,OAAO,CAAC,aAAa,CAAC;AAC/D;;;ACPO,IAAM,sBAAsB,CACjC,gBACwB;AAAA,EACxB,MAAM,OAAO,WAAW;AAAA,EACxB,MAAM,CAAC,WAAW,KAAK,KAAK;AAC9B;;;ACHO,IAAM,yBAAyB,CAKpC,WACA,UACuB;AACvB,MAAI,CAAC,UAAU,KAAK,SAAS,MAAM;AACjC,UAAM,UAAU,UAAU,YAAY;AACtC,QAAI,UAAU,WAAW,YAAY,GAAG;AACtC,YAAM,aAAa,GAAG,OAAO,MAAM,UAAU,KAAK,OAAO,IAAI;AAC7D,YAAM,IAAI;AAAA,QACR,kBAAkB,UAAU,OAAO,MAAM,KAAK;AAAA,UAC5C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR,kBAAkB,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,UAAU,KAAK,QAAQ;AAAA,EAC/B;AACF;;;AChCO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,mBAAmB,CAC9B,MACA,YACG,gBAAgB,QAAQ,IAAI,KAAK,gBAAgB,QAAQ,OAAO;;;ACP9D,IAAM,yBAAyB,CACpC,SACA,UAC+C;AAC/C,QAAM,aAAa,mBAAmB,QAAQ,KAAK,MAAM;AACzD,QAAM,EAAE,SAAS,QAAQ,IAAI,sBAAsB,UAAU;AAE7D,MAAI,QAAQ,UAAU,QAAQ,QAAQ;AACpC,QAAI,iBAAiB,MAAM,WAAW,SAAS,OAAO;AACpD,aAAO;AAAA,QACL,MAAM,CAAC,UAAU,QAAQ;AAAA,QACzB,MAAM,CAAC,GAAG,SAAS,GAAG,OAAO;AAAA,MAC/B;AACF,WAAO;AAAA,MACL,OAAO;AAAA,QACL,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,QAChC,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,QAAQ;AAClB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAOO,IAAM,qBAAqB,CAAC,eAAyB;AAC1D,QAAM,OAAO,OAAO,KAAK,UAAU,EAAE;AAAA,IACnC,CAAC,QAAQ,OAAO,WAAW,WAAW,GAAG,CAAW,MAAM;AAAA,EAC5D;AACA,SAAO,KAAK,IAAI,CAAC,QAAQ,WAAW,GAAG,CAAW;AACpD;AAEO,IAAM,wBAAwB,CACnC,YACuB;AAAA,EACvB,SAAS,OAAO,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAAA,EAC5E,SAAS,OAAO,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAC9E;;;ACrDO,IAAM,mBAAmB,CAAC,cAA2C;AAAA,EAC1E,MAAM;AACR;;;ACCO,IAAM,uBAAuB,CAClC,aACA,UACuB;AACvB,QAAM,eAAe,mBAAmB,YAAY,OAAO,GAAG,OAAO;AAAA,IACnE;AAAA,EACF,CAAC;AAED,MAAI,UAAU,gBAAgB,aAAa,OAAO;AAChD,WAAO;AAAA,MACL,OAAO,UAAU,CAAC,YAAY,GAAG,MAAM,WAAW,OAAO;AAAA,IAC3D;AAAA,EACF;AAEA,MAAI,aAAa,OAAO;AACtB,UAAM,EAAE,OAAO,GAAGA,QAAO,IAAI;AAC7B,WAAO;AAAA,MACL,OAAO,UAAU,OAAO,MAAM,WAAW,OAAO;AAAA,MAChD,GAAGA;AAAA,IACL;AAAA,EACF;AAEA,MAAI,aAAa,OAAO;AACtB,UAAM,EAAE,OAAO,GAAGA,QAAO,IAAI;AAC7B,WAAO;AAAA,MACL,OAAO,UAAU,OAAO,MAAM,WAAW,OAAO;AAAA,MAChD,GAAGA;AAAA,IACL;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,GAAG,OAAO,IAAI;AAE5B,MAAI,iBAAiB,MAAM,WAAW,SAAS,OAAO,GAAG;AACvD,WAAO;AAAA,MACL,MAAM,YAAY,IAAI;AAAA,MACtB,GAAG;AAAA,IACL;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV,GAAG;AAAA;AAAA;AAAA,IAGH,GAAI,OAAO,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,MAAM,IAAI,EAAE;AAAA,EACpD;AACF;AAEA,IAAM,cAAc,CAClB,SAC+B;AAC/B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,CAAC,GAAG,MAAM,MAAM;AAAA,EACzB;AAEA,SAAO,CAAC,MAAM,MAAM;AACtB;AAEA,IAAM,YAAY,CAChB,UACA,YACsD;AACtD,MAAI,iBAAiB,SAAS,OAAO,GAAG;AACtC,WAAO,CAAC,GAAG,UAAU,EAAE,MAAM,OAAO,CAAC;AAAA,EACvC;AACA,SAAO,CAAC,GAAG,UAAU,EAAE,UAAU,KAAK,CAAuB;AAC/D;;;ACvEO,IAAM,qBAAqB,CAChC,WACA,UACuB;AACvB,QAAM,kBAAkB,mBAAmB,SAAS;AAEpD,QAAM,UAAU,WAAW,iBAAiB,MAAM,WAAW,OAAO;AACpE,QAAM,UAAU,WAAW,iBAAiB,MAAM,WAAW,OAAO;AAEpE,SAAO;AAAA,IACL,MAAM,cAAc,eAAe;AAAA,IACnC,GAAI,WAAY;AAAA;AAAA,IAChB,GAAI,WAAY;AAAA,EAClB;AACF;AAEO,IAAM,aAAa,CACxB,gBACA,YAMe;AACf,MAAI,CAAC,eAAe,KAAK;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,IAAI;AACnC,MAAI,eAAe,IAAI,WAAW;AAChC,WAAO,EAAE,GAAI,YAAY,UAAa,EAAE,QAAQ,EAAG;AAAA,EACrD;AACA,MAAI,iBAAiB,SAAS,OAAO,GAAG;AACtC,WAAO,EAAE,kBAAkB,QAAQ;AAAA,EACrC;AACA,SAAO,EAAE,SAAS,kBAAkB,KAAK;AAC3C;AACO,IAAM,aAAa,CACxB,gBACA,YAMe;AACf,MAAI,CAAC,eAAe,KAAK;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,IAAI;AACnC,MAAI,eAAe,IAAI,WAAW;AAChC,WAAO,EAAE,GAAI,YAAY,UAAa,EAAE,QAAQ,EAAG;AAAA,EACrD;AACA,MAAI,iBAAiB,SAAS,OAAO,GAAG;AACtC,WAAO,EAAE,kBAAkB,QAAQ;AAAA,EACrC;AACA,SAAO,EAAE,SAAS,kBAAkB,KAAK;AAC3C;AAMA,IAAM,qBAAqB,CAAC,cAC1B,UAAU,KAAK,OAAO,OAA0B,CAAC,KAAK,UAAU;AAE9D,MAAI,MAAM,IAAI,IAAI;AAClB,SAAO;AACT,GAAG,CAAC,CAAC;AAEP,IAAM,gBAAgB,CACpB,oBACgC,gBAAgB,MAAM,YAAY;;;AC3E7D,IAAM,uBAAuB,CAClC,aACA;AAAA;AAAA,EAEA,mBAAmB,YAAY,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;AAAA;AAEvD,IAAM,mBAAmB,CAC9B,WACA,UACY;AACZ,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,MAAM,SAAS;AAAA,EACxB;AAEA,MAAI,UAAU,WAAW,aAAa,KAAK,UAAU,WAAW,UAAU,GAAG;AAC3E,WAAO,iBAAiB,UAAU,KAAK,WAAW,KAAK;AAAA,EACzD;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,iBAAiB,UAAU,KAAK,QAAQ,KAAK;AAAA,EACtD;AAEA,MACE,UAAU,WAAW,UAAU,KAC/B,UAAU,WAAW,uBAAuB,GAC5C;AACA,WAAQ,UAAU,KAAK,QAAyB;AAAA,MAAK,CAAC,WACpD,iBAAiB,QAAQ,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,iBAAiB,GAAG;AAC3C,WAAO,CAAC,UAAU,KAAK,MAAM,UAAU,KAAK,KAAK,EAAE;AAAA,MAAK,CAAC,WACvD,iBAAiB,QAAQ,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,QACE,MAAM,eAAe,WACpB,MAAM,SAAS,WAAW,MAAM,eAAe,UAChD;AACA,aAAO,iBAAiB,UAAU,KAAK,IAAI,KAAK;AAAA,IAClD;AAEA,QACE,MAAM,eAAe,YACpB,MAAM,SAAS,YAAY,MAAM,eAAe,SACjD;AACA,aAAO,iBAAiB,UAAU,KAAK,KAAK,KAAK;AAAA,IACnD;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,SAAS,GAAG;AACnC,WAAO,iBAAiB,UAAU,KAAK,OAAO,GAAc,KAAK;AAAA,EACnE;AAEA,SAAO,UAAU,WAAW;AAC9B;;;ACnDO,IAAM,qBAAqB,CAOhC,WACA,UACuB;AACvB,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA,UAAU,KAAK,gBAAgB;AAAA,IAC/B;AAAA,EACF;AAEA,MAAI,gBAAgB;AAClB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV;AAAA,MACE,aAAa,UAAU,KAAK;AAAA,MAC5B,UAAU,UAAU,KAAK;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,uBAAuB,CAOlC,WACA,eACA,UACmC;AACnC,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,MAAM,WAAW,QAAQ,IAAI,aAAa;AAC5D,MAAI,aAAa,cAAc,KAAK,SAAS,KAAK;AAChD,uBAAmB,eAAe,OAAO,CAAC,iBAAiB,CAAC;AAAA,EAC9D;AAEA,QAAM,oBAAoB,MAAM,WAAW,QAAQ,IAAI,aAAa;AACpE,MAAI,CAAC,mBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW;AAAA,IACf;AAAA,MACE,aAAa,cAAc,KAAK;AAAA,MAChC,UAAU,cAAc,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,MACE,aAAa,UAAU,KAAK;AAAA,MAC5B,UAAU,UAAU,KAAK;AAAA,IAC3B;AAAA,EACF;AACA,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,YAAY;AAAA,IAChB,cAAc,KAAK,MAAM;AAAA,IACzB,UAAU,KAAK,MAAM;AAAA,EACvB;AAEA,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,OAAO,CAAC,EAAE,MAAM,yBAAyB,kBAAkB,GAAG,EAAE,CAAC;AAAA,IACjE,GAAG,4BAA4B,WAAW,UAAU,KAAK;AAAA,EAC3D;AACF;AAEA,IAAM,iBAAiB,CACrB,UACA,iBAC0C;AAC1C,MACE,SAAS,gBAAgB,YACzB,CAAC,UAAU,SAAS,UAAU,UAAU,GACxC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,UAAU,aAAa;AAAA,IACvB,aAAa,aAAa;AAAA,EAC5B;AACF;AAEA,IAAM,kBAAkB,CACtB,SACA,gBACuB;AACvB,QAAM,MAAmB,CAAC;AAE1B,aAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,WAAW,GAAG;AACpD,UAAM,YAAY,QAAQ,GAAG;AAC7B,QAAI,QAAQ,WAAW;AACrB;AAAA,IACF;AAEA,QAAI,cAAc,QAAW;AAC3B,UAAI,GAAG,IAAI,YAAY,GAAG;AAC1B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAOO,IAAM,8BAA8B,CACzC,OACA,EAAE,aAAa,SAAS,GACxB,UACuB;AACvB,QAAM,aAAa,cAAc,OAAO,KAAK;AAC7C,QAAM,WAAW,YAAY,OAAO,KAAK;AACzC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,GAAI,cAAc,EAAE,WAAW;AAAA,IAC/B,GAAI,YAAY,EAAE,SAAS;AAAA,IAC3B,GAAI,gBAAgB,YAAY,EAAE,sBAAsB,MAAM;AAAA,IAC9D,GAAI,CAAC,UAAU,UAAU,UAAU,KAAK;AAAA,MACtC,sBAAsB,mBAAmB,UAAU,OAAO;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,cAAc,CACzB,OACA,UACmC;AACnC,QAAM,WAAqB,OAAO,QAAQ,KAAK,EAC5C,OAAO,CAAC,CAAC,MAAM,SAAS,MAAM,CAAC,iBAAiB,WAAW,KAAK,CAAC,EACjE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AAErB,MAAI,CAAC,SAAS,QAAQ;AACpB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,gBAAgB,CAC3B,OACA,UAEA,OAAO,QAAQ,KAAK,EAAE;AAAA,EACpB,CAAC,KAAK,CAAC,KAAK,SAAS,MAAqD;AACxE,QAAI,GAAG,IAAI,mBAAmB,WAAW,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;AACpE,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;;;AC1LK,IAAM,uBAAuB,CAIlC,aACA,UAC+C;AAC/C,MAAI,YAAY,KAAK,SAAS,eAAe,SAAS;AACpD,WAAO,mBAAmB,YAAY,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;AAAA,EAC1E;AAEA,MAAI,YAAY,KAAK,SAAS,eAAe,UAAU;AACrD,WAAO,mBAAmB,YAAY,KAAK,KAAK,OAAO,CAAC,iBAAiB,CAAC;AAAA,EAC5E;AAEA,MAAI,MAAM,SAAS,SAAS;AAC1B,UAAM,aAAa;AACnB,WAAO,mBAAmB,YAAY,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;AAAA,EAC1E;AAEA,QAAM,aAAa;AACnB,SAAO,mBAAmB,YAAY,KAAK,KAAK,OAAO,CAAC,iBAAiB,CAAC;AAC5E;;;ACtBO,IAAM,yBAAyB,CAKpC,eACA,UAEA,mBAAmB,cAAc,KAAK,QAAQ,OAAO,CAAC,mBAAmB,CAAC;;;ACRrE,IAAM,uBAAuB,CAClC,aACA;AAAA;AAAA,EAEA,mBAAmB,YAAY,KAAK,WAAW,OAAO,CAAC,UAAU,CAAC;AAAA;;;ACH7D,IAAM,qBAAqB,CAIhC,WACA,UACuB;AACvB,QAAM,uBAAuB;AAAA,IAC3B,UAAU;AAAA,IACV;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,YAAY,mBAAmB,UAAU,WAAW,OAAO;AAAA,IAC/D;AAAA,EACF,CAAC;AAED,QAAM,iBACJ,UAAU,aAAa,MAAM,WAAW,QAAQ,IAAI,UAAU,SAAS;AACzE,QAAM,cACJ,kBACA,eAAe,SAAS,cACxB,eAAe;AAEjB,QAAM,oBAAoB,eAAe;AAEzC,MAAI,UAAU,qBAAqB,kBAAkB,MAAM;AACzD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAa,kBAAkB,KAAkB,OAE/C,CAAC,KAAK,QAAQ;AACd,YAAI,GAAG,IAAI;AACX,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,MACL,sBAAsB;AAAA,IACxB;AAAA,EACF;AAEA,MACE,iBAAiB,MAAM,WAAW,SAAS,OAAO,KAClD,UAAU,qBACV,kBAAkB,SAAS,YAC3B,OAAO,KAAK,iBAAiB,EAAE,SAAS,GACxC;AACA,WAAO;AAAA,MACL,MAAM;AAAA;AAAA,MAEN,eAAe;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;;;AC1DO,IAAM,qBAAqB,CAKhC,WACA,UAEA,mBAAmB,UAAU,KAAK,QAAQ,OAAO,CAAC,eAAe,CAAC;;;ACR7D,IAAM,kBAAkB,CAC7B,QACA,UACuB;AACvB,QAAM,SAAS,OAAO,KAAK;AAC3B,QAAM,WAAW,OAAO,KAAK,SAAS;AACtC,QAAM,WAAW,OAAO,KAAK,SAAS;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,mBAAmB,QAAQ,OAAO,CAAC,WAAW,CAAC;AAAA,IACtD,aAAa;AAAA,IACb,GAAI,aAAa,UAAa,EAAE,SAAS;AAAA,IACzC,GAAI,aAAa,UAAa,EAAE,SAAS;AAAA,EAC3C;AACF;;;ACfO,IAAM,qBAAqB,CAChC,cACuB;AACvB,QAAM,kBAAkB,mBAAmB,SAAS;AACpD,QAAM,SAAS,gBAAgB,eAAe;AAC9C,QAAM,WAAW,YAAY,eAAe;AAC5C,QAAM,YACJ,gBAAgB,SAAS,CAAC,GAAG,SAAS,gBAAgB,MAAM,CAAC,GAAG;AAClE,QAAM,YACJ,gBAAgB,SAAS,CAAC,GAAG,SAAS,gBAAgB,MAAM,CAAC,GAAG;AAElE,MAAI,SAAS,UAAU,GAAG;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAI,UAAU,EAAE,OAAO;AAAA,MACvB,GAAI,SAAS,CAAC,KAAK,EAAE,SAAS,SAAS,CAAC,EAAE;AAAA,MAC1C,GAAI,cAAc,UAAa,EAAE,UAAU;AAAA,MAC3C,GAAI,cAAc,UAAa,EAAE,UAAU;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,GAAI,UAAU,EAAE,OAAO;AAAA,QACvB,GAAI,SAAS,CAAC,KAAK,EAAE,SAAS,SAAS,CAAC,EAAE;AAAA,QAC1C,GAAI,cAAc,UAAa,EAAE,UAAU;AAAA,QAC3C,GAAI,cAAc,UAAa,EAAE,UAAU;AAAA,MAC7C;AAAA,MACA,GAAG,SAAS,MAAM,CAAC,EAAE;AAAA,QACnB,CAAC,aAAiC;AAAA,UAChC,MAAM;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AASA,IAAM,qBAAqB,CAAC,cAC1B,UAAU,KAAK,OAAO;AAAA,EACpB,CAAC,KAAK,UAA0B;AAC9B,UAAM,UAAU,IAAI,MAAM,IAAI;AAC9B,QAAI,SAAS;AACX,cAAQ,KAAK,KAAc;AAC3B,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,IAAI,IAAI,CAAC,KAAc;AACjC,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;AAEF,IAAM,cAAc,CAAC,oBAAiD;AACpE,QAAM,aAAa,cAAc,eAAe;AAChD,QAAM,WAAW,YAAY,eAAe;AAC5C,QAAM,QAAQ,SAAS,eAAe;AACtC,QAAM,WAAW,YAAY,eAAe;AAE5C,QAAM,WAAqB;AAAA,IACzB,GAAI,SAAS,CAAC;AAAA,IACd,GAAI,aAAa,CAAC,UAAU,IAAI,CAAC;AAAA,IACjC,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,IAC7B,GAAI,YAAY,CAAC;AAAA,EACnB;AAEA,SAAO;AACT;AAEA,IAAM,gBAAgB,CACpB,oBACkC;AAClC,MAAI,gBAAgB,aAAa,CAAC,GAAG,OAAO;AAC1C,WAAO,IAAI,gBAAgB,WAAW,CAAC,EAAE,KAAK;AAAA,EAChD;AAEA,SAAO;AACT;AAEA,IAAM,cAAc,CAClB,oBACkC;AAClC,MAAI,gBAAgB,WAAW,CAAC,GAAG,OAAO;AACxC,WAAO,GAAG,gBAAgB,SAAS,CAAC,EAAE,KAAK;AAAA,EAC7C;AAEA,SAAO;AACT;AAEA,IAAM,WAAW,CAAC,oBAChB,gBAAgB,OAAO,IAAI,CAAC,eAAe,WAAW,MAAM,MAAM;AAEpE,IAAM,cAAc,CAClB,oBAEA,gBAAgB,UAAU,IAAI,CAAC,iBAAiB;AAC9C,MAAI,aAAa,aAAa,GAAG;AAC/B,WAAO,IAAI,aAAa,KAAK;AAAA,EAC/B;AACA,MAAI,aAAa,UAAU;AACzB,WAAO,MAAM,aAAa,QAAQ,IAAI,aAAa,KAAK;AAAA,EAC1D;AACA,SAAO,aAAa;AACtB,CAAC;AAEH,IAAM,kBAAkB,CACtB,oBACiC;AACjC,MAAI,gBAAgB,MAAM;AACxB,WAAO;AAAA,EACT;AAEA,MAAI,gBAAgB,UAAU;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI,gBAAgB,OAAO;AACzB,WAAO;AAAA,EACT;AAEA,MAAI,gBAAgB,KAAK;AACvB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACnIO,IAAM,wBAAwB,CAKnC,cACA,UAC+C;AAC/C,MAAI,aAAa,KAAK,SAAS,eAAe,UAAU;AACtD,WAAO,uBAAuB,cAAc,KAAK;AAAA,EACnD;AAEA,MAAI,aAAa,KAAK,SAAS,eAAe,SAAS;AACrD,WAAO,mBAAmB,aAAa,KAAK,QAAQ,OAAO;AAAA,MACzD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,SAAS,UAAU;AAC3B,WAAO,uBAAuB,cAAc,KAAK;AAAA,EACnD;AAEA,QAAM,aAAa;AACnB,SAAO,mBAAmB,aAAa,KAAK,QAAQ,OAAO;AAAA,IACzD;AAAA,EACF,CAAC;AACH;AAEO,IAAM,sBAAsB,CAAC,SAAkB,UAAuB;AAC3E,QAAM,IAAI;AAAA,IACR,GAAG,KAAK,UAAU,OAAO,CAAC,OAAO,MAAM,KAAK;AAAA,MAC1C;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACnCO,IAAM,oBAAoB,CAI/B,UACA,UACuB;AACvB,QAAM,QAAQ,SAAS;AACvB,QAAM,OAAO,SAAS,KAAK;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,GAAG,kBAAkB,OAAO,MAAM,KAAK;AAAA,EACzC;AACF;AAEA,IAAM,iBAAiB,CACrB,OACA,UACkD;AAClD,MAAI,MAAM,QAAQ;AAChB,WAAO,MAAM;AAAA,MAAI,CAAC,MAAM,UACtB,mBAAmB,MAAM,OAAO,CAAC,cAAc,KAAK,EAAE,CAAC;AAAA,IACzD;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,oBAAoB,CACxB,OACA,MACA,UAIG;AACH,QAAM,cAAc,eAAe,OAAO,KAAK;AAE/C,MAAI,iBAAiB,MAAM,WAAW,SAAS,OAAO,GAAG;AACvD,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,QACL,UAAU,MAAM;AAAA,QAChB,UAAU,MAAM;AAAA,QAChB,GAAI,eAAe,EAAE,YAAY;AAAA,MACnC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,OAAO,mBAAmB,MAAM,OAAO,CAAC,aAAa,CAAC;AAAA,MACtD,GAAI,eAAe,EAAE,YAAY;AAAA,IACnC;AAAA,EACF;AAEA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,GAAI,eAAe,EAAE,OAAO,EAAE,OAAO,YAAY,EAAE;AAAA,IACrD;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAI,eAAe;AAAA,MACjB,OAAO;AAAA,QACL,OAAO;AAAA,UACL,GAAG;AAAA,UACH,mBAAmB,MAAM,OAAO,CAAC,aAAa,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACvEO,IAAM,oBAAoB,CAG/B,UACA,UACuB;AACvB,QAAM,UAAU,SAAS,QAAQ;AAAA,IAAI,CAAC,QAAQ,UAC5C,mBAAmB,QAAQ,OAAO,CAAC,gBAAgB,KAAK,EAAE,CAAC;AAAA,EAC7D;AACA,SAAO;AAAA,IACL,OAAO;AAAA,EACT;AACF;;;ACbO,IAAM,sBAAsB,CACjC,iBACwB,CAAC;;;AC8BpB,IAAM,qBAAqB,CAKhC,WACA,UAC+C;AAC/C,MAAI,UAAU,KAAK,SAAS,MAAM;AAChC,WAAO,uBAAuB,WAAW,KAAK;AAAA,EAChD;AAEA,MAAI,UAAU,WAAW,WAAW,GAAG;AACrC,WAAO,mBAAmB,SAAS;AAAA,EACrC;AAEA,MAAI,UAAU,WAAW,WAAW,GAAG;AACrC,WAAO,mBAAmB,WAAW,KAAK;AAAA,EAC5C;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,oBAAoB,SAAS;AAAA,EACtC;AAEA,MAAI,UAAU,WAAW,SAAS,GAAG;AACnC,WAAO,iBAAiB,SAAS;AAAA,EACnC;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,oBAAoB,SAAS;AAAA,EACtC;AAEA,MAAI,UAAU,WAAW,eAAe,GAAG;AACzC,WAAO,uBAAuB,WAAW,KAAK;AAAA,EAChD;AAEA,MAAI,UAAU,WAAW,UAAU,GAAG;AACpC,WAAO,kBAAkB,WAAW,KAAK;AAAA,EAC3C;AAEA,MAAI,UAAU,WAAW,WAAW,GAAG;AACrC,WAAO,mBAAmB,WAAW,KAAK;AAAA,EAC5C;AAEA,MAAI,UAAU,WAAW,UAAU,GAAG;AACpC,WAAO,kBAAkB,WAAW,KAAK;AAAA,EAC3C;AAEA,MAAI,UAAU,WAAW,uBAAuB,GAAG;AACjD,WAAO,+BAA+B,WAAW,KAAK;AAAA,EACxD;AAEA,MAAI,UAAU,WAAW,SAAS,GAAG;AACnC,WAAO,iBAAiB,SAAS;AAAA,EACnC;AAEA,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,WAAO,qBAAqB,WAAW,KAAK;AAAA,EAC9C;AAEA,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,WAAO,qBAAqB,WAAW,KAAK;AAAA,EAC9C;AAEA,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,WAAO,qBAAqB,WAAW,KAAK;AAAA,EAC9C;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,oBAAoB,WAAW,KAAK;AAAA,EAC7C;AAEA,MAAI,UAAU,WAAW,WAAW,GAAG;AACrC,WAAO,mBAAmB,WAAW,KAAK;AAAA,EAC5C;AAEA,MAAI,UAAU,WAAW,UAAU,GAAG;AACpC,WAAO,kBAAkB,WAAW,KAAK;AAAA,EAC3C;AAEA,MAAI,UAAU,WAAW,SAAS,GAAG;AACnC,WAAO,iBAAiB,SAAS;AAAA,EACnC;AAEA,MAAI,UAAU,WAAW,aAAa,GAAG;AACvC,WAAO,qBAAqB,WAAW,KAAK;AAAA,EAC9C;AAEA,MACE,UAAU,WAAW,YAAY,KACjC,UAAU,KAAK,OAAO,SAAS,aAC/B;AACA,WAAO,sBAAsB,WAAW,KAAK;AAAA,EAC/C;AAEA,MACE,UAAU,WAAW,YAAY,KACjC,UAAU,KAAK,OAAO,SAAS,cAC/B;AACA,WAAO,uBAAuB,WAAW,KAAK;AAAA,EAChD;AAEA,MACE,UAAU,WAAW,YAAY,KACjC,UAAU,KAAK,OAAO,SAAS,cAC/B;AACA,WAAO,mBAAmB,WAAW,KAAK;AAAA,EAC5C;AAEA,MAAI,UAAU,WAAW,eAAe,GAAG;AACzC,WAAO,uBAAuB,WAAW,KAAK;AAAA,EAChD;AAEA,MAAI,UAAU,WAAW,iBAAiB,GAAG;AAC3C,WAAO,yBAAyB,WAAW,KAAK;AAAA,EAClD;AAEA,MAAI,UAAU,WAAW,UAAU,GAAG;AACpC,WAAO,kBAAkB,WAAW,KAAK;AAAA,EAC3C;AAEA,MAAI,UAAU,WAAW,YAAY,KAAK,UAAU,WAAW,QAAQ,GAAG;AACxE,WAAO,oBAAoB,SAAS;AAAA,EACtC;AAEA,MAAI,UAAU,WAAW,SAAS,GAAG;AACnC,WAAO,iBAAiB,WAAW,KAAK;AAAA,EAC1C;AAEA,MAAI,UAAU,WAAW,YAAY,GAAG;AACtC,WAAO,oBAAoB,WAAW,KAAK;AAAA,EAC7C;AAEA,MAAI,UAAU,WAAW,QAAQ,GAAG;AAClC,WAAO,gBAAgB,WAAW,KAAK;AAAA,EACzC;AAEA,SAAO,uBAAuB,WAAW,KAAK;AAChD;;;ACtJO,IAAM,iBAAiB,CAAC,WAAqC;AAAA,EAClE,MAAM,MAAM;AAAA,EACZ,YAAY,MAAM;AAAA,EAClB,MAAM,CAAC,GAAG,MAAM,IAAI;AAAA,EACpB,SAAS,IAAI,IAAI,MAAM,OAAO;AAChC;AAEO,IAAM,kBAAkB,CAK7B,WACA,UACA,YACW;AACX,WAAS,KAAK,KAAK,GAAG,OAAO;AAC7B,MAAI,SAAS,QAAQ,IAAI,SAAS,GAAG;AACnC,UAAM,IAAI;AAAA,MACR,iBAAiB,SAAS,KAAK;AAAA,QAC7B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,WAAS,QAAQ,IAAI,SAAS;AAC9B,QAAM,EAAE,YAAY,OAAO,QAAQ,KAAK,SAAS,GAAG,mBAAmB,IACrE,UAAU,KAAK,WAAW,CAAC;AAE7B,QAAM,SAAS,mBAAmB,WAAW,QAAQ;AACrD,QAAM,cAAc,UAAU;AAE9B,QAAM,qBAAqB,oBAAoB,QAAQ;AAAA,IACrD,GAAI,eAAe,EAAE,YAAY;AAAA,IACjC,GAAG;AAAA,EACL,CAAC;AAED,SAAO;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,eAAe,CAK1B,KACA,WACA,OACA,YACW;AACX,QAAM,WAAW,QAAQ,IAAI,WAAW;AAAA,IACtC,MAAM;AAAA,IACN;AAAA,EACF,CAAC;AAED,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,eAAe,EAAE,GAAG,OAAO,SAAS,oBAAI,IAAI,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF;AAEA,QAAM,WAAW,QAAQ,IAAI,WAAW;AAAA,IACtC,MAAM;AAAA,IACN;AAAA,IACA,cAAc,UAAU;AAAA,IACxB,cAAc,UAAU,UAAU;AAAA,EACpC,CAAC;AAED,SAAO;AAAA,IACL,QAAQ,EAAE,MAAM,yBAAyB,GAAG,EAAE;AAAA,IAC9C,UAAU,UAAU;AAAA,EACtB;AACF;AAEO,IAAM,oBAAoB,CAK/B,WACA,WACA,OACA,YACuB;AACvB,QAAM,WAAW,eAAe,KAAK;AACrC,WAAS,KAAK,KAAK,GAAG,OAAO;AAE7B,MAAI,aAAa,UAAU,SAAS,YAAY;AAC9C,QAAI,UAAU,gBAAgB,UAAU,iBAAiB,MAAM,MAAM;AACnE,0BAAoB,WAAW,QAAQ;AAAA,IACzC;AAEA,WAAO;AAAA,MACL,QAAQ,EAAE,MAAM,yBAAyB,UAAU,GAAG,EAAE;AAAA,MACxD,UAAU;AAAA,QACR,GAAG;AAAA,QACH,YAAY,UAAU;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,SAAS,eAAe;AACjD,WAAO;AAAA,MACL,QAAQ,EAAE,MAAM,yBAAyB,UAAU,GAAG,EAAE;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA;AACF;AAOO,IAAM,oBAAoB,CAK/B,WACA,OACA,YACW;AACX,QAAM,YAAY,MAAM,WAAW,QAAQ,IAAI,SAAS;AACxD,QAAM,cAAc,kBAAkB,WAAW,WAAW,OAAO,OAAO;AAE1E,MAAI,aAAa;AACf,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,UAAU,KAAK,SAAS,OAAO,WAAW;AACtD,MAAI,KAAK;AACP,WAAO,aAAa,KAAK,WAAW,OAAO,OAAO;AAAA,EACpD;AAEA,SAAO,gBAAgB,WAAW,eAAe,KAAK,GAAG,OAAO;AAClE;AAEO,IAAM,qBAAqB,CAKhC,WACA,OACA,YAC+C;AAC/C,QAAM,EAAE,QAAQ,SAAS,IAAI,kBAAkB,WAAW,OAAO,OAAO;AACxE,MAAI,UAAU,YAAY;AACxB,QACE,MAAM,SAAS,UAAU,cACxB,MAAM,cAAc,SAAS,eAAe,MAAM,YACnD;AACA,0BAAoB,WAAW,QAAQ;AAAA,IACzC;AACA,UAAM,aAAa,SAAS;AAAA,EAC9B;AACA,SAAO;AACT;;;AChLO,IAAM,0BAA0B,CAAC,QACtC,2BAA2B,GAAG;AAEzB,IAAM,sBAAsB,CACjC,QACA,YACA,YAC8B;AAC9B,QAAM,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,SAAS,SAAS,CAAC;AACxD,QAAM,QAAqB,eAAe;AAAA,IACxC;AAAA,IACA,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,IACP,SAAS,oBAAI,IAAI;AAAA,EACnB,CAAC;AACD,QAAM,eAAe,mBAAmB,QAAQ,OAAO;AAAA,IACrD,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,WAAW,CAAC,iBAAiB,QAAQ,KAAK;AAChD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,UAAU,EAAE,QAAQ,aAAa;AAAA,IACrC,GAAI,YAAY,EAAE,SAAS;AAAA,EAC7B;AACF;AAEO,IAAM,mBAAmB,CAC9B,WACA,YACA,SACA,MACA,SACkD;AAClD,QAAM,YAAY,WAAW,WAAW,IAAI,SAAS;AACrD,QAAM,YAAY,UAAU,MAAM,SAAS,OAAO,MAAM,WAAW,MAAM;AACzE,QAAM,YACJ,UAAU,MAAM,SAAS,OAAO,QAAQ,WAAW,QAAQ;AAE7D,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAEA,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAEA,MAAI,aAAa,UAAU,SAAS,YAAY;AAC9C,QACE,EAAE,UAAU,UAAU,iBACrB,UAAU,OAAO,QAAQ,UAAU,SAAS,OAC7C;AACA,YAAM,IAAI,MAAM,iBAAiB,UAAU,GAAG,yBAAyB;AAAA,IACzE;AACA,WAAO;AAAA,MACL,MAAM,wBAAwB,UAAU,GAAG;AAAA,IAC7C;AAAA,EACF;AAGA,QAAM,iBAAiB,oBAAoB,WAAW,YAAY,OAAO;AACzE,MAAI,UAAU,gBAAgB;AAC5B,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAEA,QAAM,MAAM,WAAW,MAAM,SAAS,OAAO,OAAO,WAAW;AAE/D,QAAM,cAAqC;AAAA,IACzC,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AAEA,MAAI,KAAK;AACP,eAAW,WAAW,IAAI,WAAW;AAAA,MACnC,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ,MAAM;AAAA,IACR,CAAC;AAED,WAAO;AAAA,MACL,MAAM,wBAAwB,GAAG;AAAA,IACnC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,mBAAmB,CACvB,MACA,WACA,YACA,YACyD;AACzD,MAAI,CAAC,WAAW;AACd,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,OAAO,QAAQ,UAAU,KAAoB,EAAE;AAAA,IACpD,CAAC,CAAC,KAAK,SAAS,MACd,iBAAiB,WAAW,YAAY,CAAC,GAAG,SAAS,GAAG,GAAG,MAAM,GAAG;AAAA,EACxE;AACF;AAEA,IAAM,sBAAsB,CAC1B,eACA,YACA,YACqD;AACrD,MAAI,CAAC,eAAe;AAClB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAa,iBAAiB,QAAQ,cAAc,MAAM,YAAY;AAAA,IAC1E,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,CAAC,GAAG,SAAS,OAAO;AAAA,EACtB;AACA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,CAAC,GAAG,SAAS,QAAQ;AAAA,EACvB;AACA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,CAAC,GAAG,SAAS,QAAQ;AAAA,EACvB;AAEA,SAAO,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY;AACzE;AAEO,IAAM,yBAAyB,CACpC,YASA,YACA,YAEA,YAAY,IAAI,CAAC,OAAO,UAAU;AAChC,MAAI,aAAa,KAAK,GAAG;AACvB,WAAO,iBAAiB,OAAO,YAAY;AAAA,MACzC,GAAG;AAAA,MACH,eAAe,KAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACA,SAAO;AACT,CAAC,KAAK,CAAC;AAEF,IAAM,yBAAyB,CACpC,YASA,eACA,YACA,YACqE;AACrE,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAgB,oBAAoB,eAAe,YAAY,OAAO;AAC5E,QAAM,qBAA0D;AAAA,IAC9D,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO,mBAAmB,SAAS,qBAAqB;AAC1D;;;AC5LO,IAAM,wBAAwB,CACnC,cAKA,YACA,MACA,YAC2D;AAC3D,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,aAAa,YAAY,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA,MAAM,CAAC;AAAA,MACP,SAAS,oBAAI,IAAI;AAAA,IACnB,CAAC;AAAA,IACD;AAAA,EACF;AACF;AAEA,IAAM,wBAAwB,CAC5B,iBACA,YACA,MACA,YACsC;AACtC,MAAI,CAAC,iBAAiB;AACpB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ,sBAAsB,gBAAgB,QAAQ,YAAY,MAAM;AAAA,MACtE,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,gBAAgB,CAC3B,eACA,YACA,MACA,YAEA,OAAO,QAAQ,aAAa,EAAE;AAAA,EAC5B,CAAC,KAAK,CAAC,WAAW,yBAAyB,MAA2B;AACpE,UAAM,kBAAkB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,GAAG,SAAS,SAAS;AAAA,IACxB;AAEA,QAAI,iBAAiB;AACnB,UAAI,SAAS,IAAI;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;;;AChFK,IAAM,4BAA4B,CACvC,QACgC,IAAI,WAAW,IAAI;;;ACc9C,IAAM,wBAAwB,CACnC,iBAKA,eACoC;AACpC,MAAI,CAAC,iBAAiB;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe,GAAG;AACjC,WAAO,OAAO,QAAQ,gBAAgB,KAAoB,EAAE,OAE1D,CAAC,KAAK,CAAC,KAAK,SAAS,MAAyB;AAC9C,UAAI,GAAG,IAAI,kBAAkB,WAAW,UAAU;AAClD,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAC/B,QACA,eACsD;AACtD,QAAM,YAAY,WAAW,QAAQ,IAAI,MAAM;AAC/C,MAAI,aAAa,UAAU,SAAS,YAAY;AAC9C,WAAO;AAAA,MACL,MAAM,yBAAyB,UAAU,GAAG;AAAA,IAC9C;AAAA,EACF;AAGA,QAAM,aAAa,iBAAiB,QAAQ,UAAU;AACtD,MAAI,UAAU,YAAY;AACxB,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAEA,QAAM,MAAM,OAAO,MAAM,SAAS,QAAQ,OAAO,WAAW;AAE5D,MAAI,KAAK;AACP,eAAW,QAAQ,IAAI,QAAQ;AAAA,MAC7B,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,IACF,CAAC;AACD,WAAO;AAAA,MACL,MAAM,yBAAyB,GAAG;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,mBAAmB,CAC9B,QACA,eAC8B;AAC9B,QAAM,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,SAAS,UAAU,CAAC;AACzD,QAAM,QAAqB,eAAe;AAAA,IACxC;AAAA,IACA,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,IACP,SAAS,oBAAI,IAAI;AAAA,EACnB,CAAC;AACD,QAAM,eAAe,mBAAmB,QAAQ,OAAO,CAAC,QAAQ,CAAC;AACjE,QAAM,WAAW,CAAC,iBAAiB,QAAQ,KAAK;AAChD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,UAAU,EAAE,QAAQ,aAAa;AAAA,IACrC,GAAI,YAAY,EAAE,SAAS;AAAA,EAC7B;AACF;AAEO,IAAM,2BAA2B,CAAC,QACvC,wBAAwB,GAAG;AAEtB,IAAM,iBAAiB,CAC5B,gBACA,YACA,YACiD;AACjD,MAAI,UAAU,gBAAgB;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,WAAW,UAAU,IAAI,cAAc;AACzD,MAAI,aAAa,UAAU,SAAS,YAAY;AAC9C,WAAO,EAAE,MAAM,2BAA2B,UAAU,GAAG,EAAE;AAAA,EAC3D;AAEA,QAAM,EAAE,SAAS,SAAS,KAAK,GAAG,KAAK,IAAI;AAE3C,QAAM,eAAe,sBAAsB,SAAS,UAAU;AAE9D,QAAM,WAAiC;AAAA,IACrC,GAAG;AAAA,IACH,GAAI,gBAAgB,EAAE,SAAS,aAAa;AAAA,IAC5C,GAAI,WAAW;AAAA,MACb,SAAS,cAAc,SAAS,YAAY,UAAU;AAAA,QACpD,GAAG;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,cAAc,OAAO,WAAW;AAEtC,MAAI,aAAa;AACf,eAAW,UAAU,IAAI,gBAAgB;AAAA,MACvC,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AACD,WAAO;AAAA,MACL,MAAM,2BAA2B,WAAW;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAC7B,iBACA,YACA,YAEA,OAAO,QAAQ,eAAe,EAAE;AAAA,EAC9B,CACE,KACA,CAAC,YAAY,cAAc,MAID;AAC1B,QAAI,0BAA0B,UAAU,GAAG;AACzC,UAAI,UAAU,IAAI;AAClB,aAAO;AAAA,IACT;AACA,QAAI,UAAU,IAAI,eAAe,gBAAgB,YAAY;AAAA,MAC3D,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;;;ACtJK,IAAM,oBAAoB,CAC/B,mBACA,YACA,YACgE;AAChE,MAAI,CAAC,mBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,WAAW,cAAc,IAAI,iBAAiB;AAChE,MAAI,aAAa,UAAU,SAAS,YAAY;AAC9C,WAAO;AAAA,MACL,MAAM,8BAA8B,UAAU,GAAG;AAAA,IACnD;AAAA,EACF;AAEA,QAAM,MAAM,kBAAkB,OAAO,WAAW;AAEhD,QAAM,cAAuC;AAAA,IAC3C,GAAG;AAAA,IACH,SAAS,cAAc,kBAAkB,SAAS,YAAY,SAAS;AAAA,MACrE,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,KAAK;AACP,eAAW,cAAc,IAAI,mBAAmB;AAAA,MAC9C,MAAM;AAAA,MACN;AAAA,MACA,mBAAmB;AAAA,IACrB,CAAC;AACD,WAAO;AAAA,MACL,MAAM,8BAA8B,GAAG;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,kBAAkB,CACtB,iBACA,YACA,YACsC;AACtC,QAAM,EAAE,YAAY,eAAe,aAAa,WAAW,GAAG,KAAK,IACjE;AAEF,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,GAAG,SAAS,YAAY;AAAA,EAC3B;AAEA,QAAM,mBAAmB;AAAA,IACvB,gBAAgB;AAAA,IAChB;AAAA,IACA,CAAC,GAAG,SAAS,cAAc;AAAA,EAC7B;AAEA,QAAM,iBAAiB;AAAA,IACrB,gBAAgB;AAAA,IAChB;AAAA,IACA,CAAC,GAAG,SAAS,WAAW;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,mBAAmB,EAAE,YAAY,gBAAgB;AAAA,IACrD,GAAI,oBAAoB,EAAE,aAAa,iBAAiB;AAAA,IACxD,GAAI,kBAAkB,EAAE,WAAW,eAAe;AAAA,EACpD;AACF;AAEA,IAAM,iBAAiB,CACrB,YACA,YACA,SAEA,OAAO,QAAQ,UAAU,EAAE;AAAA,EACzB,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QACE,QAAQ,SACR,QAAQ,SACR,QAAQ,UACR,QAAQ,YACR,QAAQ,aACR,QAAQ,UACR,QAAQ,WACR,QAAQ,SACR;AACA,UAAI,GAAG,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA,CAAC,MAAM,GAAG;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AAGA,QAAI,GAA8B,IAAI;AACtC,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;AAEK,IAAM,cAAc,CACzB,aACA,eACkC;AAClC,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,QAAQ,WAAW,EAAE;AAAA,IACjC,CAAC,KAAK,CAAC,MAAM,cAAc,MAAyB;AAClD,UAAI,0BAA0B,IAAI,GAAG;AACnC,YAAI,IAAI,IAAI;AACZ,eAAO;AAAA,MACT;AACA,UAAI,IAAI,IAAI,eAAe,gBAAgB,YAAY,IAAI;AAC3D,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ACWO,IAAM,uBAAuB,CAClC,kBACA,UAA6B,YACR;AACrB,QAAM,oBAAsC;AAAA,IAC1C,SAAS,oBAAI,IAAI;AAAA,IACjB,YAAY,oBAAI,IAAI;AAAA,IACpB,SAAS,oBAAI,IAAI;AAAA,IACjB,eAAe,oBAAI,IAAI;AAAA,IACvB,WAAW,oBAAI,IAAI;AAAA,IACnB;AAAA,EACF;AACA,MAAI,CAAC,kBAAkB;AACrB,WAAO;AAAA,EACT;AAEA,aAAW,iBAAiB,SAAS,iBAAiB;AACtD,gBAAc,iBAAiB,YAAY,iBAAiB;AAC5D,mBAAiB,iBAAiB,eAAe,iBAAiB;AAClE,aAAW,iBAAiB,SAAS,iBAAiB;AACtD,eAAa,iBAAiB,WAAW,iBAAiB;AAE1D,SAAO;AACT;AAEA,IAAM,aAAa,CACjB,SACA,eACS;AACT,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AACjD,QAAI,aAAa,MAAM,GAAG;AACxB,UAAI,WAAW,QAAQ,IAAI,MAAM,GAAG;AAClC,cAAM,IAAI;AAAA,UACR,UAAU,KAAK,UAAU,OAAO,IAAI,CAAC;AAAA,QACvC;AAAA,MACF;AACA,YAAM,MAAM,OAAO,KAAK,SAAS,OAAO;AACxC,iBAAW,QAAQ,IAAI,QAAQ;AAAA,QAC7B,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEA,IAAM,gBAAgB,CACpB,YACA,eACS;AACT,MAAI,CAAC,YAAY;AACf;AAAA,EACF;AAEA,SAAO,QAAQ,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AACpD,QAAI,aAAa,MAAM,GAAG;AACxB,UAAI,WAAW,WAAW,IAAI,MAAM,GAAG;AACrC,cAAM,IAAI;AAAA,UACR,aAAa,KAAK,UAAU,OAAO,IAAI,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,YAAM,MAAM,OAAO,KAAK,SAAS,OAAO,OAAO;AAC/C,YAAM,OAAO,OAAO,KAAK,SAAS,OAAO;AACzC,YAAM,WAAW,OAAO,KAAK,SAAS,OAAO;AAE7C,UAAI,CAAC,QAAQ,CAAC,UAAU;AACtB,cAAM,IAAI,MAAM,sCAAsC;AAAA,MACxD;AACA,iBAAW,WAAW,IAAI,QAAQ;AAAA,QAChC,MAAM;AAAA,QACN;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEA,IAAM,aAAa,CACjB,iBACA,eACS;AACT,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAEA,SAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AACzD,QAAI,aAAa,MAAM,GAAG;AACxB,UAAI,WAAW,WAAW,IAAI,MAAM,GAAG;AACrC,cAAM,IAAI;AAAA,UACR,UAAU,KAAK,UAAU,OAAO,IAAI,CAAC;AAAA,QACvC;AAAA,MACF;AACA,YAAM,MAAM,OAAO,KAAK,SAAS,OAAO,OAAO;AAC/C,iBAAW,QAAQ,IAAI,QAAQ;AAAA,QAC7B,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEA,IAAM,eAAe,CACnB,WACA,eACS;AACT,MAAI,CAAC,WAAW;AACd;AAAA,EACF;AAEA,SAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,cAAc,MAAM;AAC3D,QAAI,WAAW,UAAU,IAAI,cAAc,GAAG;AAC5C,YAAM,IAAI;AAAA,QACR,UAAU,KAAK,UAAU,cAAc,CAAC;AAAA,MAC1C;AAAA,IACF;AACA,UAAM,MAAM,gBAAgB,OAAO;AACnC,eAAW,UAAU,IAAI,gBAAgB;AAAA,MACvC,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEA,IAAM,mBAAmB,CACvB,eACA,eACS;AACT,MAAI,CAAC,eAAe;AAClB;AAAA,EACF;AAEA,SAAO,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,WAAW,MAAM;AAC5D,QAAI,WAAW,cAAc,IAAI,WAAW,GAAG;AAC7C,YAAM,IAAI;AAAA,QACR,UAAU,KAAK,UAAU,WAAW,CAAC;AAAA,MACvC;AAAA,IACF;AACA,UAAM,MAAM,aAAa,OAAO;AAChC,eAAW,cAAc,IAAI,aAAa;AAAA,MACxC,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEO,IAAM,2BAA2B,CAAC,cACvC,wBAAwB,SAAS;AAE5B,IAAM,6BAA6B,CAAC,gBACzC,0BAA0B,WAAW;AAEhC,IAAM,gCAAgC,CAAC,mBAC5C,8BAA8B,cAAc;AAEvC,IAAM,mBAAmB,CAC9B,kBACA,eACuC;AACvC,QAAM,kBAAkB,uBAAuB,kBAAkB,UAAU;AAC3E,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,kBAAkB,uBAAuB,kBAAkB,UAAU;AAC3E,QAAM,oBAAoB,yBAAyB,UAAU;AAC7D,QAAM,wBAAwB,8BAA8B,UAAU;AAEtE,QAAM,EAAE,SAAS,YAAY,SAAS,WAAW,eAAe,GAAG,KAAK,IACtE;AAEF,QAAM,kBAA0C;AAAA,IAC9C,GAAG;AAAA,IACH,GAAI,mBAAmB,EAAE,SAAS,gBAAgB;AAAA,IAClD,GAAI,sBAAsB,EAAE,YAAY,mBAAmB;AAAA,IAC3D,GAAI,yBAAyB,EAAE,eAAe,sBAAsB;AAAA,IACpE,GAAI,mBAAmB,EAAE,SAAS,gBAAgB;AAAA,IAClD,GAAI,qBAAqB,EAAE,WAAW,kBAAkB;AAAA,EAC1D;AACA,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;AAEA,IAAM,yBAAyB,CAC7B,kBACA,eACsC;AACtC,QAAM,KAAK,WAAW,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,UAAU;AACpE,QAAI,SAAS,UAAU;AACrB,YAAM,QAAqB,eAAe;AAAA,QACxC;AAAA,QACA,MAAM,OAAO,KAAK,SAAS,WAAW;AAAA,QACtC,MAAM,CAAC;AAAA,QACP,SAAS,oBAAI,IAAI;AAAA,MACnB,CAAC;AAED,yBAAmB,QAAQ,OAAO,CAAC,0BAA0B,KAAK,EAAE,CAAC;AAAA,IACvE;AAAA,EACF,CAAC;AAED,QAAM,mBAAmB,OAAO;AAAA,IAC9B,iBAAiB,WAAW,CAAC;AAAA,EAC/B,EAAE;AAAA,IACA,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,aAAa,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,GAAG,GAAG;AACZ,cAAM,IAAI,MAAM,WAAW,GAAG,yBAAyB;AAAA,MACzD;AAEA,UAAI,GAAG,IAAI;AACX,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,MAAM,KAAK,WAAW,OAAO,EAAE,OAErD,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM;AAChC,QAAI,UAAU,SAAS,YAAY;AACjC,UAAI,IAAI,UAAU,GAAG,GAAG;AACtB,cAAM,IAAI,MAAM,WAAW,UAAU,GAAG,yBAAyB;AAAA,MACnE;AACA,UAAI,UAAU,GAAG,IAAI,UAAU;AAAA,IACjC;AAEA,WAAO;AAAA,EACT,GAAG,gBAAgB;AAEnB,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;AAEA,IAAM,wBAAwB,CAC5B,kBACA,eACyC;AACzC,QAAM,KAAK,WAAW,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,SAAS,GAAG,UAAU;AACxE,QAAI,UAAU,SAAS,UAAU;AAC/B;AAAA,QACE;AAAA,QACA;AAAA,QACA,CAAC,6BAA6B,KAAK,EAAE;AAAA,QACrC,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,mBAAmB,OAAO;AAAA,IAC9B,iBAAiB,cAAc,CAAC;AAAA,EAClC,EAAE;AAAA,IACA,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,CAAC,aAAa,KAAK,GAAG;AACxB,YAAI,IAAI,GAAG,GAAG;AACZ,gBAAM,IAAI,MAAM,cAAc,GAAG,yBAAyB;AAAA,QAC5D;AAEA,YAAI,GAAG,IAAI;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,MAAM,KAAK,WAAW,UAAU,EAAE,OAExD,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM;AAChC,QAAI,UAAU,SAAS,YAAY;AACjC,UAAI,IAAI,UAAU,GAAG,GAAG;AACtB,cAAM,IAAI,MAAM,cAAc,UAAU,GAAG,yBAAyB;AAAA,MACtE;AACA,UAAI,UAAU,GAAG,IAAI,UAAU;AAAA,IACjC;AAEA,WAAO;AAAA,EACT,GAAG,gBAAgB;AAEnB,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;AAEA,IAAM,yBAAyB,CAC7B,kBACA,eACsC;AACtC,QAAM,KAAK,WAAW,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,SAAS,MAAM;AAC9D,QAAI,UAAU,SAAS,UAAU;AAC/B,wBAAkB,QAAQ,UAAU;AAAA,IACtC;AAAA,EACF,CAAC;AAED,QAAM,UAAU,iBAAiB,WAAW,CAAC;AAC7C,QAAM,mBAAmB,OAAO,QAAQ,OAAO,EAAE,OAE/C,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACvB,QAAI,CAAC,aAAa,KAAK,GAAG;AACxB,UAAI,IAAI,GAAG,GAAG;AACZ,cAAM,IAAI,MAAM,eAAe,GAAG,yBAAyB;AAAA,MAC7D;AAEA,UAAI,GAAG,IAAI;AAAA,IACb;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAkB,MAAM,KAAK,WAAW,OAAO,EAAE,OAErD,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM;AAChC,QAAI,UAAU,SAAS,YAAY;AACjC,UAAI,IAAI,UAAU,GAAG,GAAG;AACtB,cAAM,IAAI,MAAM,WAAW,UAAU,GAAG,yBAAyB;AAAA,MACnE;AACA,UAAI,UAAU,GAAG,IAAI,UAAU;AAAA,IACjC;AAEA,WAAO;AAAA,EACT,GAAG,gBAAgB;AAEnB,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;AAEA,IAAM,2BAA2B,CAC/B,eACwC;AACxC,QAAM,KAAK,WAAW,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,SAAS,GAAG,UAAU;AACvE,QAAI,UAAU,SAAS,UAAU;AAC/B,qBAAe,QAAQ,YAAY,CAAC,4BAA4B,KAAK,EAAE,CAAC;AAAA,IAC1E;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,MAAM,KAAK,WAAW,SAAS,EAAE,OAEvD,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM;AAChC,QAAI,UAAU,SAAS,YAAY;AACjC,UAAI,IAAI,UAAU,GAAG,GAAG;AACtB,cAAM,IAAI,MAAM,aAAa,UAAU,GAAG,yBAAyB;AAAA,MACrE;AACA,UAAI,UAAU,GAAG,IAAI,UAAU;AAAA,IACjC;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;AAEA,IAAM,gCAAgC,CACpC,eAC4C;AAC5C,QAAM,KAAK,WAAW,aAAa,EAAE,QAAQ,CAAC,CAAC,QAAQ,SAAS,GAAG,UAAU;AAC3E,QAAI,UAAU,SAAS,UAAU;AAC/B,wBAAkB,QAAQ,YAAY;AAAA,QACpC,0BAA0B,KAAK;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,MAAM,KAAK,WAAW,aAAa,EAAE,OAE3D,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM;AAChC,QAAI,UAAU,SAAS,YAAY;AACjC,UAAI,IAAI,UAAU,GAAG,GAAG;AACtB,cAAM,IAAI,MAAM,gBAAgB,UAAU,GAAG,yBAAyB;AAAA,MACxE;AACA,UAAI,UAAU,GAAG,IACf,UAAU;AAAA,IACd;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO,OAAO,KAAK,eAAe,EAAE,SAAS,kBAAkB;AACjE;;;AC/YO,IAAM,iBAAiB,CAC5B,qBACwB;AACxB,QAAM,EAAE,OAAO,UAAU,aAAa,CAAC,GAAG,GAAG,KAAK,IAAI;AACtD,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,EACnB;AAEA,QAAM,eAAe,YAAY,OAAO,iBAAiB;AACzD,QAAM,kBAAkB,YAAY,UAAU,iBAAiB;AAC/D,QAAM,oBAAoB,iBAAiB,YAAY,iBAAiB;AAExE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,gBAAgB,EAAE,OAAO,aAAa;AAAA,IAC1C,GAAI,mBAAmB,EAAE,UAAU,gBAAgB;AAAA,IACnD,GAAI,qBAAqB,EAAE,YAAY,kBAAkB;AAAA,EAC3D;AACF;;;AC1EO,SAAS,qBAAqB,KAAe;AAClD,MAAI,OAAO,IAAI,QAAQ,UAAU,YAAY,aAAa;AACxD;AAAA,EACF;AACA,MAAI,QAAQ,UAAU,UAAU,SAAU,SAAS;AAEjD,UAAM,SAAS,IAAK,KAAa,YAAY;AAAA,MAC3C,GAAG,KAAK;AAAA,MACR;AAAA,IACF,CAAC;AAGD,WAAO;AAAA,EACT;AAGA,QAAM,kBAAkB,IAAI,UAAU,UAAU;AAEhD,MAAI,UAAU,UAAU,SAAS,YAC5B,MACH;AACA,UAAM,eAAe,gBAAgB,MAAM,MAAM,IAAI;AACrD,iBAAa,KAAK,iBAAiB;AAAA,MACjC,SAAS;AAAA,IACX;AACA,WAAO,aAAa,KAAK;AAEzB,WAAO;AAAA,EACT;AAGA,QAAM,gBAAgB,IAAI,UAAU,UAAU;AAE9C,MAAI,UAAU,UAAU,OAAO,YAC1B,MACH;AACA,UAAM,aAAa,cAAc,MAAM,MAAM,IAAI;AACjD,WAAO,WAAW,KAAK;AACvB,WAAO,WAAW,KAAK;AAEvB,WAAO;AAAA,EACT;AAGA,QAAM,gBAAgB,IAAI,UAAU,UAAU;AAE9C,MAAI,UAAU,UAAU,OAAO,YAC1B,MACH;AACA,UAAM,aAAa,cAAc,MAAM,MAAM,IAAI;AACjD,WAAO,WAAW,KAAK;AACvB,WAAO,WAAW,KAAK;AAEvB,WAAO;AAAA,EACT;AACF;;;ACtIA;;;ACAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
- "names": ["schema"]
7
- }