ts-openapi-codegen 1.0.0-beta.2 → 1.0.0-beta.4
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/dist/cli/generate/runGenerateOpenApi.d.ts.map +1 -1
- package/dist/cli/generate/runGenerateOpenApi.js +48 -32
- package/dist/cli/index.js +5 -1
- package/dist/cli/utils.d.ts +0 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +0 -56
- package/dist/common/Enums.d.ts +10 -0
- package/dist/common/Enums.d.ts.map +1 -0
- package/dist/common/Enums.js +14 -0
- package/dist/common/Logger.d.ts +33 -0
- package/dist/common/Logger.d.ts.map +1 -0
- package/dist/common/Logger.js +117 -0
- package/dist/common/Options.d.ts +4 -4
- package/dist/common/Options.d.ts.map +1 -1
- package/dist/common/Utils.d.ts +2 -1
- package/dist/common/Utils.d.ts.map +1 -1
- package/dist/common/Utils.js +54 -0
- package/dist/common/VersionedSchema/MultiOptionsMigrationPlan.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsMigrationPlan.js +1 -3
- package/dist/common/VersionedSchema/Types.d.ts +1 -1
- package/dist/common/VersionedSchema/Types.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts +9 -0
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +44 -0
- package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.d.ts +2 -0
- package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.js +27 -0
- package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.d.ts +6 -0
- package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.js +7 -0
- package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.d.ts +8 -0
- package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.js +17 -0
- package/dist/common/VersionedSchema/Utils/getUniqueObjectKeys.js +2 -2
- package/dist/common/VersionedSchema/Utils/joiHandlers.d.ts +3 -3
- package/dist/common/VersionedSchema/Utils/joiHandlers.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/joiHandlers.js +24 -17
- package/dist/common/VersionedSchema/Utils/{migrateToLatestVersion.d.ts → migrateDataToLatestSchemaVersion.d.ts} +5 -5
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +43 -0
- package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts +2 -0
- package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +18 -0
- package/dist/common/VersionedSchema/Utils/traverseObjectStructure.d.ts +3 -0
- package/dist/common/VersionedSchema/Utils/traverseObjectStructure.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/{traverseGeneric.js → traverseObjectStructure.js} +6 -4
- package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts +8 -0
- package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.js +44 -0
- package/dist/common/__tests__/__mock__/mockJoiSchema.d.ts +19 -0
- package/dist/common/__tests__/__mock__/mockJoiSchema.d.ts.map +1 -0
- package/dist/common/__tests__/__mock__/mockJoiSchema.js +14 -0
- package/dist/common/__tests__/convertArrayToObject.test.d.ts +2 -0
- package/dist/common/__tests__/convertArrayToObject.test.d.ts.map +1 -0
- package/dist/common/__tests__/convertArrayToObject.test.js +227 -0
- package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.d.ts +2 -0
- package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.d.ts.map +1 -0
- package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.js +38 -0
- package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.d.ts +2 -0
- package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.d.ts.map +1 -0
- package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.js +22 -0
- package/dist/common/__tests__/getUniqueKeysFromSchemas.test.d.ts +2 -0
- package/dist/common/__tests__/getUniqueKeysFromSchemas.test.d.ts.map +1 -0
- package/dist/common/__tests__/getUniqueKeysFromSchemas.test.js +20 -0
- package/dist/common/__tests__/getUniqueObjectKeys.test.d.ts +2 -0
- package/dist/common/__tests__/getUniqueObjectKeys.test.d.ts.map +1 -0
- package/dist/common/__tests__/getUniqueObjectKeys.test.js +24 -0
- package/dist/common/__tests__/migrationForMultiOptions.test.js +84 -63
- package/dist/common/__tests__/migrationForOptions.test.js +27 -46
- package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.d.ts +2 -0
- package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.d.ts.map +1 -0
- package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.js +25 -0
- package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.d.ts +2 -0
- package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.d.ts.map +1 -0
- package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.js +25 -0
- package/dist/common/defaultOptions.d.ts.map +1 -1
- package/dist/common/defaultOptions.js +22 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +41 -19
- package/dist/core/utils/precompileTemplates.js +9 -2
- package/dist/core/utils/prepareOptions.d.ts +2 -2
- package/dist/core/utils/prepareOptions.d.ts.map +1 -1
- package/dist/core/utils/writeClient.d.ts +4 -0
- package/dist/core/utils/writeClient.d.ts.map +1 -1
- package/dist/core/utils/writeClient.js +13 -0
- package/package.json +5 -2
- package/dist/common/VersionedSchema/Utils/getUniqueAllShemasKeys.d.ts +0 -8
- package/dist/common/VersionedSchema/Utils/getUniqueAllShemasKeys.d.ts.map +0 -1
- package/dist/common/VersionedSchema/Utils/getUniqueAllShemasKeys.js +0 -15
- package/dist/common/VersionedSchema/Utils/guessVersion.d.ts +0 -3
- package/dist/common/VersionedSchema/Utils/guessVersion.d.ts.map +0 -1
- package/dist/common/VersionedSchema/Utils/guessVersion.js +0 -16
- package/dist/common/VersionedSchema/Utils/migrateToLatestVersion.d.ts.map +0 -1
- package/dist/common/VersionedSchema/Utils/migrateToLatestVersion.js +0 -33
- package/dist/common/VersionedSchema/Utils/traverseGeneric.d.ts +0 -3
- package/dist/common/VersionedSchema/Utils/traverseGeneric.d.ts.map +0 -1
- package/dist/common/VersionedSchema/Utils/validateUnknownKeys.d.ts +0 -2
- package/dist/common/VersionedSchema/Utils/validateUnknownKeys.d.ts.map +0 -1
- package/dist/common/VersionedSchema/Utils/validateUnknownKeys.js +0 -32
- package/dist/common/__tests__/guessVersion.test.d.ts +0 -2
- package/dist/common/__tests__/guessVersion.test.d.ts.map +0 -1
- package/dist/common/__tests__/guessVersion.test.js +0 -26
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const fs_1 = __importDefault(require("fs"));
|
|
7
7
|
const handlebars_1 = __importDefault(require("handlebars"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const Enums_1 = require("../../common/Enums");
|
|
10
|
+
const Logger_1 = require("../../common/Logger");
|
|
9
11
|
const templatesDir = path_1.default.resolve(__dirname, '../../templates');
|
|
10
12
|
const compiledDir = path_1.default.resolve(__dirname, '../../templatesCompiled');
|
|
11
13
|
const header = `// This is an automatically generated file for the hbs template.
|
|
@@ -19,6 +21,11 @@ export default `;
|
|
|
19
21
|
* Фунукция для пре-компеляции шаблонов (hbs) перед дальнейшим использованием
|
|
20
22
|
*/
|
|
21
23
|
const precompileTemplates = () => {
|
|
24
|
+
const logger = new Logger_1.Logger({
|
|
25
|
+
instanceId: 'templates',
|
|
26
|
+
level: Enums_1.ELogLevel.INFO,
|
|
27
|
+
logOutput: Enums_1.ELogOutput.CONSOLE,
|
|
28
|
+
});
|
|
22
29
|
try {
|
|
23
30
|
if (!fs_1.default.existsSync(compiledDir)) {
|
|
24
31
|
fs_1.default.mkdirSync(compiledDir, { recursive: true });
|
|
@@ -64,10 +71,10 @@ const precompileTemplates = () => {
|
|
|
64
71
|
});
|
|
65
72
|
};
|
|
66
73
|
walk(templatesDir);
|
|
67
|
-
|
|
74
|
+
logger.info('The templates have been successfully precompiled and saved!');
|
|
68
75
|
}
|
|
69
76
|
catch (error) {
|
|
70
|
-
|
|
77
|
+
logger.error(`Error during pre-compilation of templates: ${error.message}`);
|
|
71
78
|
}
|
|
72
79
|
};
|
|
73
80
|
precompileTemplates();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TOptions } from "../../common/Options";
|
|
2
2
|
/**
|
|
3
3
|
* Preparation the configuration
|
|
4
4
|
* @param options
|
|
5
5
|
* @returns
|
|
6
6
|
*/
|
|
7
|
-
export declare function prepareOptions(options:
|
|
7
|
+
export declare function prepareOptions(options: TOptions): TOptions;
|
|
8
8
|
//# sourceMappingURL=prepareOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareOptions.d.ts","sourceRoot":"","sources":["../../../src/core/utils/prepareOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prepareOptions.d.ts","sourceRoot":"","sources":["../../../src/core/utils/prepareOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAsB1D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Logger } from '../../common/Logger';
|
|
1
2
|
import { HttpClient } from '../types/Enums';
|
|
2
3
|
import { IOutput } from '../types/Models';
|
|
3
4
|
import type { Client } from '../types/shared/Client.model';
|
|
@@ -57,6 +58,8 @@ export interface IWriteClientIndex {
|
|
|
57
58
|
*/
|
|
58
59
|
export declare class WriteClient {
|
|
59
60
|
private options;
|
|
61
|
+
private _logger;
|
|
62
|
+
constructor();
|
|
60
63
|
/**
|
|
61
64
|
* Write our OpenAPI client, using the given templates at the given output
|
|
62
65
|
* @param client Client object with all the models, services, etc.
|
|
@@ -80,6 +83,7 @@ export declare class WriteClient {
|
|
|
80
83
|
*/
|
|
81
84
|
writeClientIndex(options: IWriteClientIndex): Promise<void>;
|
|
82
85
|
combineAndWrite(): Promise<void>;
|
|
86
|
+
get logger(): Logger;
|
|
83
87
|
}
|
|
84
88
|
export {};
|
|
85
89
|
//# sourceMappingURL=writeClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeClient.d.ts","sourceRoot":"","sources":["../../../src/core/utils/writeClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writeClient.d.ts","sourceRoot":"","sources":["../../../src/core/utils/writeClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAoCzD;;;;;;;;;;;;;;GAcG;AACH,UAAU,YAAY;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,OAAO,CAAS;;IAUxB;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DvD;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,eAAe;IAuFrB,IAAW,MAAM,WAEhB;CACJ"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WriteClient = void 0;
|
|
4
|
+
const Enums_1 = require("../../common/Enums");
|
|
5
|
+
const Logger_1 = require("../../common/Logger");
|
|
4
6
|
const pathHelpers_1 = require("../utils/pathHelpers");
|
|
5
7
|
const fileSystem_1 = require("./fileSystem");
|
|
6
8
|
const unique_1 = require("./unique");
|
|
@@ -40,6 +42,14 @@ function prepareAlias(models) {
|
|
|
40
42
|
*/
|
|
41
43
|
class WriteClient {
|
|
42
44
|
options = new Map();
|
|
45
|
+
_logger;
|
|
46
|
+
constructor() {
|
|
47
|
+
this._logger = new Logger_1.Logger({
|
|
48
|
+
level: Enums_1.ELogLevel.ERROR,
|
|
49
|
+
instanceId: 'client',
|
|
50
|
+
logOutput: Enums_1.ELogOutput.CONSOLE,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
43
53
|
/**
|
|
44
54
|
* Write our OpenAPI client, using the given templates at the given output
|
|
45
55
|
* @param client Client object with all the models, services, etc.
|
|
@@ -210,5 +220,8 @@ class WriteClient {
|
|
|
210
220
|
await (0, writeClientIndex_1.writeClientIndex)(value);
|
|
211
221
|
}
|
|
212
222
|
}
|
|
223
|
+
get logger() {
|
|
224
|
+
return this._logger;
|
|
225
|
+
}
|
|
213
226
|
}
|
|
214
227
|
exports.WriteClient = WriteClient;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-openapi-codegen",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.4",
|
|
4
4
|
"description": "Library that generates Typescript clients based on the OpenAPI specification. It bases on openapi-typescript-codegen",
|
|
5
5
|
"author": "Alexey Zverev",
|
|
6
6
|
"homepage": "https://github.com/ozonophore/openapi-codegen.git",
|
|
@@ -68,7 +68,9 @@
|
|
|
68
68
|
"json-schema-ref-parser": "9.0.7",
|
|
69
69
|
"leven": "^4.0.0",
|
|
70
70
|
"mkdirp": "1.0.4",
|
|
71
|
-
"rimraf": "3.0.2"
|
|
71
|
+
"rimraf": "3.0.2",
|
|
72
|
+
"winston": "^3.17.0",
|
|
73
|
+
"winston-daily-rotate-file": "^5.0.0"
|
|
72
74
|
},
|
|
73
75
|
"devDependencies": {
|
|
74
76
|
"@babel/cli": "7.14.8",
|
|
@@ -86,6 +88,7 @@
|
|
|
86
88
|
"@types/node-fetch": "2.5.12",
|
|
87
89
|
"@types/prettier": "3.0.0",
|
|
88
90
|
"@types/qs": "6.9.7",
|
|
91
|
+
"@types/winston": "^2.4.4",
|
|
89
92
|
"@typescript-eslint/eslint-plugin": "^8.34.1",
|
|
90
93
|
"@typescript-eslint/parser": "^8.34.1",
|
|
91
94
|
"abort-controller": "^3.0.0",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { VersionedSchema } from "../Types";
|
|
2
|
-
/**
|
|
3
|
-
* Get all the unique parameter keys of all Joi schemes in the array
|
|
4
|
-
* @param schemas array of joi schemes
|
|
5
|
-
* @returns All the unique parameter keys of all Joi schemes in the array
|
|
6
|
-
*/
|
|
7
|
-
export declare function getUniqueAllShemasKeys(schemas: VersionedSchema<Record<string, any>>[]): Set<string>;
|
|
8
|
-
//# sourceMappingURL=getUniqueAllShemasKeys.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getUniqueAllShemasKeys.d.ts","sourceRoot":"","sources":["../../../../src/common/VersionedSchema/Utils/getUniqueAllShemasKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,eAMrF"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUniqueAllShemasKeys = getUniqueAllShemasKeys;
|
|
4
|
-
const joiHandlers_1 = require("./joiHandlers");
|
|
5
|
-
const traverseGeneric_1 = require("./traverseGeneric");
|
|
6
|
-
/**
|
|
7
|
-
* Get all the unique parameter keys of all Joi schemes in the array
|
|
8
|
-
* @param schemas array of joi schemes
|
|
9
|
-
* @returns All the unique parameter keys of all Joi schemes in the array
|
|
10
|
-
*/
|
|
11
|
-
function getUniqueAllShemasKeys(schemas) {
|
|
12
|
-
const result = new Set();
|
|
13
|
-
(0, traverseGeneric_1.traverseGeneric)(schemas, [joiHandlers_1.joiSchemaHandler, joiHandlers_1.joiDescHandler], result);
|
|
14
|
-
return result;
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guessVersion.d.ts","sourceRoot":"","sources":["../../../../src/common/VersionedSchema/Utils/guessVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,gBAgB1G"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.guessVersion = guessVersion;
|
|
4
|
-
function guessVersion(rawInput, schemas) {
|
|
5
|
-
const matchesSchemas = schemas
|
|
6
|
-
.map((vs, idx) => {
|
|
7
|
-
const { error } = vs.schema.validate(rawInput, { allowUnknown: true });
|
|
8
|
-
return error ? null : { version: vs.version, index: idx };
|
|
9
|
-
})
|
|
10
|
-
.filter(it => it !== null);
|
|
11
|
-
if (matchesSchemas.length === 0) {
|
|
12
|
-
throw new Error('Data does not conform to any known version schema');
|
|
13
|
-
}
|
|
14
|
-
const latestVersion = matchesSchemas.reduce((a, b) => (a.index > b.index ? a : b));
|
|
15
|
-
return latestVersion;
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrateToLatestVersion.d.ts","sourceRoot":"","sources":["../../../../src/common/VersionedSchema/Utils/migrateToLatestVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhE,KAAK,oBAAoB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACzD,cAAc,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;CACnF,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,oBAAoB,CAAC;CACpC,CAAA;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,IAAI,CA+BzI"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.migrateToLatestVersion = migrateToLatestVersion;
|
|
4
|
-
const getUniqueAllShemasKeys_1 = require("./getUniqueAllShemasKeys");
|
|
5
|
-
const getUniqueObjectKeys_1 = require("./getUniqueObjectKeys");
|
|
6
|
-
const guessVersion_1 = require("./guessVersion");
|
|
7
|
-
const validateUnknownKeys_1 = require("./validateUnknownKeys");
|
|
8
|
-
function migrateToLatestVersion({ rawInput, migrationPlans, versionedSchemas }) {
|
|
9
|
-
let currentData = rawInput;
|
|
10
|
-
const allRawInputKeys = (0, getUniqueObjectKeys_1.getUniqueObjectKeys)(rawInput);
|
|
11
|
-
const allSchemasKeys = (0, getUniqueAllShemasKeys_1.getUniqueAllShemasKeys)(versionedSchemas);
|
|
12
|
-
(0, validateUnknownKeys_1.validateUnknownKeys)(allRawInputKeys, allSchemasKeys);
|
|
13
|
-
const guessed = (0, guessVersion_1.guessVersion)(rawInput, versionedSchemas);
|
|
14
|
-
for (let idx = guessed.index; idx < versionedSchemas.length - 1; idx++) {
|
|
15
|
-
const fromVersion = versionedSchemas[idx].version;
|
|
16
|
-
const migrationPlan = migrationPlans.find(p => p.fromVersion === fromVersion);
|
|
17
|
-
if (!migrationPlan) {
|
|
18
|
-
throw new Error(`No migration plan from ${fromVersion}`);
|
|
19
|
-
}
|
|
20
|
-
const migratedRaw = migrationPlan.migrate(currentData);
|
|
21
|
-
const { error } = versionedSchemas[idx + 1].schema.validate(migratedRaw, { allowUnknown: false });
|
|
22
|
-
if (error) {
|
|
23
|
-
if (error)
|
|
24
|
-
throw new Error(`Error during post-migration validation ${fromVersion}->${migrationPlan.toVersion}: ${error.message}`);
|
|
25
|
-
}
|
|
26
|
-
currentData = { ...migratedRaw };
|
|
27
|
-
}
|
|
28
|
-
const currentSchema = versionedSchemas[versionedSchemas.length - 1];
|
|
29
|
-
const { error, value } = currentSchema.schema.validate(currentData);
|
|
30
|
-
if (error)
|
|
31
|
-
return null;
|
|
32
|
-
return { value, schemaVersion: currentSchema.version, schemaType: currentSchema.type };
|
|
33
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traverseGeneric.d.ts","sourceRoot":"","sources":["../../../../src/common/VersionedSchema/Utils/traverseGeneric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,QA2BpB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateUnknownKeys.d.ts","sourceRoot":"","sources":["../../../../src/common/VersionedSchema/Utils/validateUnknownKeys.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,QAyB/E"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateUnknownKeys = validateUnknownKeys;
|
|
7
|
-
const leven_1 = __importDefault(require("leven"));
|
|
8
|
-
function validateUnknownKeys(rawInputKeys, allowed) {
|
|
9
|
-
const errors = [];
|
|
10
|
-
for (const key of rawInputKeys) {
|
|
11
|
-
if (!allowed.has(key)) {
|
|
12
|
-
let bestMatch = null;
|
|
13
|
-
let bestDistance = Infinity;
|
|
14
|
-
for (const candidate of allowed) {
|
|
15
|
-
const d = (0, leven_1.default)(key, candidate);
|
|
16
|
-
if (d < bestDistance) {
|
|
17
|
-
bestDistance = d;
|
|
18
|
-
bestMatch = candidate;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (bestMatch && bestDistance <= 3) {
|
|
22
|
-
errors.push(`The "${key}" field is not recognized. Perhaps you meant "${bestMatch}".`);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
errors.push(`The "${key}" field is not recognized.`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (errors.length) {
|
|
30
|
-
throw new Error(errors.join('\n'));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guessVersion.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/guessVersion.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const OptionsVersionedSchemas_1 = require("common/VersionedSchema/OptionsVersionedSchemas");
|
|
9
|
-
const core_1 = require("../../core");
|
|
10
|
-
const guessVersion_1 = require("../VersionedSchema/Utils/guessVersion");
|
|
11
|
-
(0, node_test_1.describe)('guessVersion', () => {
|
|
12
|
-
(0, node_test_1.test)('@unit: should correctly identify version for 1.0.0 data', () => {
|
|
13
|
-
const dataV1 = { input: 'source/path', output: 'generated/path', client: core_1.HttpClient.AXIOS };
|
|
14
|
-
const result = (0, guessVersion_1.guessVersion)(dataV1, OptionsVersionedSchemas_1.optionsVersionedSchemas);
|
|
15
|
-
node_assert_1.default.deepEqual(result, { version: '1.0.0', index: 0 }, 'Should detect 1.0.0 schema');
|
|
16
|
-
});
|
|
17
|
-
(0, node_test_1.test)('@unit: should correctly identify version for 2.0.0 data', () => {
|
|
18
|
-
const dataV2 = { input: 'source/path', output: 'generated/path', httpClient: core_1.HttpClient.FETCH };
|
|
19
|
-
const result = (0, guessVersion_1.guessVersion)(dataV2, OptionsVersionedSchemas_1.optionsVersionedSchemas);
|
|
20
|
-
node_assert_1.default.deepEqual(result, { version: '2.0.0', index: 2 }, 'Should detect 2.0.0 schema');
|
|
21
|
-
});
|
|
22
|
-
(0, node_test_1.test)('@unit: should throw error for data matching no schemas', () => {
|
|
23
|
-
const invalidData = { input: 'source/path', output: 'generated/path', unknownField: 'value' };
|
|
24
|
-
node_assert_1.default.throws(() => (0, guessVersion_1.guessVersion)(invalidData, OptionsVersionedSchemas_1.optionsVersionedSchemas), /Data does not conform to any known version schema/, 'Should throw for invalid data');
|
|
25
|
-
});
|
|
26
|
-
});
|