ts-runtime-validation 1.3.0 → 1.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.
package/README.md CHANGED
@@ -11,6 +11,7 @@ This is a code generator that is designed to run as a yarn / npm script. By defa
11
11
  1. `./src/ts-runtime-validation/validation.schema.json` - containing the [jsonschema](http://json-schema.org/) types
12
12
  1. `./src/SchemaDefinition.ts` - containing the typescript.
13
13
  1. `./src/isValidSchema.ts` - containing a type guard type inferring helper method (intended for consumption in your code base - examples below)
14
+ 1. `./src/ValidationType.ts` - containing an exported namespace containing every single exported validation type
14
15
 
15
16
  ## Footnote
16
17
 
@@ -53,7 +54,7 @@ The intended use for ts-runtime-validation is as a npm script. Here it can also
53
54
  "generate-types": "ts-runtime-validation"
54
55
  },
55
56
  "devDependencies": {
56
- "ts-runtime-validation": "^1.2.0"
57
+ "ts-runtime-validation": "^1.4.1"
57
58
  }
58
59
  }
59
60
  ```
@@ -57,12 +57,14 @@ const defaultCreateFileOptions = {
57
57
  };
58
58
  const validationSchemaFileName = "validation.schema.json";
59
59
  const schemaDefinitionFileName = "SchemaDefinition.ts";
60
+ const validationInterfacesFile = "ValidationType.ts";
60
61
  class SchemaGenerator {
61
62
  constructor(options) {
62
63
  this.options = options;
63
64
  this.outputPath = path_1.default.join(this.options.rootPath, this.options.output);
64
65
  this.jsonSchemaOutputFile = path_1.default.join(this.options.rootPath, this.options.output, validationSchemaFileName);
65
66
  this.tsSchemaDefinitionOutputFile = path_1.default.join(this.options.rootPath, this.options.output, schemaDefinitionFileName);
67
+ this.validationTypesOutputFile = path_1.default.join(this.options.rootPath, this.options.output, validationInterfacesFile);
66
68
  this.isValidSchemaOutputFile = path_1.default.join(this.options.rootPath, this.options.output, "isValidSchema.ts");
67
69
  this.Generate = () => __awaiter(this, void 0, void 0, function* () {
68
70
  const { helpers, glob } = this.options;
@@ -84,6 +86,8 @@ class SchemaGenerator {
84
86
  }
85
87
  yield this.writeSchemaMapToValidationTypes(fileSchemas);
86
88
  this.writeValidatorFunction();
89
+ console.log("Writing validation types file");
90
+ this.writeValidationTypes(fileSchemas);
87
91
  });
88
92
  this.getMatchingFiles = () => __awaiter(this, void 0, void 0, function* () {
89
93
  const { glob, rootPath } = this.options;
@@ -242,6 +246,54 @@ class SchemaGenerator {
242
246
  });
243
247
  yield project.save();
244
248
  });
249
+ this.writeValidationTypes = (schemaMap) => __awaiter(this, void 0, void 0, function* () {
250
+ const project = new ts_morph_1.Project(defaultTsMorphProjectSettings);
251
+ const readerProject = new ts_morph_1.Project(defaultTsMorphProjectSettings);
252
+ const symbols = [];
253
+ const importMap = new Map();
254
+ schemaMap.forEach((schema, filePath) => {
255
+ var _a;
256
+ const dir = path_1.default.dirname(filePath);
257
+ const fileWithoutExtension = path_1.default.parse(filePath).name;
258
+ const relativeFilePath = path_1.default.relative(this.outputPath, dir);
259
+ const importPath = `${relativeFilePath}/${fileWithoutExtension}`;
260
+ const defs = (_a = schema.definitions) !== null && _a !== void 0 ? _a : {};
261
+ const readerSourceFile = readerProject.addSourceFileAtPath(filePath);
262
+ Object.keys(defs).forEach((symbol) => {
263
+ var _a;
264
+ const typeAlias = readerSourceFile.getTypeAlias(symbol);
265
+ const typeInterface = readerSourceFile.getInterface(symbol);
266
+ const hasTypeOrInterface = (typeAlias !== null && typeAlias !== void 0 ? typeAlias : typeInterface) !== undefined;
267
+ if (hasTypeOrInterface) {
268
+ const namedImports = (_a = importMap.get(importPath)) !== null && _a !== void 0 ? _a : [];
269
+ namedImports.push(symbol);
270
+ importMap.set(importPath, namedImports);
271
+ symbols.push(symbol);
272
+ }
273
+ });
274
+ });
275
+ const sourceFile = project.createSourceFile(this.validationTypesOutputFile, {}, defaultCreateFileOptions);
276
+ importMap.forEach((namedImports, importPath) => {
277
+ const declaration = sourceFile.addImportDeclaration({ moduleSpecifier: importPath });
278
+ namedImports.forEach((namedImport) => {
279
+ const name = namedImport.valueOf();
280
+ const alias = `_${name}`;
281
+ declaration.addNamedImport({ name, alias });
282
+ });
283
+ });
284
+ const namespace = sourceFile.addModule({
285
+ name: "ValidationType",
286
+ isExported: true,
287
+ });
288
+ importMap.forEach((namedImports) => {
289
+ namedImports.forEach((namedImport) => {
290
+ const name = namedImport.valueOf();
291
+ const alias = `_${name}`;
292
+ namespace.addTypeAlias({ name, type: alias, isExported: true });
293
+ });
294
+ });
295
+ yield project.save();
296
+ });
245
297
  }
246
298
  }
247
299
  exports.SchemaGenerator = SchemaGenerator;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-runtime-validation",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "author": "Matthew Duong <thegalah@gmail.com>",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -34,11 +34,13 @@ const defaultCreateFileOptions: SourceFileCreateOptions = {
34
34
 
35
35
  const validationSchemaFileName = "validation.schema.json";
36
36
  const schemaDefinitionFileName = "SchemaDefinition.ts";
37
+ const validationInterfacesFile = "ValidationType.ts";
37
38
 
38
39
  export class SchemaGenerator {
39
40
  private outputPath = path.join(this.options.rootPath, this.options.output);
40
41
  private jsonSchemaOutputFile = path.join(this.options.rootPath, this.options.output, validationSchemaFileName);
41
42
  private tsSchemaDefinitionOutputFile = path.join(this.options.rootPath, this.options.output, schemaDefinitionFileName);
43
+ private validationTypesOutputFile = path.join(this.options.rootPath, this.options.output, validationInterfacesFile);
42
44
  private isValidSchemaOutputFile = path.join(this.options.rootPath, this.options.output, "isValidSchema.ts");
43
45
 
44
46
  public constructor(private options: ICommandOptions) {}
@@ -65,6 +67,8 @@ export class SchemaGenerator {
65
67
  }
66
68
  await this.writeSchemaMapToValidationTypes(fileSchemas);
67
69
  this.writeValidatorFunction();
70
+ console.log("Writing validation types file");
71
+ this.writeValidationTypes(fileSchemas);
68
72
  };
69
73
 
70
74
  private getMatchingFiles = async () => {
@@ -251,4 +255,59 @@ export class SchemaGenerator {
251
255
  });
252
256
  await project.save();
253
257
  };
258
+
259
+ private writeValidationTypes = async (schemaMap: Map<string, Schema>) => {
260
+ const project = new Project(defaultTsMorphProjectSettings);
261
+ const readerProject = new Project(defaultTsMorphProjectSettings);
262
+
263
+ const symbols: Array<string> = [];
264
+
265
+ const importMap = new Map<string, Array<string>>();
266
+ schemaMap.forEach((schema, filePath) => {
267
+ const dir = path.dirname(filePath);
268
+ const fileWithoutExtension = path.parse(filePath).name;
269
+ const relativeFilePath = path.relative(this.outputPath, dir);
270
+ const importPath = `${relativeFilePath}/${fileWithoutExtension}`;
271
+ const defs = schema.definitions ?? {};
272
+
273
+ const readerSourceFile = readerProject.addSourceFileAtPath(filePath);
274
+
275
+ Object.keys(defs).forEach((symbol) => {
276
+ const typeAlias = readerSourceFile.getTypeAlias(symbol);
277
+ const typeInterface = readerSourceFile.getInterface(symbol);
278
+ const hasTypeOrInterface = (typeAlias ?? typeInterface) !== undefined;
279
+ if (hasTypeOrInterface) {
280
+ const namedImports = importMap.get(importPath) ?? [];
281
+ namedImports.push(symbol);
282
+ importMap.set(importPath, namedImports);
283
+ symbols.push(symbol);
284
+ }
285
+ });
286
+ });
287
+
288
+ const sourceFile = project.createSourceFile(this.validationTypesOutputFile, {}, defaultCreateFileOptions);
289
+
290
+ importMap.forEach((namedImports, importPath) => {
291
+ const declaration = sourceFile.addImportDeclaration({ moduleSpecifier: importPath });
292
+ namedImports.forEach((namedImport) => {
293
+ const name = namedImport.valueOf();
294
+ const alias = `_${name}`;
295
+ declaration.addNamedImport({ name, alias });
296
+ });
297
+ });
298
+ const namespace = sourceFile.addModule({
299
+ name: "ValidationType",
300
+ isExported: true,
301
+ });
302
+
303
+ importMap.forEach((namedImports) => {
304
+ namedImports.forEach((namedImport) => {
305
+ const name = namedImport.valueOf();
306
+ const alias = `_${name}`;
307
+ namespace.addTypeAlias({ name, type: alias, isExported: true });
308
+ });
309
+ });
310
+
311
+ await project.save();
312
+ };
254
313
  }
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.schemas = void 0;
4
- exports.schemas = {
5
- ["#/definitions/IBasicTypes"]: "IBasicTypes",
6
- };
7
- //# sourceMappingURL=SchemaDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDefinition.js","sourceRoot":"","sources":["../../../../src/test/output/basic-scenario/SchemaDefinition.ts"],"names":[],"mappings":";;;AAEa,QAAA,OAAO,GAAkC;IAClD,CAAC,2BAA2B,CAAC,EAAG,aAAa;CAC5C,CACJ"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.isValidSchema = exports.validator = void 0;
30
- const schema = __importStar(require("./validation.schema.json"));
31
- const ajv_1 = __importDefault(require("ajv"));
32
- exports.validator = new ajv_1.default({ allErrors: true });
33
- exports.validator.compile(schema);
34
- const isValidSchema = (data, schemaKeyRef) => {
35
- exports.validator.validate(schemaKeyRef, data);
36
- return Boolean(exports.validator.errors) === false;
37
- };
38
- exports.isValidSchema = isValidSchema;
39
- //# sourceMappingURL=isValidSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isValidSchema.js","sourceRoot":"","sources":["../../../../src/test/output/basic-scenario/isValidSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,8CAAsB;AAGT,QAAA,SAAS,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,iBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5B;AAEM,MAAM,aAAa,GAAG,CAAiC,IAAa,EAAE,YAAe,EAAsB,EAAE;IAChH,iBAAS,CAAC,QAAQ,CAAC,YAAsB,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,iBAAS,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;AAC3C,CAAC,CACJ;AAJY,QAAA,aAAa,iBAIzB"}
@@ -1,21 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "definitions": {
4
- "IBasicTypes": {
5
- "type": "object",
6
- "properties": {
7
- "propertyA": {
8
- "type": "string"
9
- },
10
- "propertyB": {
11
- "type": "string"
12
- }
13
- },
14
- "required": [
15
- "propertyA",
16
- "propertyB"
17
- ],
18
- "additionalProperties": false
19
- }
20
- }
21
- }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.schemas = void 0;
4
- exports.schemas = {
5
- ["#/definitions/IBasicTypesA"]: "IBasicTypesA",
6
- ["#/definitions/IBasicTypesB"]: "IBasicTypesB",
7
- };
8
- //# sourceMappingURL=SchemaDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDefinition.js","sourceRoot":"","sources":["../../../../src/test/output/duplicate-symbols-identitcal-implementation/SchemaDefinition.ts"],"names":[],"mappings":";;;AAGa,QAAA,OAAO,GAAkC;IAClD,CAAC,4BAA4B,CAAC,EAAG,cAAc;IAC/C,CAAC,4BAA4B,CAAC,EAAG,cAAc;CAC9C,CACJ"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.isValidSchema = exports.validator = void 0;
30
- const schema = __importStar(require("./validation.schema.json"));
31
- const ajv_1 = __importDefault(require("ajv"));
32
- exports.validator = new ajv_1.default({ allErrors: true });
33
- exports.validator.compile(schema);
34
- const isValidSchema = (data, schemaKeyRef) => {
35
- exports.validator.validate(schemaKeyRef, data);
36
- return Boolean(exports.validator.errors) === false;
37
- };
38
- exports.isValidSchema = isValidSchema;
39
- //# sourceMappingURL=isValidSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isValidSchema.js","sourceRoot":"","sources":["../../../../src/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,8CAAsB;AAGT,QAAA,SAAS,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,iBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5B;AAEM,MAAM,aAAa,GAAG,CAAiC,IAAa,EAAE,YAAe,EAAsB,EAAE;IAChH,iBAAS,CAAC,QAAQ,CAAC,YAAsB,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,iBAAS,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;AAC3C,CAAC,CACJ;AAJY,QAAA,aAAa,iBAIzB"}
@@ -1,49 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "definitions": {
4
- "IBasicTypesA": {
5
- "type": "object",
6
- "properties": {
7
- "propertyA": {
8
- "$ref": "#/definitions/IBaseType"
9
- },
10
- "propertyB": {
11
- "$ref": "#/definitions/IBaseType"
12
- }
13
- },
14
- "required": [
15
- "propertyA",
16
- "propertyB"
17
- ],
18
- "additionalProperties": false
19
- },
20
- "IBaseType": {
21
- "type": "object",
22
- "properties": {
23
- "someProperty": {
24
- "type": "string"
25
- }
26
- },
27
- "required": [
28
- "someProperty"
29
- ],
30
- "additionalProperties": false
31
- },
32
- "IBasicTypesB": {
33
- "type": "object",
34
- "properties": {
35
- "propertyA": {
36
- "$ref": "#/definitions/IBaseType"
37
- },
38
- "propertyB": {
39
- "$ref": "#/definitions/IBaseType"
40
- }
41
- },
42
- "required": [
43
- "propertyA",
44
- "propertyB"
45
- ],
46
- "additionalProperties": false
47
- }
48
- }
49
- }