swagger-typescript-api 10.0.0 → 10.0.2

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 (56) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +284 -260
  3. package/index.d.ts +7 -1
  4. package/index.js +115 -115
  5. package/package.json +116 -113
  6. package/src/apiConfig.js +30 -30
  7. package/src/common.js +28 -28
  8. package/src/components.js +3 -5
  9. package/src/config.js +4 -0
  10. package/src/constants.js +7 -0
  11. package/src/filePrefix.js +14 -14
  12. package/src/files.js +6 -6
  13. package/src/formatFileContent.js +13 -6
  14. package/src/index.js +271 -270
  15. package/src/logger.js +59 -59
  16. package/src/modelNames.js +78 -78
  17. package/src/modelTypes.js +31 -30
  18. package/src/output.js +165 -166
  19. package/src/prettierOptions.js +23 -23
  20. package/src/render/utils/fmtToJSDocLine.js +10 -10
  21. package/src/render/utils/index.js +31 -23
  22. package/src/render/utils/templateRequire.js +17 -17
  23. package/src/routeNames.js +46 -46
  24. package/src/routes.js +4 -1
  25. package/src/schema.js +87 -64
  26. package/src/swagger.js +4 -1
  27. package/src/templates.js +155 -132
  28. package/src/translators/JavaScript.js +60 -60
  29. package/src/typeFormatters.js +121 -75
  30. package/src/utils/id.js +9 -9
  31. package/src/utils/random.js +14 -14
  32. package/src/utils/resolveName.js +97 -97
  33. package/templates/README.md +17 -13
  34. package/templates/base/README.md +7 -7
  35. package/templates/base/data-contract-jsdoc.ejs +32 -0
  36. package/templates/base/data-contracts.ejs +28 -0
  37. package/templates/base/enum-data-contract.ejs +15 -0
  38. package/templates/base/{http-client.eta → http-client.ejs} +2 -2
  39. package/templates/base/http-clients/{axios-http-client.eta → axios-http-client.ejs} +133 -145
  40. package/templates/base/http-clients/{fetch-http-client.eta → fetch-http-client.ejs} +222 -222
  41. package/templates/base/interface-data-contract.ejs +10 -0
  42. package/templates/base/object-field-jsdoc.ejs +28 -0
  43. package/templates/base/{route-docs.eta → route-docs.ejs} +31 -31
  44. package/templates/base/{route-name.eta → route-name.ejs} +42 -42
  45. package/templates/base/{route-type.eta → route-type.ejs} +21 -21
  46. package/templates/base/type-data-contract.ejs +15 -0
  47. package/templates/default/README.md +6 -6
  48. package/templates/default/{api.eta → api.ejs} +65 -65
  49. package/templates/default/{procedure-call.eta → procedure-call.ejs} +98 -98
  50. package/templates/default/{route-types.eta → route-types.ejs} +28 -28
  51. package/templates/modular/README.md +6 -6
  52. package/templates/modular/{api.eta → api.ejs} +28 -28
  53. package/templates/modular/{procedure-call.eta → procedure-call.ejs} +98 -98
  54. package/templates/modular/{route-types.eta → route-types.ejs} +18 -18
  55. package/CHANGELOG.md +0 -866
  56. package/templates/base/data-contracts.eta +0 -45
package/src/index.js CHANGED
@@ -1,270 +1,271 @@
1
- #!/usr/bin/env node
2
-
3
- // Copyright (c) 2019-present acacode
4
- // Node module: swagger-typescript-api
5
- // This file is licensed under the MIT License.
6
- // License text available at https://opensource.org/licenses/MIT
7
- // Repository https://github.com/acacode/swagger-typescript-api
8
-
9
- const _ = require("lodash");
10
- const { parseSchemas } = require("./schema");
11
- const { parseRoutes, groupRoutes } = require("./routes");
12
- const { createApiConfig } = require("./apiConfig");
13
- const { prepareModelType } = require("./modelTypes");
14
- const { getSwaggerObject, fixSwaggerScheme, convertSwaggerObject } = require("./swagger");
15
- const { createComponentsMap, filterComponentsMap } = require("./components");
16
- const { createFile, pathIsExist, pathIsDir, createDir, cleanDir } = require("./files");
17
- const { addToConfig, config } = require("./config");
18
- const { getTemplates, getTemplatePaths, renderTemplate, getTemplate } = require("./templates");
19
- const constants = require("./constants");
20
- const { generateOutputFiles } = require("./output");
21
- const formatFileContent = require("./formatFileContent");
22
- const { logger } = require("./logger");
23
- const { ComponentTypeNameResolver } = require("./utils/resolveName");
24
- const { getPrettierOptions } = require("./prettierOptions");
25
-
26
- module.exports = {
27
- constants: constants,
28
- generateApi: ({
29
- input,
30
- output,
31
- url,
32
- spec,
33
- name: fileName,
34
- toJS: translateToJavaScript = config.toJS,
35
- modular,
36
- templates,
37
- generateResponses = config.generateResponses,
38
- defaultResponseAsSuccess = config.defaultResponseAsSuccess,
39
- generateRouteTypes = config.generateRouteTypes,
40
- generateClient = config.generateClient,
41
- httpClientType = config.httpClientType,
42
- generateUnionEnums = config.generateUnionEnums,
43
- addReadonly = config.addReadonly,
44
- moduleNameIndex = config.moduleNameIndex,
45
- moduleNameFirstTag = config.moduleNameFirstTag,
46
- extractRequestParams = config.extractRequestParams,
47
- extractRequestBody = config.extractRequestBody,
48
- extractResponseBody = config.extractResponseBody,
49
- extractResponseError = config.extractResponseError,
50
- defaultResponseType = config.defaultResponseType,
51
- unwrapResponseData = config.unwrapResponseData,
52
- disableThrowOnError = config.disableThrowOnError,
53
- sortTypes = config.sortTypes,
54
- singleHttpClient = config.singleHttpClient,
55
- prettier: prettierOptions = getPrettierOptions(),
56
- hooks: rawHooks,
57
- extraTemplates,
58
- enumNamesAsValues,
59
- disableStrictSSL = config.disableStrictSSL,
60
- disableProxy = config.disableProxy,
61
- cleanOutput,
62
- silent = config.silent,
63
- typePrefix = config.typePrefix,
64
- typeSuffix = config.typeSuffix,
65
- patch = config.patch,
66
- authorizationToken,
67
- apiClassName = config.apiClassName,
68
- }) =>
69
- new Promise((resolve, reject) => {
70
- addToConfig({
71
- defaultResponseAsSuccess,
72
- generateRouteTypes,
73
- generateClient,
74
- httpClientType,
75
- generateResponses,
76
- templates,
77
- generateUnionEnums,
78
- addReadonly,
79
- moduleNameIndex,
80
- moduleNameFirstTag,
81
- prettierOptions,
82
- modular,
83
- extractRequestParams,
84
- extractRequestBody,
85
- extractResponseBody,
86
- extractResponseError,
87
- hooks: _.merge(config.hooks, rawHooks || {}),
88
- enumNamesAsValues,
89
- disableStrictSSL,
90
- disableProxy,
91
- cleanOutput,
92
- defaultResponseType,
93
- unwrapResponseData,
94
- disableThrowOnError,
95
- sortTypes,
96
- singleHttpClient,
97
- constants,
98
- silent,
99
- toJS: translateToJavaScript,
100
- typePrefix,
101
- typeSuffix,
102
- patch,
103
- apiClassName,
104
- });
105
- (spec
106
- ? convertSwaggerObject(spec, { patch })
107
- : getSwaggerObject(input, url, disableStrictSSL, disableProxy, authorizationToken, { patch })
108
- )
109
- .then(({ usageSchema, originalSchema }) => {
110
- const templatePaths = getTemplatePaths(config);
111
-
112
- addToConfig({ templatePaths });
113
-
114
- const templatesToRender = getTemplates(config);
115
-
116
- logger.event("start generating your typescript api");
117
-
118
- fixSwaggerScheme(usageSchema, originalSchema);
119
-
120
- addToConfig({
121
- swaggerSchema: usageSchema,
122
- originalSchema,
123
- templatesToRender,
124
- });
125
-
126
- const { components } = usageSchema;
127
-
128
- addToConfig(config.hooks.onInit(config) || config);
129
-
130
- const componentsMap = createComponentsMap(components);
131
-
132
- const componentSchemasNames = filterComponentsMap(componentsMap, "schemas").map((c) => c.typeName);
133
-
134
- addToConfig({
135
- componentTypeNameResolver: new ComponentTypeNameResolver(componentSchemasNames),
136
- });
137
-
138
- const parsedSchemas = parseSchemas(components);
139
-
140
- config.routeNameDuplicatesMap.clear();
141
-
142
- const routes = parseRoutes({
143
- usageSchema,
144
- parsedSchemas,
145
- moduleNameIndex,
146
- moduleNameFirstTag,
147
- extractRequestParams,
148
- });
149
-
150
- const hasSecurityRoutes = routes.some((route) => route.security);
151
- const hasQueryRoutes = routes.some((route) => route.hasQuery);
152
- const hasFormDataRoutes = routes.some((route) => route.hasFormDataParams);
153
-
154
- const usageComponentSchemas = filterComponentsMap(componentsMap, "schemas");
155
- const sortByProperty = (o1, o2, propertyName) => {
156
- if (o1[propertyName] > o2[propertyName]) {
157
- return 1;
158
- }
159
- if (o1[propertyName] < o2[propertyName]) {
160
- return -1;
161
- }
162
- return 0;
163
- };
164
- const sortByTypeName = (o1, o2) => sortByProperty(o1, o2, "typeName");
165
-
166
- const sortByName = (o1, o2) => sortByProperty(o1, o2, "name");
167
-
168
- const sortSchemas = (schemas) => {
169
- if (config.sortTypes) {
170
- return schemas.sort(sortByTypeName).map((schema) => {
171
- if (schema.rawTypeData?.properties) {
172
- return {
173
- ...schema,
174
- rawTypeData: {
175
- ...schema.rawTypeData,
176
- $parsed: {
177
- ...schema.rawTypeData["$parsed"],
178
- content: schema.rawTypeData["$parsed"].content.sort(sortByName),
179
- },
180
- },
181
- };
182
- }
183
- return schema;
184
- });
185
- }
186
- return schemas;
187
- };
188
-
189
- const rawConfiguration = {
190
- apiConfig: createApiConfig(usageSchema),
191
- config,
192
- modelTypes: _.map(sortSchemas(usageComponentSchemas), prepareModelType),
193
- rawModelTypes: usageComponentSchemas,
194
- hasFormDataRoutes,
195
- hasSecurityRoutes,
196
- hasQueryRoutes,
197
- generateResponses,
198
- routes: groupRoutes(routes),
199
- extraTemplates,
200
- fileName,
201
- translateToJavaScript,
202
- utils: {
203
- ...require("./render/utils"),
204
- ...require("./common"),
205
- },
206
- };
207
-
208
- const configuration = config.hooks.onPrepareConfig(rawConfiguration) || rawConfiguration;
209
-
210
- if (pathIsExist(output)) {
211
- if (cleanOutput) {
212
- cleanDir(output);
213
- }
214
- } else {
215
- createDir(output);
216
- }
217
-
218
- const files = generateOutputFiles({
219
- modular,
220
- templatesToRender,
221
- configuration,
222
- });
223
-
224
- const isDirPath = pathIsDir(output);
225
-
226
- const generatedFiles = files.map((file) => {
227
- if (!isDirPath) return file;
228
-
229
- if (translateToJavaScript) {
230
- createFile({
231
- path: output,
232
- fileName: file.name,
233
- content: file.content,
234
- withPrefix: true,
235
- });
236
- createFile({
237
- path: output,
238
- fileName: file.declaration.name,
239
- content: file.declaration.content,
240
- withPrefix: true,
241
- });
242
- logger.success(`javascript api file`, file.name, `created in ${output}`);
243
- } else {
244
- createFile({
245
- path: output,
246
- fileName: file.name,
247
- content: file.content,
248
- withPrefix: true,
249
- });
250
- logger.success(`typescript api file`, file.name, `created in ${output}`);
251
- }
252
-
253
- return file;
254
- });
255
-
256
- resolve({
257
- files: generatedFiles,
258
- configuration,
259
- getTemplate,
260
- renderTemplate,
261
- createFile,
262
- formatTSContent: formatFileContent,
263
- });
264
- })
265
- .catch((e) => {
266
- reject(e);
267
- throw new Error("Swagger schema parse error!\r\n " + e);
268
- });
269
- }),
270
- };
1
+ #!/usr/bin/env node
2
+
3
+ // Copyright (c) 2019-present acacode
4
+ // Node module: swagger-typescript-api
5
+ // This file is licensed under the MIT License.
6
+ // License text available at https://opensource.org/licenses/MIT
7
+ // Repository https://github.com/acacode/swagger-typescript-api
8
+
9
+ const _ = require("lodash");
10
+ const { parseSchemas } = require("./schema");
11
+ const { parseRoutes, groupRoutes } = require("./routes");
12
+ const { createApiConfig } = require("./apiConfig");
13
+ const { prepareModelType } = require("./modelTypes");
14
+ const { getSwaggerObject, fixSwaggerScheme, convertSwaggerObject } = require("./swagger");
15
+ const { createComponentsMap, filterComponentsMap } = require("./components");
16
+ const { createFile, pathIsExist, pathIsDir, createDir, cleanDir } = require("./files");
17
+ const { addToConfig, config } = require("./config");
18
+ const { getTemplates, getTemplatePaths, renderTemplate, getTemplate } = require("./templates");
19
+ const constants = require("./constants");
20
+ const { generateOutputFiles } = require("./output");
21
+ const formatFileContent = require("./formatFileContent");
22
+ const { logger } = require("./logger");
23
+ const { ComponentTypeNameResolver } = require("./utils/resolveName");
24
+ const { getPrettierOptions } = require("./prettierOptions");
25
+
26
+ module.exports = {
27
+ constants: constants,
28
+ generateApi: ({
29
+ input,
30
+ output,
31
+ url,
32
+ spec,
33
+ name: fileName,
34
+ toJS: translateToJavaScript = config.toJS,
35
+ modular,
36
+ templates,
37
+ generateResponses = config.generateResponses,
38
+ defaultResponseAsSuccess = config.defaultResponseAsSuccess,
39
+ generateRouteTypes = config.generateRouteTypes,
40
+ generateClient = config.generateClient,
41
+ httpClientType = config.httpClientType,
42
+ generateUnionEnums = config.generateUnionEnums,
43
+ addReadonly = config.addReadonly,
44
+ moduleNameIndex = config.moduleNameIndex,
45
+ moduleNameFirstTag = config.moduleNameFirstTag,
46
+ extractRequestParams = config.extractRequestParams,
47
+ extractRequestBody = config.extractRequestBody,
48
+ extractResponseBody = config.extractResponseBody,
49
+ extractResponseError = config.extractResponseError,
50
+ defaultResponseType = config.defaultResponseType,
51
+ unwrapResponseData = config.unwrapResponseData,
52
+ disableThrowOnError = config.disableThrowOnError,
53
+ sortTypes = config.sortTypes,
54
+ singleHttpClient = config.singleHttpClient,
55
+ prettier: prettierOptions = getPrettierOptions(),
56
+ hooks: rawHooks,
57
+ extraTemplates,
58
+ enumNamesAsValues,
59
+ disableStrictSSL = config.disableStrictSSL,
60
+ disableProxy = config.disableProxy,
61
+ cleanOutput,
62
+ silent = config.silent,
63
+ typePrefix = config.typePrefix,
64
+ typeSuffix = config.typeSuffix,
65
+ patch = config.patch,
66
+ authorizationToken,
67
+ apiClassName = config.apiClassName,
68
+ debug = config.debug,
69
+ }) =>
70
+ new Promise((resolve, reject) => {
71
+ addToConfig({
72
+ defaultResponseAsSuccess,
73
+ generateRouteTypes,
74
+ generateClient,
75
+ httpClientType,
76
+ generateResponses,
77
+ templates,
78
+ generateUnionEnums,
79
+ addReadonly,
80
+ moduleNameIndex,
81
+ moduleNameFirstTag,
82
+ prettierOptions,
83
+ modular,
84
+ extractRequestParams,
85
+ extractRequestBody,
86
+ extractResponseBody,
87
+ extractResponseError,
88
+ hooks: _.merge(config.hooks, rawHooks || {}),
89
+ enumNamesAsValues,
90
+ disableStrictSSL,
91
+ disableProxy,
92
+ cleanOutput,
93
+ defaultResponseType,
94
+ unwrapResponseData,
95
+ disableThrowOnError,
96
+ sortTypes,
97
+ singleHttpClient,
98
+ constants,
99
+ silent,
100
+ toJS: translateToJavaScript,
101
+ typePrefix,
102
+ typeSuffix,
103
+ patch,
104
+ apiClassName,
105
+ debug,
106
+ });
107
+ (spec
108
+ ? convertSwaggerObject(spec, { patch })
109
+ : getSwaggerObject(input, url, disableStrictSSL, disableProxy, authorizationToken, { patch })
110
+ )
111
+ .then(({ usageSchema, originalSchema }) => {
112
+ const templatePaths = getTemplatePaths(config);
113
+
114
+ addToConfig({ templatePaths });
115
+
116
+ const templatesToRender = getTemplates(config);
117
+
118
+ logger.event("start generating your typescript api");
119
+
120
+ fixSwaggerScheme(usageSchema, originalSchema);
121
+
122
+ addToConfig({
123
+ swaggerSchema: usageSchema,
124
+ originalSchema,
125
+ templatesToRender,
126
+ });
127
+
128
+ const { components } = usageSchema;
129
+
130
+ addToConfig(config.hooks.onInit(config) || config);
131
+
132
+ const componentsMap = createComponentsMap(components);
133
+
134
+ const componentSchemasNames = filterComponentsMap(componentsMap, "schemas").map((c) => c.typeName);
135
+
136
+ addToConfig({
137
+ componentTypeNameResolver: new ComponentTypeNameResolver(componentSchemasNames),
138
+ });
139
+
140
+ const parsedSchemas = parseSchemas(components);
141
+
142
+ config.routeNameDuplicatesMap.clear();
143
+
144
+ const routes = parseRoutes({
145
+ usageSchema,
146
+ parsedSchemas,
147
+ moduleNameIndex,
148
+ moduleNameFirstTag,
149
+ extractRequestParams,
150
+ });
151
+
152
+ const hasSecurityRoutes = routes.some((route) => route.security);
153
+ const hasQueryRoutes = routes.some((route) => route.hasQuery);
154
+ const hasFormDataRoutes = routes.some((route) => route.hasFormDataParams);
155
+
156
+ const usageComponentSchemas = filterComponentsMap(componentsMap, "schemas");
157
+ const sortByProperty = (propertyName) => (o1, o2) => {
158
+ if (o1[propertyName] > o2[propertyName]) {
159
+ return 1;
160
+ }
161
+ if (o1[propertyName] < o2[propertyName]) {
162
+ return -1;
163
+ }
164
+ return 0;
165
+ };
166
+
167
+ const sortSchemas = (schemas) => {
168
+ if (config.sortTypes) {
169
+ return schemas.sort(sortByProperty("typeName")).map((schema) => {
170
+ if (schema.rawTypeData?.properties) {
171
+ return {
172
+ ...schema,
173
+ rawTypeData: {
174
+ ...schema.rawTypeData,
175
+ $parsed: schema.rawTypeData["$parsed"] && {
176
+ ...schema.rawTypeData["$parsed"],
177
+ content: Array.isArray(schema.rawTypeData["$parsed"].content)
178
+ ? schema.rawTypeData["$parsed"].content.sort(sortByProperty("name"))
179
+ : schema.rawTypeData["$parsed"].content,
180
+ },
181
+ },
182
+ };
183
+ }
184
+ return schema;
185
+ });
186
+ }
187
+ return schemas;
188
+ };
189
+
190
+ const rawConfiguration = {
191
+ apiConfig: createApiConfig(usageSchema),
192
+ config,
193
+ modelTypes: _.map(sortSchemas(usageComponentSchemas), prepareModelType),
194
+ rawModelTypes: usageComponentSchemas,
195
+ hasFormDataRoutes,
196
+ hasSecurityRoutes,
197
+ hasQueryRoutes,
198
+ generateResponses,
199
+ routes: groupRoutes(routes),
200
+ extraTemplates,
201
+ fileName,
202
+ translateToJavaScript,
203
+ utils: {
204
+ ...require("./render/utils"),
205
+ ...require("./common"),
206
+ },
207
+ };
208
+
209
+ const configuration = config.hooks.onPrepareConfig(rawConfiguration) || rawConfiguration;
210
+
211
+ if (pathIsExist(output)) {
212
+ if (cleanOutput) {
213
+ cleanDir(output);
214
+ }
215
+ } else {
216
+ createDir(output);
217
+ }
218
+
219
+ const files = generateOutputFiles({
220
+ modular,
221
+ templatesToRender,
222
+ configuration,
223
+ });
224
+
225
+ const isDirPath = pathIsDir(output);
226
+
227
+ const generatedFiles = files.map((file) => {
228
+ if (!isDirPath) return file;
229
+
230
+ if (translateToJavaScript) {
231
+ createFile({
232
+ path: output,
233
+ fileName: file.name,
234
+ content: file.content,
235
+ withPrefix: true,
236
+ });
237
+ createFile({
238
+ path: output,
239
+ fileName: file.declaration.name,
240
+ content: file.declaration.content,
241
+ withPrefix: true,
242
+ });
243
+ logger.success(`javascript api file`, file.name, `created in ${output}`);
244
+ } else {
245
+ createFile({
246
+ path: output,
247
+ fileName: file.name,
248
+ content: file.content,
249
+ withPrefix: true,
250
+ });
251
+ logger.success(`typescript api file`, file.name, `created in ${output}`);
252
+ }
253
+
254
+ return file;
255
+ });
256
+
257
+ resolve({
258
+ files: generatedFiles,
259
+ configuration,
260
+ getTemplate,
261
+ renderTemplate,
262
+ createFile,
263
+ formatTSContent: formatFileContent,
264
+ });
265
+ })
266
+ .catch((e) => {
267
+ reject(e);
268
+ throw new Error("Swagger schema parse error!\r\n " + e);
269
+ });
270
+ }),
271
+ };
package/src/logger.js CHANGED
@@ -1,59 +1,59 @@
1
- const _ = require("lodash");
2
- const { config } = require("./config");
3
- const { emojify, emoji } = require("node-emoji");
4
-
5
- /**
6
- *
7
- * @param {{ type: "warn" | "log" | "error", emojiName: keyof emoji, messages: unknown[] }} payload
8
- * @returns {void}
9
- */
10
- const createLogMessage = ({ type, emojiName, messages }) => {
11
- if (config.silent) return;
12
-
13
- const emoji = emojify(emojiName);
14
-
15
- console[type](
16
- emoji,
17
- " ",
18
- ..._.map(messages, (message) =>
19
- _.startsWith(message, "\n") ? `\n${emoji} ${message.replace(/\n/, "")}` : message,
20
- ),
21
- );
22
- };
23
-
24
- const logger = {
25
- log: (...messages) =>
26
- createLogMessage({
27
- type: "log",
28
- emojiName: ":sparkles:",
29
- messages,
30
- }),
31
- event: (...messages) =>
32
- createLogMessage({
33
- type: "log",
34
- emojiName: ":comet: ",
35
- messages,
36
- }),
37
- success: (...messages) =>
38
- createLogMessage({
39
- type: "log",
40
- emojiName: ":white_check_mark:",
41
- messages,
42
- }),
43
- warn: (...messages) =>
44
- createLogMessage({
45
- type: "warn",
46
- emojiName: ":warning: ",
47
- messages,
48
- }),
49
- error: (...messages) =>
50
- createLogMessage({
51
- type: "error",
52
- emojiName: ":exclamation:",
53
- messages,
54
- }),
55
- };
56
-
57
- module.exports = {
58
- logger,
59
- };
1
+ const _ = require("lodash");
2
+ const { config } = require("./config");
3
+ const { emojify, emoji } = require("node-emoji");
4
+
5
+ /**
6
+ *
7
+ * @param {{ type: "warn" | "log" | "error", emojiName: keyof emoji, messages: unknown[] }} payload
8
+ * @returns {void}
9
+ */
10
+ const createLogMessage = ({ type, emojiName, messages }) => {
11
+ if (config.silent) return;
12
+
13
+ const emoji = emojify(emojiName);
14
+
15
+ console[type](
16
+ emoji,
17
+ " ",
18
+ ..._.map(messages, (message) =>
19
+ _.startsWith(message, "\n") ? `\n${emoji} ${message.replace(/\n/, "")}` : message,
20
+ ),
21
+ );
22
+ };
23
+
24
+ const logger = {
25
+ log: (...messages) =>
26
+ createLogMessage({
27
+ type: "log",
28
+ emojiName: ":sparkles:",
29
+ messages,
30
+ }),
31
+ event: (...messages) =>
32
+ createLogMessage({
33
+ type: "log",
34
+ emojiName: ":comet: ",
35
+ messages,
36
+ }),
37
+ success: (...messages) =>
38
+ createLogMessage({
39
+ type: "log",
40
+ emojiName: ":white_check_mark:",
41
+ messages,
42
+ }),
43
+ warn: (...messages) =>
44
+ createLogMessage({
45
+ type: "warn",
46
+ emojiName: ":warning: ",
47
+ messages,
48
+ }),
49
+ error: (...messages) =>
50
+ createLogMessage({
51
+ type: "error",
52
+ emojiName: ":exclamation:",
53
+ messages,
54
+ }),
55
+ };
56
+
57
+ module.exports = {
58
+ logger,
59
+ };