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.
- package/README.md +263 -41
- package/index.d.ts +97 -0
- package/index.js +242 -115
- package/package.json +121 -116
- package/src/code-formatter.js +101 -0
- package/src/code-gen-process.js +456 -0
- package/src/configuration.js +425 -0
- package/src/constants.js +14 -31
- package/src/index.js +20 -271
- package/src/schema-components-map.js +60 -0
- package/src/schema-parser/schema-formatters.js +145 -0
- package/src/schema-parser/schema-parser.js +497 -0
- package/src/schema-parser/schema-routes.js +902 -0
- package/src/swagger-schema-resolver.js +187 -0
- package/src/templates.js +174 -155
- package/src/translators/JavaScript.js +3 -14
- package/src/type-name.js +79 -0
- package/src/util/file-system.js +76 -0
- package/src/{utils → util}/id.js +9 -9
- package/src/util/internal-case.js +5 -0
- package/src/util/logger.js +100 -0
- package/src/{utils/resolveName.js → util/name-resolver.js} +94 -97
- package/src/util/object-assign.js +11 -0
- package/src/util/pascal-case.js +5 -0
- package/src/{utils → util}/random.js +14 -14
- package/templates/base/data-contract-jsdoc.ejs +29 -24
- package/templates/base/data-contracts.ejs +3 -3
- package/templates/base/interface-data-contract.ejs +1 -0
- package/templates/base/route-docs.ejs +3 -4
- package/templates/base/route-type.ejs +2 -2
- package/templates/default/procedure-call.ejs +2 -2
- package/templates/default/route-types.ejs +2 -2
- package/templates/modular/api.ejs +2 -2
- package/templates/modular/procedure-call.ejs +2 -2
- package/templates/modular/route-types.ejs +2 -2
- package/src/apiConfig.js +0 -30
- package/src/common.js +0 -28
- package/src/components.js +0 -91
- package/src/config.js +0 -106
- package/src/filePrefix.js +0 -14
- package/src/files.js +0 -56
- package/src/formatFileContent.js +0 -81
- package/src/logger.js +0 -59
- package/src/modelNames.js +0 -78
- package/src/modelTypes.js +0 -31
- package/src/output.js +0 -165
- package/src/prettierOptions.js +0 -23
- package/src/render/utils/fmtToJSDocLine.js +0 -10
- package/src/render/utils/index.js +0 -31
- package/src/render/utils/templateRequire.js +0 -17
- package/src/routeNames.js +0 -46
- package/src/routes.js +0 -809
- package/src/schema.js +0 -474
- package/src/swagger.js +0 -152
- package/src/typeFormatters.js +0 -121
package/src/typeFormatters.js
DELETED
|
@@ -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
|
-
};
|