swagger-typescript-api 10.0.2 → 11.0.0--alpha

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 (55) hide show
  1. package/README.md +263 -41
  2. package/index.d.ts +97 -0
  3. package/index.js +242 -115
  4. package/package.json +121 -116
  5. package/src/code-formatter.js +101 -0
  6. package/src/code-gen-process.js +456 -0
  7. package/src/configuration.js +425 -0
  8. package/src/constants.js +14 -31
  9. package/src/index.js +20 -271
  10. package/src/schema-components-map.js +60 -0
  11. package/src/schema-parser/schema-formatters.js +145 -0
  12. package/src/schema-parser/schema-parser.js +497 -0
  13. package/src/schema-parser/schema-routes.js +902 -0
  14. package/src/swagger-schema-resolver.js +187 -0
  15. package/src/templates.js +174 -155
  16. package/src/translators/JavaScript.js +3 -14
  17. package/src/type-name.js +79 -0
  18. package/src/util/file-system.js +76 -0
  19. package/src/{utils → util}/id.js +9 -9
  20. package/src/util/internal-case.js +5 -0
  21. package/src/util/logger.js +100 -0
  22. package/src/{utils/resolveName.js → util/name-resolver.js} +94 -97
  23. package/src/util/object-assign.js +11 -0
  24. package/src/util/pascal-case.js +5 -0
  25. package/src/{utils → util}/random.js +14 -14
  26. package/templates/base/data-contract-jsdoc.ejs +29 -24
  27. package/templates/base/data-contracts.ejs +3 -3
  28. package/templates/base/interface-data-contract.ejs +1 -0
  29. package/templates/base/route-docs.ejs +3 -4
  30. package/templates/base/route-type.ejs +2 -2
  31. package/templates/default/procedure-call.ejs +2 -2
  32. package/templates/default/route-types.ejs +2 -2
  33. package/templates/modular/api.ejs +2 -2
  34. package/templates/modular/procedure-call.ejs +2 -2
  35. package/templates/modular/route-types.ejs +2 -2
  36. package/src/apiConfig.js +0 -30
  37. package/src/common.js +0 -28
  38. package/src/components.js +0 -91
  39. package/src/config.js +0 -106
  40. package/src/filePrefix.js +0 -14
  41. package/src/files.js +0 -56
  42. package/src/formatFileContent.js +0 -81
  43. package/src/logger.js +0 -59
  44. package/src/modelNames.js +0 -78
  45. package/src/modelTypes.js +0 -31
  46. package/src/output.js +0 -165
  47. package/src/prettierOptions.js +0 -23
  48. package/src/render/utils/fmtToJSDocLine.js +0 -10
  49. package/src/render/utils/index.js +0 -31
  50. package/src/render/utils/templateRequire.js +0 -17
  51. package/src/routeNames.js +0 -46
  52. package/src/routes.js +0 -809
  53. package/src/schema.js +0 -474
  54. package/src/swagger.js +0 -152
  55. package/src/typeFormatters.js +0 -121
@@ -1,121 +0,0 @@
1
- const _ = require("lodash");
2
- const { config } = require("./config");
3
- const { TS_KEYWORDS, SCHEMA_TYPES, TS_EXTERNAL } = require("./constants");
4
-
5
- const checkAndAddNull = (schema, value) => {
6
- const { nullable, type } = schema || {};
7
- return (nullable || !!_.get(schema, "x-nullable") || type === TS_KEYWORDS.NULL) &&
8
- _.isString(value) &&
9
- !value.includes(` ${TS_KEYWORDS.NULL}`) &&
10
- !value.includes(`${TS_KEYWORDS.NULL} `)
11
- ? `${value} | ${TS_KEYWORDS.NULL}`
12
- : value;
13
- };
14
-
15
- const formatters = {
16
- [SCHEMA_TYPES.ENUM]: (parsedSchema) => {
17
- const isNumberEnum = _.some(parsedSchema.content, (content) => typeof content.key === "number");
18
- const formatAsUnionType = !!(isNumberEnum || config.generateUnionEnums);
19
-
20
- if (formatAsUnionType) {
21
- return {
22
- ...parsedSchema,
23
- $content: parsedSchema.content,
24
- content: _.map(parsedSchema.content, ({ value }) => value).join(" | "),
25
- };
26
- }
27
-
28
- return {
29
- ...parsedSchema,
30
- $content: parsedSchema.content,
31
- content: _.map(parsedSchema.content, ({ key, value }) => ` ${key} = ${value}`).join(",\n"),
32
- };
33
- },
34
- [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {
35
- if (parsedSchema.nullable) return inlineExtraFormatters[SCHEMA_TYPES.OBJECT](parsedSchema);
36
- return {
37
- ...parsedSchema,
38
- $content: parsedSchema.content,
39
- content: formatObjectContent(parsedSchema.content),
40
- };
41
- },
42
- [SCHEMA_TYPES.PRIMITIVE]: (parsedSchema) => {
43
- return {
44
- ...parsedSchema,
45
- $content: parsedSchema.content,
46
- };
47
- },
48
- };
49
-
50
- /** transform content of parsed schema to string or compact size */
51
- const inlineExtraFormatters = {
52
- [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {
53
- if (_.isString(parsedSchema.content)) {
54
- return {
55
- ...parsedSchema,
56
- typeIdentifier: TS_KEYWORDS.TYPE,
57
- content: checkAndAddNull(parsedSchema.content),
58
- };
59
- }
60
-
61
- return {
62
- ...parsedSchema,
63
- typeIdentifier: TS_KEYWORDS.TYPE,
64
- content: checkAndAddNull(
65
- parsedSchema,
66
- parsedSchema.content.length ? `{\n${formatObjectContent(parsedSchema.content)}\n}` : TS_EXTERNAL.RECORD,
67
- ),
68
- };
69
- },
70
- [SCHEMA_TYPES.ENUM]: (parsedSchema) => {
71
- return {
72
- ...parsedSchema,
73
- content: parsedSchema.$ref
74
- ? parsedSchema.typeName
75
- : _.uniq(
76
- _.compact([
77
- ..._.map(parsedSchema.content, ({ value }) => `${value}`),
78
- parsedSchema.nullable && TS_KEYWORDS.NULL,
79
- ]),
80
- ).join(" | "),
81
- };
82
- },
83
- };
84
-
85
- const formatObjectContent = (content) => {
86
- return _.map(content, (part) => {
87
- const extraSpace = " ";
88
- const result = `${extraSpace}${part.field},\n`;
89
-
90
- const comments = _.uniq(
91
- _.compact([
92
- part.title,
93
- part.description,
94
- part.deprecated && ` * @deprecated`,
95
- !_.isUndefined(part.format) && `@format ${part.format}`,
96
- !_.isUndefined(part.minimum) && `@min ${part.minimum}`,
97
- !_.isUndefined(part.maximum) && `@max ${part.maximum}`,
98
- !_.isUndefined(part.pattern) && `@pattern ${part.pattern}`,
99
- !_.isUndefined(part.example) &&
100
- `@example ${_.isObject(part.example) ? JSON.stringify(part.example) : part.example}`,
101
- ]).reduce((acc, comment) => [...acc, ...comment.split(/\n/g)], []),
102
- );
103
-
104
- const commonText = comments.length
105
- ? [
106
- ...(comments.length === 1
107
- ? [`/** ${comments[0]} */`]
108
- : ["/**", ...comments.map((commentPart) => ` * ${commentPart}`), " */"]),
109
- ]
110
- .map((part) => `${extraSpace}${part}\n`)
111
- .join("")
112
- : "";
113
-
114
- return `${commonText}${result}`;
115
- }).join("");
116
- };
117
-
118
- module.exports = {
119
- formatters,
120
- inlineExtraFormatters,
121
- };