ts-openapi-codegen 1.0.0-beta.3 → 1.0.0-beta.5

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 (128) hide show
  1. package/README.md +35 -1
  2. package/dist/cli/generate/runGenerateOpenApi.js +3 -3
  3. package/dist/cli/index.js +2 -1
  4. package/dist/common/Options.d.ts +1 -0
  5. package/dist/common/Options.d.ts.map +1 -1
  6. package/dist/common/VersionedSchema/Types.d.ts +1 -1
  7. package/dist/common/VersionedSchema/Types.d.ts.map +1 -1
  8. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts +9 -0
  9. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -0
  10. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +44 -0
  11. package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.d.ts +2 -0
  12. package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.d.ts.map +1 -0
  13. package/dist/common/VersionedSchema/Utils/generateKeyMappingForInvalidKeys.js +27 -0
  14. package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.d.ts +6 -0
  15. package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.d.ts.map +1 -0
  16. package/dist/common/VersionedSchema/Utils/getErrorFieldsFromValidation.js +7 -0
  17. package/dist/common/VersionedSchema/Utils/{getUniqueAllShemasKeys.d.ts → getUniqueKeysFromSchemas.d.ts} +3 -3
  18. package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.d.ts.map +1 -0
  19. package/dist/common/VersionedSchema/Utils/{getUniqueAllShemasKeys.js → getUniqueKeysFromSchemas.js} +4 -4
  20. package/dist/common/VersionedSchema/Utils/getUniqueObjectKeys.js +2 -2
  21. package/dist/common/VersionedSchema/Utils/joiHandlers.d.ts +3 -3
  22. package/dist/common/VersionedSchema/Utils/joiHandlers.d.ts.map +1 -1
  23. package/dist/common/VersionedSchema/Utils/joiHandlers.js +24 -17
  24. package/dist/common/VersionedSchema/Utils/{migrateToLatestVersion.d.ts → migrateDataToLatestSchemaVersion.d.ts} +5 -5
  25. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -0
  26. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +43 -0
  27. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts +2 -0
  28. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -0
  29. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +18 -0
  30. package/dist/common/VersionedSchema/Utils/traverseObjectStructure.d.ts +3 -0
  31. package/dist/common/VersionedSchema/Utils/traverseObjectStructure.d.ts.map +1 -0
  32. package/dist/common/VersionedSchema/Utils/{traverseGeneric.js → traverseObjectStructure.js} +6 -4
  33. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts +8 -0
  34. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -0
  35. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.js +44 -0
  36. package/dist/common/__tests__/__mock__/mockJoiSchema.d.ts +19 -0
  37. package/dist/common/__tests__/__mock__/mockJoiSchema.d.ts.map +1 -0
  38. package/dist/common/__tests__/__mock__/mockJoiSchema.js +14 -0
  39. package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.d.ts +2 -0
  40. package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.d.ts.map +1 -0
  41. package/dist/common/__tests__/determineBestMatchingSchemaVersion.test.js +38 -0
  42. package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.d.ts +2 -0
  43. package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.d.ts.map +1 -0
  44. package/dist/common/__tests__/generateKeyMappingForInvalidKeys.test.js +22 -0
  45. package/dist/common/__tests__/getUniqueKeysFromSchemas.test.d.ts +2 -0
  46. package/dist/common/__tests__/getUniqueKeysFromSchemas.test.d.ts.map +1 -0
  47. package/dist/common/__tests__/getUniqueKeysFromSchemas.test.js +20 -0
  48. package/dist/common/__tests__/getUniqueObjectKeys.test.d.ts +2 -0
  49. package/dist/common/__tests__/getUniqueObjectKeys.test.d.ts.map +1 -0
  50. package/dist/common/__tests__/getUniqueObjectKeys.test.js +24 -0
  51. package/dist/common/__tests__/mergeObjectSchemas.test.js +1 -1
  52. package/dist/common/__tests__/migrationForMultiOptions.test.js +85 -70
  53. package/dist/common/__tests__/migrationForOptions.test.js +28 -48
  54. package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.d.ts +2 -0
  55. package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.d.ts.map +1 -0
  56. package/dist/common/__tests__/replaceInvalidKeysWithMappedNames.test.js +25 -0
  57. package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.d.ts +2 -0
  58. package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.d.ts.map +1 -0
  59. package/dist/common/__tests__/validateAndSuggestKeyCorrections.test.js +25 -0
  60. package/dist/core/Context.d.ts +10 -1
  61. package/dist/core/Context.d.ts.map +1 -1
  62. package/dist/core/Context.js +8 -1
  63. package/dist/core/api/v2/parser/__tests__/getType.test.js +3 -3
  64. package/dist/core/api/v2/parser/getOperationParameters.d.ts.map +1 -1
  65. package/dist/core/api/v2/parser/getOperationParameters.js +9 -7
  66. package/dist/core/api/v3/parser/__tests__/getType.test.js +3 -3
  67. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  68. package/dist/core/api/v3/parser/getOperation.js +4 -2
  69. package/dist/core/api/v3/parser/getOperationParameters.d.ts.map +1 -1
  70. package/dist/core/api/v3/parser/getOperationParameters.js +9 -7
  71. package/dist/core/index.d.ts.map +1 -1
  72. package/dist/core/index.js +3 -2
  73. package/dist/core/types/Consts.d.ts +10 -0
  74. package/dist/core/types/Consts.d.ts.map +1 -1
  75. package/dist/core/types/Consts.js +11 -1
  76. package/dist/core/types/Models.d.ts +3 -0
  77. package/dist/core/types/Models.d.ts.map +1 -1
  78. package/dist/core/utils/__mocks__/createOperationParameter.d.ts +3 -0
  79. package/dist/core/utils/__mocks__/createOperationParameter.d.ts.map +1 -0
  80. package/dist/core/utils/__mocks__/createOperationParameter.js +28 -0
  81. package/dist/core/utils/__tests__/sortByRequiredExtended.test.d.ts +2 -0
  82. package/dist/core/utils/__tests__/sortByRequiredExtended.test.d.ts.map +1 -0
  83. package/dist/core/utils/__tests__/sortByRequiredExtended.test.js +145 -0
  84. package/dist/core/utils/__tests__/sortByRequiredSimple.test.d.ts +2 -0
  85. package/dist/core/utils/__tests__/sortByRequiredSimple.test.d.ts.map +1 -0
  86. package/dist/core/utils/__tests__/sortByRequiredSimple.test.js +80 -0
  87. package/dist/core/utils/__tests__/writeClient.test.js +3 -3
  88. package/dist/core/utils/__tests__/writeClientCore.test.js +2 -2
  89. package/dist/core/utils/__tests__/writeClientIndex.test.js +2 -2
  90. package/dist/core/utils/__tests__/writeClientModels.test.js +2 -2
  91. package/dist/core/utils/__tests__/writeClientSchemas.test.js +2 -2
  92. package/dist/core/utils/__tests__/writeClientServices.test.js +2 -2
  93. package/dist/core/utils/getOpenApiSpec.d.ts.map +1 -1
  94. package/dist/core/utils/getOpenApiSpec.js +0 -7
  95. package/dist/core/utils/getPropertyGroupExtended.d.ts +4 -0
  96. package/dist/core/utils/getPropertyGroupExtended.d.ts.map +1 -0
  97. package/dist/core/utils/getPropertyGroupExtended.js +10 -0
  98. package/dist/core/utils/getPropertyGroupSimple.d.ts +3 -0
  99. package/dist/core/utils/getPropertyGroupSimple.d.ts.map +1 -0
  100. package/dist/core/utils/getPropertyGroupSimple.js +9 -0
  101. package/dist/core/utils/precompileTemplates.js +1 -1
  102. package/dist/core/utils/sortByRequiredExtended.d.ts +3 -0
  103. package/dist/core/utils/sortByRequiredExtended.d.ts.map +1 -0
  104. package/dist/core/utils/sortByRequiredExtended.js +15 -0
  105. package/dist/core/utils/sortByRequiredSimple.d.ts +3 -0
  106. package/dist/core/utils/sortByRequiredSimple.d.ts.map +1 -0
  107. package/dist/core/utils/sortByRequiredSimple.js +10 -0
  108. package/package.json +1 -1
  109. package/dist/common/VersionedSchema/Utils/getUniqueAllShemasKeys.d.ts.map +0 -1
  110. package/dist/common/VersionedSchema/Utils/guessVersion.d.ts +0 -3
  111. package/dist/common/VersionedSchema/Utils/guessVersion.d.ts.map +0 -1
  112. package/dist/common/VersionedSchema/Utils/guessVersion.js +0 -16
  113. package/dist/common/VersionedSchema/Utils/migrateToLatestVersion.d.ts.map +0 -1
  114. package/dist/common/VersionedSchema/Utils/migrateToLatestVersion.js +0 -34
  115. package/dist/common/VersionedSchema/Utils/traverseGeneric.d.ts +0 -3
  116. package/dist/common/VersionedSchema/Utils/traverseGeneric.d.ts.map +0 -1
  117. package/dist/common/VersionedSchema/Utils/validateUnknownKeys.d.ts +0 -2
  118. package/dist/common/VersionedSchema/Utils/validateUnknownKeys.d.ts.map +0 -1
  119. package/dist/common/VersionedSchema/Utils/validateUnknownKeys.js +0 -32
  120. package/dist/common/__tests__/guessVersion.test.d.ts +0 -2
  121. package/dist/common/__tests__/guessVersion.test.d.ts.map +0 -1
  122. package/dist/common/__tests__/guessVersion.test.js +0 -26
  123. package/dist/core/utils/__tests__/sortByRequired.test.d.ts +0 -2
  124. package/dist/core/utils/__tests__/sortByRequired.test.d.ts.map +0 -1
  125. package/dist/core/utils/__tests__/sortByRequired.test.js +0 -108
  126. package/dist/core/utils/sortByRequired.d.ts +0 -3
  127. package/dist/core/utils/sortByRequired.d.ts.map +0 -1
  128. package/dist/core/utils/sortByRequired.js +0 -18
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockJoiSchema = void 0;
4
+ const mockJoiSchema = (keys, isValid, errors = [], isArray = false) => ({
5
+ validate: (input, options) => ({
6
+ error: isValid ? null : { details: errors },
7
+ value: input,
8
+ }),
9
+ describe: () => ({
10
+ keys: isArray ? undefined : keys.reduce((acc, key) => ({ ...acc, [key]: {} }), {}),
11
+ items: isArray ? [{}] : undefined,
12
+ }),
13
+ });
14
+ exports.mockJoiSchema = mockJoiSchema;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=determineBestMatchingSchemaVersion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"determineBestMatchingSchemaVersion.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/determineBestMatchingSchemaVersion.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
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 Enums_1 = require("../../common/VersionedSchema/Enums");
9
+ const determineBestMatchingSchemaVersion_1 = require("../VersionedSchema/Utils/determineBestMatchingSchemaVersion");
10
+ const mockJoiSchema_1 = require("./__mock__/mockJoiSchema");
11
+ (0, node_test_1.describe)('determineBestMatchingSchemaVersion', () => {
12
+ (0, node_test_1.test)('@unit: it should return the latest version if there is an exact match.', async () => {
13
+ const schemas = [
14
+ { schema: (0, mockJoiSchema_1.mockJoiSchema)(['name'], true), version: '1.0', type: Enums_1.EVersionedSchemaType.OPTIONS },
15
+ { schema: (0, mockJoiSchema_1.mockJoiSchema)(['name', 'age'], true), version: '2.0', type: Enums_1.EVersionedSchemaType.OPTIONS },
16
+ ];
17
+ const input = { name: 'John', age: 30 };
18
+ const result = (0, determineBestMatchingSchemaVersion_1.determineBestMatchingSchemaVersion)(input, schemas);
19
+ node_assert_1.default.deepEqual(result, {
20
+ lastVersionIndex: 1,
21
+ latestVersion: '2.0',
22
+ firstVersion: '1.0',
23
+ });
24
+ });
25
+ (0, node_test_1.test)('@unit: should return the best scheme in the absence of exact matches.', async () => {
26
+ const schemas = [
27
+ { schema: (0, mockJoiSchema_1.mockJoiSchema)(['name'], false, [{ path: 'age', type: 'string' }]), version: '1.0', type: Enums_1.EVersionedSchemaType.OPTIONS },
28
+ { schema: (0, mockJoiSchema_1.mockJoiSchema)(['name', 'age'], true), version: '2.0', type: Enums_1.EVersionedSchemaType.OPTIONS },
29
+ ];
30
+ const input = { name: 'John', age: 30 };
31
+ const result = (0, determineBestMatchingSchemaVersion_1.determineBestMatchingSchemaVersion)(input, schemas);
32
+ node_assert_1.default.deepEqual(result, {
33
+ lastVersionIndex: 1,
34
+ latestVersion: '2.0',
35
+ firstVersion: '2.0',
36
+ });
37
+ });
38
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generateKeyMappingForInvalidKeys.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateKeyMappingForInvalidKeys.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/generateKeyMappingForInvalidKeys.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
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 generateKeyMappingForInvalidKeys_1 = require("../VersionedSchema/Utils/generateKeyMappingForInvalidKeys");
9
+ (0, node_test_1.describe)('generateKeyMappingForInvalidKeys', () => {
10
+ (0, node_test_1.test)('@unit: must create a replacement card for invalid keys', async () => {
11
+ const inputKeys = ['nmae', 'title'];
12
+ const allowedKeys = new Set(['name', 'title']);
13
+ const result = (0, generateKeyMappingForInvalidKeys_1.generateKeyMappingForInvalidKeys)(inputKeys, allowedKeys);
14
+ node_assert_1.default.deepEqual(result, new Map([['nmae', 'name']]));
15
+ });
16
+ (0, node_test_1.test)('@unit: must return an empty card if all keys are valid.', async () => {
17
+ const inputKeys = ['name', 'title'];
18
+ const allowedKeys = new Set(['name', 'title']);
19
+ const result = (0, generateKeyMappingForInvalidKeys_1.generateKeyMappingForInvalidKeys)(inputKeys, allowedKeys);
20
+ node_assert_1.default.deepEqual(result, new Map());
21
+ });
22
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getUniqueKeysFromSchemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUniqueKeysFromSchemas.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/getUniqueKeysFromSchemas.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
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 getUniqueKeysFromSchemas_1 = require("../VersionedSchema/Utils/getUniqueKeysFromSchemas");
9
+ const mockJoiSchema_1 = require("./__mock__/mockJoiSchema");
10
+ (0, node_test_1.describe)('getUniqueKeysFromSchemas', () => {
11
+ (0, node_test_1.test)('@unit: must return unique keys from the schema', async () => {
12
+ const schema = (0, mockJoiSchema_1.mockJoiSchema)(['name', 'age'], true);
13
+ const result = (0, getUniqueKeysFromSchemas_1.getUniqueKeysFromSchemas)([schema]);
14
+ node_assert_1.default.deepEqual(result, new Set(['name', 'age']));
15
+ });
16
+ (0, node_test_1.test)('@unit: should return an empty set for an empty list of schemas', async () => {
17
+ const result = (0, getUniqueKeysFromSchemas_1.getUniqueKeysFromSchemas)([]);
18
+ node_assert_1.default.deepEqual(result, new Set());
19
+ });
20
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getUniqueObjectKeys.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUniqueObjectKeys.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/getUniqueObjectKeys.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
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 getUniqueObjectKeys_1 = require("../VersionedSchema/Utils/getUniqueObjectKeys");
9
+ (0, node_test_1.describe)('getUniqueObjectKeys', () => {
10
+ (0, node_test_1.test)('@unit: must return unique keys from the object', async () => {
11
+ const input = { name: 'John', age: 30, nested: { id: 1 } };
12
+ const result = (0, getUniqueObjectKeys_1.getUniqueObjectKeys)(input);
13
+ node_assert_1.default.deepEqual(result, ['name', 'age', 'nested', 'id']);
14
+ });
15
+ (0, node_test_1.test)('@unit: must return unique keys from an array of objects', async () => {
16
+ const input = [{ name: 'John' }, { age: 30 }];
17
+ const result = (0, getUniqueObjectKeys_1.getUniqueObjectKeys)(input);
18
+ node_assert_1.default.deepEqual(result, ['name', 'age']);
19
+ });
20
+ (0, node_test_1.test)('@unit: must return an empty array for an empty object', async () => {
21
+ const result = (0, getUniqueObjectKeys_1.getUniqueObjectKeys)({});
22
+ node_assert_1.default.deepEqual(result, []);
23
+ });
24
+ });
@@ -27,7 +27,7 @@ const mergeObjectSchemas_1 = require("../VersionedSchema/Utils/mergeObjectSchema
27
27
  };
28
28
  const invalidData = {
29
29
  input: 'source/path',
30
- httpClient: 'invalid-client', // Некорректное значение для httpClient
30
+ httpClient: 'invalid-client',
31
31
  };
32
32
  node_assert_1.default.equal(OptionsSchemaV2_1.optionsSchemaV2.validate(validData).error, null, 'Valid data should pass optionsSchemaV2 validation');
33
33
  node_assert_1.default.notEqual(OptionsSchemaV2_1.optionsSchemaV2.validate(invalidData).error, null, 'Invalid data should fail optionsSchemaV2 validation');
@@ -3,85 +3,100 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_assert_1 = __importDefault(require("node:assert"));
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
7
  const node_test_1 = require("node:test");
8
- const MultiOptionsMigrationPlan_1 = require("common/VersionedSchema/MultiOptionsMigrationPlan");
9
- const MultiOptionsVersionedSchemas_1 = require("common/VersionedSchema/MultiOptionsVersionedSchemas");
10
- const core_1 = require("../../core");
11
8
  const Enums_1 = require("../VersionedSchema/Enums");
12
- const migrateToLatestVersion_1 = require("../VersionedSchema/Utils/migrateToLatestVersion");
13
- (0, node_test_1.describe)('migrateToLatestVersion for Multioptions', () => {
14
- (0, node_test_1.test)('@unit: should migrate Multioptions data from 1.0.0 to 2.0.0', () => {
15
- const dataMultiV1 = {
16
- input: 'source/path',
17
- output: 'generated/path',
18
- client: core_1.HttpClient.AXIOS,
19
- items: [{ input: 'source/path' }, { input: 'source/path' }],
20
- };
21
- const expectedDataMultiV3 = {
22
- httpClient: core_1.HttpClient.AXIOS,
23
- items: [
24
- { input: 'source/path', output: 'generated/path', outputCore: undefined, outputServices: undefined, outputModels: undefined, outputSchemas: undefined },
25
- { input: 'source/path', output: 'generated/path', outputCore: undefined, outputServices: undefined, outputModels: undefined, outputSchemas: undefined },
26
- ],
27
- useCancelableRequest: false,
28
- };
29
- const result = (0, migrateToLatestVersion_1.migrateToLatestVersion)({
30
- rawInput: dataMultiV1,
31
- versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
9
+ const MultiOptionsMigrationPlan_1 = require("../VersionedSchema/MultiOptionsMigrationPlan");
10
+ const MultiOptionsVersionedSchemas_1 = require("../VersionedSchema/MultiOptionsVersionedSchemas");
11
+ const migrateDataToLatestSchemaVersion_1 = require("../VersionedSchema/Utils/migrateDataToLatestSchemaVersion");
12
+ const mockJoiSchema_1 = require("./__mock__/mockJoiSchema");
13
+ (0, node_test_1.describe)('migrationForMultiOptions', () => {
14
+ (0, node_test_1.test)('@unit: must successfully migrate MULTI_OPTIONS data to the latest version', async () => {
15
+ const input = { input: 'input/path', output: 'output/path', client: 'fetch', items: [{ input: 'path/item1' }] };
16
+ const result = (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
17
+ rawInput: input,
32
18
  migrationPlans: MultiOptionsMigrationPlan_1.multiOptionsMigrationPlan,
19
+ versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
20
+ });
21
+ strict_1.default.deepEqual(result, {
22
+ value: {
23
+ httpClient: 'fetch',
24
+ useCancelableRequest: false,
25
+ items: [
26
+ {
27
+ input: 'input/path',
28
+ output: 'output/path',
29
+ outputCore: undefined,
30
+ outputModels: undefined,
31
+ outputSchemas: undefined,
32
+ outputServices: undefined,
33
+ },
34
+ ],
35
+ },
36
+ schemaVersion: '2.0.0',
37
+ schemaType: Enums_1.EVersionedSchemaType.MULTI_OPTIONS,
33
38
  });
34
- node_assert_1.default.deepEqual(result, { value: expectedDataMultiV3, schemaVersion: '2.0.0', schemaType: Enums_1.EVersionedSchemaType.MULTI_OPTIONS }, 'Should migrate Multioptions V1 data to V3 correctly');
35
39
  });
36
- (0, node_test_1.test)('@unit: should migrate Multioptions data from 1.0.1 to 2.0.0', () => {
37
- const dataMultiV2 = {
38
- input: 'source/path',
39
- output: 'generated/path',
40
- httpClient: core_1.HttpClient.FETCH,
41
- items: [{ input: 'item1' }, { input: 'item2' }],
42
- };
43
- const expectedDataMultiV3 = {
44
- httpClient: core_1.HttpClient.FETCH,
45
- items: [
46
- { input: 'source/path', output: 'generated/path', outputCore: undefined, outputServices: undefined, outputModels: undefined, outputSchemas: undefined },
47
- { input: 'source/path', output: 'generated/path', outputCore: undefined, outputServices: undefined, outputModels: undefined, outputSchemas: undefined },
48
- ],
49
- };
50
- const result = (0, migrateToLatestVersion_1.migrateToLatestVersion)({
51
- rawInput: dataMultiV2,
52
- versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
40
+ (0, node_test_1.test)('@unit: should return null in case of validation error of the last MULTI_OPTIONS scheme', async () => {
41
+ const input = { input: 'input/path' };
42
+ const result = (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
43
+ rawInput: input,
53
44
  migrationPlans: MultiOptionsMigrationPlan_1.multiOptionsMigrationPlan,
45
+ versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
54
46
  });
55
- node_assert_1.default.deepEqual(result, { value: expectedDataMultiV3, schemaVersion: '2.0.0', schemaType: Enums_1.EVersionedSchemaType.MULTI_OPTIONS }, 'Should migrate Multioptions 1.0.1 data to 2.0.0 correctly');
47
+ strict_1.default.equal(result, null);
56
48
  });
57
- (0, node_test_1.test)('@unit: should throw error if not conform any known version schema', () => {
58
- const dataMultiV1 = {
59
- input: 'source/path',
60
- output: 'generated/path',
61
- client: 'invalid-client',
62
- items: [{ input: 'item1' }, { input: 'item2' }],
63
- };
64
- node_assert_1.default.throws(() => {
65
- (0, migrateToLatestVersion_1.migrateToLatestVersion)({
66
- rawInput: dataMultiV1,
67
- versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
68
- migrationPlans: MultiOptionsMigrationPlan_1.multiOptionsMigrationPlan,
69
- });
70
- }, /Data does not conform to any known version schema/, 'Should throw error if not conform any known version schema');
49
+ (0, node_test_1.test)('@unit: should throw an error if the migration plan for MULTI_OPTIONS is not found.', async () => {
50
+ const input = { input: 'input/path', output: 'output/path', client: 'fetch', items: [{ input: 'path/item1' }] };
51
+ strict_1.default.throws(() => (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
52
+ rawInput: input,
53
+ migrationPlans: [],
54
+ versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
55
+ }), /No migration plan from 1.0.0/);
71
56
  });
72
- (0, node_test_1.test)('@unit: should throw error if no migration plan exists for Multioptions', () => {
73
- const dataMultiV1 = {
74
- input: 'source/path',
75
- output: 'generated/path',
76
- client: 'axios',
77
- items: [{ input: 'item1' }, { input: 'item2' }],
57
+ (0, node_test_1.test)('@unit: should throw an error on unrecognized fields in MULTI_OPTIONS', async () => {
58
+ const input = {
59
+ input: 'input/path',
60
+ output: 'output/path',
61
+ client: 'fetch',
62
+ items: [{ input: 'path/item1', name: 'Item1' }],
78
63
  };
79
- node_assert_1.default.throws(() => {
80
- (0, migrateToLatestVersion_1.migrateToLatestVersion)({
81
- rawInput: dataMultiV1,
82
- versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
83
- migrationPlans: [],
84
- });
85
- }, /No migration plan from 1.0.0/, 'Should throw for missing migration plan in Multioptions');
64
+ strict_1.default.throws(() => (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
65
+ rawInput: input,
66
+ migrationPlans: MultiOptionsMigrationPlan_1.multiOptionsMigrationPlan,
67
+ versionedSchemas: MultiOptionsVersionedSchemas_1.multiOptionsVersionedSchema,
68
+ }), /The "name" field is not recognized./);
69
+ });
70
+ (0, node_test_1.test)('@unit: must process an empty array of MULTI_OPTIONS data', async () => {
71
+ const schemas = [
72
+ {
73
+ schema: (0, mockJoiSchema_1.mockJoiSchema)(['name'], true, [], true),
74
+ version: '1.0',
75
+ type: Enums_1.EVersionedSchemaType.MULTI_OPTIONS,
76
+ },
77
+ {
78
+ schema: (0, mockJoiSchema_1.mockJoiSchema)(['name', 'options'], true, [], true),
79
+ version: '2.0',
80
+ type: Enums_1.EVersionedSchemaType.MULTI_OPTIONS,
81
+ },
82
+ ];
83
+ const migrationPlans = [
84
+ {
85
+ fromVersion: '1.0',
86
+ toVersion: '2.0',
87
+ migrate: (input) => input.map((item) => ({ ...item, options: [] })),
88
+ },
89
+ ];
90
+ const input = [];
91
+ const result = (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
92
+ rawInput: input,
93
+ migrationPlans,
94
+ versionedSchemas: schemas,
95
+ });
96
+ strict_1.default.deepEqual(result, {
97
+ value: [],
98
+ schemaVersion: '2.0',
99
+ schemaType: Enums_1.EVersionedSchemaType.MULTI_OPTIONS,
100
+ });
86
101
  });
87
102
  });
@@ -3,61 +3,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_assert_1 = __importDefault(require("node:assert"));
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
7
  const node_test_1 = require("node:test");
8
- const OptionsMigrationPlans_1 = require("common/VersionedSchema/OptionsMigrationPlans");
9
- const OptionsVersionedSchemas_1 = require("common/VersionedSchema/OptionsVersionedSchemas");
10
- const core_1 = require("../../core");
11
8
  const Enums_1 = require("../VersionedSchema/Enums");
12
- const migrateToLatestVersion_1 = require("../VersionedSchema/Utils/migrateToLatestVersion");
13
- (0, node_test_1.describe)('migrateToLatestVersion', () => {
14
- (0, node_test_1.test)('@unit: should migrate data from 1.0.0 to 2.0.0', () => {
15
- const dataV1 = { input: 'source/path', output: 'generated/path', client: core_1.HttpClient.AXIOS };
16
- const expectedDataV3 = {
17
- input: 'source/path',
18
- output: 'generated/path',
19
- httpClient: core_1.HttpClient.AXIOS,
20
- useCancelableRequest: false,
21
- };
22
- const result = (0, migrateToLatestVersion_1.migrateToLatestVersion)({
23
- rawInput: dataV1,
24
- versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
9
+ const OptionsMigrationPlans_1 = require("../VersionedSchema/OptionsMigrationPlans");
10
+ const OptionsVersionedSchemas_1 = require("../VersionedSchema/OptionsVersionedSchemas");
11
+ const migrateDataToLatestSchemaVersion_1 = require("../VersionedSchema/Utils/migrateDataToLatestSchemaVersion");
12
+ (0, node_test_1.describe)('migrationForOptions', () => {
13
+ (0, node_test_1.test)('@unit: must migrate data to the latest schema version', async () => {
14
+ const input = { input: "input/path", output: "output/path", client: "fetch" };
15
+ const result = (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
16
+ rawInput: input,
25
17
  migrationPlans: OptionsMigrationPlans_1.optionsMigrationPlans,
18
+ versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
19
+ });
20
+ strict_1.default.deepEqual(result, {
21
+ value: { input: 'input/path', output: 'output/path', httpClient: 'fetch', useCancelableRequest: false },
22
+ schemaVersion: '2.0.0',
23
+ schemaType: Enums_1.EVersionedSchemaType.OPTIONS,
26
24
  });
27
- node_assert_1.default.deepEqual(result, { value: expectedDataV3, schemaVersion: '2.0.0', schemaType: Enums_1.EVersionedSchemaType.OPTIONS }, 'Should migrate 1.0.0 data to 2.0.0 correctly');
28
25
  });
29
- (0, node_test_1.test)('@unit: should migrate data from 1.0.1 to 2.0.0', () => {
30
- const dataV2 = { input: 'source/path', output: 'generated/path', httpClient: core_1.HttpClient.FETCH };
31
- const expectedDataV3 = {
32
- input: 'source/path',
33
- output: 'generated/path',
34
- httpClient: core_1.HttpClient.FETCH,
35
- };
36
- const result = (0, migrateToLatestVersion_1.migrateToLatestVersion)({
37
- rawInput: dataV2,
38
- versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
26
+ (0, node_test_1.test)('@unit: should return null if the validation error occurred for the last schema.', async () => {
27
+ const input = { input: "input/path", };
28
+ const result = (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
29
+ rawInput: input,
39
30
  migrationPlans: OptionsMigrationPlans_1.optionsMigrationPlans,
31
+ versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
40
32
  });
41
- node_assert_1.default.deepEqual(result, { value: expectedDataV3, schemaVersion: '2.0.0', schemaType: Enums_1.EVersionedSchemaType.OPTIONS }, 'Should migrate 1.0.1 data to 2.0.0 correctly');
42
- });
43
- (0, node_test_1.test)('@unit: should throw error if not conform any known version schema', () => {
44
- const dataV1 = { input: 'source/path', output: 'generated/path', client: 'invalid-client' };
45
- node_assert_1.default.throws(() => {
46
- (0, migrateToLatestVersion_1.migrateToLatestVersion)({
47
- rawInput: dataV1,
48
- versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
49
- migrationPlans: OptionsMigrationPlans_1.optionsMigrationPlans,
50
- });
51
- }, /Data does not conform to any known version schema/, 'Should throw error if not conform any known version schema');
33
+ strict_1.default.equal(result, null);
52
34
  });
53
- (0, node_test_1.test)('@unit: should throw error if no migration plan exists', () => {
54
- const dataV1 = { input: 'source/path', output: 'generated/path', client: core_1.HttpClient.AXIOS };
55
- node_assert_1.default.throws(() => {
56
- (0, migrateToLatestVersion_1.migrateToLatestVersion)({
57
- rawInput: dataV1,
58
- versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
59
- migrationPlans: [],
60
- });
61
- }, /No migration plan from 1.0.0/, 'Should throw for missing migration plan');
35
+ (0, node_test_1.test)('@unit: It should throw an error if the migration plan is not found.', async () => {
36
+ const input = { input: "input/path", output: "output/path", client: "fetch" };
37
+ strict_1.default.throws(() => (0, migrateDataToLatestSchemaVersion_1.migrateDataToLatestSchemaVersion)({
38
+ rawInput: input,
39
+ migrationPlans: [],
40
+ versionedSchemas: OptionsVersionedSchemas_1.optionsVersionedSchemas,
41
+ }), /No migration plan from 1.0.0/);
62
42
  });
63
43
  });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replaceInvalidKeysWithMappedNames.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replaceInvalidKeysWithMappedNames.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/replaceInvalidKeysWithMappedNames.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
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 replaceInvalidKeysWithMappedNames_1 = require("../VersionedSchema/Utils/replaceInvalidKeysWithMappedNames");
9
+ (0, node_test_1.describe)('replaceInvalidKeysWithMappedNames', () => {
10
+ (0, node_test_1.test)('@unit: must replace invalid keys in the object', async () => {
11
+ const input = { nmae: 'John', title: 'Mr' };
12
+ const keyMap = new Map([['nmae', 'name']]);
13
+ const result = (0, replaceInvalidKeysWithMappedNames_1.replaceInvalidKeysWithMappedNames)(input, keyMap);
14
+ node_assert_1.default.deepEqual(result, { name: 'John', title: 'Mr' });
15
+ });
16
+ (0, node_test_1.test)('@unit: must replace invalid keys in an array of objects', async () => {
17
+ const input = [{ nmae: 'John' }, { nmae: 'Jane' }];
18
+ const keyMap = new Map([['nmae', 'name']]);
19
+ const result = (0, replaceInvalidKeysWithMappedNames_1.replaceInvalidKeysWithMappedNames)(input, keyMap);
20
+ node_assert_1.default.deepEqual(result, [{ name: 'John' }, { name: 'Jane' }]);
21
+ });
22
+ (0, node_test_1.test)('@unit: should throw an error for null or undefined', async () => {
23
+ node_assert_1.default.throws(() => (0, replaceInvalidKeysWithMappedNames_1.replaceInvalidKeysWithMappedNames)(null, new Map()), /The input data cannot be null or undefined./);
24
+ });
25
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validateAndSuggestKeyCorrections.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAndSuggestKeyCorrections.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/validateAndSuggestKeyCorrections.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
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 validateAndSuggestKeyCorrections_1 = require("../VersionedSchema/Utils/validateAndSuggestKeyCorrections");
9
+ (0, node_test_1.describe)('validateAndSuggestKeyCorrections', () => {
10
+ (0, node_test_1.test)('@unit: should throw an error for unknown keys with a suggestion for correction', async () => {
11
+ const inputKeys = ['nmae'];
12
+ const allowedKeys = new Set(['name', 'title']);
13
+ node_assert_1.default.throws(() => (0, validateAndSuggestKeyCorrections_1.validateAndSuggestKeyCorrections)(inputKeys, allowedKeys), /The "nmae" field is not recognized. Perhaps you meant "name"./);
14
+ });
15
+ (0, node_test_1.test)('@unit: should throw an error without suggestions for keys with a large distance', async () => {
16
+ const inputKeys = ['unknown'];
17
+ const allowedKeys = new Set(['name', 'title']);
18
+ node_assert_1.default.throws(() => (0, validateAndSuggestKeyCorrections_1.validateAndSuggestKeyCorrections)(inputKeys, allowedKeys), /The "unknown" field is not recognized./);
19
+ });
20
+ (0, node_test_1.test)('@unit: should not throw an error for valid keys', async () => {
21
+ const inputKeys = ['name', 'title'];
22
+ const allowedKeys = new Set(['name', 'title']);
23
+ node_assert_1.default.doesNotThrow(() => (0, validateAndSuggestKeyCorrections_1.validateAndSuggestKeyCorrections)(inputKeys, allowedKeys));
24
+ });
25
+ });
@@ -1,6 +1,12 @@
1
1
  import { JSONSchema4Type, JSONSchema6Type, JSONSchema7Type } from 'json-schema';
2
2
  import RefParser from 'json-schema-ref-parser';
3
3
  import { IOutput, Prefix } from './types/Models';
4
+ type TContextProps = {
5
+ input: string | Record<string, any>;
6
+ output: IOutput;
7
+ prefix?: Prefix;
8
+ sortByRequired?: boolean;
9
+ };
4
10
  /**
5
11
  * A Context wich can share a data between methods
6
12
  */
@@ -9,7 +15,8 @@ export declare class Context {
9
15
  private _root;
10
16
  private _output;
11
17
  prefix: Prefix;
12
- constructor(input: string | Record<string, any>, output: IOutput, prefix?: Prefix);
18
+ private _sortByRequired;
19
+ constructor({ input, output, prefix, sortByRequired }: TContextProps);
13
20
  addRefs(refs: RefParser.$Refs): Context;
14
21
  values(...types: string[]): Record<string, any>;
15
22
  get($ref: string): JSONSchema4Type | JSONSchema6Type | JSONSchema7Type;
@@ -17,5 +24,7 @@ export declare class Context {
17
24
  exists($ref: string): boolean;
18
25
  fileName(): string;
19
26
  get output(): IOutput;
27
+ get sortByRequired(): boolean;
20
28
  }
29
+ export {};
21
30
  //# sourceMappingURL=Context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/core/Context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKxD;;GAEG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,OAAO,CAAU;IAClB,MAAM,EAAE,MAAM,CAInB;gBAEU,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAc1E,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,OAAO;IAKvC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAO/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe;IAOtE,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAOnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,QAAQ,IAAI,MAAM;IAOzB,IAAW,MAAM,YAKhB;CACJ"}
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/core/Context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKxD,KAAK,aAAa,GAAG;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAA;AAED;;GAEG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,OAAO,CAAU;IAClB,MAAM,EAAE,MAAM,CAInB;IAEF,OAAO,CAAC,eAAe,CAAkB;gBAE7B,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,aAAa;IAmB7D,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,OAAO;IAKvC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAO/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe;IAOtE,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAOnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,QAAQ,IAAI,MAAM;IAOzB,IAAW,MAAM,YAKhB;IAED,IAAW,cAAc,YAExB;CACJ"}
@@ -16,7 +16,8 @@ class Context {
16
16
  enum: 'E',
17
17
  type: 'T',
18
18
  };
19
- constructor(input, output, prefix) {
19
+ _sortByRequired = false;
20
+ constructor({ input, output, prefix, sortByRequired }) {
20
21
  this._output = output;
21
22
  this._refs = {};
22
23
  if ((0, isString_1.isString)(input)) {
@@ -28,6 +29,9 @@ class Context {
28
29
  if (prefix) {
29
30
  this.prefix = prefix;
30
31
  }
32
+ if (sortByRequired !== undefined && sortByRequired !== null) {
33
+ this._sortByRequired = sortByRequired;
34
+ }
31
35
  return this;
32
36
  }
33
37
  addRefs(refs) {
@@ -70,5 +74,8 @@ class Context {
70
74
  }
71
75
  return this._output;
72
76
  }
77
+ get sortByRequired() {
78
+ return this._sortByRequired;
79
+ }
73
80
  }
74
81
  exports.Context = Context;
@@ -14,7 +14,7 @@ const Parser_1 = require("../../Parser");
14
14
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
15
  // @ts-ignore
16
16
  const parser = new json_schema_ref_parser_1.default();
17
- const context = new Context_1.Context('test/spec/v3.yml', (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }));
17
+ const context = new Context_1.Context({ input: 'test/spec/v3.yml', output: (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }) });
18
18
  context.addRefs(await parser.resolve('test/spec/v3.yml'));
19
19
  const type = new Parser_1.Parser(context).getType('int', '');
20
20
  node_assert_1.default.strictEqual(type.type, 'number');
@@ -26,7 +26,7 @@ const Parser_1 = require("../../Parser");
26
26
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
27
27
  // @ts-ignore
28
28
  const parser = new json_schema_ref_parser_1.default();
29
- const context = new Context_1.Context('test/spec/v3.yml', (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }));
29
+ const context = new Context_1.Context({ input: 'test/spec/v3.yml', output: (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }) });
30
30
  context.addRefs(await parser.resolve('test/spec/v3.yml'));
31
31
  const type = new Parser_1.Parser(context).getType('schemas/ModelWithString.yml', '');
32
32
  node_assert_1.default.strictEqual(type.type, 'IModelWithString');
@@ -53,7 +53,7 @@ const Parser_1 = require("../../Parser");
53
53
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
54
54
  // @ts-ignore
55
55
  const parser = new json_schema_ref_parser_1.default();
56
- const context = new Context_1.Context(object, (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }));
56
+ const context = new Context_1.Context({ input: object, output: (0, getOutputPaths_1.getOutputPaths)({ output: './generated' }) });
57
57
  context.addRefs(await parser.resolve(object));
58
58
  const type = new Parser_1.Parser(context).getType('#/components/schemas/someSpecialSchema', '');
59
59
  node_assert_1.default.strictEqual(type.type, 'ISomeSpecialSchema');
@@ -1 +1 @@
1
- {"version":3,"file":"getOperationParameters.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/v2/parser/getOperationParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAE3F,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CA6D1H"}
1
+ {"version":3,"file":"getOperationParameters.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/v2/parser/getOperationParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAG3F,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CA+D1H"}