schemantic 0.1.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 (131) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/LICENSE +21 -0
  3. package/README.md +827 -0
  4. package/dist/__tests__/setup.d.ts +6 -0
  5. package/dist/__tests__/setup.d.ts.map +1 -0
  6. package/dist/__tests__/setup.js +30 -0
  7. package/dist/__tests__/setup.js.map +1 -0
  8. package/dist/__tests__/test-config.d.ts +36 -0
  9. package/dist/__tests__/test-config.d.ts.map +1 -0
  10. package/dist/__tests__/test-config.js +563 -0
  11. package/dist/__tests__/test-config.js.map +1 -0
  12. package/dist/cli/index.d.ts +118 -0
  13. package/dist/cli/index.d.ts.map +1 -0
  14. package/dist/cli/index.js +657 -0
  15. package/dist/cli/index.js.map +1 -0
  16. package/dist/core/index.d.ts +5 -0
  17. package/dist/core/index.d.ts.map +1 -0
  18. package/dist/core/index.js +21 -0
  19. package/dist/core/index.js.map +1 -0
  20. package/dist/core/schemantic.d.ts +95 -0
  21. package/dist/core/schemantic.d.ts.map +1 -0
  22. package/dist/core/schemantic.js +543 -0
  23. package/dist/core/schemantic.js.map +1 -0
  24. package/dist/generators/api-client-generator.d.ts +145 -0
  25. package/dist/generators/api-client-generator.d.ts.map +1 -0
  26. package/dist/generators/api-client-generator.js +856 -0
  27. package/dist/generators/api-client-generator.js.map +1 -0
  28. package/dist/generators/base.d.ts +117 -0
  29. package/dist/generators/base.d.ts.map +1 -0
  30. package/dist/generators/base.js +232 -0
  31. package/dist/generators/base.js.map +1 -0
  32. package/dist/generators/enum-generator.d.ts +52 -0
  33. package/dist/generators/enum-generator.d.ts.map +1 -0
  34. package/dist/generators/enum-generator.js +178 -0
  35. package/dist/generators/enum-generator.js.map +1 -0
  36. package/dist/generators/factory.d.ts +59 -0
  37. package/dist/generators/factory.d.ts.map +1 -0
  38. package/dist/generators/factory.js +127 -0
  39. package/dist/generators/factory.js.map +1 -0
  40. package/dist/generators/hook-generator.d.ts +36 -0
  41. package/dist/generators/hook-generator.d.ts.map +1 -0
  42. package/dist/generators/hook-generator.js +495 -0
  43. package/dist/generators/hook-generator.js.map +1 -0
  44. package/dist/generators/index.d.ts +10 -0
  45. package/dist/generators/index.d.ts.map +1 -0
  46. package/dist/generators/index.js +26 -0
  47. package/dist/generators/index.js.map +1 -0
  48. package/dist/generators/object-generator.d.ts +48 -0
  49. package/dist/generators/object-generator.d.ts.map +1 -0
  50. package/dist/generators/object-generator.js +280 -0
  51. package/dist/generators/object-generator.js.map +1 -0
  52. package/dist/generators/primitive-generator.d.ts +40 -0
  53. package/dist/generators/primitive-generator.d.ts.map +1 -0
  54. package/dist/generators/primitive-generator.js +150 -0
  55. package/dist/generators/primitive-generator.js.map +1 -0
  56. package/dist/index.d.ts +17 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +42 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/parsers/base.d.ts +101 -0
  61. package/dist/parsers/base.d.ts.map +1 -0
  62. package/dist/parsers/base.js +77 -0
  63. package/dist/parsers/base.js.map +1 -0
  64. package/dist/parsers/factory.d.ts +64 -0
  65. package/dist/parsers/factory.d.ts.map +1 -0
  66. package/dist/parsers/factory.js +116 -0
  67. package/dist/parsers/factory.js.map +1 -0
  68. package/dist/parsers/index.d.ts +7 -0
  69. package/dist/parsers/index.d.ts.map +1 -0
  70. package/dist/parsers/index.js +23 -0
  71. package/dist/parsers/index.js.map +1 -0
  72. package/dist/parsers/openapi.d.ts +52 -0
  73. package/dist/parsers/openapi.d.ts.map +1 -0
  74. package/dist/parsers/openapi.js +396 -0
  75. package/dist/parsers/openapi.js.map +1 -0
  76. package/dist/plugins/branded-types.d.ts +28 -0
  77. package/dist/plugins/branded-types.d.ts.map +1 -0
  78. package/dist/plugins/branded-types.js +568 -0
  79. package/dist/plugins/branded-types.js.map +1 -0
  80. package/dist/plugins/builtin.d.ts +38 -0
  81. package/dist/plugins/builtin.d.ts.map +1 -0
  82. package/dist/plugins/builtin.js +283 -0
  83. package/dist/plugins/builtin.js.map +1 -0
  84. package/dist/plugins/index.d.ts +7 -0
  85. package/dist/plugins/index.d.ts.map +1 -0
  86. package/dist/plugins/index.js +23 -0
  87. package/dist/plugins/index.js.map +1 -0
  88. package/dist/plugins/loader.d.ts +92 -0
  89. package/dist/plugins/loader.d.ts.map +1 -0
  90. package/dist/plugins/loader.js +245 -0
  91. package/dist/plugins/loader.js.map +1 -0
  92. package/dist/plugins/manager.d.ts +99 -0
  93. package/dist/plugins/manager.d.ts.map +1 -0
  94. package/dist/plugins/manager.js +233 -0
  95. package/dist/plugins/manager.js.map +1 -0
  96. package/dist/plugins/performance-monitoring.d.ts +98 -0
  97. package/dist/plugins/performance-monitoring.d.ts.map +1 -0
  98. package/dist/plugins/performance-monitoring.js +596 -0
  99. package/dist/plugins/performance-monitoring.js.map +1 -0
  100. package/dist/plugins/request-deduplication.d.ts +27 -0
  101. package/dist/plugins/request-deduplication.d.ts.map +1 -0
  102. package/dist/plugins/request-deduplication.js +650 -0
  103. package/dist/plugins/request-deduplication.js.map +1 -0
  104. package/dist/plugins/zod-validation.d.ts +63 -0
  105. package/dist/plugins/zod-validation.d.ts.map +1 -0
  106. package/dist/plugins/zod-validation.js +743 -0
  107. package/dist/plugins/zod-validation.js.map +1 -0
  108. package/dist/types/core.d.ts +203 -0
  109. package/dist/types/core.d.ts.map +1 -0
  110. package/dist/types/core.js +24 -0
  111. package/dist/types/core.js.map +1 -0
  112. package/dist/types/index.d.ts +7 -0
  113. package/dist/types/index.d.ts.map +1 -0
  114. package/dist/types/index.js +23 -0
  115. package/dist/types/index.js.map +1 -0
  116. package/dist/types/openapi.d.ts +250 -0
  117. package/dist/types/openapi.d.ts.map +1 -0
  118. package/dist/types/openapi.js +8 -0
  119. package/dist/types/openapi.js.map +1 -0
  120. package/dist/types/schema.d.ts +68 -0
  121. package/dist/types/schema.d.ts.map +1 -0
  122. package/dist/types/schema.js +22 -0
  123. package/dist/types/schema.js.map +1 -0
  124. package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +355 -0
  125. package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +309 -0
  126. package/docs/API.md +600 -0
  127. package/docs/CONFIGURATION.md +722 -0
  128. package/docs/FASTAPI_TUTORIAL.md +1497 -0
  129. package/docs/PLUGINS.md +683 -0
  130. package/docs/PLUGIN_DEVELOPMENT.md +720 -0
  131. package/package.json +90 -0
@@ -0,0 +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"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Base parser interface and abstract implementation
4
+ * Provides the foundation for all schema parsers in the schemantic system
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaseSchemaParser = void 0;
8
+ /**
9
+ * Abstract base parser implementation
10
+ */
11
+ class BaseSchemaParser {
12
+ constructor(config) {
13
+ this.config = config;
14
+ }
15
+ /**
16
+ * Common utility method to resolve references
17
+ */
18
+ resolveReference(ref, schema) {
19
+ if (!ref.startsWith("#/")) {
20
+ return undefined;
21
+ }
22
+ const path = ref.substring(2).split("/");
23
+ return this.traverseSchema(schema, path);
24
+ }
25
+ /**
26
+ * Traverse schema object using path segments
27
+ */
28
+ traverseSchema(schema, path) {
29
+ let current = schema;
30
+ for (const segment of path) {
31
+ if (typeof current === "object" &&
32
+ current !== null &&
33
+ segment in current) {
34
+ current = current[segment];
35
+ }
36
+ else {
37
+ return undefined;
38
+ }
39
+ }
40
+ return current;
41
+ }
42
+ /**
43
+ * Create a generation context from parsed schema
44
+ */
45
+ createGenerationContext(schema) {
46
+ const resolvedSchemas = new Map();
47
+ const generatedTypes = new Map();
48
+ const generatedClients = new Map();
49
+ const schemaResolver = this.createResolver(schema);
50
+ return {
51
+ config: this.config,
52
+ schema: schema,
53
+ resolvedSchemas,
54
+ generatedTypes,
55
+ generatedClients,
56
+ typeRegistry: this.createTypeRegistry(),
57
+ schemaResolver,
58
+ };
59
+ }
60
+ /**
61
+ * Create a type registry instance
62
+ */
63
+ createTypeRegistry() {
64
+ // This will be implemented in the core module
65
+ return {
66
+ registerType: (_name, _type) => {
67
+ /* no-op */
68
+ },
69
+ getType: (_name) => undefined,
70
+ getAllTypes: () => [],
71
+ getDependencies: (_name) => [],
72
+ resolveDependencies: () => [],
73
+ };
74
+ }
75
+ }
76
+ exports.BaseSchemaParser = BaseSchemaParser;
77
+ //# sourceMappingURL=base.js.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Parser factory for creating and managing different schema parsers
3
+ * Provides a centralized way to instantiate and configure parsers
4
+ */
5
+ import { SchemanticConfig } from "../types/core";
6
+ import { SchemaParser, ParserMetadata } from "./base";
7
+ /**
8
+ * Supported parser types
9
+ */
10
+ export type ParserType = "openapi" | "swagger" | "json-schema";
11
+ /**
12
+ * Parser factory class
13
+ */
14
+ export declare class ParserFactory {
15
+ private static parsers;
16
+ /**
17
+ * Register a parser type
18
+ */
19
+ static registerParser(type: ParserType, parserClass: new (config: SchemanticConfig) => SchemaParser): void;
20
+ /**
21
+ * Create a parser instance
22
+ */
23
+ static createParser(type: ParserType, config: SchemanticConfig): SchemaParser;
24
+ /**
25
+ * Get available parser types
26
+ */
27
+ static getAvailableParsers(): ParserType[];
28
+ /**
29
+ * Get parser metadata
30
+ */
31
+ static getParserMetadata(type: ParserType): ParserMetadata | undefined;
32
+ /**
33
+ * Detect parser type from input
34
+ */
35
+ static detectParserType(input: {
36
+ url?: string;
37
+ filePath?: string;
38
+ data?: unknown;
39
+ string?: string;
40
+ }): ParserType;
41
+ /**
42
+ * Auto-detect and create parser
43
+ */
44
+ static autoCreateParser(input: {
45
+ url?: string;
46
+ filePath?: string;
47
+ data?: unknown;
48
+ string?: string;
49
+ }, config: SchemanticConfig): SchemaParser;
50
+ }
51
+ /**
52
+ * Convenience function to create a parser
53
+ */
54
+ export declare function createParser(type: ParserType, config: SchemanticConfig): SchemaParser;
55
+ /**
56
+ * Convenience function to auto-detect and create parser
57
+ */
58
+ export declare function autoCreateParser(input: {
59
+ url?: string;
60
+ filePath?: string;
61
+ data?: unknown;
62
+ string?: string;
63
+ }, config: SchemanticConfig): SchemaParser;
64
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /**
3
+ * Parser factory for creating and managing different schema parsers
4
+ * Provides a centralized way to instantiate and configure parsers
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ParserFactory = void 0;
8
+ exports.createParser = createParser;
9
+ exports.autoCreateParser = autoCreateParser;
10
+ const openapi_1 = require("./openapi");
11
+ /**
12
+ * Parser factory class
13
+ */
14
+ class ParserFactory {
15
+ /**
16
+ * Register a parser type
17
+ */
18
+ static registerParser(type, parserClass) {
19
+ this.parsers.set(type, parserClass);
20
+ }
21
+ /**
22
+ * Create a parser instance
23
+ */
24
+ static createParser(type, config) {
25
+ const ParserClass = this.parsers.get(type);
26
+ if (!ParserClass) {
27
+ throw new Error(`Unsupported parser type: ${type}`);
28
+ }
29
+ return new ParserClass(config);
30
+ }
31
+ /**
32
+ * Get available parser types
33
+ */
34
+ static getAvailableParsers() {
35
+ return Array.from(this.parsers.keys());
36
+ }
37
+ /**
38
+ * Get parser metadata
39
+ */
40
+ static getParserMetadata(type) {
41
+ const ParserClass = this.parsers.get(type);
42
+ if (!ParserClass) {
43
+ return undefined;
44
+ }
45
+ // Create a temporary instance to get metadata
46
+ const tempInstance = new ParserClass({});
47
+ return tempInstance.getMetadata();
48
+ }
49
+ /**
50
+ * Detect parser type from input
51
+ */
52
+ static detectParserType(input) {
53
+ // Check URL
54
+ if (input.url) {
55
+ if (input.url.includes("openapi.json") ||
56
+ input.url.includes("openapi.yaml")) {
57
+ return "openapi";
58
+ }
59
+ if (input.url.includes("swagger.json") ||
60
+ input.url.includes("swagger.yaml")) {
61
+ return "swagger";
62
+ }
63
+ }
64
+ // Check file path
65
+ if (input.filePath) {
66
+ const ext = input.filePath.toLowerCase();
67
+ if (ext.endsWith("openapi.json") || ext.endsWith("openapi.yaml")) {
68
+ return "openapi";
69
+ }
70
+ if (ext.endsWith("swagger.json") || ext.endsWith("swagger.yaml")) {
71
+ return "swagger";
72
+ }
73
+ }
74
+ // Check data structure
75
+ if (input.data || input.string) {
76
+ const data = input.data || JSON.parse(input.string);
77
+ if (typeof data === "object" && data !== null) {
78
+ if ("openapi" in data) {
79
+ return "openapi";
80
+ }
81
+ if ("swagger" in data) {
82
+ return "swagger";
83
+ }
84
+ if ("$schema" in data) {
85
+ return "json-schema";
86
+ }
87
+ }
88
+ }
89
+ // Default to OpenAPI for FastAPI applications
90
+ return "openapi";
91
+ }
92
+ /**
93
+ * Auto-detect and create parser
94
+ */
95
+ static autoCreateParser(input, config) {
96
+ const parserType = this.detectParserType(input);
97
+ return this.createParser(parserType, config);
98
+ }
99
+ }
100
+ exports.ParserFactory = ParserFactory;
101
+ ParserFactory.parsers = new Map();
102
+ // Register default parsers
103
+ ParserFactory.registerParser("openapi", openapi_1.OpenAPIParser);
104
+ /**
105
+ * Convenience function to create a parser
106
+ */
107
+ function createParser(type, config) {
108
+ return ParserFactory.createParser(type, config);
109
+ }
110
+ /**
111
+ * Convenience function to auto-detect and create parser
112
+ */
113
+ function autoCreateParser(input, config) {
114
+ return ParserFactory.autoCreateParser(input, config);
115
+ }
116
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Parser module exports
3
+ */
4
+ export * from './base';
5
+ export * from './openapi';
6
+ export * from './factory';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Parser module exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./base"), exports);
21
+ __exportStar(require("./openapi"), exports);
22
+ __exportStar(require("./factory"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * OpenAPI 3.0+ schema parser implementation
3
+ * Handles parsing and validation of OpenAPI specifications from FastAPI applications
4
+ */
5
+ import { OpenAPISchema } from "../types/openapi";
6
+ import { ResolvedSchema } from "../types/schema";
7
+ import { SchemanticConfig } from "../types/core";
8
+ import { BaseSchemaParser, SchemaInput, ValidationResult, ParserMetadata } from "./base";
9
+ /**
10
+ * OpenAPI parser implementation
11
+ */
12
+ export declare class OpenAPIParser extends BaseSchemaParser<OpenAPISchema> {
13
+ private readonly SUPPORTED_VERSIONS;
14
+ constructor(config: SchemanticConfig);
15
+ parse(input: SchemaInput): Promise<OpenAPISchema>;
16
+ validate(schema: OpenAPISchema): Promise<ValidationResult>;
17
+ createResolver(schema: OpenAPISchema): (ref: string) => ResolvedSchema | undefined;
18
+ getMetadata(): ParserMetadata;
19
+ /**
20
+ * Validate and transform raw schema data
21
+ */
22
+ private validateAndTransform;
23
+ /**
24
+ * Validate paths object
25
+ */
26
+ private validatePaths;
27
+ /**
28
+ * Validate operation object
29
+ */
30
+ private validateOperation;
31
+ /**
32
+ * Validate parameters array
33
+ */
34
+ private validateParameters;
35
+ /**
36
+ * Validate components object
37
+ */
38
+ private validateComponents;
39
+ /**
40
+ * Validate schemas object
41
+ */
42
+ private validateSchemas;
43
+ /**
44
+ * Validate component type object
45
+ */
46
+ private validateComponentType;
47
+ /**
48
+ * Check for circular references in schema
49
+ */
50
+ private hasCircularReference;
51
+ }
52
+ //# sourceMappingURL=openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/parsers/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,aAAa,EAOd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAGhB,cAAc,EACf,MAAM,QAAQ,CAAC;AAEhB;;GAEG;AACH,qBAAa,aAAc,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAMjC;gBAEU,MAAM,EAAE,gBAAgB;IAI9B,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAwBjD,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuEhE,cAAc,CACZ,MAAM,EAAE,aAAa,GACpB,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS;IAM9C,WAAW,IAAI,cAAc;IAW7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkDrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuD1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAoB7B"}