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,396 @@
1
+ "use strict";
2
+ /**
3
+ * OpenAPI 3.0+ schema parser implementation
4
+ * Handles parsing and validation of OpenAPI specifications from FastAPI applications
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.OpenAPIParser = void 0;
44
+ const fs = __importStar(require("fs/promises"));
45
+ // Removed unused path import
46
+ const axios_1 = __importDefault(require("axios"));
47
+ const base_1 = require("./base");
48
+ /**
49
+ * OpenAPI parser implementation
50
+ */
51
+ class OpenAPIParser extends base_1.BaseSchemaParser {
52
+ constructor(config) {
53
+ super(config);
54
+ this.SUPPORTED_VERSIONS = [
55
+ "3.0.0",
56
+ "3.0.1",
57
+ "3.0.2",
58
+ "3.0.3",
59
+ "3.1.0",
60
+ ];
61
+ }
62
+ async parse(input) {
63
+ let schemaData;
64
+ if (input.data) {
65
+ schemaData = input.data;
66
+ }
67
+ else if (input.string) {
68
+ schemaData = JSON.parse(input.string);
69
+ }
70
+ else if (input.filePath) {
71
+ const fileContent = await fs.readFile(input.filePath, "utf-8");
72
+ schemaData = JSON.parse(fileContent);
73
+ }
74
+ else if (input.url) {
75
+ const response = await axios_1.default.get(input.url, {
76
+ headers: {
77
+ Accept: "application/json",
78
+ },
79
+ });
80
+ schemaData = response.data;
81
+ }
82
+ else {
83
+ throw new Error("No valid input source provided");
84
+ }
85
+ return this.validateAndTransform(schemaData);
86
+ }
87
+ async validate(schema) {
88
+ const errors = [];
89
+ const warnings = [];
90
+ // Validate OpenAPI version
91
+ if (!this.SUPPORTED_VERSIONS.includes(schema.openapi)) {
92
+ errors.push({
93
+ code: "UNSUPPORTED_VERSION",
94
+ message: `Unsupported OpenAPI version: ${schema.openapi}`,
95
+ path: "openapi",
96
+ severity: "error",
97
+ });
98
+ }
99
+ // Validate required fields
100
+ if (!schema.info) {
101
+ errors.push({
102
+ code: "MISSING_REQUIRED_FIELD",
103
+ message: "Missing required field: info",
104
+ path: "info",
105
+ severity: "error",
106
+ });
107
+ }
108
+ if (!schema.paths) {
109
+ errors.push({
110
+ code: "MISSING_REQUIRED_FIELD",
111
+ message: "Missing required field: paths",
112
+ path: "paths",
113
+ severity: "error",
114
+ });
115
+ }
116
+ // Validate info object
117
+ if (schema.info) {
118
+ if (!schema.info.title) {
119
+ errors.push({
120
+ code: "MISSING_REQUIRED_FIELD",
121
+ message: "Missing required field: info.title",
122
+ path: "info.title",
123
+ severity: "error",
124
+ });
125
+ }
126
+ if (!schema.info.version) {
127
+ errors.push({
128
+ code: "MISSING_REQUIRED_FIELD",
129
+ message: "Missing required field: info.version",
130
+ path: "info.version",
131
+ severity: "error",
132
+ });
133
+ }
134
+ }
135
+ // Validate paths
136
+ if (schema.paths) {
137
+ this.validatePaths(schema.paths, errors, warnings);
138
+ }
139
+ // Validate components
140
+ if (schema.components) {
141
+ this.validateComponents(schema.components, errors, warnings);
142
+ }
143
+ return {
144
+ isValid: errors.length === 0,
145
+ errors,
146
+ warnings,
147
+ };
148
+ }
149
+ createResolver(schema) {
150
+ return (ref) => {
151
+ return this.resolveReference(ref, schema);
152
+ };
153
+ }
154
+ getMetadata() {
155
+ return {
156
+ name: "OpenAPI Parser",
157
+ version: "1.0.0",
158
+ supportedFormats: ["json", "yaml"],
159
+ supportedVersions: this.SUPPORTED_VERSIONS,
160
+ description: "Parser for OpenAPI 3.0+ specifications from FastAPI applications",
161
+ };
162
+ }
163
+ /**
164
+ * Validate and transform raw schema data
165
+ */
166
+ validateAndTransform(data) {
167
+ if (typeof data !== "object" || data === null) {
168
+ throw new Error("Invalid schema data: expected object");
169
+ }
170
+ const schema = data;
171
+ // Ensure required fields exist
172
+ if (!schema.openapi || typeof schema.openapi !== "string") {
173
+ throw new Error("Invalid schema: missing or invalid openapi field");
174
+ }
175
+ if (!schema.info || typeof schema.info !== "object") {
176
+ throw new Error("Invalid schema: missing or invalid info field");
177
+ }
178
+ if (!schema.paths || typeof schema.paths !== "object") {
179
+ throw new Error("Invalid schema: missing or invalid paths field");
180
+ }
181
+ return schema;
182
+ }
183
+ /**
184
+ * Validate paths object
185
+ */
186
+ validatePaths(paths, errors, warnings) {
187
+ for (const [pathKey, pathItem] of Object.entries(paths)) {
188
+ if (!pathItem || typeof pathItem !== "object") {
189
+ errors.push({
190
+ code: "INVALID_PATH_ITEM",
191
+ message: `Invalid path item for path: ${pathKey}`,
192
+ path: `paths.${pathKey}`,
193
+ severity: "error",
194
+ });
195
+ continue;
196
+ }
197
+ // Validate path parameters
198
+ if (pathItem.parameters) {
199
+ this.validateParameters(pathItem.parameters, `paths.${pathKey}.parameters`, errors, warnings);
200
+ }
201
+ // Validate operations
202
+ const operations = [
203
+ "get",
204
+ "put",
205
+ "post",
206
+ "delete",
207
+ "options",
208
+ "head",
209
+ "patch",
210
+ "trace",
211
+ ];
212
+ for (const operation of operations) {
213
+ if (pathItem[operation]) {
214
+ this.validateOperation(pathItem[operation], `paths.${pathKey}.${operation}`, errors, warnings);
215
+ }
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * Validate operation object
221
+ */
222
+ validateOperation(operation, path, errors, _warnings) {
223
+ // Validate operationId
224
+ if (!operation.operationId) {
225
+ _warnings.push({
226
+ code: "MISSING_OPERATION_ID",
227
+ message: "Operation missing operationId - will generate automatically",
228
+ path: `${path}.operationId`,
229
+ });
230
+ }
231
+ // Validate parameters
232
+ if (operation.parameters) {
233
+ this.validateParameters(operation.parameters, `${path}.parameters`, errors, _warnings);
234
+ }
235
+ // Validate requestBody
236
+ if (operation.requestBody &&
237
+ typeof operation.requestBody === "object" &&
238
+ !("$ref" in operation.requestBody)) {
239
+ if (!operation.requestBody.content) {
240
+ errors.push({
241
+ code: "MISSING_REQUEST_BODY_CONTENT",
242
+ message: "Request body missing content",
243
+ path: `${path}.requestBody.content`,
244
+ severity: "error",
245
+ });
246
+ }
247
+ }
248
+ // Validate responses
249
+ if (!operation.responses || Object.keys(operation.responses).length === 0) {
250
+ errors.push({
251
+ code: "MISSING_RESPONSES",
252
+ message: "Operation missing responses",
253
+ path: `${path}.responses`,
254
+ severity: "error",
255
+ });
256
+ }
257
+ }
258
+ /**
259
+ * Validate parameters array
260
+ */
261
+ validateParameters(parameters, path, errors, _warnings) {
262
+ if (!Array.isArray(parameters)) {
263
+ errors.push({
264
+ code: "INVALID_PARAMETERS",
265
+ message: "Parameters must be an array",
266
+ path,
267
+ severity: "error",
268
+ });
269
+ return;
270
+ }
271
+ for (let i = 0; i < parameters.length; i++) {
272
+ const param = parameters[i];
273
+ if (typeof param !== "object" || param === null) {
274
+ errors.push({
275
+ code: "INVALID_PARAMETER",
276
+ message: `Invalid parameter at index ${i}`,
277
+ path: `${path}[${i}]`,
278
+ severity: "error",
279
+ });
280
+ continue;
281
+ }
282
+ // Skip $ref parameters
283
+ if ("$ref" in param) {
284
+ continue;
285
+ }
286
+ const concreteParam = param;
287
+ if (!concreteParam.name) {
288
+ errors.push({
289
+ code: "MISSING_PARAMETER_NAME",
290
+ message: `Parameter missing name at index ${i}`,
291
+ path: `${path}[${i}].name`,
292
+ severity: "error",
293
+ });
294
+ }
295
+ if (!concreteParam.in) {
296
+ errors.push({
297
+ code: "MISSING_PARAMETER_LOCATION",
298
+ message: `Parameter missing 'in' field at index ${i}`,
299
+ path: `${path}[${i}].in`,
300
+ severity: "error",
301
+ });
302
+ }
303
+ }
304
+ }
305
+ /**
306
+ * Validate components object
307
+ */
308
+ validateComponents(components, errors, _warnings) {
309
+ // Validate schemas
310
+ if (components.schemas) {
311
+ this.validateSchemas(components.schemas, "components.schemas", errors, _warnings);
312
+ }
313
+ // Validate other component types
314
+ const componentTypes = [
315
+ "responses",
316
+ "parameters",
317
+ "examples",
318
+ "requestBodies",
319
+ "headers",
320
+ "securitySchemes",
321
+ "links",
322
+ "callbacks",
323
+ ];
324
+ for (const componentType of componentTypes) {
325
+ const value = components[componentType];
326
+ if (value) {
327
+ this.validateComponentType(value, `components.${String(componentType)}`, errors, _warnings);
328
+ }
329
+ }
330
+ }
331
+ /**
332
+ * Validate schemas object
333
+ */
334
+ validateSchemas(schemas, path, errors, _warnings) {
335
+ for (const [schemaName, schema] of Object.entries(schemas)) {
336
+ if (typeof schema !== "object" || schema === null) {
337
+ errors.push({
338
+ code: "INVALID_SCHEMA",
339
+ message: `Invalid schema: ${schemaName}`,
340
+ path: `${path}.${schemaName}`,
341
+ severity: "error",
342
+ });
343
+ continue;
344
+ }
345
+ // Skip $ref schemas
346
+ if ("$ref" in schema) {
347
+ continue;
348
+ }
349
+ // Check for circular references
350
+ if (this.hasCircularReference(schema, new Set())) {
351
+ _warnings.push({
352
+ code: "CIRCULAR_REFERENCE",
353
+ message: `Potential circular reference in schema: ${schemaName}`,
354
+ path: `${path}.${schemaName}`,
355
+ suggestion: "Consider using $ref for circular references",
356
+ });
357
+ }
358
+ }
359
+ }
360
+ /**
361
+ * Validate component type object
362
+ */
363
+ validateComponentType(componentType, path, errors, _warnings) {
364
+ for (const [componentName, component] of Object.entries(componentType)) {
365
+ if (typeof component !== "object" || component === null) {
366
+ errors.push({
367
+ code: "INVALID_COMPONENT",
368
+ message: `Invalid component: ${componentName}`,
369
+ path: `${path}.${componentName}`,
370
+ severity: "error",
371
+ });
372
+ }
373
+ }
374
+ }
375
+ /**
376
+ * Check for circular references in schema
377
+ */
378
+ hasCircularReference(obj, visited) {
379
+ if (typeof obj !== "object" || obj === null) {
380
+ return false;
381
+ }
382
+ const objStr = JSON.stringify(obj);
383
+ if (visited.has(objStr)) {
384
+ return true;
385
+ }
386
+ visited.add(objStr);
387
+ for (const value of Object.values(obj)) {
388
+ if (this.hasCircularReference(value, new Set(visited))) {
389
+ return true;
390
+ }
391
+ }
392
+ return false;
393
+ }
394
+ }
395
+ exports.OpenAPIParser = OpenAPIParser;
396
+ //# sourceMappingURL=openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/parsers/openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Advanced Branded Types Plugin
3
+ *
4
+ * Implements sophisticated branded types for compile-time safety guarantees,
5
+ * phantom type parameters for state management, and discriminated unions with
6
+ * runtime type guards for enhanced type system capabilities.
7
+ *
8
+ * Key Features:
9
+ * - Branded types for compile-time safety (prevents primitive obsession)
10
+ * - Phantom type parameters for authentication state management
11
+ * - Discriminated unions with exhaustive type checking
12
+ * - Runtime type guards with brand preservation
13
+ * - Type-level computations for advanced validations
14
+ * - Nominal typing simulation in TypeScript's structural system
15
+ *
16
+ * Architecture:
17
+ * - Zero-runtime-cost type safety through brands
18
+ * - Compile-time state tracking via phantom types
19
+ * - Type-level programming for validation pipelines
20
+ * - Integration with existing validation systems
21
+ */
22
+ import { SchemanticPlugin } from "../types/core";
23
+ /**
24
+ * Advanced Branded Types Plugin Implementation
25
+ */
26
+ export declare const brandedTypesPlugin: SchemanticPlugin;
27
+ export default brandedTypesPlugin;
28
+ //# sourceMappingURL=branded-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branded-types.d.ts","sourceRoot":"","sources":["../../src/plugins/branded-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,gBAAgB,EAIjB,MAAM,eAAe,CAAC;AAiCvB;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBA+IhC,CAAC;AA8gBF,eAAe,kBAAkB,CAAC"}