ts-runtime-validation 1.8.1 → 1.8.3

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.
package/README.md CHANGED
@@ -4,36 +4,36 @@
4
4
 
5
5
  Automatically generate type-safe runtime validation from your existing TypeScript interfaces. Zero configuration, zero decorators - just add JSDoc comments for validation rules and get bulletproof runtime type checking with full TypeScript support.
6
6
 
7
- 📖 **[Project Marketing Page](https://www.thegalah.com/projects/ts-runtime-validation)**
7
+ **[Project Marketing Page](https://www.thegalah.com/projects/ts-runtime-validation)**
8
8
 
9
- ## Features
9
+ ## Features
10
10
 
11
11
  ### Core Features
12
12
 
13
- - 🚀 **Zero-effort validation** - Automatically generates JSON Schema validators from TypeScript interfaces
14
- - 🔒 **Type-safe** - Full TypeScript support with type inference and type guards
15
- - 📦 **Lightweight** - Minimal dependencies, can be installed as a dev dependency
16
- - 🛠️ **CLI & Programmatic API** - Use as a CLI tool or integrate into your build process
17
- - 🎯 **Selective generation** - Control which types to validate using file naming conventions
18
- - 📝 **JSDoc annotations** - Add validation rules (min/max length, patterns, formats) directly in your TypeScript code
13
+ - **Zero-effort validation** - Automatically generates JSON Schema validators from TypeScript interfaces
14
+ - **Type-safe** - Full TypeScript support with type inference and type guards
15
+ - **Lightweight** - Minimal dependencies, can be installed as a dev dependency
16
+ - **CLI & Programmatic API** - Use as a CLI tool or integrate into your build process
17
+ - **Selective generation** - Control which types to validate using file naming conventions
18
+ - **JSDoc annotations** - Add validation rules (min/max length, patterns, formats) directly in your TypeScript code
19
19
 
20
20
  ### Performance & Optimization
21
21
 
22
- - **Incremental builds** - File-based caching for faster subsequent builds
23
- - 🔄 **Parallel processing** - Concurrent file processing for improved performance
24
- - 📊 **Progress reporting** - Visual feedback for long-running operations
25
- - 🌳 **Tree-shaking friendly** - Generate optimized exports for smaller bundles
26
- - 💤 **Lazy loading** - Optional deferred validator initialization
27
- - 📦 **Minified output** - Compressed JSON schemas for production
28
- - 🔧 **Verbose logging** - Detailed debugging information when needed
22
+ - **Incremental builds** - File-based caching for faster subsequent builds
23
+ - **Parallel processing** - Concurrent file processing for improved performance
24
+ - **Progress reporting** - Visual feedback for long-running operations
25
+ - **Tree-shaking friendly** - Generate optimized exports for smaller bundles
26
+ - **Lazy loading** - Optional deferred validator initialization
27
+ - **Minified output** - Compressed JSON schemas for production
28
+ - **Verbose logging** - Detailed debugging information when needed
29
29
 
30
- ## 📋 Prerequisites
30
+ ## Prerequisites
31
31
 
32
32
  - Node.js >= 12
33
33
  - TypeScript >= 4.0
34
34
  - `ajv` >= 8.11.0 (peer dependency for runtime validation)
35
35
 
36
- ## 📦 Installation
36
+ ## Installation
37
37
 
38
38
  ```bash
39
39
  # Using yarn (recommended)
@@ -45,7 +45,7 @@ npm install --save-dev ts-runtime-validation
45
45
  npm install ajv # Required peer dependency
46
46
  ```
47
47
 
48
- ## 🚀 Quick Start
48
+ ## Quick Start
49
49
 
50
50
  ### 1. Mark your types for validation
51
51
 
@@ -155,7 +155,7 @@ if (isValidSchema(userData, "#/definitions/IUser")) {
155
155
  }
156
156
  ```
157
157
 
158
- ## 📖 Usage
158
+ ## Usage
159
159
 
160
160
  ### CLI Options
161
161
 
@@ -322,7 +322,7 @@ ts-runtime-validation --cache --minify --no-parallel
322
322
  ts-runtime-validation --verbose --progress --no-parallel
323
323
  ```
324
324
 
325
- ## 🚀 Performance & Optimization
325
+ ## Performance & Optimization
326
326
 
327
327
  ### Caching System
328
328
 
@@ -412,13 +412,13 @@ const getValidator = () => {
412
412
  };
413
413
  ```
414
414
 
415
- ## ⚠️ Limitations
415
+ ## Limitations
416
416
 
417
417
  - **No duplicate type names** - Each interface/type must have a unique name across all schema files
418
418
  - **TypeScript-only constructs** - Some advanced TypeScript features (like conditional types) may not be fully supported
419
419
  - **Circular references** - Limited support for circular type references
420
420
 
421
- ## 🤝 Contributing
421
+ ## Contributing
422
422
 
423
423
  We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
424
424
 
@@ -461,7 +461,7 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed information about:
461
461
  - Performance optimization techniques
462
462
  - Testing approaches and best practices
463
463
 
464
- ## 🙏 Acknowledgments
464
+ ## Acknowledgments
465
465
 
466
466
  Built with modern tools and optimized for performance:
467
467
 
@@ -471,7 +471,7 @@ Built with modern tools and optimized for performance:
471
471
  - [fdir](https://github.com/thecodrr/fdir) - Fast file system traversal
472
472
  - [picomatch](https://github.com/micromatch/picomatch) - Efficient glob pattern matching
473
473
 
474
- ## 📚 Related Projects & Comparisons
474
+ ## Related Projects & Comparisons
475
475
 
476
476
  ### How ts-runtime-validation differs from alternatives:
477
477
 
@@ -486,21 +486,21 @@ Built with modern tools and optimized for performance:
486
486
 
487
487
  **ts-runtime-validation**:
488
488
 
489
- - ✅ **Zero runtime API** - Works with your existing TypeScript interfaces
490
- - ✅ **Build-time generation** - No runtime overhead for schema creation
491
- - ✅ **JSDoc validation rules** - Add constraints via comments
492
- - ✅ **Intelligent caching** - Fast incremental builds with change detection
493
- - ✅ **Performance optimized** - Parallel processing and bundle optimization
494
- - ❌ **Requires build step** - Must regenerate when types change
495
- - ❌ **No runtime schema composition** - Can't dynamically create schemas
489
+ -**Zero runtime API** - Works with your existing TypeScript interfaces
490
+ -**Build-time generation** - No runtime overhead for schema creation
491
+ -**JSDoc validation rules** - Add constraints via comments
492
+ -**Intelligent caching** - Fast incremental builds with change detection
493
+ -**Performance optimized** - Parallel processing and bundle optimization
494
+ -**Requires build step** - Must regenerate when types change
495
+ -**No runtime schema composition** - Can't dynamically create schemas
496
496
 
497
497
  **zod/io-ts/yup**:
498
498
 
499
- - ✅ **Runtime flexibility** - Create and compose schemas dynamically
500
- - ✅ **Single source of truth** - Schema and type defined together
501
- - ✅ **No build step** - Works immediately in your code
502
- - ❌ **Runtime overhead** - Schemas created at runtime
503
- - ❌ **Duplicate type definitions** - Can't reuse existing TypeScript interfaces
499
+ -**Runtime flexibility** - Create and compose schemas dynamically
500
+ -**Single source of truth** - Schema and type defined together
501
+ -**No build step** - Works immediately in your code
502
+ -**Runtime overhead** - Schemas created at runtime
503
+ -**Duplicate type definitions** - Can't reuse existing TypeScript interfaces
504
504
 
505
505
  Choose **ts-runtime-validation** when you:
506
506
 
@@ -519,7 +519,7 @@ Choose **alternatives** when you:
519
519
  - Need complex runtime transformations or coercions
520
520
  - Want extensive built-in validation methods and error messages
521
521
 
522
- ## 🔧 Troubleshooting
522
+ ## Troubleshooting
523
523
 
524
524
  ### Generated files are not updating
525
525
 
@@ -533,7 +533,7 @@ ts-runtime-validation --cache
533
533
 
534
534
  ### Hash inconsistencies between runs
535
535
 
536
- Version 1.8.0+ includes fixes for deterministic output generation. If you're experiencing different file hashes between runs, ensure you're using the latest version.
536
+ Version 1.8.2+ includes fixes for deterministic output generation. If you're experiencing different file hashes between runs, ensure you're using the latest version.
537
537
 
538
538
  ### Performance issues with large projects
539
539
 
@@ -43,10 +43,42 @@ class SchemaGenerator {
43
43
  console.log(`Found ${files.length} schema file(s)`);
44
44
  files.forEach(file => console.log(` - ${file.path}`));
45
45
  }
46
+ // Separate changed and unchanged files when caching is enabled
47
+ const cacheEnabled = this.options.cache || false;
48
+ let filesToProcess;
49
+ const cachedSchemas = new Map();
50
+ if (cacheEnabled) {
51
+ filesToProcess = files.filter(f => f.changed !== false);
52
+ const unchangedFiles = files.filter(f => f.changed === false);
53
+ for (const file of unchangedFiles) {
54
+ const cached = this.fileDiscovery.getCachedSchema(file.path);
55
+ if (cached) {
56
+ cachedSchemas.set(file.path, cached);
57
+ }
58
+ else {
59
+ // No cached schema available, must reprocess
60
+ filesToProcess.push(file);
61
+ }
62
+ }
63
+ if (this.options.verbose) {
64
+ console.log(`Cache: ${cachedSchemas.size} unchanged, ${filesToProcess.length} to process`);
65
+ }
66
+ }
67
+ else {
68
+ filesToProcess = files;
69
+ }
46
70
  // Process schemas
47
71
  this.progressReporter.update(1, "Processing TypeScript files...");
48
- this.progressReporter.options.total = files.length + 4; // files + 4 generation steps
49
- const schemaMap = yield this.schemaProcessor.processFiles(files);
72
+ this.progressReporter.options.total = filesToProcess.length + 4; // files + 4 generation steps
73
+ const processedSchemas = filesToProcess.length > 0
74
+ ? yield this.schemaProcessor.processFiles(filesToProcess)
75
+ : new Map();
76
+ // Merge processed and cached schemas
77
+ const schemaMap = new Map([...cachedSchemas, ...processedSchemas]);
78
+ // Save all schemas to cache for next run
79
+ if (cacheEnabled) {
80
+ yield this.fileDiscovery.saveSchemasToCache(schemaMap);
81
+ }
50
82
  if (schemaMap.size === 0) {
51
83
  console.log("No types found to generate schemas for");
52
84
  return;
@@ -90,7 +122,9 @@ class SchemaGenerator {
90
122
  additionalProperties: options.additionalProperties,
91
123
  tsconfigPath: options.tsconfigPath || undefined,
92
124
  parallel: options.parallel !== false,
93
- verbose: options.verbose || false
125
+ verbose: options.verbose || false,
126
+ glob: options.glob,
127
+ rootPath: options.rootPath
94
128
  });
95
129
  this.codeGenerator = new CodeGenerator_1.CodeGenerator({
96
130
  outputPath: this.outputPath,
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,10 @@ class FileDiscovery {
23
23
  constructor(options) {
24
24
  this.options = options;
25
25
  this.fileCache = new Map();
26
- this.cacheFile = path_1.default.join(options.cachePath || ".ts-runtime-validation-cache", "file-hashes.json");
26
+ this.schemaCache = new Map();
27
+ const cacheDir = options.cachePath || ".ts-runtime-validation-cache";
28
+ this.cacheFile = path_1.default.join(cacheDir, "file-hashes.json");
29
+ this.schemaCacheFile = path_1.default.join(cacheDir, "schema-cache.json");
27
30
  if (options.cacheEnabled) {
28
31
  this.loadCache();
29
32
  }
@@ -64,10 +67,12 @@ class FileDiscovery {
64
67
  const enrichedFiles = yield Promise.all(files.map((filePath) => __awaiter(this, void 0, void 0, function* () {
65
68
  const stats = yield fs_1.default.promises.stat(filePath);
66
69
  const hash = yield this.getFileHash(filePath);
70
+ const cachedHash = this.fileCache.get(filePath);
67
71
  return {
68
72
  path: filePath,
69
73
  hash,
70
- lastModified: stats.mtime
74
+ lastModified: stats.mtime,
75
+ changed: cachedHash !== hash
71
76
  };
72
77
  })));
73
78
  yield this.saveCache(enrichedFiles);
@@ -84,16 +89,38 @@ class FileDiscovery {
84
89
  const cachedHash = this.fileCache.get(filePath);
85
90
  return cachedHash !== currentHash;
86
91
  }
92
+ getCachedSchema(filePath) {
93
+ return this.schemaCache.get(filePath);
94
+ }
95
+ saveSchemasToCache(schemas) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const cacheDir = path_1.default.dirname(this.schemaCacheFile);
98
+ if (!fs_1.default.existsSync(cacheDir)) {
99
+ yield fs_1.default.promises.mkdir(cacheDir, { recursive: true });
100
+ }
101
+ const data = {};
102
+ for (const [key, value] of schemas) {
103
+ data[key] = value;
104
+ this.schemaCache.set(key, value);
105
+ }
106
+ yield fs_1.default.promises.writeFile(this.schemaCacheFile, JSON.stringify(data));
107
+ });
108
+ }
87
109
  loadCache() {
88
110
  try {
89
111
  if (fs_1.default.existsSync(this.cacheFile)) {
90
112
  const cacheData = JSON.parse(fs_1.default.readFileSync(this.cacheFile, 'utf-8'));
91
113
  this.fileCache = new Map(Object.entries(cacheData));
92
114
  }
115
+ if (fs_1.default.existsSync(this.schemaCacheFile)) {
116
+ const schemaData = JSON.parse(fs_1.default.readFileSync(this.schemaCacheFile, 'utf-8'));
117
+ this.schemaCache = new Map(Object.entries(schemaData));
118
+ }
93
119
  }
94
120
  catch (error) {
95
121
  console.warn('Failed to load cache, starting fresh');
96
122
  this.fileCache.clear();
123
+ this.schemaCache.clear();
97
124
  }
98
125
  }
99
126
  saveCache(files) {
@@ -114,9 +141,13 @@ class FileDiscovery {
114
141
  }
115
142
  clearCache() {
116
143
  this.fileCache.clear();
144
+ this.schemaCache.clear();
117
145
  if (fs_1.default.existsSync(this.cacheFile)) {
118
146
  fs_1.default.unlinkSync(this.cacheFile);
119
147
  }
148
+ if (fs_1.default.existsSync(this.schemaCacheFile)) {
149
+ fs_1.default.unlinkSync(this.schemaCacheFile);
150
+ }
120
151
  }
121
152
  }
122
153
  exports.FileDiscovery = FileDiscovery;
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiscovery.js","sourceRoot":"","sources":["../../src/services/FileDiscovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileDiscovery.js","sourceRoot":"","sources":["../../src/services/FileDiscovery.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
48
48
  exports.SchemaProcessor = void 0;
49
49
  const tsj = __importStar(require("ts-json-schema-generator"));
50
50
  const assert_1 = __importDefault(require("assert"));
51
+ const path_1 = __importDefault(require("path"));
52
+ const ts_morph_1 = require("ts-morph");
51
53
  const errors_1 = require("../errors");
52
54
  class SchemaProcessor {
53
55
  constructor(options) {
@@ -55,18 +57,92 @@ class SchemaProcessor {
55
57
  }
56
58
  processFiles(files) {
57
59
  return __awaiter(this, void 0, void 0, function* () {
58
- const { parallel = true, verbose = false } = this.options;
60
+ const { parallel = true, verbose = false, glob, rootPath } = this.options;
59
61
  if (verbose) {
60
62
  console.log(`Processing ${files.length} files...`);
61
63
  }
62
64
  // Sort files by path to ensure consistent processing order
63
65
  const sortedFiles = [...files].sort((a, b) => a.path.localeCompare(b.path));
66
+ // Use single-pass processing when possible (avoids creating N TypeScript programs)
67
+ if (glob && rootPath && sortedFiles.length > 1) {
68
+ try {
69
+ return yield this.processSinglePass(sortedFiles, rootPath, glob);
70
+ }
71
+ catch (error) {
72
+ if (verbose) {
73
+ console.log(`Single-pass processing failed, falling back to per-file processing: ${error instanceof Error ? error.message : String(error)}`);
74
+ }
75
+ }
76
+ }
64
77
  const results = parallel
65
78
  ? yield this.processInParallel(sortedFiles)
66
79
  : yield this.processSequentially(sortedFiles);
67
80
  return this.consolidateSchemas(results);
68
81
  });
69
82
  }
83
+ processSinglePass(files, rootPath, glob) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ const { additionalProperties, tsconfigPath, verbose } = this.options;
86
+ // Pre-check: scan all TS files in rootPath for duplicate exported type names.
87
+ // If duplicates exist, per-file processing is needed to detect schema conflicts.
88
+ if (this.hasDuplicateTypeNames(rootPath)) {
89
+ throw new Error("Duplicate type names detected across source files");
90
+ }
91
+ const resolvedRoot = path_1.default.resolve(rootPath);
92
+ const globPattern = path_1.default.join(resolvedRoot, "**", glob);
93
+ if (verbose) {
94
+ console.log(`Single-pass processing with pattern: ${globPattern}`);
95
+ }
96
+ const config = Object.assign({ path: globPattern, type: "*", additionalProperties, encodeRefs: false, sortProps: true }, (tsconfigPath ? { tsconfig: tsconfigPath } : {}));
97
+ const schemaGenerator = tsj.createGenerator(config);
98
+ const fullSchema = schemaGenerator.createSchema(config.type);
99
+ return this.partitionSchemaByFile(files, fullSchema);
100
+ });
101
+ }
102
+ hasDuplicateTypeNames(rootPath) {
103
+ const project = new ts_morph_1.Project({ skipAddingFilesFromTsConfig: true });
104
+ const allTsFiles = project.addSourceFilesAtPaths(path_1.default.join(path_1.default.resolve(rootPath), "**/*.{ts,tsx}"));
105
+ const seen = new Set();
106
+ for (const sf of allTsFiles) {
107
+ const names = [];
108
+ for (const t of sf.getTypeAliases()) {
109
+ if (t.isExported())
110
+ names.push(t.getName());
111
+ }
112
+ for (const i of sf.getInterfaces()) {
113
+ if (i.isExported())
114
+ names.push(i.getName());
115
+ }
116
+ for (const e of sf.getEnums()) {
117
+ if (e.isExported())
118
+ names.push(e.getName());
119
+ }
120
+ for (const name of names) {
121
+ if (seen.has(name))
122
+ return true;
123
+ seen.add(name);
124
+ }
125
+ }
126
+ return false;
127
+ }
128
+ partitionSchemaByFile(files, fullSchema) {
129
+ var _a;
130
+ const defs = (_a = fullSchema.definitions) !== null && _a !== void 0 ? _a : {};
131
+ const schemaVersion = fullSchema.$schema || "http://json-schema.org/draft-07/schema#";
132
+ const schemaMap = new Map();
133
+ if (Object.keys(defs).length === 0)
134
+ return schemaMap;
135
+ // Since we've verified no duplicate type names exist, assign all definitions
136
+ // to each file. Downstream code (extractTypeInfo) uses ts-morph to correctly
137
+ // attribute each definition to its actual source file.
138
+ for (const file of files) {
139
+ schemaMap.set(file.path, {
140
+ $schema: schemaVersion,
141
+ definitions: Object.assign({}, defs),
142
+ });
143
+ }
144
+ return schemaMap;
145
+ }
70
146
  processInParallel(files) {
71
147
  return __awaiter(this, void 0, void 0, function* () {
72
148
  const promises = files.map(file => this.processFile(file));
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProcessor.js","sourceRoot":"","sources":["../../src/services/SchemaProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaProcessor.js","sourceRoot":"","sources":["../../src/services/SchemaProcessor.ts"],"names":[],"mappings":"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"}