schemantic 0.3.0 → 0.4.1

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 (124) hide show
  1. package/CHANGELOG.md +204 -174
  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 +185 -61
  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 -2
  21. package/dist/core/schemantic.d.ts.map +1 -1
  22. package/dist/core/schemantic.js +196 -71
  23. package/dist/core/schemantic.js.map +1 -1
  24. package/dist/generators/api-client-generator.d.ts +10 -20
  25. package/dist/generators/api-client-generator.d.ts.map +1 -1
  26. package/dist/generators/api-client-generator.js +374 -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 +392 -268
  96. package/dist/plugins/zod-validation.js.map +1 -1
  97. package/dist/types/core.d.ts +20 -3
  98. package/dist/types/core.d.ts.map +1 -1
  99. package/dist/types/core.js +2 -0
  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 -601
  106. package/docs/AUDIT.md +49 -0
  107. package/docs/CONFIGURATION.md +81 -715
  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 -562
  124. package/dist/__tests__/test-config.js.map +0 -1
@@ -1,562 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test configuration and utilities
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mockFs = void 0;
7
- exports.createTestConfig = createTestConfig;
8
- exports.createTestSchema = createTestSchema;
9
- exports.createComplexTestSchema = createComplexTestSchema;
10
- exports.setupMockFs = setupMockFs;
11
- exports.resetMockFs = resetMockFs;
12
- const core_1 = require("../types/core");
13
- /**
14
- * Create a test configuration
15
- */
16
- function createTestConfig(overrides = {}) {
17
- const config = {
18
- outputDir: "./test-output",
19
- generateTypes: true,
20
- generateApiClient: true,
21
- useStrictTypes: true,
22
- useOptionalChaining: true,
23
- useNullishCoalescing: true,
24
- namingConvention: "camelCase",
25
- preserveComments: true,
26
- generateIndexFile: true,
27
- ...core_1.DEFAULT_CONFIG,
28
- ...overrides,
29
- };
30
- return config;
31
- }
32
- /**
33
- * Create a minimal test schema
34
- */
35
- function createTestSchema() {
36
- return {
37
- openapi: "3.0.0",
38
- info: {
39
- title: "Test API",
40
- version: "1.0.0",
41
- description: "A test API for unit tests",
42
- },
43
- paths: {
44
- "/users": {
45
- get: {
46
- operationId: "getUsers",
47
- summary: "Get all users",
48
- responses: {
49
- "200": {
50
- description: "List of users",
51
- content: {
52
- "application/json": {
53
- schema: {
54
- type: "array",
55
- items: {
56
- $ref: "#/components/schemas/User",
57
- },
58
- },
59
- },
60
- },
61
- },
62
- },
63
- },
64
- post: {
65
- operationId: "createUser",
66
- summary: "Create a new user",
67
- requestBody: {
68
- content: {
69
- "application/json": {
70
- schema: {
71
- $ref: "#/components/schemas/CreateUserRequest",
72
- },
73
- },
74
- },
75
- },
76
- responses: {
77
- "201": {
78
- description: "Created user",
79
- content: {
80
- "application/json": {
81
- schema: {
82
- $ref: "#/components/schemas/User",
83
- },
84
- },
85
- },
86
- },
87
- },
88
- },
89
- },
90
- "/users/{id}": {
91
- get: {
92
- operationId: "getUserById",
93
- summary: "Get user by ID",
94
- parameters: [
95
- {
96
- name: "id",
97
- in: "path",
98
- required: true,
99
- schema: {
100
- type: "string",
101
- },
102
- },
103
- ],
104
- responses: {
105
- "200": {
106
- description: "User details",
107
- content: {
108
- "application/json": {
109
- schema: {
110
- $ref: "#/components/schemas/User",
111
- },
112
- },
113
- },
114
- },
115
- "404": {
116
- description: "User not found",
117
- },
118
- },
119
- },
120
- put: {
121
- operationId: "updateUser",
122
- summary: "Update user",
123
- parameters: [
124
- {
125
- name: "id",
126
- in: "path",
127
- required: true,
128
- schema: {
129
- type: "string",
130
- },
131
- },
132
- ],
133
- requestBody: {
134
- content: {
135
- "application/json": {
136
- schema: {
137
- $ref: "#/components/schemas/UpdateUserRequest",
138
- },
139
- },
140
- },
141
- },
142
- responses: {
143
- "200": {
144
- description: "Updated user",
145
- content: {
146
- "application/json": {
147
- schema: {
148
- $ref: "#/components/schemas/User",
149
- },
150
- },
151
- },
152
- },
153
- },
154
- },
155
- delete: {
156
- operationId: "deleteUser",
157
- summary: "Delete user",
158
- parameters: [
159
- {
160
- name: "id",
161
- in: "path",
162
- required: true,
163
- schema: {
164
- type: "string",
165
- },
166
- },
167
- ],
168
- responses: {
169
- "204": {
170
- description: "User deleted",
171
- },
172
- "404": {
173
- description: "User not found",
174
- },
175
- },
176
- },
177
- },
178
- },
179
- components: {
180
- schemas: {
181
- User: {
182
- type: "object",
183
- description: "A user object",
184
- properties: {
185
- id: {
186
- type: "string",
187
- format: "uuid",
188
- description: "Unique identifier",
189
- },
190
- email: {
191
- type: "string",
192
- format: "email",
193
- description: "User email address",
194
- },
195
- firstName: {
196
- type: "string",
197
- description: "User first name",
198
- },
199
- lastName: {
200
- type: "string",
201
- description: "User last name",
202
- },
203
- role: {
204
- type: "string",
205
- enum: ["admin", "user", "moderator"],
206
- description: "User role",
207
- },
208
- isActive: {
209
- type: "boolean",
210
- description: "Whether the user is active",
211
- },
212
- createdAt: {
213
- type: "string",
214
- format: "date-time",
215
- description: "Creation timestamp",
216
- },
217
- updatedAt: {
218
- type: "string",
219
- format: "date-time",
220
- description: "Last update timestamp",
221
- },
222
- },
223
- required: ["id", "email", "firstName", "lastName"],
224
- },
225
- CreateUserRequest: {
226
- type: "object",
227
- description: "Request to create a new user",
228
- properties: {
229
- email: {
230
- type: "string",
231
- format: "email",
232
- description: "User email address",
233
- },
234
- firstName: {
235
- type: "string",
236
- description: "User first name",
237
- },
238
- lastName: {
239
- type: "string",
240
- description: "User last name",
241
- },
242
- role: {
243
- type: "string",
244
- enum: ["admin", "user", "moderator"],
245
- default: "user",
246
- description: "User role",
247
- },
248
- },
249
- required: ["email", "firstName", "lastName"],
250
- },
251
- UpdateUserRequest: {
252
- type: "object",
253
- description: "Request to update a user",
254
- properties: {
255
- email: {
256
- type: "string",
257
- format: "email",
258
- description: "User email address",
259
- },
260
- firstName: {
261
- type: "string",
262
- description: "User first name",
263
- },
264
- lastName: {
265
- type: "string",
266
- description: "User last name",
267
- },
268
- role: {
269
- type: "string",
270
- enum: ["admin", "user", "moderator"],
271
- description: "User role",
272
- },
273
- isActive: {
274
- type: "boolean",
275
- description: "Whether the user is active",
276
- },
277
- },
278
- },
279
- Error: {
280
- type: "object",
281
- description: "Error response",
282
- properties: {
283
- code: {
284
- type: "string",
285
- description: "Error code",
286
- },
287
- message: {
288
- type: "string",
289
- description: "Error message",
290
- },
291
- details: {
292
- type: "object",
293
- description: "Additional error details",
294
- },
295
- },
296
- required: ["code", "message"],
297
- },
298
- },
299
- },
300
- };
301
- }
302
- /**
303
- * Create a complex test schema with various types
304
- */
305
- function createComplexTestSchema() {
306
- return {
307
- openapi: "3.0.0",
308
- info: {
309
- title: "Complex Test API",
310
- version: "1.0.0",
311
- description: "A complex test API with various schema types",
312
- },
313
- paths: {
314
- "/products": {
315
- get: {
316
- operationId: "getProducts",
317
- parameters: [
318
- {
319
- name: "category",
320
- in: "query",
321
- schema: {
322
- type: "string",
323
- enum: ["electronics", "clothing", "books"],
324
- },
325
- },
326
- {
327
- name: "limit",
328
- in: "query",
329
- schema: {
330
- type: "integer",
331
- minimum: 1,
332
- maximum: 100,
333
- default: 20,
334
- },
335
- },
336
- {
337
- name: "offset",
338
- in: "query",
339
- schema: {
340
- type: "integer",
341
- minimum: 0,
342
- default: 0,
343
- },
344
- },
345
- ],
346
- responses: {
347
- "200": {
348
- description: "List of products",
349
- content: {
350
- "application/json": {
351
- schema: {
352
- type: "object",
353
- properties: {
354
- products: {
355
- type: "array",
356
- items: {
357
- $ref: "#/components/schemas/Product",
358
- },
359
- },
360
- total: {
361
- type: "integer",
362
- },
363
- hasMore: {
364
- type: "boolean",
365
- },
366
- },
367
- },
368
- },
369
- },
370
- },
371
- },
372
- },
373
- },
374
- },
375
- components: {
376
- schemas: {
377
- Product: {
378
- type: "object",
379
- properties: {
380
- id: {
381
- type: "string",
382
- format: "uuid",
383
- },
384
- name: {
385
- type: "string",
386
- },
387
- description: {
388
- type: "string",
389
- },
390
- price: {
391
- type: "number",
392
- format: "decimal",
393
- },
394
- category: {
395
- $ref: "#/components/schemas/Category",
396
- },
397
- tags: {
398
- type: "array",
399
- items: {
400
- type: "string",
401
- },
402
- },
403
- metadata: {
404
- type: "object",
405
- additionalProperties: true,
406
- },
407
- specifications: {
408
- type: "object",
409
- properties: {
410
- weight: {
411
- type: "number",
412
- },
413
- dimensions: {
414
- type: "object",
415
- properties: {
416
- width: { type: "number" },
417
- height: { type: "number" },
418
- depth: { type: "number" },
419
- },
420
- },
421
- },
422
- },
423
- availability: {
424
- type: "object",
425
- properties: {
426
- inStock: {
427
- type: "boolean",
428
- },
429
- quantity: {
430
- type: "integer",
431
- minimum: 0,
432
- },
433
- lastRestocked: {
434
- type: "string",
435
- format: "date-time",
436
- },
437
- },
438
- },
439
- },
440
- required: ["id", "name", "price", "category"],
441
- },
442
- Category: {
443
- type: "object",
444
- properties: {
445
- id: {
446
- type: "string",
447
- },
448
- name: {
449
- type: "string",
450
- },
451
- parent: {
452
- $ref: "#/components/schemas/Category",
453
- },
454
- },
455
- required: ["id", "name"],
456
- },
457
- Order: {
458
- type: "object",
459
- properties: {
460
- id: {
461
- type: "string",
462
- format: "uuid",
463
- },
464
- customerId: {
465
- type: "string",
466
- format: "uuid",
467
- },
468
- items: {
469
- type: "array",
470
- items: {
471
- type: "object",
472
- properties: {
473
- productId: {
474
- type: "string",
475
- format: "uuid",
476
- },
477
- quantity: {
478
- type: "integer",
479
- minimum: 1,
480
- },
481
- price: {
482
- type: "number",
483
- format: "decimal",
484
- },
485
- },
486
- required: ["productId", "quantity", "price"],
487
- },
488
- },
489
- status: {
490
- type: "string",
491
- enum: [
492
- "pending",
493
- "confirmed",
494
- "shipped",
495
- "delivered",
496
- "cancelled",
497
- ],
498
- },
499
- total: {
500
- type: "number",
501
- format: "decimal",
502
- },
503
- createdAt: {
504
- type: "string",
505
- format: "date-time",
506
- },
507
- updatedAt: {
508
- type: "string",
509
- format: "date-time",
510
- },
511
- },
512
- required: ["id", "customerId", "items", "status", "total"],
513
- },
514
- },
515
- },
516
- };
517
- }
518
- /**
519
- * Mock file system operations for tests
520
- */
521
- exports.mockFs = {
522
- mkdir: jest.fn(),
523
- writeFile: jest.fn(),
524
- readFile: jest.fn(),
525
- access: jest.fn(),
526
- readdir: jest.fn(),
527
- };
528
- /**
529
- * Setup mock file system
530
- */
531
- function setupMockFs() {
532
- jest.mock("fs/promises", () => exports.mockFs);
533
- exports.mockFs.mkdir.mockResolvedValue(undefined);
534
- exports.mockFs.writeFile.mockResolvedValue(undefined);
535
- exports.mockFs.readFile.mockResolvedValue("{}");
536
- exports.mockFs.access.mockResolvedValue(undefined);
537
- exports.mockFs.readdir.mockResolvedValue([]);
538
- }
539
- /**
540
- * Reset mock file system
541
- */
542
- function resetMockFs() {
543
- jest.clearAllMocks();
544
- }
545
- /**
546
- * Basic test to ensure the test utilities work
547
- */
548
- describe("Test Utilities", () => {
549
- it("should create test configuration", () => {
550
- const config = createTestConfig();
551
- expect(config).toBeDefined();
552
- expect(config.outputDir).toBe("./test-output");
553
- expect(config.generateTypes).toBe(true);
554
- });
555
- it("should create test schema", () => {
556
- const schema = createTestSchema();
557
- expect(schema).toBeDefined();
558
- expect(schema.openapi).toBe("3.0.0");
559
- expect(schema.info.title).toBe("Test API");
560
- });
561
- });
562
- //# sourceMappingURL=test-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-config.js","sourceRoot":"","sources":["../../src/__tests__/test-config.ts"],"names":[],"mappings":"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"}