schemantic 0.2.1 → 0.4.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.
Files changed (144) hide show
  1. package/CHANGELOG.md +196 -159
  2. package/LICENSE +21 -21
  3. package/README.md +88 -830
  4. package/dist/cli/index.d.ts +4 -1
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +186 -62
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/configuration.d.ts +6 -0
  9. package/dist/core/configuration.d.ts.map +1 -0
  10. package/dist/core/configuration.js +64 -0
  11. package/dist/core/configuration.js.map +1 -0
  12. package/dist/core/index.d.ts +1 -0
  13. package/dist/core/index.d.ts.map +1 -1
  14. package/dist/core/index.js +1 -0
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/output-writer.d.ts +7 -0
  17. package/dist/core/output-writer.d.ts.map +1 -0
  18. package/dist/core/output-writer.js +255 -0
  19. package/dist/core/output-writer.js.map +1 -0
  20. package/dist/core/schemantic.d.ts +8 -6
  21. package/dist/core/schemantic.d.ts.map +1 -1
  22. package/dist/core/schemantic.js +194 -127
  23. package/dist/core/schemantic.js.map +1 -1
  24. package/dist/generators/api-client-generator.d.ts +9 -20
  25. package/dist/generators/api-client-generator.d.ts.map +1 -1
  26. package/dist/generators/api-client-generator.js +364 -424
  27. package/dist/generators/api-client-generator.js.map +1 -1
  28. package/dist/generators/base.d.ts.map +1 -1
  29. package/dist/generators/base.js +7 -25
  30. package/dist/generators/base.js.map +1 -1
  31. package/dist/generators/enum-generator.d.ts.map +1 -1
  32. package/dist/generators/enum-generator.js +30 -3
  33. package/dist/generators/enum-generator.js.map +1 -1
  34. package/dist/generators/hook-generator.d.ts +3 -17
  35. package/dist/generators/hook-generator.d.ts.map +1 -1
  36. package/dist/generators/hook-generator.js +51 -445
  37. package/dist/generators/hook-generator.js.map +1 -1
  38. package/dist/generators/naming.d.ts +10 -0
  39. package/dist/generators/naming.d.ts.map +1 -0
  40. package/dist/generators/naming.js +331 -0
  41. package/dist/generators/naming.js.map +1 -0
  42. package/dist/generators/object-generator.d.ts +0 -4
  43. package/dist/generators/object-generator.d.ts.map +1 -1
  44. package/dist/generators/object-generator.js +13 -101
  45. package/dist/generators/object-generator.js.map +1 -1
  46. package/dist/generators/primitive-generator.d.ts +1 -13
  47. package/dist/generators/primitive-generator.d.ts.map +1 -1
  48. package/dist/generators/primitive-generator.js +11 -76
  49. package/dist/generators/primitive-generator.js.map +1 -1
  50. package/dist/generators/projections.d.ts +10 -0
  51. package/dist/generators/projections.d.ts.map +1 -0
  52. package/dist/generators/projections.js +65 -0
  53. package/dist/generators/projections.js.map +1 -0
  54. package/dist/generators/schema-type.d.ts +23 -0
  55. package/dist/generators/schema-type.d.ts.map +1 -0
  56. package/dist/generators/schema-type.js +233 -0
  57. package/dist/generators/schema-type.js.map +1 -0
  58. package/dist/parsers/base.d.ts +2 -0
  59. package/dist/parsers/base.d.ts.map +1 -1
  60. package/dist/parsers/base.js +12 -2
  61. package/dist/parsers/base.js.map +1 -1
  62. package/dist/parsers/factory.d.ts.map +1 -1
  63. package/dist/parsers/factory.js +2 -1
  64. package/dist/parsers/factory.js.map +1 -1
  65. package/dist/parsers/openapi.d.ts +4 -0
  66. package/dist/parsers/openapi.d.ts.map +1 -1
  67. package/dist/parsers/openapi.js +107 -20
  68. package/dist/parsers/openapi.js.map +1 -1
  69. package/dist/plugins/branded-types.d.ts.map +1 -1
  70. package/dist/plugins/branded-types.js +231 -365
  71. package/dist/plugins/branded-types.js.map +1 -1
  72. package/dist/plugins/builtin.d.ts.map +1 -1
  73. package/dist/plugins/builtin.js +6 -141
  74. package/dist/plugins/builtin.js.map +1 -1
  75. package/dist/plugins/index.d.ts +4 -0
  76. package/dist/plugins/index.d.ts.map +1 -1
  77. package/dist/plugins/index.js +17 -0
  78. package/dist/plugins/index.js.map +1 -1
  79. package/dist/plugins/loader.d.ts +5 -1
  80. package/dist/plugins/loader.d.ts.map +1 -1
  81. package/dist/plugins/loader.js +42 -5
  82. package/dist/plugins/loader.js.map +1 -1
  83. package/dist/plugins/manager.d.ts.map +1 -1
  84. package/dist/plugins/manager.js +7 -7
  85. package/dist/plugins/manager.js.map +1 -1
  86. package/dist/plugins/performance-monitoring.d.ts +31 -1
  87. package/dist/plugins/performance-monitoring.d.ts.map +1 -1
  88. package/dist/plugins/performance-monitoring.js +146 -207
  89. package/dist/plugins/performance-monitoring.js.map +1 -1
  90. package/dist/plugins/request-deduplication.d.ts.map +1 -1
  91. package/dist/plugins/request-deduplication.js +151 -586
  92. package/dist/plugins/request-deduplication.js.map +1 -1
  93. package/dist/plugins/zod-validation.d.ts +23 -15
  94. package/dist/plugins/zod-validation.d.ts.map +1 -1
  95. package/dist/plugins/zod-validation.js +390 -268
  96. package/dist/plugins/zod-validation.js.map +1 -1
  97. package/dist/types/core.d.ts +20 -4
  98. package/dist/types/core.d.ts.map +1 -1
  99. package/dist/types/core.js +2 -1
  100. package/dist/types/core.js.map +1 -1
  101. package/dist/types/openapi.d.ts +14 -1
  102. package/dist/types/openapi.d.ts.map +1 -1
  103. package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +24 -355
  104. package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +33 -309
  105. package/docs/API.md +80 -600
  106. package/docs/AUDIT.md +49 -0
  107. package/docs/CONFIGURATION.md +81 -722
  108. package/docs/FASTAPI_TUTORIAL.md +109 -1497
  109. package/docs/NAMING_MIGRATION.md +59 -0
  110. package/docs/PLUGINS.md +49 -687
  111. package/docs/PLUGIN_DEVELOPMENT.md +53 -720
  112. package/docs/REAUDIT.md +399 -0
  113. package/docs/RELEASING.md +88 -0
  114. package/docs/REMEDIATION.md +58 -0
  115. package/docs/superpowers/plans/2026-10-10-audit-remediation.md +113 -0
  116. package/package.json +114 -95
  117. package/dist/__tests__/setup.d.ts +0 -6
  118. package/dist/__tests__/setup.d.ts.map +0 -1
  119. package/dist/__tests__/setup.js +0 -30
  120. package/dist/__tests__/setup.js.map +0 -1
  121. package/dist/__tests__/test-config.d.ts +0 -36
  122. package/dist/__tests__/test-config.d.ts.map +0 -1
  123. package/dist/__tests__/test-config.js +0 -563
  124. package/dist/__tests__/test-config.js.map +0 -1
  125. package/dist/lib/api/api-client.d.ts +0 -71
  126. package/dist/lib/api/api-client.d.ts.map +0 -1
  127. package/dist/lib/api/api-client.js +0 -238
  128. package/dist/lib/api/api-client.js.map +0 -1
  129. package/dist/lib/api/barrel.d.ts +0 -4
  130. package/dist/lib/api/barrel.d.ts.map +0 -1
  131. package/dist/lib/api/barrel.js +0 -26
  132. package/dist/lib/api/barrel.js.map +0 -1
  133. package/dist/lib/api/hooks.d.ts +0 -36
  134. package/dist/lib/api/hooks.d.ts.map +0 -1
  135. package/dist/lib/api/hooks.js +0 -120
  136. package/dist/lib/api/hooks.js.map +0 -1
  137. package/dist/lib/api/index.d.ts +0 -4
  138. package/dist/lib/api/index.d.ts.map +0 -1
  139. package/dist/lib/api/index.js +0 -8
  140. package/dist/lib/api/index.js.map +0 -1
  141. package/dist/lib/api/types.d.ts +0 -366
  142. package/dist/lib/api/types.d.ts.map +0 -1
  143. package/dist/lib/api/types.js +0 -315
  144. package/dist/lib/api/types.js.map +0 -1
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.PrimitiveTypeGenerator = void 0;
8
8
  const schema_1 = require("../types/schema");
9
9
  const base_1 = require("./base");
10
+ const schema_type_1 = require("./schema-type");
10
11
  /**
11
12
  * Primitive type generator implementation
12
13
  */
@@ -15,22 +16,25 @@ class PrimitiveTypeGenerator extends base_1.BaseTypeGenerator {
15
16
  super(options);
16
17
  }
17
18
  generate(schema, context) {
18
- if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
19
- throw new Error("Cannot generate primitive from reference schema");
20
- }
21
19
  const typeName = this.getTypeName(schema, context);
22
- const comment = this.generateComment(schema.description, schema.example);
20
+ const comment = (0, schema_1.isOpenAPISchemaObject)(schema) ? this.generateComment(schema.description, schema.example) : "";
23
21
  let content = "";
24
22
  if (comment) {
25
23
  content += comment + "\n";
26
24
  }
27
25
  // Generate type alias
28
- const typeAlias = this.generateTypeAlias(schema, typeName);
26
+ const dependencies = [];
27
+ const expression = (0, schema_type_1.schemaType)(schema, ref => {
28
+ const name = this.formatTypeName(this.extractTypeNameFromRef(ref));
29
+ dependencies.push(name);
30
+ return name;
31
+ }, this.options.customTypeMappings, context.schemaResolver);
32
+ const typeAlias = 'export type ' + typeName + ' = ' + expression + ';\n';
29
33
  content += typeAlias;
30
34
  return {
31
35
  name: typeName,
32
36
  content,
33
- dependencies: [],
37
+ dependencies,
34
38
  exports: [typeName],
35
39
  isInterface: false,
36
40
  isEnum: false,
@@ -38,28 +42,7 @@ class PrimitiveTypeGenerator extends base_1.BaseTypeGenerator {
38
42
  sourceSchema: schema,
39
43
  };
40
44
  }
41
- canHandle(schema) {
42
- if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
43
- return false;
44
- }
45
- // Handle primitive types
46
- if (schema.type &&
47
- typeof schema.type === "string" &&
48
- ["string", "number", "integer", "boolean"].includes(schema.type)) {
49
- return true;
50
- }
51
- // Handle const values
52
- if (schema.const !== undefined) {
53
- return true;
54
- }
55
- // Handle arrays of primitives
56
- if (schema.type === "array" &&
57
- schema.items &&
58
- this.isPrimitiveSchema(schema.items)) {
59
- return true;
60
- }
61
- return false;
62
- }
45
+ canHandle(_schema) { return true; }
63
46
  getPriority() {
64
47
  return 50; // Lower priority than specialized generators
65
48
  }
@@ -72,54 +55,6 @@ class PrimitiveTypeGenerator extends base_1.BaseTypeGenerator {
72
55
  supportedFormats: ["json"],
73
56
  };
74
57
  }
75
- /**
76
- * Generate type alias
77
- */
78
- generateTypeAlias(schema, typeName) {
79
- const type = this.generateType(schema);
80
- return `export type ${typeName} = ${type};\n`;
81
- }
82
- /**
83
- * Generate TypeScript type from schema
84
- */
85
- generateType(schema) {
86
- if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
87
- return "unknown";
88
- }
89
- // Handle const values
90
- if (schema.const !== undefined) {
91
- return JSON.stringify(schema.const);
92
- }
93
- // Handle arrays
94
- if (schema.type === "array") {
95
- const itemType = schema.items
96
- ? this.generateType(schema.items)
97
- : "unknown";
98
- return `${itemType}[]`;
99
- }
100
- // Handle basic types
101
- if (schema.type) {
102
- return this.mapSchemaTypeToTypeScript(schema.type, schema.format);
103
- }
104
- return "unknown";
105
- }
106
- /**
107
- * Check if schema is a primitive type
108
- */
109
- isPrimitiveSchema(schema) {
110
- if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
111
- return false;
112
- }
113
- if (schema.type &&
114
- typeof schema.type === "string" &&
115
- ["string", "number", "integer", "boolean"].includes(schema.type)) {
116
- return true;
117
- }
118
- if (schema.const !== undefined) {
119
- return true;
120
- }
121
- return false;
122
- }
123
58
  /**
124
59
  * Get type name from schema
125
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"primitive-generator.js","sourceRoot":"","sources":["../../src/generators/primitive-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitive-generator.js","sourceRoot":"","sources":["../../src/generators/primitive-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { OpenAPISchema } from '../types/openapi';
2
+ import { SchemaResolver } from '../types/schema';
3
+ export type ProjectionNames = Record<string, {
4
+ request?: string;
5
+ response?: string;
6
+ binary?: string;
7
+ }>;
8
+ /** Add named projections so clients, hooks and plugins consume the same schemas. */
9
+ export declare function addSchemaProjections(document: OpenAPISchema, resolver: SchemaResolver, selected?: Set<string>): ProjectionNames;
10
+ //# sourceMappingURL=projections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../../src/generators/projections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAkB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAGvG,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,eAAe,CA+C/H"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addSchemaProjections = addSchemaProjections;
4
+ const schema_type_1 = require("./schema-type");
5
+ const reference = (name) => '#/components/schemas/' + name.replace(/~/g, '~0').replace(/\//g, '~1');
6
+ /** Add named projections so clients, hooks and plugins consume the same schemas. */
7
+ function addSchemaProjections(document, resolver, selected) {
8
+ const schemas = document.components?.schemas;
9
+ const names = Object.create(null);
10
+ if (!schemas)
11
+ return names;
12
+ const originals = Object.entries(schemas);
13
+ const contains = (schema, predicate, seen = new Set()) => {
14
+ if (!schema || typeof schema !== 'object')
15
+ return false;
16
+ const value = schema;
17
+ if (predicate(value))
18
+ return true;
19
+ if (typeof value.$ref === 'string' && !seen.has(value.$ref)) {
20
+ const next = new Set([...seen, value.$ref]);
21
+ if (contains(resolver(value.$ref), predicate, next))
22
+ return true;
23
+ seen = next;
24
+ }
25
+ return Object.values(value.properties || {}).some(child => contains(child, predicate, seen)) ||
26
+ ['items', 'additionalProperties', 'not'].some(key => contains(value[key], predicate, seen)) ||
27
+ [...(value.allOf || []), ...(value.oneOf || []), ...(value.anyOf || [])].some(child => contains(child, predicate, seen));
28
+ };
29
+ for (const [name, value] of originals) {
30
+ if (selected && !selected.has(name))
31
+ continue;
32
+ if (contains(value, node => node.readOnly === true || node.writeOnly === true))
33
+ names[name] = { request: name + 'Request', response: name + 'Response' };
34
+ if (contains(value, schema_type_1.isBinaryStringSchema))
35
+ names[name] = { ...names[name], binary: name + 'Binary' };
36
+ }
37
+ const binary = (schema) => {
38
+ const node = schema;
39
+ if ((0, schema_type_1.isBinaryStringSchema)(node))
40
+ return { ...node, 'x-schemantic-binary': true };
41
+ return { ...node,
42
+ ...(node.properties && { properties: Object.fromEntries(Object.entries(node.properties).map(([key, value]) => [key, binary(value)])) }),
43
+ ...(node.items && { items: binary(node.items) }),
44
+ ...(typeof node.additionalProperties === 'object' && { additionalProperties: binary(node.additionalProperties) }),
45
+ ...(node.allOf && { allOf: node.allOf.map(binary) }), ...(node.anyOf && { anyOf: node.anyOf.map(binary) }), ...(node.oneOf && { oneOf: node.oneOf.map(binary) }),
46
+ };
47
+ };
48
+ for (const [name, value] of originals) {
49
+ for (const [kind, target] of Object.entries(names[name] || {})) {
50
+ if (target in schemas)
51
+ throw new Error(`Projected schema name collision: ${name} produces ${target}, which already exists`);
52
+ const projected = (0, schema_type_1.projectSchema)(value, { direction: kind === 'response' ? 'response' : 'request' }, resolver, ref => {
53
+ if (!/^#\/components\/schemas\/[^/]+$/.test(ref))
54
+ return ref;
55
+ const original = (0, schema_type_1.referenceName)(ref);
56
+ const mapped = kind === 'binary' ? names[original]?.binary || names[original]?.request : names[original]?.[kind];
57
+ return mapped ? reference(mapped) : ref;
58
+ });
59
+ schemas[target] = kind === 'binary' ? binary(projected) : projected;
60
+ selected?.add(target);
61
+ }
62
+ }
63
+ return names;
64
+ }
65
+ //# sourceMappingURL=projections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projections.js","sourceRoot":"","sources":["../../src/generators/projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { OpenAPISchemaObject } from '../types/openapi';
2
+ import { ResolvedSchema } from '../types/schema';
3
+ export declare function propertyKey(name: string): string;
4
+ export declare function typeName(name: string, prefix?: string, suffix?: string): string;
5
+ export declare function referenceName(ref: string): string;
6
+ export interface SchemaTypeOptions {
7
+ /** Explicit OpenAPI annotation policy: omit readOnly inputs and writeOnly outputs. */
8
+ direction?: 'request' | 'response';
9
+ /** Enable only for binary request media/parts; JSON encodings remain strings. */
10
+ binary?: boolean;
11
+ /** Application property names; required checks always use the original wire name. */
12
+ propertyName?: (wireName: string) => string;
13
+ }
14
+ /** Binary media can carry raw string content; explicitly encoded content stays a string. */
15
+ export declare function isBinaryStringSchema(schema: OpenAPISchemaObject): boolean;
16
+ /** Build the same directional schema used by type emission for runtime validators.
17
+ * Component references stay references: callers map them to the corresponding projected names.
18
+ * This function preserves source schemas and wire names unless a property formatter is supplied.
19
+ */
20
+ export declare function projectSchema(schema: ResolvedSchema | boolean, options: SchemaTypeOptions, resolver?: (ref: string) => ResolvedSchema | undefined, mapReference?: (ref: string) => string): ResolvedSchema;
21
+ /** One expression emitter keeps types and endpoint signatures consistent. */
22
+ export declare function schemaType(schema: ResolvedSchema | boolean, formatReference: (ref: string) => string, customMappings?: Record<string, string>, resolveReference?: (ref: string) => ResolvedSchema | undefined, seen?: Set<string>, options?: SchemaTypeOptions): string;
23
+ //# sourceMappingURL=schema-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-type.d.ts","sourceRoot":"","sources":["../../src/generators/schema-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAE/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,MAAM,SAAK,GAAG,MAAM,CASvE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACnC,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C;AAED,4FAA4F;AAC5F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAIzE;AAoCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,EAAE,OAAO,EAAE,iBAAiB,EACxF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,EACtD,YAAY,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAmB,GAAG,cAAc,CAgCpE;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,GAAG,OAAO,EAChC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACxC,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAC3C,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,EAC9D,IAAI,cAAoB,EACxB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAyFR"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propertyKey = propertyKey;
4
+ exports.typeName = typeName;
5
+ exports.referenceName = referenceName;
6
+ exports.isBinaryStringSchema = isBinaryStringSchema;
7
+ exports.projectSchema = projectSchema;
8
+ exports.schemaType = schemaType;
9
+ const schema_1 = require("../types/schema");
10
+ function propertyKey(name) {
11
+ return /^[A-Za-z_$][\w$]*$/.test(name) ? name : JSON.stringify(name);
12
+ }
13
+ function typeName(name, prefix = '', suffix = '') {
14
+ const formatted = name.replace(/[^A-Za-z0-9]+/g, '_').split('_').filter(Boolean)
15
+ .map(token => token[0].toUpperCase() + token.slice(1)).join('') || 'Anonymous';
16
+ let result = `${prefix}${formatted}${suffix}`.replace(/[^A-Za-z0-9_$]/g, '_');
17
+ const reserved = new Set(['Record', 'Partial', 'Required', 'Readonly', 'Pick', 'Omit', 'Exclude', 'Extract', 'NonNullable',
18
+ 'Parameters', 'ConstructorParameters', 'ReturnType', 'InstanceType', 'Awaited', 'Array', 'ReadonlyArray',
19
+ 'Promise', 'Map', 'Set', 'WeakMap', 'WeakSet', 'ApiClientConfig', 'ApiClientError']);
20
+ if (reserved.has(result))
21
+ result += 'Model';
22
+ return /^\d/.test(result) ? `_${result}` : result;
23
+ }
24
+ function referenceName(ref) {
25
+ return decodeURIComponent(ref.split('/').pop() || 'Unknown').replace(/~1/g, '/').replace(/~0/g, '~');
26
+ }
27
+ /** Binary media can carry raw string content; explicitly encoded content stays a string. */
28
+ function isBinaryStringSchema(schema) {
29
+ return schema.format === 'binary' || (schema.type === 'string'
30
+ && typeof schema.contentMediaType === 'string' && schema.contentMediaType.trim().length > 0
31
+ && !schema.contentEncoding);
32
+ }
33
+ function excludedProperty(schema, options, resolver, seen = new Set()) {
34
+ const annotation = options.direction === 'request' ? 'readOnly' : options.direction === 'response' ? 'writeOnly' : undefined;
35
+ if (!annotation)
36
+ return false;
37
+ if (annotation in schema && schema[annotation] === true)
38
+ return true;
39
+ if ((0, schema_1.isOpenAPIRef)(schema) && !seen.has(schema.$ref)) {
40
+ const target = resolver?.(schema.$ref);
41
+ if (target && excludedProperty(target, options, resolver, new Set([...seen, schema.$ref])))
42
+ return true;
43
+ }
44
+ const object = schema;
45
+ return [...(object.allOf || []), ...(object.anyOf || []), ...(object.oneOf || [])]
46
+ .some(branch => excludedProperty(branch, options, resolver, seen));
47
+ }
48
+ function directionalKeys(schema, options, resolver, seen = new Set()) {
49
+ const keys = new Set();
50
+ if (!options.direction)
51
+ return keys;
52
+ if ((0, schema_1.isOpenAPIRef)(schema)) {
53
+ if (!seen.has(schema.$ref)) {
54
+ const target = resolver?.(schema.$ref);
55
+ if (target)
56
+ for (const key of directionalKeys(target, options, resolver, new Set([...seen, schema.$ref])))
57
+ keys.add(key);
58
+ }
59
+ }
60
+ const object = schema;
61
+ for (const [name, value] of Object.entries(object.properties || {})) {
62
+ if (excludedProperty(value, options, resolver))
63
+ keys.add(name);
64
+ }
65
+ for (const branch of [...(object.allOf || []), ...(object.anyOf || []), ...(object.oneOf || [])]) {
66
+ for (const key of directionalKeys(branch, options, resolver, seen))
67
+ keys.add(key);
68
+ }
69
+ return keys;
70
+ }
71
+ /** Build the same directional schema used by type emission for runtime validators.
72
+ * Component references stay references: callers map them to the corresponding projected names.
73
+ * This function preserves source schemas and wire names unless a property formatter is supplied.
74
+ */
75
+ function projectSchema(schema, options, resolver, mapReference = ref => ref) {
76
+ const project = (value, inheritedExcluded = new Set()) => {
77
+ const result = { ...value };
78
+ if (options.binary && isBinaryStringSchema(result))
79
+ result['x-schemantic-binary'] = true;
80
+ const excluded = new Set([...inheritedExcluded, ...directionalKeys(value, options, resolver)]);
81
+ if ((0, schema_1.isOpenAPIRef)(value))
82
+ result.$ref = mapReference(value.$ref);
83
+ if (result.properties) {
84
+ const properties = {};
85
+ const names = new Map();
86
+ for (const [wireName, child] of Object.entries(result.properties)) {
87
+ if (excludedProperty(child, options, resolver))
88
+ continue;
89
+ const name = options.propertyName?.(wireName) ?? wireName;
90
+ const existing = names.get(name);
91
+ if (existing !== undefined && existing !== wireName)
92
+ throw new Error(`Property naming collision: ${existing} and ${wireName} both become ${name}`);
93
+ names.set(name, wireName);
94
+ properties[name] = project(child);
95
+ }
96
+ result.properties = properties;
97
+ }
98
+ if (result.required)
99
+ result.required = result.required.filter(name => !excluded.has(name))
100
+ .map(name => options.propertyName?.(name) ?? name);
101
+ if (result.items)
102
+ result.items = project(result.items);
103
+ if (typeof result.additionalProperties === 'object')
104
+ result.additionalProperties = project(result.additionalProperties);
105
+ if (result.allOf)
106
+ result.allOf = result.allOf.map(branch => project(branch, excluded));
107
+ if (result.anyOf)
108
+ result.anyOf = result.anyOf.map(branch => project(branch));
109
+ if (result.oneOf)
110
+ result.oneOf = result.oneOf.map(branch => project(branch));
111
+ for (const key of ['not', 'if', 'then', 'else']) {
112
+ if (result[key])
113
+ result[key] = project(result[key]);
114
+ }
115
+ return result;
116
+ };
117
+ return typeof schema === 'boolean' ? schema ? {} : { not: {} } : project(schema);
118
+ }
119
+ /** One expression emitter keeps types and endpoint signatures consistent. */
120
+ function schemaType(schema, formatReference, customMappings = {}, resolveReference, seen = new Set(), options = {}) {
121
+ if (typeof schema === 'boolean')
122
+ return schema ? 'unknown' : 'never';
123
+ if (schema['x-schemantic-binary'] === true)
124
+ return 'globalThis.Blob';
125
+ if ((0, schema_1.isOpenAPIRef)(schema)) {
126
+ let reference;
127
+ if (/^#\/components\/schemas\/[^/]+$/.test(schema.$ref))
128
+ reference = formatReference(schema.$ref);
129
+ else {
130
+ if (seen.has(schema.$ref))
131
+ throw new Error(`Circular inline schema reference: ${schema.$ref}`);
132
+ const resolved = resolveReference?.(schema.$ref);
133
+ if (resolved === undefined)
134
+ throw new Error(`Unresolved schema reference: ${schema.$ref}`);
135
+ reference = schemaType(resolved, formatReference, customMappings, resolveReference, new Set([...seen, schema.$ref]), options);
136
+ }
137
+ const siblings = { ...schema };
138
+ delete siblings.$ref;
139
+ if (Object.keys(siblings).length) {
140
+ const nullable = siblings.nullable;
141
+ delete siblings.nullable;
142
+ const excluded = directionalKeys(schema, options, resolveReference);
143
+ if (siblings.required)
144
+ siblings.required = siblings.required.filter(key => !excluded.has(key));
145
+ const sibling = schemaType(siblings, formatReference, customMappings, resolveReference, seen, options);
146
+ if (sibling !== 'unknown')
147
+ reference = `(${reference}) & (${sibling})`;
148
+ if (nullable)
149
+ reference = `(${reference}) | null`;
150
+ }
151
+ return reference;
152
+ }
153
+ const render = (value) => schemaType(value, formatReference, customMappings, resolveReference, seen, options);
154
+ let result;
155
+ if (schema.not && !(0, schema_1.isOpenAPIRef)(schema.not) && Object.keys(schema.not).length === 0)
156
+ result = 'never';
157
+ else if (schema.const !== undefined)
158
+ result = JSON.stringify(schema.const);
159
+ else if (schema.enum?.length)
160
+ result = schema.enum.map(value => JSON.stringify(value)).join(' | ');
161
+ else {
162
+ const parts = [];
163
+ if (schema.oneOf?.length)
164
+ parts.push(schema.oneOf.map(render).join(' | '));
165
+ if (schema.anyOf?.length)
166
+ parts.push(schema.anyOf.map(render).join(' | '));
167
+ if (schema.allOf?.length) {
168
+ const excluded = directionalKeys(schema, options, resolveReference);
169
+ parts.push(...schema.allOf.map(branch => render(!(0, schema_1.isOpenAPIRef)(branch) && branch.required
170
+ ? { ...branch, required: branch.required.filter(key => !excluded.has(key)) } : branch)));
171
+ }
172
+ if (Array.isArray(schema.type)) {
173
+ parts.push(schema.type.map(type => render({ ...schema, type, nullable: false,
174
+ oneOf: [], anyOf: [], allOf: [] })).join(' | '));
175
+ }
176
+ else if (schema.type || schema.properties || schema.required?.length || schema.additionalProperties !== undefined) {
177
+ const type = schema.type || 'object';
178
+ if (type === 'array') {
179
+ const item = schema.items ? render(schema.items) : 'unknown';
180
+ parts.push(`${/[|&]/.test(item) ? `(${item})` : item}[]`);
181
+ }
182
+ else if (type === 'object') {
183
+ const excluded = directionalKeys(schema, options, resolveReference);
184
+ const required = (schema.required || []).filter(name => !excluded.has(name));
185
+ const entries = Object.entries(schema.properties || {}).filter(([, value]) => !excludedProperty(value, options, resolveReference));
186
+ const names = new Map();
187
+ const valueTypes = [];
188
+ const fields = entries.map(([wireName, value]) => {
189
+ const name = options.propertyName?.(wireName) ?? wireName;
190
+ const existing = names.get(name);
191
+ if (existing !== undefined && existing !== wireName)
192
+ throw new Error(`Property naming collision: ${existing} and ${wireName} both become ${name}`);
193
+ names.set(name, wireName);
194
+ const valueType = render(value);
195
+ valueTypes.push(valueType);
196
+ if (!required.includes(wireName))
197
+ valueTypes.push('undefined');
198
+ return `${propertyKey(name)}${required.includes(wireName) ? '' : '?'}: ${valueType}${required.includes(wireName) ? '' : ' | undefined'};`;
199
+ });
200
+ for (const name of required.filter(name => !(name in (schema.properties || {})))) {
201
+ fields.push(`${propertyKey(options.propertyName?.(name) ?? name)}: unknown;`);
202
+ valueTypes.push('unknown');
203
+ }
204
+ if (fields.length) {
205
+ let object = `{ ${fields.join(' ')} }`;
206
+ if (schema.additionalProperties && typeof schema.additionalProperties === 'object') {
207
+ // TypeScript cannot exclude finite declared keys from a string index signature.
208
+ // Widen its values to include declared fields, retaining their precise member types.
209
+ const indexTypes = [...new Set([render(schema.additionalProperties), ...valueTypes])];
210
+ object += ` & Record<string, ${indexTypes.includes('unknown') ? 'unknown' : indexTypes.join(' | ')}>`;
211
+ }
212
+ else if (schema.additionalProperties === true)
213
+ object += ' & Record<string, unknown>';
214
+ parts.push(object);
215
+ }
216
+ else if (schema.additionalProperties === false)
217
+ parts.push('Record<string, never>');
218
+ else
219
+ parts.push(`Record<string, ${typeof schema.additionalProperties === 'object' ? render(schema.additionalProperties) : 'unknown'}>`);
220
+ }
221
+ else {
222
+ const basic = { string: 'string', integer: 'number', number: 'number', boolean: 'boolean', null: 'null' };
223
+ parts.push((type !== 'null' && schema.format && customMappings[schema.format]) || customMappings[type]
224
+ || (type === 'string' && isBinaryStringSchema(schema) && options.binary ? 'Blob' : basic[type]) || 'unknown');
225
+ }
226
+ }
227
+ result = parts.length ? parts.map(part => parts.length > 1 && part.includes(' | ') ? `(${part})` : part).join(' & ') : 'unknown';
228
+ }
229
+ if (schema.nullable)
230
+ result = `${result} | null`;
231
+ return result;
232
+ }
233
+ //# sourceMappingURL=schema-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-type.js","sourceRoot":"","sources":["../../src/generators/schema-type.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  import { OpenAPISchema } from "../types/openapi";
6
6
  import { ResolvedSchema, SchemaResolver } from "../types/schema";
7
7
  import { SchemanticConfig, GenerationContext } from "../types/core";
8
+ /** JSON is the supported input serialization; fail with an actionable format diagnostic. */
9
+ export declare function parseJsonSchemaText(text: string): unknown;
8
10
  /**
9
11
  * Base interface for all schema parsers
10
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,aAAa;IAC7C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC;IAE1C;;OAEG;IACH,WAAW,IAAI,cAAc,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,8BAAsB,gBAAgB,CAAC,CAAC,GAAG,aAAa,CACtD,YAAW,YAAY,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAEvB,MAAM,EAAE,gBAAgB;IAIpC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc;IAClD,QAAQ,CAAC,WAAW,IAAI,cAAc;IAEtC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,GACR,cAAc,GAAG,SAAS;IAS7B;;OAEG;IACH,SAAS,CAAC,cAAc,CACtB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,MAAM,EAAE,GACb,cAAc,GAAG,SAAS;IAkB7B;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,iBAAiB;IAkB/D;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAY3B"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,MAAM,eAAe,CAAC;AAEvB,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,aAAa;IAC7C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC;IAE1C;;OAEG;IACH,WAAW,IAAI,cAAc,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,8BAAsB,gBAAgB,CAAC,CAAC,GAAG,aAAa,CACtD,YAAW,YAAY,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAEvB,MAAM,EAAE,gBAAgB;IAIpC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc;IAClD,QAAQ,CAAC,WAAW,IAAI,cAAc;IAEtC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,GACR,cAAc,GAAG,SAAS;IAS7B;;OAEG;IACH,SAAS,CAAC,cAAc,CACtB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,MAAM,EAAE,GACb,cAAc,GAAG,SAAS;IAkB7B;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,iBAAiB;IAkB/D;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAY3B"}
@@ -5,6 +5,16 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.BaseSchemaParser = void 0;
8
+ exports.parseJsonSchemaText = parseJsonSchemaText;
9
+ /** JSON is the supported input serialization; fail with an actionable format diagnostic. */
10
+ function parseJsonSchemaText(text) {
11
+ try {
12
+ return JSON.parse(text);
13
+ }
14
+ catch (error) {
15
+ throw new Error(`Invalid JSON schema input. YAML is not supported; convert the document to JSON. ${error instanceof Error ? error.message : String(error)}`);
16
+ }
17
+ }
8
18
  /**
9
19
  * Abstract base parser implementation
10
20
  */
@@ -19,7 +29,7 @@ class BaseSchemaParser {
19
29
  if (!ref.startsWith("#/")) {
20
30
  return undefined;
21
31
  }
22
- const path = ref.substring(2).split("/");
32
+ const path = ref.substring(2).split("/").map(segment => decodeURIComponent(segment).replace(/~1/g, '/').replace(/~0/g, '~'));
23
33
  return this.traverseSchema(schema, path);
24
34
  }
25
35
  /**
@@ -30,7 +40,7 @@ class BaseSchemaParser {
30
40
  for (const segment of path) {
31
41
  if (typeof current === "object" &&
32
42
  current !== null &&
33
- segment in current) {
43
+ Object.prototype.hasOwnProperty.call(current, segment)) {
34
44
  current = current[segment];
35
45
  }
36
46
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/parsers/base.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAuFH;;GAEG;AACH,MAAsB,gBAAgB;IAKpC,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACO,gBAAgB,CACxB,GAAW,EACX,MAAS;QAET,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACO,cAAc,CACtB,MAAS,EACT,IAAc;QAEd,IAAI,OAAO,GAAY,MAAM,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IACE,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,KAAK,IAAI;gBAChB,OAAO,IAAI,OAAO,EAClB,CAAC;gBACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,OAAyB,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,MAAS;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;QACxD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;QAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,MAAkC;YAC1C,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE;YACvC,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,8CAA8C;QAC9C,OAAO;YACL,YAAY,EAAE,CAAC,KAAa,EAAE,KAAoB,EAAE,EAAE;gBACpD,WAAW;YACb,CAAC;YACD,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;YACrB,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE;YACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE;SAC9B,CAAC;IACJ,CAAC;CACF;AAzFD,4CAyFC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/parsers/base.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,kDAKC;AAND,4FAA4F;AAC5F,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAChC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mFAAmF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/J,CAAC;AACH,CAAC;AA6ED;;GAEG;AACH,MAAsB,gBAAgB;IAKpC,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACO,gBAAgB,CACxB,GAAW,EACX,MAAS;QAET,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7H,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACO,cAAc,CACtB,MAAS,EACT,IAAc;QAEd,IAAI,OAAO,GAAY,MAAM,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IACE,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,KAAK,IAAI;gBAChB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EACtD,CAAC;gBACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,OAAyB,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,MAAS;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;QACxD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;QAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,MAAkC;YAC1C,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE;YACvC,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,8CAA8C;QAC9C,OAAO;YACL,YAAY,EAAE,CAAC,KAAa,EAAE,KAAoB,EAAE,EAAE;gBACpD,WAAW;YACb,CAAC;YACD,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;YACrB,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE;YACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE;SAC9B,CAAC;IACJ,CAAC;CACF;AAzFD,4CAyFC"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGtD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE/D;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAGR;IAEd;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,KAAK,MAAM,EAAE,gBAAgB,KAAK,YAAY,GAC1D,IAAI;IAIP;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,GACvB,YAAY;IASf;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,UAAU,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS;IAWtE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,UAAU;IAgDd;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3E,MAAM,EAAE,gBAAgB,GACvB,YAAY;CAIhB;AAKD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,GACvB,YAAY,CAEd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,MAAM,EAAE,gBAAgB,GACvB,YAAY,CAEd"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAuB,MAAM,QAAQ,CAAC;AAG3E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE/D;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAGR;IAEd;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,KAAK,MAAM,EAAE,gBAAgB,KAAK,YAAY,GAC1D,IAAI;IAIP;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,GACvB,YAAY;IASf;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,UAAU,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS;IAWtE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,UAAU;IAgDd;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3E,MAAM,EAAE,gBAAgB,GACvB,YAAY;CAIhB;AAKD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,GACvB,YAAY,CAEd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,MAAM,EAAE,gBAAgB,GACvB,YAAY,CAEd"}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ParserFactory = void 0;
8
8
  exports.createParser = createParser;
9
9
  exports.autoCreateParser = autoCreateParser;
10
+ const base_1 = require("./base");
10
11
  const openapi_1 = require("./openapi");
11
12
  /**
12
13
  * Parser factory class
@@ -73,7 +74,7 @@ class ParserFactory {
73
74
  }
74
75
  // Check data structure
75
76
  if (input.data || input.string) {
76
- const data = input.data || JSON.parse(input.string);
77
+ const data = input.data || (0, base_1.parseJsonSchemaText)(input.string);
77
78
  if (typeof data === "object" && data !== null) {
78
79
  if ("openapi" in data) {
79
80
  return "openapi";