ts-runtime-validation 1.6.16 → 1.7.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 (79) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/CONTRIBUTING.md +430 -0
  3. package/README.md +444 -64
  4. package/dist/ICommandOptions.js +3 -0
  5. package/dist/ICommandOptions.js.map +1 -0
  6. package/dist/SchemaGenerator.integration.test.js +323 -0
  7. package/dist/SchemaGenerator.integration.test.js.map +1 -0
  8. package/dist/SchemaGenerator.js +120 -0
  9. package/dist/SchemaGenerator.js.map +1 -0
  10. package/dist/SchemaGenerator.test.js +132 -0
  11. package/dist/SchemaGenerator.test.js.map +1 -0
  12. package/dist/errors/index.js +95 -0
  13. package/dist/errors/index.js.map +1 -0
  14. package/dist/errors/index.test.js +232 -0
  15. package/dist/errors/index.test.js.map +1 -0
  16. package/dist/getPosixPath.js +13 -0
  17. package/dist/getPosixPath.js.map +1 -0
  18. package/dist/index.js +27 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/lib.js.map +1 -0
  21. package/dist/services/CodeGenerator.js +305 -0
  22. package/dist/services/CodeGenerator.js.map +1 -0
  23. package/dist/services/FileDiscovery.js +121 -0
  24. package/dist/services/FileDiscovery.js.map +1 -0
  25. package/dist/services/FileDiscovery.test.js +184 -0
  26. package/dist/services/FileDiscovery.test.js.map +1 -0
  27. package/dist/services/SchemaProcessor.js +182 -0
  28. package/dist/services/SchemaProcessor.js.map +1 -0
  29. package/dist/services/SchemaProcessor.test.js +395 -0
  30. package/dist/services/SchemaProcessor.test.js.map +1 -0
  31. package/dist/services/SchemaWriter.js +76 -0
  32. package/dist/services/SchemaWriter.js.map +1 -0
  33. package/dist/services/SchemaWriter.test.js +255 -0
  34. package/dist/services/SchemaWriter.test.js.map +1 -0
  35. package/dist/test/basic-scenario/types.jsonschema.js +3 -0
  36. package/dist/test/basic-scenario/types.jsonschema.js.map +1 -0
  37. package/dist/test/duplicate-symbols-different-implementation/IBaseType.js +3 -0
  38. package/dist/test/duplicate-symbols-different-implementation/IBaseType.js.map +1 -0
  39. package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js +3 -0
  40. package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
  41. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js +3 -0
  42. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js.map +1 -0
  43. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js +3 -0
  44. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js.map +1 -0
  45. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js +3 -0
  46. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js.map +1 -0
  47. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js +3 -0
  48. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
  49. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js +3 -0
  50. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js.map +1 -0
  51. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js +3 -0
  52. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js.map +1 -0
  53. package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js +3 -0
  54. package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js.map +1 -0
  55. package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js +49 -0
  56. package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js.map +1 -0
  57. package/dist/utils/ProgressReporter.js +67 -0
  58. package/dist/utils/ProgressReporter.js.map +1 -0
  59. package/dist/utils/ProgressReporter.test.js +267 -0
  60. package/dist/utils/ProgressReporter.test.js.map +1 -0
  61. package/dist/writeLine.js +12 -0
  62. package/dist/writeLine.js.map +1 -0
  63. package/package.json +2 -2
  64. package/src/ICommandOptions.ts +7 -0
  65. package/src/SchemaGenerator.integration.test.ts +411 -0
  66. package/src/SchemaGenerator.test.ts +7 -0
  67. package/src/SchemaGenerator.ts +112 -298
  68. package/src/errors/index.test.ts +319 -0
  69. package/src/errors/index.ts +92 -0
  70. package/src/index.ts +7 -0
  71. package/src/services/CodeGenerator.ts +352 -0
  72. package/src/services/FileDiscovery.test.ts +216 -0
  73. package/src/services/FileDiscovery.ts +137 -0
  74. package/src/services/SchemaProcessor.test.ts +464 -0
  75. package/src/services/SchemaProcessor.ts +173 -0
  76. package/src/services/SchemaWriter.test.ts +304 -0
  77. package/src/services/SchemaWriter.ts +75 -0
  78. package/src/utils/ProgressReporter.test.ts +357 -0
  79. package/src/utils/ProgressReporter.ts +76 -0
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ProgressReporter_1 = require("./ProgressReporter");
4
+ // Mock process.stdout for testing
5
+ const mockStdout = {
6
+ isTTY: true,
7
+ clearLine: jest.fn(),
8
+ cursorTo: jest.fn(),
9
+ write: jest.fn()
10
+ };
11
+ const originalStdout = process.stdout;
12
+ beforeEach(() => {
13
+ // Reset mock functions
14
+ mockStdout.clearLine = jest.fn();
15
+ mockStdout.cursorTo = jest.fn();
16
+ mockStdout.write = jest.fn();
17
+ mockStdout.isTTY = true;
18
+ // Replace process.stdout with mock
19
+ Object.defineProperty(process, 'stdout', {
20
+ value: mockStdout,
21
+ configurable: true
22
+ });
23
+ });
24
+ afterAll(() => {
25
+ // Restore original stdout
26
+ Object.defineProperty(process, 'stdout', {
27
+ value: originalStdout,
28
+ configurable: true
29
+ });
30
+ });
31
+ describe("ProgressReporter", () => {
32
+ describe("disabled reporter", () => {
33
+ it("should not output anything when disabled", () => {
34
+ const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
35
+ const reporter = new ProgressReporter_1.ProgressReporter({
36
+ enabled: false,
37
+ total: 100,
38
+ showBar: true
39
+ });
40
+ reporter.start("Starting task");
41
+ reporter.update(50, "Half done");
42
+ reporter.increment("Almost there");
43
+ reporter.complete("Task completed");
44
+ expect(consoleSpy).not.toHaveBeenCalled();
45
+ expect(mockStdout.write).not.toHaveBeenCalled();
46
+ consoleSpy.mockRestore();
47
+ });
48
+ });
49
+ describe("enabled reporter without progress bar", () => {
50
+ it("should show start and complete messages", () => {
51
+ const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
52
+ const reporter = new ProgressReporter_1.ProgressReporter({
53
+ enabled: true,
54
+ showBar: false
55
+ });
56
+ reporter.start("Starting task");
57
+ reporter.complete("Task completed");
58
+ expect(consoleSpy).toHaveBeenCalledWith("Starting task");
59
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Task completed"));
60
+ consoleSpy.mockRestore();
61
+ });
62
+ it("should show custom update messages", () => {
63
+ const reporter = new ProgressReporter_1.ProgressReporter({
64
+ enabled: true,
65
+ showBar: false
66
+ });
67
+ reporter.start("Starting");
68
+ reporter.update(25, "Processing file 1");
69
+ reporter.update(50, "Processing file 2");
70
+ expect(mockStdout.write).toHaveBeenCalledWith("Processing file 1");
71
+ expect(mockStdout.write).toHaveBeenCalledWith("Processing file 2");
72
+ });
73
+ it("should handle increment without message", () => {
74
+ const reporter = new ProgressReporter_1.ProgressReporter({
75
+ enabled: true,
76
+ showBar: false
77
+ });
78
+ reporter.start("Starting");
79
+ reporter.increment();
80
+ // Should not crash when incrementing without message
81
+ expect(() => reporter.increment()).not.toThrow();
82
+ });
83
+ });
84
+ describe("enabled reporter with progress bar", () => {
85
+ it("should draw progress bar", () => {
86
+ const reporter = new ProgressReporter_1.ProgressReporter({
87
+ enabled: true,
88
+ total: 100,
89
+ showBar: true
90
+ });
91
+ reporter.start("Processing files");
92
+ reporter.update(25);
93
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("Progress: ["));
94
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("25%"));
95
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(25/100)"));
96
+ });
97
+ it("should show 100% when complete", () => {
98
+ const reporter = new ProgressReporter_1.ProgressReporter({
99
+ enabled: true,
100
+ total: 50,
101
+ showBar: true
102
+ });
103
+ reporter.start("Processing");
104
+ reporter.update(50);
105
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("100%"));
106
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(50/50)"));
107
+ });
108
+ it("should handle progress beyond total", () => {
109
+ const reporter = new ProgressReporter_1.ProgressReporter({
110
+ enabled: true,
111
+ total: 10,
112
+ showBar: true
113
+ });
114
+ reporter.start("Processing");
115
+ reporter.update(15); // More than total
116
+ // Should cap at 100% but show actual numbers
117
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(15/10)"));
118
+ });
119
+ it("should use increment correctly", () => {
120
+ const reporter = new ProgressReporter_1.ProgressReporter({
121
+ enabled: true,
122
+ total: 3,
123
+ showBar: true
124
+ });
125
+ reporter.start("Processing");
126
+ reporter.increment(); // 1
127
+ reporter.increment(); // 2
128
+ reporter.increment(); // 3
129
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(3/3)"));
130
+ });
131
+ });
132
+ describe("time formatting", () => {
133
+ it("should format completion time in different units", () => {
134
+ const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
135
+ // Mock Date.now to control timing
136
+ const originalNow = Date.now;
137
+ let currentTime = 1000;
138
+ Date.now = jest.fn(() => currentTime);
139
+ const reporter = new ProgressReporter_1.ProgressReporter({
140
+ enabled: true
141
+ });
142
+ reporter.start("Processing");
143
+ // Simulate 500ms elapsed
144
+ currentTime = 1500;
145
+ reporter.complete("Done");
146
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("500ms"));
147
+ consoleSpy.mockClear();
148
+ // Test seconds
149
+ currentTime = 1000; // Reset time
150
+ reporter.start("Processing");
151
+ currentTime = 3500; // 2.5 seconds elapsed
152
+ reporter.complete("Done");
153
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("2.5s"));
154
+ consoleSpy.mockClear();
155
+ // Test minutes
156
+ currentTime = 1000; // Reset time
157
+ reporter.start("Processing");
158
+ currentTime = 126000; // 125 seconds = 2m 5s elapsed
159
+ reporter.complete("Done");
160
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("2m 5s"));
161
+ // Restore Date.now
162
+ Date.now = originalNow;
163
+ consoleSpy.mockRestore();
164
+ });
165
+ });
166
+ describe("TTY handling", () => {
167
+ it("should handle non-TTY environments", () => {
168
+ mockStdout.isTTY = false;
169
+ mockStdout.clearLine = undefined;
170
+ const reporter = new ProgressReporter_1.ProgressReporter({
171
+ enabled: true,
172
+ total: 10,
173
+ showBar: true
174
+ });
175
+ reporter.start("Processing");
176
+ reporter.update(5);
177
+ // Should not crash when clearLine is not available
178
+ expect(mockStdout.write).toHaveBeenCalled();
179
+ });
180
+ it("should handle missing cursorTo", () => {
181
+ mockStdout.isTTY = true;
182
+ mockStdout.clearLine = jest.fn();
183
+ mockStdout.cursorTo = undefined;
184
+ const reporter = new ProgressReporter_1.ProgressReporter({
185
+ enabled: true,
186
+ total: 10,
187
+ showBar: true
188
+ });
189
+ reporter.start("Processing");
190
+ reporter.update(5);
191
+ // Should not crash when cursorTo is not available
192
+ expect(mockStdout.write).toHaveBeenCalled();
193
+ });
194
+ });
195
+ describe("edge cases", () => {
196
+ it("should handle zero total", () => {
197
+ const reporter = new ProgressReporter_1.ProgressReporter({
198
+ enabled: true,
199
+ total: 0,
200
+ showBar: true
201
+ });
202
+ // Should not crash with zero total
203
+ expect(() => {
204
+ reporter.start("Processing");
205
+ reporter.update(1);
206
+ }).not.toThrow();
207
+ });
208
+ it("should handle negative progress", () => {
209
+ const reporter = new ProgressReporter_1.ProgressReporter({
210
+ enabled: true,
211
+ total: 10,
212
+ showBar: true
213
+ });
214
+ reporter.start("Processing");
215
+ reporter.update(-5);
216
+ // Should handle gracefully
217
+ expect(mockStdout.write).toHaveBeenCalled();
218
+ });
219
+ it("should handle undefined total with progress bar", () => {
220
+ const reporter = new ProgressReporter_1.ProgressReporter({
221
+ enabled: true,
222
+ total: undefined,
223
+ showBar: true
224
+ });
225
+ // Should not crash with undefined total
226
+ expect(() => {
227
+ reporter.start("Processing");
228
+ reporter.update(5);
229
+ }).not.toThrow();
230
+ });
231
+ it("should handle very large numbers", () => {
232
+ const reporter = new ProgressReporter_1.ProgressReporter({
233
+ enabled: true,
234
+ total: 1000000,
235
+ showBar: true
236
+ });
237
+ reporter.start("Processing");
238
+ reporter.update(500000);
239
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("50%"));
240
+ expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(500000/1000000)"));
241
+ });
242
+ });
243
+ describe("visual progress bar", () => {
244
+ it("should show correct bar fill at different percentages", () => {
245
+ const reporter = new ProgressReporter_1.ProgressReporter({
246
+ enabled: true,
247
+ total: 100,
248
+ showBar: true
249
+ });
250
+ reporter.start("Test");
251
+ // 0%
252
+ reporter.update(0);
253
+ let lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
254
+ expect(lastCall).toContain("░".repeat(30)); // All empty
255
+ // 50%
256
+ reporter.update(50);
257
+ lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
258
+ expect(lastCall).toContain("█".repeat(15)); // Half filled
259
+ expect(lastCall).toContain("░".repeat(15)); // Half empty
260
+ // 100%
261
+ reporter.update(100);
262
+ lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
263
+ expect(lastCall).toContain("█".repeat(30)); // All filled
264
+ });
265
+ });
266
+ });
267
+ //# sourceMappingURL=ProgressReporter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressReporter.test.js","sourceRoot":"","sources":["../../src/utils/ProgressReporter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeLine = void 0;
4
+ const writeLine = (msg) => {
5
+ if (process.stdout.isTTY && process.stdout.clearLine) {
6
+ process.stdout.clearLine(0);
7
+ process.stdout.cursorTo(0);
8
+ }
9
+ process.stdout.write(msg);
10
+ };
11
+ exports.writeLine = writeLine;
12
+ //# sourceMappingURL=writeLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeLine.js","sourceRoot":"","sources":["../src/writeLine.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,GAAU,EAAE,EAAE;IACpC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAA;AANY,QAAA,SAAS,aAMrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-runtime-validation",
3
- "version": "1.6.16",
3
+ "version": "1.7.0",
4
4
  "author": "Matthew Duong <thegalah@gmail.com>",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -28,7 +28,7 @@
28
28
  "ts-node": "^10.9.1",
29
29
  "typescript": "^5.1.6"
30
30
  },
31
- "description": "A set of tools to generate json-schema validations from typescript interface(s) and methods to validate unknown data at runtime against them",
31
+ "description": "High-performance TypeScript runtime validation with intelligent caching, parallel processing, and zero-effort JSON Schema generation from your existing interfaces",
32
32
  "main": "dist/lib.js",
33
33
  "repository": {
34
34
  "type": "git",
@@ -5,4 +5,11 @@ export interface ICommandOptions {
5
5
  readonly helpers: boolean;
6
6
  readonly additionalProperties: boolean;
7
7
  readonly tsconfigPath: string;
8
+ readonly verbose?: boolean;
9
+ readonly progress?: boolean;
10
+ readonly minify?: boolean;
11
+ readonly cache?: boolean;
12
+ readonly parallel?: boolean;
13
+ readonly treeShaking?: boolean;
14
+ readonly lazyLoad?: boolean;
8
15
  }