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
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOperationParameters = getOperationParameters;
4
- const sortByRequired_1 = require("../../../utils/sortByRequired");
4
+ const sortByRequiredExtended_1 = require("../../../utils/sortByRequiredExtended");
5
+ const sortByRequiredSimple_1 = require("../../../utils/sortByRequiredSimple");
5
6
  function getOperationParameters(openApi, parameters) {
6
7
  const operationParameters = {
7
8
  imports: [],
@@ -49,11 +50,12 @@ function getOperationParameters(openApi, parameters) {
49
50
  }
50
51
  }
51
52
  });
52
- operationParameters.parameters = operationParameters.parameters.sort(sortByRequired_1.sortByRequired);
53
- operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired_1.sortByRequired);
54
- operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired_1.sortByRequired);
55
- operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired_1.sortByRequired);
56
- operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired_1.sortByRequired);
57
- operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired_1.sortByRequired);
53
+ const sortByRequired = this.context.sortByRequired ? sortByRequiredExtended_1.sortByRequiredExtended : sortByRequiredSimple_1.sortByRequiredSimple;
54
+ operationParameters.parameters = operationParameters.parameters.sort(sortByRequired);
55
+ operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired);
56
+ operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired);
57
+ operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired);
58
+ operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired);
59
+ operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired);
58
60
  return operationParameters;
59
61
  }
@@ -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":"getOperation.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/v3/parser/getOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAQ3F,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;AAGxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,CA+DpL"}
1
+ {"version":3,"file":"getOperation.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/v3/parser/getOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAS3F,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;AAGxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAgEpL"}
@@ -7,7 +7,8 @@ const getOperationName_1 = require("../../../utils/getOperationName");
7
7
  const getOperationPath_1 = require("../../../utils/getOperationPath");
8
8
  const getOperationResponseHeader_1 = require("../../../utils/getOperationResponseHeader");
9
9
  const getOperationResults_1 = require("../../../utils/getOperationResults");
10
- const sortByRequired_1 = require("../../../utils/sortByRequired");
10
+ const sortByRequiredExtended_1 = require("../../../utils/sortByRequiredExtended");
11
+ const sortByRequiredSimple_1 = require("../../../utils/sortByRequiredSimple");
11
12
  function getOperation(openApi, url, method, op, pathParams, serviceClassName) {
12
13
  const operationNameFallback = `${method}${serviceClassName}`;
13
14
  const operationName = (0, getOperationName_1.getOperationName)(op.operationId || operationNameFallback);
@@ -46,11 +47,12 @@ function getOperation(openApi, url, method, op, pathParams, serviceClassName) {
46
47
  operation.parametersBody = parameters.parametersBody;
47
48
  }
48
49
  if (op.requestBody) {
50
+ const sortByRequired = this.context.sortByRequired ? sortByRequiredExtended_1.sortByRequiredExtended : sortByRequiredSimple_1.sortByRequiredSimple;
49
51
  const requestBodyDef = (op.requestBody.$ref ? this.context.get(op.requestBody.$ref) : op.requestBody);
50
52
  const requestBody = this.getOperationRequestBody(openApi, requestBodyDef, '');
51
53
  operation.imports.push(...requestBody.imports);
52
54
  operation.parameters.push(requestBody);
53
- operation.parameters = operation.parameters.sort(sortByRequired_1.sortByRequired);
55
+ operation.parameters = operation.parameters.sort(sortByRequired);
54
56
  operation.parametersBody = requestBody;
55
57
  }
56
58
  // Parse the operation responses.
@@ -1 +1 @@
1
- {"version":3,"file":"getOperationParameters.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/v3/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/v3/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,CAgE1H"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOperationParameters = getOperationParameters;
4
- const sortByRequired_1 = require("../../../utils/sortByRequired");
4
+ const sortByRequiredExtended_1 = require("../../../utils/sortByRequiredExtended");
5
+ const sortByRequiredSimple_1 = require("../../../utils/sortByRequiredSimple");
5
6
  function getOperationParameters(openApi, parameters) {
6
7
  const operationParameters = {
7
8
  imports: [],
@@ -49,11 +50,12 @@ function getOperationParameters(openApi, parameters) {
49
50
  }
50
51
  }
51
52
  });
52
- operationParameters.parameters = operationParameters.parameters.sort(sortByRequired_1.sortByRequired);
53
- operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired_1.sortByRequired);
54
- operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired_1.sortByRequired);
55
- operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired_1.sortByRequired);
56
- operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired_1.sortByRequired);
57
- operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired_1.sortByRequired);
53
+ const sortByRequired = this.context.sortByRequired ? sortByRequiredExtended_1.sortByRequiredExtended : sortByRequiredSimple_1.sortByRequiredSimple;
54
+ operationParameters.parameters = operationParameters.parameters.sort(sortByRequired);
55
+ operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired);
56
+ operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired);
57
+ operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired);
58
+ operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired);
59
+ operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired);
58
60
  return operationParameters;
59
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAmB5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAsH3C,wBAAsB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD5F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAmB5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAyH3C,wBAAsB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD5F"}
@@ -47,8 +47,9 @@ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function (
47
47
  * @param enumPrefix: Prefix for enum model(E)
48
48
  * @param typePrefix: Prefix for type model(T)
49
49
  * @param useCancelableRequest Use cancelable request type.
50
+ * @param sortByRequired Property sorting strategy: simplified or extended
50
51
  */
51
- async function generateFrom({ input, output, outputCore, outputServices, outputModels, outputSchemas, httpClient = Enums_1.HttpClient.FETCH, useOptions = false, useUnionTypes = false, exportCore = true, exportServices = true, exportModels = true, exportSchemas = false, clean = true, request, write = true, interfacePrefix = 'I', enumPrefix = 'E', typePrefix = 'T', useCancelableRequest = false, }, writeClient) {
52
+ async function generateFrom({ input, output, outputCore, outputServices, outputModels, outputSchemas, httpClient = Enums_1.HttpClient.FETCH, useOptions = false, useUnionTypes = false, exportCore = true, exportServices = true, exportModels = true, exportSchemas = false, clean = true, request, write = true, interfacePrefix = 'I', enumPrefix = 'E', typePrefix = 'T', useCancelableRequest = false, sortByRequired = false, }, writeClient) {
52
53
  const outputPaths = (0, getOutputPaths_1.getOutputPaths)({
53
54
  output,
54
55
  outputCore,
@@ -56,7 +57,7 @@ async function generateFrom({ input, output, outputCore, outputServices, outputM
56
57
  outputModels,
57
58
  outputSchemas,
58
59
  });
59
- const context = new Context_1.Context(input, outputPaths, { interface: interfacePrefix, enum: enumPrefix, type: typePrefix });
60
+ const context = new Context_1.Context({ input, output: outputPaths, prefix: { interface: interfacePrefix, enum: enumPrefix, type: typePrefix }, sortByRequired });
60
61
  const openApi = (0, isString_1.isString)(input) ? await (0, getOpenApiSpec_1.getOpenApiSpec)(context, input) : input;
61
62
  const openApiVersion = (0, getOpenApiVersion_1.getOpenApiVersion)(openApi);
62
63
  const templates = (0, registerHandlebarTemplates_1.registerHandlebarTemplates)({
@@ -1,2 +1,12 @@
1
1
  export declare const SEARCH_REGEXP: RegExp;
2
+ export declare const GROUP_PRIORITY_EXTENDED: {
3
+ readonly required: 0;
4
+ readonly 'required-with-default': 1;
5
+ readonly optional: 2;
6
+ readonly 'optional-with-default': 3;
7
+ };
8
+ export declare const GROUP_PRIORITY_SIMPLE: {
9
+ readonly 'requires-value': 0;
10
+ readonly other: 1;
11
+ };
2
12
  //# sourceMappingURL=Consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Consts.d.ts","sourceRoot":"","sources":["../../../src/core/types/Consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,QAAQ,CAAC"}
1
+ {"version":3,"file":"Consts.d.ts","sourceRoot":"","sources":["../../../src/core/types/Consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,eAAO,MAAM,uBAAuB;;;;;CAK1B,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC"}
@@ -1,4 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SEARCH_REGEXP = void 0;
3
+ exports.GROUP_PRIORITY_SIMPLE = exports.GROUP_PRIORITY_EXTENDED = exports.SEARCH_REGEXP = void 0;
4
4
  exports.SEARCH_REGEXP = /\\/g;
5
+ exports.GROUP_PRIORITY_EXTENDED = {
6
+ required: 0,
7
+ 'required-with-default': 1,
8
+ optional: 2,
9
+ 'optional-with-default': 3,
10
+ };
11
+ exports.GROUP_PRIORITY_SIMPLE = {
12
+ 'requires-value': 0,
13
+ 'other': 1
14
+ };
@@ -1,3 +1,4 @@
1
+ import { GROUP_PRIORITY_EXTENDED, GROUP_PRIORITY_SIMPLE } from './Consts';
1
2
  import { TypeRef } from './Enums';
2
3
  /**
3
4
  * @param output The relative location of the output directory(or index)
@@ -31,4 +32,6 @@ export interface Prefix {
31
32
  enum: string;
32
33
  type: string;
33
34
  }
35
+ export type TPropertyGroupExtended = keyof typeof GROUP_PRIORITY_EXTENDED;
36
+ export type TPropertyGroupSimple = keyof typeof GROUP_PRIORITY_SIMPLE;
34
37
  //# sourceMappingURL=Models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/core/types/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/core/types/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { OperationParameter } from '../../types/shared/OperationParameter.model';
2
+ export declare function createOperationParameter(name: string, options?: Partial<Pick<OperationParameter, 'isRequired' | 'default' | 'description'>>): OperationParameter;
3
+ //# sourceMappingURL=createOperationParameter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOperationParameter.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/__mocks__/createOperationParameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEjF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC,CAAM,GAAG,kBAAkB,CAwBpK"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOperationParameter = createOperationParameter;
4
+ function createOperationParameter(name, options = {}) {
5
+ return {
6
+ name,
7
+ isRequired: options.isRequired ?? false,
8
+ default: options.default,
9
+ description: options.description ?? null,
10
+ in: 'query',
11
+ prop: '',
12
+ export: 'reference',
13
+ alias: '',
14
+ path: '',
15
+ type: 'string',
16
+ base: '',
17
+ template: null,
18
+ link: null,
19
+ isDefinition: false,
20
+ isReadOnly: false,
21
+ isNullable: false,
22
+ imports: [],
23
+ enum: [],
24
+ enums: [],
25
+ properties: [],
26
+ mediaType: null,
27
+ };
28
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sortByRequiredExtended.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortByRequiredExtended.test.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/__tests__/sortByRequiredExtended.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,145 @@
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 createOperationParameter_1 = require("../__mocks__/createOperationParameter");
9
+ const sortByRequiredExtended_1 = require("../sortByRequiredExtended");
10
+ (0, node_test_1.describe)('sortByRequiredExtended', () => {
11
+ // Тесты для сравнения между разными группами
12
+ (0, node_test_1.test)('@unit: должна сортировать группы в порядке: required, required-with-default, optional, optional-with-default', () => {
13
+ const params = [
14
+ (0, createOperationParameter_1.createOperationParameter)('optional', { isRequired: false }), // Группа 2
15
+ (0, createOperationParameter_1.createOperationParameter)('required', { isRequired: true }), // Группа 0
16
+ (0, createOperationParameter_1.createOperationParameter)('optional-with-default', { isRequired: false, default: 'def' }), // Группа 3
17
+ (0, createOperationParameter_1.createOperationParameter)('required-with-default', { isRequired: true, default: 'def' }) // Группа 1
18
+ ];
19
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
20
+ const sortedNames = params.map(p => p.name);
21
+ node_assert_1.default.deepStrictEqual(sortedNames, [
22
+ 'required',
23
+ 'required-with-default',
24
+ 'optional',
25
+ 'optional-with-default'
26
+ ]);
27
+ });
28
+ // Тесты для сравнения внутри групп
29
+ (0, node_test_1.test)('@unit: должна сортировать по имени внутри группы required', () => {
30
+ const params = [
31
+ (0, createOperationParameter_1.createOperationParameter)('Beta', { isRequired: true }),
32
+ (0, createOperationParameter_1.createOperationParameter)('Alpha', { isRequired: true }),
33
+ (0, createOperationParameter_1.createOperationParameter)('Gamma', { isRequired: true })
34
+ ];
35
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
36
+ const sortedNames = params.map(p => p.name);
37
+ node_assert_1.default.deepStrictEqual(sortedNames, ['Alpha', 'Beta', 'Gamma']);
38
+ });
39
+ (0, node_test_1.test)('@unit: должна сортировать по имени внутри группы required-with-default', () => {
40
+ const params = [
41
+ (0, createOperationParameter_1.createOperationParameter)('Zeta', { isRequired: true, default: 'def' }),
42
+ (0, createOperationParameter_1.createOperationParameter)('Beta', { isRequired: true, default: 'def' }),
43
+ (0, createOperationParameter_1.createOperationParameter)('Alpha', { isRequired: true, default: 'def' })
44
+ ];
45
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
46
+ const sortedNames = params.map(p => p.name);
47
+ node_assert_1.default.deepStrictEqual(sortedNames, ['Alpha', 'Beta', 'Zeta']);
48
+ });
49
+ (0, node_test_1.test)('@unit: должна сортировать по имени внутри группы optional', () => {
50
+ const params = [
51
+ (0, createOperationParameter_1.createOperationParameter)('Second', { isRequired: false }),
52
+ (0, createOperationParameter_1.createOperationParameter)('First', { isRequired: false }),
53
+ (0, createOperationParameter_1.createOperationParameter)('Third', { isRequired: false })
54
+ ];
55
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
56
+ const sortedNames = params.map(p => p.name);
57
+ node_assert_1.default.deepStrictEqual(sortedNames, ['First', 'Second', 'Third']);
58
+ });
59
+ (0, node_test_1.test)('@unit: должна сортировать по имени внутри группы optional-with-default', () => {
60
+ const params = [
61
+ (0, createOperationParameter_1.createOperationParameter)('Dog', { isRequired: false, default: 'def' }),
62
+ (0, createOperationParameter_1.createOperationParameter)('Cat', { isRequired: false, default: 'def' }),
63
+ (0, createOperationParameter_1.createOperationParameter)('Bird', { isRequired: false, default: 'def' })
64
+ ];
65
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
66
+ const sortedNames = params.map(p => p.name);
67
+ node_assert_1.default.deepStrictEqual(sortedNames, ['Bird', 'Cat', 'Dog']);
68
+ });
69
+ // Тесты для всех возможных пар групп
70
+ const groupPairs = [
71
+ ['required', 'required-with-default'],
72
+ ['required', 'optional'],
73
+ ['required', 'optional-with-default'],
74
+ ['required-with-default', 'optional'],
75
+ ['required-with-default', 'optional-with-default'],
76
+ ['optional', 'optional-with-default']
77
+ ];
78
+ for (const [groupA, groupB] of groupPairs) {
79
+ (0, node_test_1.test)(`@unit: должна помещать "${groupA}" перед "${groupB}"`, () => {
80
+ const paramA = (0, createOperationParameter_1.createOperationParameter)('A', createOptionsForGroup(groupA));
81
+ const paramB = (0, createOperationParameter_1.createOperationParameter)('B', createOptionsForGroup(groupB));
82
+ // A должен идти перед B
83
+ node_assert_1.default.ok((0, sortByRequiredExtended_1.sortByRequiredExtended)(paramA, paramB) < 0);
84
+ // B должен идти после A
85
+ node_assert_1.default.ok((0, sortByRequiredExtended_1.sortByRequiredExtended)(paramB, paramA) > 0);
86
+ });
87
+ }
88
+ // Вспомогательная функция для создания параметров по группе
89
+ function createOptionsForGroup(group) {
90
+ switch (group) {
91
+ case 'required':
92
+ return { isRequired: true };
93
+ case 'required-with-default':
94
+ return { isRequired: true, default: 'default' };
95
+ case 'optional':
96
+ return { isRequired: false };
97
+ case 'optional-with-default':
98
+ return { isRequired: false, default: 'default' };
99
+ }
100
+ }
101
+ // Тесты на равные группы
102
+ (0, node_test_1.test)('@unit: должна возвращать 0 для одинаковых параметров', () => {
103
+ const param1 = (0, createOperationParameter_1.createOperationParameter)('Test', { isRequired: true });
104
+ const param2 = (0, createOperationParameter_1.createOperationParameter)('Test', { isRequired: true });
105
+ node_assert_1.default.strictEqual((0, sortByRequiredExtended_1.sortByRequiredExtended)(param1, param2), 0);
106
+ });
107
+ // Тест на обработку параметров с одинаковыми именами
108
+ (0, node_test_1.test)('@unit: должна возвращать 0 для параметров с одинаковыми именами в одной группе', () => {
109
+ const param1 = (0, createOperationParameter_1.createOperationParameter)('Same', { isRequired: false, default: 'def' });
110
+ const param2 = (0, createOperationParameter_1.createOperationParameter)('Same', { isRequired: false, default: 'def' });
111
+ node_assert_1.default.strictEqual((0, sortByRequiredExtended_1.sortByRequiredExtended)(param1, param2), 0);
112
+ });
113
+ // Тест на смешанные группы с одинаковыми приоритетами
114
+ (0, node_test_1.test)('@unit: должна сортировать только по имени при одинаковых группах', () => {
115
+ const params = [
116
+ (0, createOperationParameter_1.createOperationParameter)('Beta', { isRequired: false }), // optional
117
+ (0, createOperationParameter_1.createOperationParameter)('Alpha', { isRequired: true }), // required
118
+ (0, createOperationParameter_1.createOperationParameter)('Gamma', { isRequired: false }), // optional
119
+ (0, createOperationParameter_1.createOperationParameter)('Delta', { isRequired: true, default: 'def' }), // required-with-default
120
+ (0, createOperationParameter_1.createOperationParameter)('Epsilon', { isRequired: false, default: 'def' }), // optional-with-default
121
+ (0, createOperationParameter_1.createOperationParameter)('Alpha2', { isRequired: true }) // required
122
+ ];
123
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
124
+ const sortedNames = params.map(p => p.name);
125
+ node_assert_1.default.deepStrictEqual(sortedNames, [
126
+ 'Alpha', // required
127
+ 'Alpha2', // required
128
+ 'Delta', // required-with-default
129
+ 'Beta', // optional
130
+ 'Gamma', // optional
131
+ 'Epsilon' // optional-with-default
132
+ ]);
133
+ });
134
+ // Тест на пограничные случаи
135
+ (0, node_test_1.test)('@unit: должна корректно обрабатывать пустые имена', () => {
136
+ const params = [
137
+ (0, createOperationParameter_1.createOperationParameter)('', { isRequired: true }),
138
+ (0, createOperationParameter_1.createOperationParameter)('B', { isRequired: true }),
139
+ (0, createOperationParameter_1.createOperationParameter)('A', { isRequired: true })
140
+ ];
141
+ params.sort(sortByRequiredExtended_1.sortByRequiredExtended);
142
+ const sortedNames = params.map(p => p.name);
143
+ node_assert_1.default.deepStrictEqual(sortedNames, ['', 'A', 'B']);
144
+ });
145
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sortByRequiredSimple.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortByRequiredSimple.test.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/__tests__/sortByRequiredSimple.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
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 strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = require("node:test");
8
+ const createOperationParameter_1 = require("../__mocks__/createOperationParameter");
9
+ const sortByRequiredSimple_1 = require("../sortByRequiredSimple");
10
+ (0, node_test_1.describe)('sortByRequiredSimple', () => {
11
+ (0, node_test_1.test)('@unit: должна помещать обязательные параметры без default перед необязательными', () => {
12
+ const a = (0, createOperationParameter_1.createOperationParameter)('required', { isRequired: true });
13
+ const b = (0, createOperationParameter_1.createOperationParameter)('optional', { isRequired: false });
14
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), -1);
15
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(b, a), 1);
16
+ });
17
+ (0, node_test_1.test)('@unit: должна считать равными два обязательных параметра без default', () => {
18
+ const a = (0, createOperationParameter_1.createOperationParameter)('A', { isRequired: true });
19
+ const b = (0, createOperationParameter_1.createOperationParameter)('B', { isRequired: true });
20
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
21
+ });
22
+ (0, node_test_1.test)('@unit: должна считать равными два необязательных параметра', () => {
23
+ const a = (0, createOperationParameter_1.createOperationParameter)('A', { isRequired: false });
24
+ const b = (0, createOperationParameter_1.createOperationParameter)('B', { isRequired: false });
25
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
26
+ });
27
+ (0, node_test_1.test)('@unit: должна помещать обязательные без default перед обязательными с default', () => {
28
+ const a = (0, createOperationParameter_1.createOperationParameter)('required', { isRequired: true });
29
+ const b = (0, createOperationParameter_1.createOperationParameter)('required-with-default', { isRequired: true, default: 'test' });
30
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), -1);
31
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(b, a), 1);
32
+ });
33
+ (0, node_test_1.test)('@unit: должна считать равными два обязательных параметра с default', () => {
34
+ const a = (0, createOperationParameter_1.createOperationParameter)('A', { isRequired: true, default: 'a' });
35
+ const b = (0, createOperationParameter_1.createOperationParameter)('B', { isRequired: true, default: 'b' });
36
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
37
+ });
38
+ (0, node_test_1.test)('@unit: должна помещать обязательные без default перед необязательными с default', () => {
39
+ const a = (0, createOperationParameter_1.createOperationParameter)('required', { isRequired: true });
40
+ const b = (0, createOperationParameter_1.createOperationParameter)('optional-with-default', { isRequired: false, default: 'test' });
41
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), -1);
42
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(b, a), 1);
43
+ });
44
+ (0, node_test_1.test)('@unit: должна считать равными два необязательных параметра с default', () => {
45
+ const a = (0, createOperationParameter_1.createOperationParameter)('A', { isRequired: false, default: 'a' });
46
+ const b = (0, createOperationParameter_1.createOperationParameter)('B', { isRequired: false, default: 'b' });
47
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
48
+ });
49
+ (0, node_test_1.test)('@unit: должна считать равными обязательный с default и необязательный без default', () => {
50
+ const a = (0, createOperationParameter_1.createOperationParameter)('required-with-default', { isRequired: true, default: 'test' });
51
+ const b = (0, createOperationParameter_1.createOperationParameter)('optional', { isRequired: false });
52
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
53
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(b, a), 0);
54
+ });
55
+ (0, node_test_1.test)('@unit: должна корректно работать с undefined значениями', () => {
56
+ const a = (0, createOperationParameter_1.createOperationParameter)('required', { isRequired: true });
57
+ const b = (0, createOperationParameter_1.createOperationParameter)('required-with-default', { isRequired: true, default: undefined });
58
+ strict_1.default.strictEqual((0, sortByRequiredSimple_1.sortByRequiredSimple)(a, b), 0);
59
+ });
60
+ (0, node_test_1.test)('@unit: should sort params', () => {
61
+ const optionalParameter = (0, createOperationParameter_1.createOperationParameter)('optional', { description: '3. Опциональный параметр без значения по умолчанию', isRequired: false });
62
+ const optionalParameterWithDefault = (0, createOperationParameter_1.createOperationParameter)('optional-with-default', {
63
+ description: '4. Опциональный параметр со значением по умолчанию',
64
+ isRequired: false,
65
+ default: 'Hello World!',
66
+ });
67
+ const requiredParameter = (0, createOperationParameter_1.createOperationParameter)('required', { description: '1. Обязательный параметр без значения по умолчанию', isRequired: true });
68
+ const requiredParameterWithDefault = (0, createOperationParameter_1.createOperationParameter)('required-with-default', {
69
+ description: '2. Обязательный параметр со значением по умолчанию',
70
+ isRequired: true,
71
+ default: 'Hello World!',
72
+ });
73
+ strict_1.default.deepStrictEqual([optionalParameterWithDefault, optionalParameter, requiredParameterWithDefault, requiredParameter].sort(sortByRequiredSimple_1.sortByRequiredSimple), [
74
+ requiredParameter,
75
+ optionalParameterWithDefault,
76
+ optionalParameter,
77
+ requiredParameterWithDefault,
78
+ ]);
79
+ });
80
+ });
@@ -12,10 +12,10 @@ const writeClient_1 = require("../writeClient");
12
12
  (0, node_test_1.test)('@unit: writeClient should write to filesystem', async () => {
13
13
  const mkdirCalls = [];
14
14
  const writeFileCalls = [];
15
- // Сохраняем оригинальные реализации
15
+ // We keep the original implementations
16
16
  const originalMkdir = fileSystem_1.fileSystem.mkdir;
17
17
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
18
- // Мокаем функции
18
+ // Mock the functions
19
19
  fileSystem_1.fileSystem.mkdir = node_test_1.mock.fn(async (path) => {
20
20
  mkdirCalls.push(path);
21
21
  return path;
@@ -62,7 +62,7 @@ const writeClient_1 = require("../writeClient");
62
62
  });
63
63
  strict_1.default.ok(mkdirCalls.length > 0, 'mkdir should be called at least once');
64
64
  strict_1.default.ok(writeFileCalls.length > 0, 'writeFile should be called at least once');
65
- // Восстанавливаем оригинальные реализации
65
+ // Restoring the original implementations
66
66
  fileSystem_1.fileSystem.mkdir = originalMkdir;
67
67
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
68
68
  });
@@ -10,7 +10,7 @@ const fileSystem_1 = require("../fileSystem");
10
10
  const writeClientCore_1 = require("../writeClientCore");
11
11
  (0, node_test_1.test)('@unit: writeClientCore writes to filesystem', async () => {
12
12
  const writeFileCalls = [];
13
- // Переприсваиваем функцию вручную с моком
13
+ // Re-assigning the function manually with a mock
14
14
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
15
15
  fileSystem_1.fileSystem.writeFile = node_test_1.mock.fn(async (path, content) => {
16
16
  writeFileCalls.push([path, content]);
@@ -47,6 +47,6 @@ const writeClientCore_1 = require("../writeClientCore");
47
47
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('request.ts') && content.toString().includes('request')), 'Expected writeFile to be called with request content for request.ts');
48
48
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('CancelablePromise.ts') && content.toString().includes('cancelablePromise')), 'Expected writeFile to be called with cancelablePromise content for CancelablePromise.ts');
49
49
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('HttpStatusCode.ts') && content.toString().includes('httpStatusCode')), 'Expected writeFile to be called with httpStatusCode content for HttpStatusCode.ts');
50
- // Восстанавливаем оригинальную функцию
50
+ // Restoring the original function
51
51
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
52
52
  });
@@ -9,7 +9,7 @@ const fileSystem_1 = require("../fileSystem");
9
9
  const writeClientIndex_1 = require("../writeClientIndex");
10
10
  (0, node_test_1.test)('@unit: writeClientIndex writes to filesystem', async () => {
11
11
  const writeFileCalls = [];
12
- // Переприсваиваем функцию вручную с моком
12
+ // Re-assigning the function manually with a mock
13
13
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
14
14
  fileSystem_1.fileSystem.writeFile = node_test_1.mock.fn(async (path, content) => {
15
15
  writeFileCalls.push([path, content]);
@@ -33,6 +33,6 @@ const writeClientIndex_1 = require("../writeClientIndex");
33
33
  };
34
34
  await (0, writeClientIndex_1.writeClientIndex)({ templates, outputPath: '/', core: [], models: [], schemas: [], services: [] });
35
35
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('index.ts') && content.toString().includes('index')), 'Expected writeFile to be called with index content for index.ts');
36
- // Восстанавливаем оригинальную функцию
36
+ // Restoring the original function
37
37
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
38
38
  });
@@ -10,7 +10,7 @@ const fileSystem_1 = require("../fileSystem");
10
10
  const writeClientModels_1 = require("../writeClientModels");
11
11
  (0, node_test_1.test)('@unit: writeClientModels writes to filesystem', async () => {
12
12
  const writeFileCalls = [];
13
- // Переприсваиваем функцию вручную с моком
13
+ // Re-assigning the function manually with a mock
14
14
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
15
15
  fileSystem_1.fileSystem.writeFile = node_test_1.mock.fn(async (path, content) => {
16
16
  writeFileCalls.push([path, content]);
@@ -61,6 +61,6 @@ const writeClientModels_1 = require("../writeClientModels");
61
61
  useUnionTypes: false,
62
62
  });
63
63
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('MyModel.ts') && content.toString().includes('model')), 'Expected writeFile to be called with model content for MyModel.ts');
64
- // Восстанавливаем оригинальную функцию
64
+ // Restoring the original function
65
65
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
66
66
  });
@@ -10,7 +10,7 @@ const fileSystem_1 = require("../fileSystem");
10
10
  const writeClientSchemas_1 = require("../writeClientSchemas");
11
11
  (0, node_test_1.test)('@unit: writeClientSchemas writes to filesystem', async () => {
12
12
  const writeFileCalls = [];
13
- // Переприсваиваем функцию вручную с моком
13
+ // Re-assigning the function manually with a mock
14
14
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
15
15
  fileSystem_1.fileSystem.writeFile = node_test_1.mock.fn(async (path, content) => {
16
16
  writeFileCalls.push([path, content]);
@@ -61,6 +61,6 @@ const writeClientSchemas_1 = require("../writeClientSchemas");
61
61
  useUnionTypes: false,
62
62
  });
63
63
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('MyModelSchema.ts') && content.toString().includes('schema')), 'Expected writeFile to be called with schema content for MyModelSchema.ts');
64
- // Восстанавливаем оригинальную функцию
64
+ // Restoring the original function
65
65
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
66
66
  });
@@ -10,7 +10,7 @@ const fileSystem_1 = require("../fileSystem");
10
10
  const writeClientServices_1 = require("../writeClientServices");
11
11
  (0, node_test_1.test)('@unit: writeClientServices writes to filesystem', async () => {
12
12
  const writeFileCalls = [];
13
- // Переприсваиваем функцию вручную с моком
13
+ // Re-assigning the function manually with a mock
14
14
  const originalWriteFile = fileSystem_1.fileSystem.writeFile;
15
15
  fileSystem_1.fileSystem.writeFile = node_test_1.mock.fn(async (path, content) => {
16
16
  writeFileCalls.push([path, content]);
@@ -54,7 +54,7 @@ const writeClientServices_1 = require("../writeClientServices");
54
54
  useCancelableRequest: false,
55
55
  });
56
56
  node_assert_1.default.ok(writeFileCalls.some(([filePath, content]) => filePath.toString().includes('MyService.ts') && content.toString().includes('service')), 'Expected writeFile to be called with service content for MyService.ts');
57
- // Восстанавливаем оригинальную функцию
57
+ // Restoring the original function
58
58
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
59
59
  // @ts-ignore
60
60
  fileSystem_1.fileSystem.writeFile = originalWriteFile;
@@ -1 +1 @@
1
- {"version":3,"file":"getOpenApiSpec.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOpenApiSpec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAsBpE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA2C5F"}
1
+ {"version":3,"file":"getOpenApiSpec.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOpenApiSpec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAsBpE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmC5F"}