swagger-typescript-api 13.0.0-experimental-1 → 13.0.0

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 (81) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +22 -12
  3. package/cli/constants.js +3 -3
  4. package/cli/execute.js +52 -31
  5. package/cli/index.d.ts +1 -2
  6. package/cli/index.js +18 -17
  7. package/cli/operations/display-help.js +51 -29
  8. package/cli/parse-args.js +3 -3
  9. package/cli/process-option.js +28 -20
  10. package/index.d.ts +113 -8
  11. package/index.js +158 -135
  12. package/package.json +35 -30
  13. package/src/code-formatter.js +28 -13
  14. package/src/code-gen-process.js +357 -259
  15. package/src/commands/generate-templates/configuration.js +2 -2
  16. package/src/commands/generate-templates/index.js +1 -2
  17. package/src/commands/generate-templates/templates-gen-process.js +62 -35
  18. package/src/component-type-name-resolver.js +44 -0
  19. package/src/configuration.js +167 -95
  20. package/src/constants.js +28 -22
  21. package/src/index.js +3 -4
  22. package/src/schema-components-map.js +39 -23
  23. package/src/schema-parser/base-schema-parsers/array.js +43 -0
  24. package/src/schema-parser/base-schema-parsers/complex.js +51 -0
  25. package/src/schema-parser/base-schema-parsers/discriminator.js +301 -0
  26. package/src/schema-parser/base-schema-parsers/enum.js +158 -0
  27. package/src/schema-parser/base-schema-parsers/object.js +105 -0
  28. package/src/schema-parser/base-schema-parsers/primitive.js +63 -0
  29. package/src/schema-parser/complex-schema-parsers/all-of.js +26 -0
  30. package/src/schema-parser/complex-schema-parsers/any-of.js +34 -0
  31. package/src/schema-parser/complex-schema-parsers/not.js +9 -0
  32. package/src/schema-parser/complex-schema-parsers/one-of.js +27 -0
  33. package/src/schema-parser/mono-schema-parser.js +48 -0
  34. package/src/schema-parser/schema-formatters.js +69 -60
  35. package/src/schema-parser/schema-parser-fabric.js +131 -0
  36. package/src/schema-parser/schema-parser.js +208 -427
  37. package/src/schema-parser/schema-utils.js +123 -58
  38. package/src/schema-parser/util/enum-key-resolver.js +26 -0
  39. package/src/schema-routes/schema-routes.js +1225 -0
  40. package/src/schema-routes/util/specific-arg-name-resolver.js +26 -0
  41. package/src/schema-walker.js +93 -0
  42. package/src/swagger-schema-resolver.js +61 -28
  43. package/src/templates-worker.js +240 -0
  44. package/src/translators/javascript.js +83 -0
  45. package/src/translators/translator.js +35 -0
  46. package/src/type-name-formatter.js +33 -18
  47. package/src/util/file-system.js +30 -14
  48. package/src/util/id.js +2 -2
  49. package/src/util/internal-case.js +1 -1
  50. package/src/util/logger.js +46 -20
  51. package/src/util/name-resolver.js +52 -60
  52. package/src/util/object-assign.js +7 -3
  53. package/src/util/pascal-case.js +1 -1
  54. package/src/util/request.js +5 -5
  55. package/src/util/sort-by-property.js +17 -0
  56. package/templates/README.md +17 -17
  57. package/templates/base/README.md +7 -7
  58. package/templates/base/data-contract-jsdoc.ejs +37 -37
  59. package/templates/base/data-contracts.ejs +40 -27
  60. package/templates/base/enum-data-contract.ejs +12 -12
  61. package/templates/base/http-client.ejs +3 -3
  62. package/templates/base/http-clients/axios-http-client.ejs +139 -138
  63. package/templates/base/http-clients/fetch-http-client.ejs +224 -224
  64. package/templates/base/interface-data-contract.ejs +10 -10
  65. package/templates/base/object-field-jsdoc.ejs +28 -28
  66. package/templates/base/route-docs.ejs +30 -30
  67. package/templates/base/route-name.ejs +42 -42
  68. package/templates/base/route-type.ejs +22 -21
  69. package/templates/base/type-data-contract.ejs +15 -15
  70. package/templates/default/README.md +6 -6
  71. package/templates/default/api.ejs +69 -68
  72. package/templates/default/procedure-call.ejs +100 -100
  73. package/templates/default/route-types.ejs +32 -32
  74. package/templates/modular/README.md +6 -6
  75. package/templates/modular/api.ejs +28 -28
  76. package/templates/modular/procedure-call.ejs +100 -100
  77. package/templates/modular/route-types.ejs +18 -18
  78. package/src/schema-parser/schema-processor.js +0 -79
  79. package/src/schema-parser/schema-routes.js +0 -950
  80. package/src/templates.js +0 -182
  81. package/src/translators/JavaScript.js +0 -60
@@ -1,6 +1,6 @@
1
- const _ = require("lodash");
2
- const ts = require("typescript");
3
- const prettier = require("prettier");
1
+ const _ = require('lodash');
2
+ const ts = require('typescript');
3
+ const prettier = require('prettier');
4
4
 
5
5
  class CodeFormatter {
6
6
  /**
@@ -8,18 +8,18 @@ class CodeFormatter {
8
8
  */
9
9
  config;
10
10
 
11
- constructor(config) {
11
+ constructor({ config }) {
12
12
  this.config = config;
13
13
  }
14
14
 
15
15
  removeUnusedImports = (content) => {
16
- const tempFileName = "file.ts";
16
+ const tempFileName = 'file.ts';
17
17
 
18
18
  const host = new TsLanguageServiceHost(tempFileName, content);
19
19
  const languageService = ts.createLanguageService(host);
20
20
 
21
21
  const fileTextChanges = languageService.organizeImports(
22
- { type: "file", fileName: tempFileName },
22
+ { type: 'file', fileName: tempFileName },
23
23
  { newLineCharacter: ts.sys.newLine },
24
24
  )[0];
25
25
 
@@ -27,7 +27,9 @@ class CodeFormatter {
27
27
  return _.reduceRight(
28
28
  fileTextChanges.textChanges,
29
29
  (content, { span, newText }) =>
30
- `${content.slice(0, span.start)}${newText}${content.slice(span.start + span.length)}`,
30
+ `${content.slice(0, span.start)}${newText}${content.slice(
31
+ span.start + span.length,
32
+ )}`,
31
33
  content,
32
34
  );
33
35
  }
@@ -35,16 +37,27 @@ class CodeFormatter {
35
37
  return content;
36
38
  };
37
39
 
38
- prettierFormat = (content) => {
39
- return prettier.format(content, this.config.prettierOptions);
40
+ /**
41
+ * @param content
42
+ * @returns {Promise<string>}
43
+ */
44
+ prettierFormat = async (content) => {
45
+ const formatted = await prettier.format(
46
+ content,
47
+ this.config.prettierOptions,
48
+ );
49
+ return formatted;
40
50
  };
41
51
 
42
- formatCode = (code, { removeUnusedImports = true, prettierFormat = true } = {}) => {
52
+ formatCode = async (
53
+ code,
54
+ { removeUnusedImports = true, prettierFormat = true } = {},
55
+ ) => {
43
56
  if (removeUnusedImports) {
44
57
  code = this.removeUnusedImports(code);
45
58
  }
46
59
  if (prettierFormat) {
47
- code = this.prettierFormat(code);
60
+ code = await this.prettierFormat(code);
48
61
  }
49
62
  return code;
50
63
  };
@@ -58,13 +71,15 @@ class TsLanguageServiceHost {
58
71
  fileName,
59
72
  content,
60
73
  compilerOptions: tsconfig
61
- ? ts.convertCompilerOptionsFromJson(ts.readConfigFile(tsconfig, ts.sys.readFile).config.compilerOptions).options
74
+ ? ts.convertCompilerOptionsFromJson(
75
+ ts.readConfigFile(tsconfig, ts.sys.readFile).config.compilerOptions,
76
+ ).options
62
77
  : ts.getDefaultCompilerOptions(),
63
78
  });
64
79
  }
65
80
 
66
81
  getNewLine() {
67
- return "newLine" in ts.sys ? ts.sys.newLine : "\n";
82
+ return 'newLine' in ts.sys ? ts.sys.newLine : '\n';
68
83
  }
69
84
  getScriptFileNames() {
70
85
  return [this.fileName];