@geekmidas/schema 1.0.0 → 1.0.2
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/CHANGELOG.md +12 -0
- package/dist/{conversion-BJGLAqtd.mjs → conversion-CIBtqJkS.mjs} +20 -2
- package/dist/{conversion-BJGLAqtd.mjs.map → conversion-CIBtqJkS.mjs.map} +1 -1
- package/dist/{conversion-CFlFrSru.cjs → conversion-Cf9R-jGc.cjs} +25 -1
- package/dist/{conversion-CFlFrSru.cjs.map → conversion-Cf9R-jGc.cjs.map} +1 -1
- package/dist/{conversion-CH_EmflL.d.cts → conversion-JY1Wixil.d.cts} +11 -2
- package/dist/conversion-JY1Wixil.d.cts.map +1 -0
- package/dist/{conversion-DUyZYTWO.d.mts → conversion-e4k9rTxy.d.mts} +11 -2
- package/dist/conversion-e4k9rTxy.d.mts.map +1 -0
- package/dist/conversion.cjs +2 -1
- package/dist/conversion.d.cts +2 -2
- package/dist/conversion.d.mts +2 -2
- package/dist/conversion.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +33 -13
- package/src/conversion.ts +25 -0
- package/dist/conversion-CH_EmflL.d.cts.map +0 -1
- package/dist/conversion-DUyZYTWO.d.mts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @geekmidas/schema
|
|
2
2
|
|
|
3
|
+
## 1.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 🐛 [`d70c6c0`](https://github.com/geekmidas/toolbox/commit/d70c6c0aeb8a79da2473ac77dbd8255a4a2f5651) Thanks [@geekmidas](https://github.com/geekmidas)! - Fix `package.json` exports so TypeScript declarations resolve correctly under NodeNext/Bundler module resolution. Each subpath export now nests `types` inside its `import`/`require` condition, pointing at the `.d.mts` and `.d.cts` files that `tsdown` actually emits (previously the exports referenced non-existent `.d.ts` files, causing type-resolution failures for consumers). Both ESM (`.mjs`) and CJS (`.cjs`) runtime entry points are preserved. Additionally, `@geekmidas/ui` had `import` paths pointing at `.js` files that were never emitted — those are corrected to `.mjs`.
|
|
8
|
+
|
|
9
|
+
## 1.0.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 🐛 [`aeba918`](https://github.com/geekmidas/toolbox/commit/aeba918fc258f6ccdb96b8273b2bc01bd2190553) Thanks [@geekmidas](https://github.com/geekmidas)! - Fix schema, openapi generation and events testkit
|
|
14
|
+
|
|
3
15
|
## 1.0.0
|
|
4
16
|
|
|
5
17
|
### Major Changes
|
|
@@ -64,6 +64,24 @@ async function getZodMetadata(schema) {
|
|
|
64
64
|
if (schema instanceof ZodObject) return schema.meta();
|
|
65
65
|
return void 0;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Return JSON Schema for every schema registered in zod v4's global registry
|
|
69
|
+
* via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or
|
|
70
|
+
* no schemas are registered.
|
|
71
|
+
*
|
|
72
|
+
* `unrepresentable: 'any'` keeps a single unrepresentable schema from
|
|
73
|
+
* collapsing the whole result.
|
|
74
|
+
*/
|
|
75
|
+
async function getRegisteredZodJsonSchemas() {
|
|
76
|
+
try {
|
|
77
|
+
const { z } = await import("zod/v4").catch(() => ({ z: null }));
|
|
78
|
+
if (!z?.toJSONSchema || !z.globalRegistry) return {};
|
|
79
|
+
const result = z.toJSONSchema(z.globalRegistry, { unrepresentable: "any" });
|
|
80
|
+
return result?.schemas ?? {};
|
|
81
|
+
} catch {
|
|
82
|
+
return {};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
67
85
|
async function getSchemaMetadata(schema) {
|
|
68
86
|
const vendor = schema["~standard"]?.vendor;
|
|
69
87
|
if (vendor === "zod") return getZodMetadata(schema);
|
|
@@ -84,5 +102,5 @@ async function convertSchemaWithComponents(schema, componentCollector) {
|
|
|
84
102
|
}
|
|
85
103
|
|
|
86
104
|
//#endregion
|
|
87
|
-
export { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
88
|
-
//# sourceMappingURL=conversion-
|
|
105
|
+
export { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
|
106
|
+
//# sourceMappingURL=conversion-CIBtqJkS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion-
|
|
1
|
+
{"version":3,"file":"conversion-CIBtqJkS.mjs","names":["vendor?: string","StandardSchemaJsonSchema: VendorConvertors","jsonSchema: any","componentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t}","schema: any","processed: any","schema?: StandardSchemaV1","schema: StandardSchemaV1","schema: StandardSchemaV1 | undefined"],"sources":["../src/conversion.ts"],"sourcesContent":["import type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport enum SchemaVendor {\n\tzod = 'zod',\n\tvalibot = 'valibot',\n}\n\nexport type VendorConvertor = (schema: any) => Promise<any>;\nexport type VendorConvertors = Record<SchemaVendor, VendorConvertor>;\n\nfunction isSchemaVendor(vendor?: string): vendor is SchemaVendor {\n\tif (!vendor) {\n\t\treturn false;\n\t}\n\n\treturn Object.values(SchemaVendor).includes(vendor as SchemaVendor);\n}\n\nexport const StandardSchemaJsonSchema: VendorConvertors = {\n\tzod: async (schema): Promise<any> => {\n\t\ttry {\n\t\t\tconst { z } = await import('zod/v4').catch(() => ({ z: {} }));\n\n\t\t\tif ('toJSONSchema' in z && typeof z.toJSONSchema === 'function') {\n\t\t\t\treturn z.toJSONSchema(schema);\n\t\t\t}\n\t\t\tconst { zodToJsonSchema } = await import('zod-to-json-schema');\n\n\t\t\tconst result = zodToJsonSchema(schema, {\n\t\t\t\tremoveAdditionalStrategy: 'strict',\n\t\t\t});\n\n\t\t\treturn result;\n\t\t} catch {\n\t\t\t// Fallback to basic conversion if zod-to-json-schema is not available\n\t\t\treturn { type: 'object' };\n\t\t}\n\t},\n\tvalibot: async (schema): Promise<any> => {\n\t\tconst { toJsonSchema } = await import('@valibot/to-json-schema');\n\t\treturn toJsonSchema(schema as any);\n\t},\n};\n\nfunction extractAndConvertDefs(\n\tjsonSchema: any,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): any {\n\tif (!jsonSchema || typeof jsonSchema !== 'object') {\n\t\treturn jsonSchema;\n\t}\n\n\t// Process the schema recursively to update references\n\tconst processSchema = (schema: any): any => {\n\t\tif (!schema || typeof schema !== 'object') {\n\t\t\treturn schema;\n\t\t}\n\n\t\t// Handle $ref\n\t\tif (schema.$ref && typeof schema.$ref === 'string') {\n\t\t\t// Convert #/$defs/X to #/components/schemas/X\n\t\t\tif (schema.$ref.startsWith('#/$defs/')) {\n\t\t\t\tconst refName = schema.$ref.replace('#/$defs/', '');\n\t\t\t\treturn componentCollector\n\t\t\t\t\t? componentCollector.getReference(refName)\n\t\t\t\t\t: schema;\n\t\t\t}\n\t\t\treturn schema;\n\t\t}\n\n\t\t// Handle arrays\n\t\tif (Array.isArray(schema)) {\n\t\t\treturn schema.map(processSchema);\n\t\t}\n\n\t\t// Process all properties recursively\n\t\tconst processed: any = {};\n\t\tfor (const [key, value] of Object.entries(schema)) {\n\t\t\tif (key === '$defs') {\n\t\t\t\t// Skip $defs as they've been extracted\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprocessed[key] = processSchema(value);\n\t\t}\n\t\treturn processed;\n\t};\n\n\t// Extract $defs if present\n\tif (jsonSchema.$defs && componentCollector) {\n\t\tfor (const [defName, defSchema] of Object.entries(jsonSchema.$defs)) {\n\t\t\t// Process the definition recursively to handle nested $refs\n\t\t\tconst processedDefSchema = processSchema(defSchema);\n\t\t\t// Add each definition to the component collector\n\t\t\tcomponentCollector.addSchema(defName, processedDefSchema);\n\t\t}\n\t}\n\n\t// Process the schema and remove $defs\n\tconst { $defs, ...schemaWithoutDefs } = jsonSchema;\n\treturn processSchema(schemaWithoutDefs);\n}\n\nexport async function convertStandardSchemaToJsonSchema(\n\tschema?: StandardSchemaV1,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): Promise<any> {\n\tif (!schema) {\n\t\treturn undefined;\n\t}\n\n\tconst vendor = schema['~standard']?.vendor;\n\tif (!isSchemaVendor(vendor)) {\n\t\tthrow new Error(\n\t\t\t`Unsupported or missing vendor \"${vendor}\" for Standard Schema. Supported vendors are: ${Object.keys(StandardSchemaJsonSchema).join(', ')}`,\n\t\t);\n\t}\n\n\tconst toJSONSchema = StandardSchemaJsonSchema[vendor];\n\tconst jsonSchema = await toJSONSchema(schema);\n\n\t// Extract and convert $defs to components\n\treturn extractAndConvertDefs(jsonSchema, componentCollector);\n}\n\nexport async function getZodMetadata(\n\tschema: StandardSchemaV1,\n): Promise<SchemaMeta | undefined> {\n\tconst { ZodObject } = await import('zod/v4');\n\n\tif (schema instanceof ZodObject) {\n\t\treturn schema.meta();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Return JSON Schema for every schema registered in zod v4's global registry\n * via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or\n * no schemas are registered.\n *\n * `unrepresentable: 'any'` keeps a single unrepresentable schema from\n * collapsing the whole result.\n */\nexport async function getRegisteredZodJsonSchemas(): Promise<\n\tRecord<string, any>\n> {\n\ttry {\n\t\tconst { z } = await import('zod/v4').catch(() => ({ z: null as any }));\n\t\tif (!z?.toJSONSchema || !z.globalRegistry) {\n\t\t\treturn {};\n\t\t}\n\t\tconst result = z.toJSONSchema(z.globalRegistry, {\n\t\t\tunrepresentable: 'any',\n\t\t});\n\t\treturn (result?.schemas ?? {}) as Record<string, any>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nexport async function getSchemaMetadata(\n\tschema: StandardSchemaV1,\n): Promise<SchemaMeta | undefined> {\n\tconst vendor = schema['~standard']?.vendor;\n\n\tif (vendor === 'zod') {\n\t\treturn getZodMetadata(schema);\n\t}\n\n\treturn undefined;\n}\n\ninterface SchemaMeta {\n\tid?: string;\n}\n\nexport async function convertSchemaWithComponents(\n\tschema: StandardSchemaV1 | undefined,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): Promise<any> {\n\tif (!schema) {\n\t\treturn undefined;\n\t}\n\n\t// Convert to JSON Schema with component collector to handle $defs\n\tconst jsonSchema = await convertStandardSchemaToJsonSchema(\n\t\tschema,\n\t\tcomponentCollector,\n\t);\n\n\tif (!componentCollector) {\n\t\treturn jsonSchema;\n\t}\n\n\t// Check if this schema has metadata with an ID\n\tconst metadata = await getSchemaMetadata(schema);\n\n\t// Also check if the JSON Schema itself has an id field (from Zod's meta)\n\tconst schemaId = metadata?.id || jsonSchema?.id;\n\n\tif (schemaId) {\n\t\t// Remove the id from the schema before adding to components\n\t\tconst { id, ...schemaWithoutId } = jsonSchema;\n\t\t// Add this schema to components and return a reference\n\t\tcomponentCollector.addSchema(schemaId, schemaWithoutId);\n\t\treturn componentCollector.getReference(schemaId);\n\t}\n\n\treturn jsonSchema;\n}\n"],"mappings":"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"}
|
|
@@ -65,6 +65,24 @@ async function getZodMetadata(schema) {
|
|
|
65
65
|
if (schema instanceof ZodObject) return schema.meta();
|
|
66
66
|
return void 0;
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Return JSON Schema for every schema registered in zod v4's global registry
|
|
70
|
+
* via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or
|
|
71
|
+
* no schemas are registered.
|
|
72
|
+
*
|
|
73
|
+
* `unrepresentable: 'any'` keeps a single unrepresentable schema from
|
|
74
|
+
* collapsing the whole result.
|
|
75
|
+
*/
|
|
76
|
+
async function getRegisteredZodJsonSchemas() {
|
|
77
|
+
try {
|
|
78
|
+
const { z } = await import("zod/v4").catch(() => ({ z: null }));
|
|
79
|
+
if (!z?.toJSONSchema || !z.globalRegistry) return {};
|
|
80
|
+
const result = z.toJSONSchema(z.globalRegistry, { unrepresentable: "any" });
|
|
81
|
+
return result?.schemas ?? {};
|
|
82
|
+
} catch {
|
|
83
|
+
return {};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
68
86
|
async function getSchemaMetadata(schema) {
|
|
69
87
|
const vendor = schema["~standard"]?.vendor;
|
|
70
88
|
if (vendor === "zod") return getZodMetadata(schema);
|
|
@@ -109,6 +127,12 @@ Object.defineProperty(exports, 'convertStandardSchemaToJsonSchema', {
|
|
|
109
127
|
return convertStandardSchemaToJsonSchema;
|
|
110
128
|
}
|
|
111
129
|
});
|
|
130
|
+
Object.defineProperty(exports, 'getRegisteredZodJsonSchemas', {
|
|
131
|
+
enumerable: true,
|
|
132
|
+
get: function () {
|
|
133
|
+
return getRegisteredZodJsonSchemas;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
112
136
|
Object.defineProperty(exports, 'getSchemaMetadata', {
|
|
113
137
|
enumerable: true,
|
|
114
138
|
get: function () {
|
|
@@ -121,4 +145,4 @@ Object.defineProperty(exports, 'getZodMetadata', {
|
|
|
121
145
|
return getZodMetadata;
|
|
122
146
|
}
|
|
123
147
|
});
|
|
124
|
-
//# sourceMappingURL=conversion-
|
|
148
|
+
//# sourceMappingURL=conversion-Cf9R-jGc.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion-
|
|
1
|
+
{"version":3,"file":"conversion-Cf9R-jGc.cjs","names":["vendor?: string","StandardSchemaJsonSchema: VendorConvertors","jsonSchema: any","componentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t}","schema: any","processed: any","schema?: StandardSchemaV1","schema: StandardSchemaV1","schema: StandardSchemaV1 | undefined"],"sources":["../src/conversion.ts"],"sourcesContent":["import type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport enum SchemaVendor {\n\tzod = 'zod',\n\tvalibot = 'valibot',\n}\n\nexport type VendorConvertor = (schema: any) => Promise<any>;\nexport type VendorConvertors = Record<SchemaVendor, VendorConvertor>;\n\nfunction isSchemaVendor(vendor?: string): vendor is SchemaVendor {\n\tif (!vendor) {\n\t\treturn false;\n\t}\n\n\treturn Object.values(SchemaVendor).includes(vendor as SchemaVendor);\n}\n\nexport const StandardSchemaJsonSchema: VendorConvertors = {\n\tzod: async (schema): Promise<any> => {\n\t\ttry {\n\t\t\tconst { z } = await import('zod/v4').catch(() => ({ z: {} }));\n\n\t\t\tif ('toJSONSchema' in z && typeof z.toJSONSchema === 'function') {\n\t\t\t\treturn z.toJSONSchema(schema);\n\t\t\t}\n\t\t\tconst { zodToJsonSchema } = await import('zod-to-json-schema');\n\n\t\t\tconst result = zodToJsonSchema(schema, {\n\t\t\t\tremoveAdditionalStrategy: 'strict',\n\t\t\t});\n\n\t\t\treturn result;\n\t\t} catch {\n\t\t\t// Fallback to basic conversion if zod-to-json-schema is not available\n\t\t\treturn { type: 'object' };\n\t\t}\n\t},\n\tvalibot: async (schema): Promise<any> => {\n\t\tconst { toJsonSchema } = await import('@valibot/to-json-schema');\n\t\treturn toJsonSchema(schema as any);\n\t},\n};\n\nfunction extractAndConvertDefs(\n\tjsonSchema: any,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): any {\n\tif (!jsonSchema || typeof jsonSchema !== 'object') {\n\t\treturn jsonSchema;\n\t}\n\n\t// Process the schema recursively to update references\n\tconst processSchema = (schema: any): any => {\n\t\tif (!schema || typeof schema !== 'object') {\n\t\t\treturn schema;\n\t\t}\n\n\t\t// Handle $ref\n\t\tif (schema.$ref && typeof schema.$ref === 'string') {\n\t\t\t// Convert #/$defs/X to #/components/schemas/X\n\t\t\tif (schema.$ref.startsWith('#/$defs/')) {\n\t\t\t\tconst refName = schema.$ref.replace('#/$defs/', '');\n\t\t\t\treturn componentCollector\n\t\t\t\t\t? componentCollector.getReference(refName)\n\t\t\t\t\t: schema;\n\t\t\t}\n\t\t\treturn schema;\n\t\t}\n\n\t\t// Handle arrays\n\t\tif (Array.isArray(schema)) {\n\t\t\treturn schema.map(processSchema);\n\t\t}\n\n\t\t// Process all properties recursively\n\t\tconst processed: any = {};\n\t\tfor (const [key, value] of Object.entries(schema)) {\n\t\t\tif (key === '$defs') {\n\t\t\t\t// Skip $defs as they've been extracted\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprocessed[key] = processSchema(value);\n\t\t}\n\t\treturn processed;\n\t};\n\n\t// Extract $defs if present\n\tif (jsonSchema.$defs && componentCollector) {\n\t\tfor (const [defName, defSchema] of Object.entries(jsonSchema.$defs)) {\n\t\t\t// Process the definition recursively to handle nested $refs\n\t\t\tconst processedDefSchema = processSchema(defSchema);\n\t\t\t// Add each definition to the component collector\n\t\t\tcomponentCollector.addSchema(defName, processedDefSchema);\n\t\t}\n\t}\n\n\t// Process the schema and remove $defs\n\tconst { $defs, ...schemaWithoutDefs } = jsonSchema;\n\treturn processSchema(schemaWithoutDefs);\n}\n\nexport async function convertStandardSchemaToJsonSchema(\n\tschema?: StandardSchemaV1,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): Promise<any> {\n\tif (!schema) {\n\t\treturn undefined;\n\t}\n\n\tconst vendor = schema['~standard']?.vendor;\n\tif (!isSchemaVendor(vendor)) {\n\t\tthrow new Error(\n\t\t\t`Unsupported or missing vendor \"${vendor}\" for Standard Schema. Supported vendors are: ${Object.keys(StandardSchemaJsonSchema).join(', ')}`,\n\t\t);\n\t}\n\n\tconst toJSONSchema = StandardSchemaJsonSchema[vendor];\n\tconst jsonSchema = await toJSONSchema(schema);\n\n\t// Extract and convert $defs to components\n\treturn extractAndConvertDefs(jsonSchema, componentCollector);\n}\n\nexport async function getZodMetadata(\n\tschema: StandardSchemaV1,\n): Promise<SchemaMeta | undefined> {\n\tconst { ZodObject } = await import('zod/v4');\n\n\tif (schema instanceof ZodObject) {\n\t\treturn schema.meta();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Return JSON Schema for every schema registered in zod v4's global registry\n * via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or\n * no schemas are registered.\n *\n * `unrepresentable: 'any'` keeps a single unrepresentable schema from\n * collapsing the whole result.\n */\nexport async function getRegisteredZodJsonSchemas(): Promise<\n\tRecord<string, any>\n> {\n\ttry {\n\t\tconst { z } = await import('zod/v4').catch(() => ({ z: null as any }));\n\t\tif (!z?.toJSONSchema || !z.globalRegistry) {\n\t\t\treturn {};\n\t\t}\n\t\tconst result = z.toJSONSchema(z.globalRegistry, {\n\t\t\tunrepresentable: 'any',\n\t\t});\n\t\treturn (result?.schemas ?? {}) as Record<string, any>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nexport async function getSchemaMetadata(\n\tschema: StandardSchemaV1,\n): Promise<SchemaMeta | undefined> {\n\tconst vendor = schema['~standard']?.vendor;\n\n\tif (vendor === 'zod') {\n\t\treturn getZodMetadata(schema);\n\t}\n\n\treturn undefined;\n}\n\ninterface SchemaMeta {\n\tid?: string;\n}\n\nexport async function convertSchemaWithComponents(\n\tschema: StandardSchemaV1 | undefined,\n\tcomponentCollector?: {\n\t\taddSchema(id: string, schema: any): void;\n\t\tgetReference(id: string): { $ref: string };\n\t},\n): Promise<any> {\n\tif (!schema) {\n\t\treturn undefined;\n\t}\n\n\t// Convert to JSON Schema with component collector to handle $defs\n\tconst jsonSchema = await convertStandardSchemaToJsonSchema(\n\t\tschema,\n\t\tcomponentCollector,\n\t);\n\n\tif (!componentCollector) {\n\t\treturn jsonSchema;\n\t}\n\n\t// Check if this schema has metadata with an ID\n\tconst metadata = await getSchemaMetadata(schema);\n\n\t// Also check if the JSON Schema itself has an id field (from Zod's meta)\n\tconst schemaId = metadata?.id || jsonSchema?.id;\n\n\tif (schemaId) {\n\t\t// Remove the id from the schema before adding to components\n\t\tconst { id, ...schemaWithoutId } = jsonSchema;\n\t\t// Add this schema to components and return a reference\n\t\tcomponentCollector.addSchema(schemaId, schemaWithoutId);\n\t\treturn componentCollector.getReference(schemaId);\n\t}\n\n\treturn jsonSchema;\n}\n"],"mappings":"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"}
|
|
@@ -15,6 +15,15 @@ declare function convertStandardSchemaToJsonSchema(schema?: StandardSchemaV1, co
|
|
|
15
15
|
};
|
|
16
16
|
}): Promise<any>;
|
|
17
17
|
declare function getZodMetadata(schema: StandardSchemaV1): Promise<SchemaMeta | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* Return JSON Schema for every schema registered in zod v4's global registry
|
|
20
|
+
* via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or
|
|
21
|
+
* no schemas are registered.
|
|
22
|
+
*
|
|
23
|
+
* `unrepresentable: 'any'` keeps a single unrepresentable schema from
|
|
24
|
+
* collapsing the whole result.
|
|
25
|
+
*/
|
|
26
|
+
declare function getRegisteredZodJsonSchemas(): Promise<Record<string, any>>;
|
|
18
27
|
declare function getSchemaMetadata(schema: StandardSchemaV1): Promise<SchemaMeta | undefined>;
|
|
19
28
|
interface SchemaMeta {
|
|
20
29
|
id?: string;
|
|
@@ -26,5 +35,5 @@ declare function convertSchemaWithComponents(schema: StandardSchemaV1 | undefine
|
|
|
26
35
|
};
|
|
27
36
|
}): Promise<any>;
|
|
28
37
|
//#endregion
|
|
29
|
-
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
30
|
-
//# sourceMappingURL=conversion-
|
|
38
|
+
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
|
39
|
+
//# sourceMappingURL=conversion-JY1Wixil.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-JY1Wixil.d.cts","names":[],"sources":["../src/conversion.ts"],"sourcesContent":[],"mappings":";;;aAEY,YAAA;;EAAA,OAAA,GAAA,SAAY;AAKxB;AACY,KADA,eAAA,GACgB,CAAA,MAAA,EAAA,GAAA,EAAA,GADmB,OACnB,CAAA,GAAA,CAAA;AAAA,KAAhB,gBAAA,GAAmB,MAAH,CAAU,YAAV,EAAwB,eAAxB,CAAA;AAAU,cAUzB,wBAVyB,EAUC,gBAVD;AAAc,iBAiG9B,iCAAA,CAjG8B,MAAA,CAAA,EAkG1C,gBAlG0C,EAAA,kBAiGG,CAjGH,EAAA;EAAe,SAApC,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAM,YAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAUxB,IAAA,EAAA,MAAA;EAuFS,CAAA;CAAiC,CAAA,EAMpD,OANoD,CAAA,GAAA,CAAA;AAC7C,iBAwBY,cAAA,CAxBZ,MAAA,EAyBD,gBAzBC,CAAA,EA0BP,OA1BO,CA0BC,UA1BD,GAAA,SAAA,CAAA;;AAKA;AAmBV;;;;;AAEU;AAkBY,iBAAA,2BAAA,CAAA,CAA2B,EAAI,OAAJ,CAChD,MADgD,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA;AAAA,iBAiB3B,iBAAA,CAjB2B,MAAA,EAkBxC,gBAlBwC,CAAA,EAmB9C,OAnB8C,CAmBtC,UAnBsC,GAAA,SAAA,CAAA;UA6BvC,UAAA,CA5BT;EAAM,EAAA,CAD8C,EAAA,MAAA;AAAO;AAiBtC,iBAgBA,2BAAA,CAhBiB,MAAA,EAiB9B,gBAjB8B,GAAA,SAAA,EAAA,kBAE7B,CAF6B,EAAA;EAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAA,YAC9B,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IACE,IAAA,EAAA,MAAA;EAAU,CAAA;AAAX,CAAA,CAAA,EAoBP,OApBO,CAAA,GAAA,CAAA"}
|
|
@@ -15,6 +15,15 @@ declare function convertStandardSchemaToJsonSchema(schema?: StandardSchemaV1, co
|
|
|
15
15
|
};
|
|
16
16
|
}): Promise<any>;
|
|
17
17
|
declare function getZodMetadata(schema: StandardSchemaV1): Promise<SchemaMeta | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* Return JSON Schema for every schema registered in zod v4's global registry
|
|
20
|
+
* via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or
|
|
21
|
+
* no schemas are registered.
|
|
22
|
+
*
|
|
23
|
+
* `unrepresentable: 'any'` keeps a single unrepresentable schema from
|
|
24
|
+
* collapsing the whole result.
|
|
25
|
+
*/
|
|
26
|
+
declare function getRegisteredZodJsonSchemas(): Promise<Record<string, any>>;
|
|
18
27
|
declare function getSchemaMetadata(schema: StandardSchemaV1): Promise<SchemaMeta | undefined>;
|
|
19
28
|
interface SchemaMeta {
|
|
20
29
|
id?: string;
|
|
@@ -26,5 +35,5 @@ declare function convertSchemaWithComponents(schema: StandardSchemaV1 | undefine
|
|
|
26
35
|
};
|
|
27
36
|
}): Promise<any>;
|
|
28
37
|
//#endregion
|
|
29
|
-
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
30
|
-
//# sourceMappingURL=conversion-
|
|
38
|
+
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
|
39
|
+
//# sourceMappingURL=conversion-e4k9rTxy.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-e4k9rTxy.d.mts","names":[],"sources":["../src/conversion.ts"],"sourcesContent":[],"mappings":";;;aAEY,YAAA;;EAAA,OAAA,GAAA,SAAY;AAKxB;AACY,KADA,eAAA,GACgB,CAAA,MAAA,EAAA,GAAA,EAAA,GADmB,OACnB,CAAA,GAAA,CAAA;AAAA,KAAhB,gBAAA,GAAmB,MAAH,CAAU,YAAV,EAAwB,eAAxB,CAAA;AAAU,cAUzB,wBAVyB,EAUC,gBAVD;AAAc,iBAiG9B,iCAAA,CAjG8B,MAAA,CAAA,EAkG1C,gBAlG0C,EAAA,kBAiGG,CAjGH,EAAA;EAAe,SAApC,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAM,YAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAUxB,IAAA,EAAA,MAAA;EAuFS,CAAA;CAAiC,CAAA,EAMpD,OANoD,CAAA,GAAA,CAAA;AAC7C,iBAwBY,cAAA,CAxBZ,MAAA,EAyBD,gBAzBC,CAAA,EA0BP,OA1BO,CA0BC,UA1BD,GAAA,SAAA,CAAA;;AAKA;AAmBV;;;;;AAEU;AAkBY,iBAAA,2BAAA,CAAA,CAA2B,EAAI,OAAJ,CAChD,MADgD,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA;AAAA,iBAiB3B,iBAAA,CAjB2B,MAAA,EAkBxC,gBAlBwC,CAAA,EAmB9C,OAnB8C,CAmBtC,UAnBsC,GAAA,SAAA,CAAA;UA6BvC,UAAA,CA5BT;EAAM,EAAA,CAD8C,EAAA,MAAA;AAAO;AAiBtC,iBAgBA,2BAAA,CAhBiB,MAAA,EAiB9B,gBAjB8B,GAAA,SAAA,EAAA,kBAE7B,CAF6B,EAAA;EAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAA,YAC9B,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IACE,IAAA,EAAA,MAAA;EAAU,CAAA;AAAX,CAAA,CAAA,EAoBP,OApBO,CAAA,GAAA,CAAA"}
|
package/dist/conversion.cjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
const require_conversion = require('./conversion-
|
|
1
|
+
const require_conversion = require('./conversion-Cf9R-jGc.cjs');
|
|
2
2
|
|
|
3
3
|
exports.SchemaVendor = require_conversion.SchemaVendor;
|
|
4
4
|
exports.StandardSchemaJsonSchema = require_conversion.StandardSchemaJsonSchema;
|
|
5
5
|
exports.convertSchemaWithComponents = require_conversion.convertSchemaWithComponents;
|
|
6
6
|
exports.convertStandardSchemaToJsonSchema = require_conversion.convertStandardSchemaToJsonSchema;
|
|
7
|
+
exports.getRegisteredZodJsonSchemas = require_conversion.getRegisteredZodJsonSchemas;
|
|
7
8
|
exports.getSchemaMetadata = require_conversion.getSchemaMetadata;
|
|
8
9
|
exports.getZodMetadata = require_conversion.getZodMetadata;
|
package/dist/conversion.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata } from "./conversion-
|
|
2
|
-
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
1
|
+
import { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata } from "./conversion-JY1Wixil.cjs";
|
|
2
|
+
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
package/dist/conversion.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata } from "./conversion-
|
|
2
|
-
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
1
|
+
import { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata } from "./conversion-e4k9rTxy.mjs";
|
|
2
|
+
export { SchemaVendor, StandardSchemaJsonSchema, VendorConvertor, VendorConvertors, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
package/dist/conversion.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata } from "./conversion-
|
|
1
|
+
import { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata } from "./conversion-CIBtqJkS.mjs";
|
|
2
2
|
|
|
3
|
-
export { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
|
3
|
+
export { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata, getZodMetadata };
|
package/dist/index.cjs
CHANGED
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-JY1Wixil.cjs";
|
|
2
2
|
import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-Aeb_1e9T.cjs";
|
|
3
3
|
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-D7ZRea_7.cjs";
|
|
4
4
|
export { ComponentCollector, ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema, OpenApiSchemaOptions, buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-e4k9rTxy.mjs";
|
|
2
2
|
import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-Dxc4FuMP.mjs";
|
|
3
3
|
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-o4dOkvCd.mjs";
|
|
4
4
|
export { ComponentCollector, ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema, OpenApiSchemaOptions, buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-CIBtqJkS.mjs";
|
|
2
2
|
import { buildOpenApiSchema, createComponentCollector } from "./openapi-DH5yCqKh.mjs";
|
|
3
3
|
|
|
4
4
|
export { buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
package/package.json
CHANGED
|
@@ -1,27 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/schema",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
"import": {
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
9
|
+
"default": "./dist/index.mjs"
|
|
10
|
+
},
|
|
11
|
+
"require": {
|
|
12
|
+
"types": "./dist/index.d.cts",
|
|
13
|
+
"default": "./dist/index.cjs"
|
|
14
|
+
}
|
|
10
15
|
},
|
|
11
16
|
"./conversion": {
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
"import": {
|
|
18
|
+
"types": "./dist/conversion.d.mts",
|
|
19
|
+
"default": "./dist/conversion.mjs"
|
|
20
|
+
},
|
|
21
|
+
"require": {
|
|
22
|
+
"types": "./dist/conversion.d.cts",
|
|
23
|
+
"default": "./dist/conversion.cjs"
|
|
24
|
+
}
|
|
15
25
|
},
|
|
16
26
|
"./openapi": {
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
"import": {
|
|
28
|
+
"types": "./dist/openapi.d.mts",
|
|
29
|
+
"default": "./dist/openapi.mjs"
|
|
30
|
+
},
|
|
31
|
+
"require": {
|
|
32
|
+
"types": "./dist/openapi.d.cts",
|
|
33
|
+
"default": "./dist/openapi.cjs"
|
|
34
|
+
}
|
|
20
35
|
},
|
|
21
36
|
"./parser": {
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
37
|
+
"import": {
|
|
38
|
+
"types": "./dist/parser.d.mts",
|
|
39
|
+
"default": "./dist/parser.mjs"
|
|
40
|
+
},
|
|
41
|
+
"require": {
|
|
42
|
+
"types": "./dist/parser.d.cts",
|
|
43
|
+
"default": "./dist/parser.cjs"
|
|
44
|
+
}
|
|
25
45
|
}
|
|
26
46
|
},
|
|
27
47
|
"repository": {
|
package/src/conversion.ts
CHANGED
|
@@ -140,6 +140,31 @@ export async function getZodMetadata(
|
|
|
140
140
|
return undefined;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Return JSON Schema for every schema registered in zod v4's global registry
|
|
145
|
+
* via `.meta({ id })`. Returns an empty object when zod v4 is unavailable or
|
|
146
|
+
* no schemas are registered.
|
|
147
|
+
*
|
|
148
|
+
* `unrepresentable: 'any'` keeps a single unrepresentable schema from
|
|
149
|
+
* collapsing the whole result.
|
|
150
|
+
*/
|
|
151
|
+
export async function getRegisteredZodJsonSchemas(): Promise<
|
|
152
|
+
Record<string, any>
|
|
153
|
+
> {
|
|
154
|
+
try {
|
|
155
|
+
const { z } = await import('zod/v4').catch(() => ({ z: null as any }));
|
|
156
|
+
if (!z?.toJSONSchema || !z.globalRegistry) {
|
|
157
|
+
return {};
|
|
158
|
+
}
|
|
159
|
+
const result = z.toJSONSchema(z.globalRegistry, {
|
|
160
|
+
unrepresentable: 'any',
|
|
161
|
+
});
|
|
162
|
+
return (result?.schemas ?? {}) as Record<string, any>;
|
|
163
|
+
} catch {
|
|
164
|
+
return {};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
143
168
|
export async function getSchemaMetadata(
|
|
144
169
|
schema: StandardSchemaV1,
|
|
145
170
|
): Promise<SchemaMeta | undefined> {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversion-CH_EmflL.d.cts","names":[],"sources":["../src/conversion.ts"],"sourcesContent":[],"mappings":";;;aAEY,YAAA;;EAAA,OAAA,GAAA,SAAY;AAKxB;AACY,KADA,eAAA,GACgB,CAAA,MAAA,EAAA,GAAA,EAAA,GADmB,OACnB,CAAA,GAAA,CAAA;AAAA,KAAhB,gBAAA,GAAmB,MAAH,CAAU,YAAV,EAAwB,eAAxB,CAAA;AAAU,cAUzB,wBAVyB,EAUC,gBAVD;AAAc,iBAiG9B,iCAAA,CAjG8B,MAAA,CAAA,EAkG1C,gBAlG0C,EAAA,kBAiGG,CAjGH,EAAA;EAAe,SAApC,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAM,YAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAUxB,IAAA,EAAA,MAAA;EAuFS,CAAA;CAAiC,CAAA,EAMpD,OANoD,CAAA,GAAA,CAAA;AAC7C,iBAwBY,cAAA,CAxBZ,MAAA,EAyBD,gBAzBC,CAAA,EA0BP,OA1BO,CA0BC,UA1BD,GAAA,SAAA,CAAA;AAKP,iBA+BmB,iBAAA,CA/BnB,MAAA,EAgCM,gBAhCN,CAAA,EAiCA,OAjCA,CAiCQ,UAjCR,GAAA,SAAA,CAAA;AAAO,UA2CA,UAAA,CA3CA;EAmBY,EAAA,CAAA,EAAA,MAAA;;AACb,iBA2Ba,2BAAA,CA3Bb,MAAA,EA4BA,gBA5BA,GAAA,SAAA,EAAA,kBAW8B,CAX9B,EAAA;EAAgB,SACd,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAU,YAAlB,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;EAUY,CAAA;CAAiB,CAAA,EAsBpC,OAtBoC,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversion-DUyZYTWO.d.mts","names":[],"sources":["../src/conversion.ts"],"sourcesContent":[],"mappings":";;;aAEY,YAAA;;EAAA,OAAA,GAAA,SAAY;AAKxB;AACY,KADA,eAAA,GACgB,CAAA,MAAA,EAAA,GAAA,EAAA,GADmB,OACnB,CAAA,GAAA,CAAA;AAAA,KAAhB,gBAAA,GAAmB,MAAH,CAAU,YAAV,EAAwB,eAAxB,CAAA;AAAU,cAUzB,wBAVyB,EAUC,gBAVD;AAAc,iBAiG9B,iCAAA,CAjG8B,MAAA,CAAA,EAkG1C,gBAlG0C,EAAA,kBAiGG,CAjGH,EAAA;EAAe,SAApC,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAM,YAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAUxB,IAAA,EAAA,MAAA;EAuFS,CAAA;CAAiC,CAAA,EAMpD,OANoD,CAAA,GAAA,CAAA;AAC7C,iBAwBY,cAAA,CAxBZ,MAAA,EAyBD,gBAzBC,CAAA,EA0BP,OA1BO,CA0BC,UA1BD,GAAA,SAAA,CAAA;AAKP,iBA+BmB,iBAAA,CA/BnB,MAAA,EAgCM,gBAhCN,CAAA,EAiCA,OAjCA,CAiCQ,UAjCR,GAAA,SAAA,CAAA;AAAO,UA2CA,UAAA,CA3CA;EAmBY,EAAA,CAAA,EAAA,MAAA;;AACb,iBA2Ba,2BAAA,CA3Bb,MAAA,EA4BA,gBA5BA,GAAA,SAAA,EAAA,kBAW8B,CAX9B,EAAA;EAAgB,SACd,CAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,IAAA;EAAU,YAAlB,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;EAUY,CAAA;CAAiB,CAAA,EAsBpC,OAtBoC,CAAA,GAAA,CAAA"}
|