pg-mvc-service 2.1.0 → 2.1.1
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/dist/PoolManager.d.ts +7 -0
- package/dist/PoolManager.d.ts.map +1 -0
- package/dist/Service.d.ts +82 -0
- package/dist/Service.d.ts.map +1 -0
- package/dist/Utils/DateTimeUtil.d.ts +58 -0
- package/dist/Utils/DateTimeUtil.d.ts.map +1 -0
- package/dist/Utils/NumberUtil.d.ts +10 -0
- package/dist/Utils/NumberUtil.d.ts.map +1 -0
- package/dist/Utils/StringUtil.d.ts +16 -0
- package/dist/Utils/StringUtil.d.ts.map +1 -0
- package/dist/clients/AwsS3Client.d.ts +35 -0
- package/dist/clients/AwsS3Client.d.ts.map +1 -0
- package/dist/clients/Base64Client.d.ts +31 -0
- package/dist/clients/Base64Client.d.ts.map +1 -0
- package/dist/clients/EncryptClient.d.ts +18 -0
- package/dist/clients/EncryptClient.d.ts.map +1 -0
- package/dist/clients/StringClient.d.ts +6 -0
- package/dist/clients/StringClient.d.ts.map +1 -0
- package/dist/cron/BaseCron.d.ts +35 -0
- package/dist/cron/BaseCron.d.ts.map +1 -0
- package/dist/cron/CronExecuter.d.ts +2 -0
- package/dist/cron/CronExecuter.d.ts.map +1 -0
- package/dist/cron/CronType.d.ts +6 -0
- package/dist/cron/CronType.d.ts.map +1 -0
- package/dist/documents/Swagger.d.ts +10 -0
- package/dist/documents/Swagger.d.ts.map +1 -0
- package/dist/exceptions/Exception.d.ts +31 -0
- package/dist/exceptions/Exception.d.ts.map +1 -0
- package/{src/index.ts → dist/index.d.ts} +2 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/models/ExpressionClient.d.ts +12 -0
- package/dist/models/ExpressionClient.d.ts.map +1 -0
- package/dist/models/MigrateDatabase.d.ts +19 -0
- package/dist/models/MigrateDatabase.d.ts.map +1 -0
- package/dist/models/MigrateRollback.d.ts +18 -0
- package/dist/models/MigrateRollback.d.ts.map +1 -0
- package/dist/models/MigrateTable.d.ts +13 -0
- package/dist/models/MigrateTable.d.ts.map +1 -0
- package/dist/models/SqlUtils/SelectExpression.d.ts +31 -0
- package/dist/models/SqlUtils/SelectExpression.d.ts.map +1 -0
- package/dist/models/SqlUtils/UpdateExpression.d.ts +8 -0
- package/dist/models/SqlUtils/UpdateExpression.d.ts.map +1 -0
- package/dist/models/SqlUtils/ValidateValueUtil.d.ts +19 -0
- package/dist/models/SqlUtils/ValidateValueUtil.d.ts.map +1 -0
- package/dist/models/SqlUtils/WhereExpression.d.ts +30 -0
- package/dist/models/SqlUtils/WhereExpression.d.ts.map +1 -0
- package/dist/models/TableDoc.d.ts +3 -0
- package/dist/models/TableDoc.d.ts.map +1 -0
- package/dist/models/TableModel.d.ts +196 -0
- package/dist/models/TableModel.d.ts.map +1 -0
- package/dist/models/Type.d.ts +64 -0
- package/dist/models/Type.d.ts.map +1 -0
- package/dist/models/Utils/MessageUtil.d.ts +7 -0
- package/dist/models/Utils/MessageUtil.d.ts.map +1 -0
- package/dist/models/ValidateClient.d.ts +27 -0
- package/dist/models/ValidateClient.d.ts.map +1 -0
- package/dist/reqestResponse/ReqResType.d.ts +113 -0
- package/dist/reqestResponse/ReqResType.d.ts.map +1 -0
- package/dist/reqestResponse/RequestType.d.ts +247 -0
- package/dist/reqestResponse/RequestType.d.ts.map +1 -0
- package/dist/reqestResponse/ResponseType.d.ts +85 -0
- package/dist/reqestResponse/ResponseType.d.ts.map +1 -0
- package/package.json +7 -1
- package/index.d.ts +0 -192
- package/src/PoolManager.ts +0 -48
- package/src/Service.ts +0 -307
- package/src/Utils/DateTimeUtil.ts +0 -146
- package/src/Utils/NumberUtil.ts +0 -23
- package/src/Utils/StringUtil.ts +0 -33
- package/src/clients/AwsS3Client.ts +0 -310
- package/src/clients/Base64Client.ts +0 -305
- package/src/clients/EncryptClient.ts +0 -100
- package/src/clients/StringClient.ts +0 -19
- package/src/cron/BaseCron.ts +0 -122
- package/src/cron/CronExecuter.ts +0 -34
- package/src/cron/CronType.ts +0 -25
- package/src/documents/Swagger.ts +0 -106
- package/src/exceptions/Exception.ts +0 -72
- package/src/models/ExpressionClient.ts +0 -72
- package/src/models/MigrateDatabase.ts +0 -135
- package/src/models/MigrateRollback.ts +0 -151
- package/src/models/MigrateTable.ts +0 -56
- package/src/models/SqlUtils/SelectExpression.ts +0 -102
- package/src/models/SqlUtils/UpdateExpression.ts +0 -29
- package/src/models/SqlUtils/ValidateValueUtil.ts +0 -354
- package/src/models/SqlUtils/WhereExpression.ts +0 -455
- package/src/models/TableDoc.ts +0 -372
- package/src/models/TableModel.ts +0 -749
- package/src/models/Type.ts +0 -62
- package/src/models/Utils/MessageUtil.ts +0 -60
- package/src/models/ValidateClient.ts +0 -182
- package/src/reqestResponse/ReqResType.ts +0 -241
- package/src/reqestResponse/RequestType.ts +0 -1619
- package/src/reqestResponse/ResponseType.ts +0 -549
- package/tsconfig.json +0 -14
|
@@ -1,549 +0,0 @@
|
|
|
1
|
-
import { ValidateStringUtil } from "type-utils-n-daira";
|
|
2
|
-
import StringUtil from "../Utils/StringUtil";
|
|
3
|
-
import ReqResType, { PropertyType } from "./ReqResType";
|
|
4
|
-
import { IError } from "../Service";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export class ResponseType extends ReqResType {
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Property to store response data
|
|
12
|
-
* レスポンスデータを格納するためのプロパティ
|
|
13
|
-
*/
|
|
14
|
-
public Data: {[key: string]: any} = {};
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Convert and retrieve data according to the type definition
|
|
18
|
-
* 型定義に従ってデータを変換して取得
|
|
19
|
-
* @returns {Object.<string, any>} Converted data, 変換されたデータ
|
|
20
|
-
*/
|
|
21
|
-
get ResponseData(): {[key: string]: any} {
|
|
22
|
-
let data: {[key: string]: any} = {};
|
|
23
|
-
for (const [key, property] of Object.entries(this.properties)) {
|
|
24
|
-
if (key in this.Data === false) {
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (this.Data[key] === undefined) {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (this.Data[key] === null || (property.type.replace("?", "") !== "string" && this.Data[key] === "")) {
|
|
33
|
-
data[key] = property.type.endsWith('?') ? null : undefined;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
switch (property.type) {
|
|
38
|
-
case 'object':
|
|
39
|
-
case 'object?':
|
|
40
|
-
data[key] = this.getObject([key]);
|
|
41
|
-
break;
|
|
42
|
-
case 'array':
|
|
43
|
-
case 'array?':
|
|
44
|
-
data[key] = this.getArray([key]);
|
|
45
|
-
break;
|
|
46
|
-
case 'map':
|
|
47
|
-
case 'map?':
|
|
48
|
-
data[key] = this.getMap([key]);
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
data[key] = this.getValue([key]);
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return data;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Retrieve object type data
|
|
61
|
-
* オブジェクト型のデータを取得
|
|
62
|
-
* @param {Array.<string|number>} keys - Path to the property, プロパティへのパス
|
|
63
|
-
* @returns {Object.<string, any>} Retrieved object data, 取得されたオブジェクトデータ
|
|
64
|
-
*/
|
|
65
|
-
private getObject(keys: Array<string | number>) {
|
|
66
|
-
|
|
67
|
-
let resData: {[key: string]: any} = {};
|
|
68
|
-
const data = this.getData(keys);
|
|
69
|
-
|
|
70
|
-
const objectProperty = this.getProperty(keys);
|
|
71
|
-
if (objectProperty.type !== 'object' && objectProperty.type !== 'object?') {
|
|
72
|
-
throw new Error(`getObjectメソッドでObject型以外が入力された場合はエラー\n keys: ${keys.join(',')}`);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
for (const key of Object.keys(objectProperty.properties)) {
|
|
76
|
-
if (key in data === false || data[key] === undefined) {
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const property = objectProperty.properties[key];
|
|
81
|
-
if (data[key] === null || (property.type.replace("?", "") !== "string" && data[key] === "")) {
|
|
82
|
-
resData[key] = property.type.endsWith('?') ? null : undefined;
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
switch (property.type) {
|
|
87
|
-
case 'object':
|
|
88
|
-
case 'object?':
|
|
89
|
-
resData[key] = this.getObject([...keys, key]);
|
|
90
|
-
break;
|
|
91
|
-
case 'array':
|
|
92
|
-
case 'array?':
|
|
93
|
-
resData[key] = this.getArray([...keys, key]);
|
|
94
|
-
break;
|
|
95
|
-
case 'map':
|
|
96
|
-
case 'map?':
|
|
97
|
-
resData[key] = this.getMap([...keys, key]);
|
|
98
|
-
break;
|
|
99
|
-
default:
|
|
100
|
-
resData[key] = this.getValue([...keys, key]);
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return resData;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Retrieve array type data
|
|
110
|
-
* 配列型のデータを取得
|
|
111
|
-
* @param {Array.<string|number>} keys - Path to the property, プロパティへのパス
|
|
112
|
-
* @returns {Array<any> | undefined} Retrieved array data, 取得された配列データ
|
|
113
|
-
*/
|
|
114
|
-
private getArray(keys: Array<string | number>) {
|
|
115
|
-
|
|
116
|
-
const data = this.getData(keys);
|
|
117
|
-
if (data === undefined || Array.isArray(data) === false) {
|
|
118
|
-
return undefined;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const arrayProperty = this.getProperty(keys);
|
|
122
|
-
if (arrayProperty.type !== 'array' && arrayProperty.type !== 'array?') {
|
|
123
|
-
throw new Error(`getArrayメソッドでArray型以外が入力された場合はエラー\n keys: ${keys.join(',')}`);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
let resData: Array<any> = [];
|
|
127
|
-
for (let i = 0;i < data.length; i++) {
|
|
128
|
-
switch (arrayProperty.item.type) {
|
|
129
|
-
case 'object':
|
|
130
|
-
case 'object?':
|
|
131
|
-
resData.push(this.getObject([...keys, i]));
|
|
132
|
-
break;
|
|
133
|
-
case 'array':
|
|
134
|
-
case 'array?':
|
|
135
|
-
resData.push(this.getArray([...keys, i]));
|
|
136
|
-
break;
|
|
137
|
-
case 'map':
|
|
138
|
-
case 'map?':
|
|
139
|
-
resData.push(this.getMap([...keys, i]));
|
|
140
|
-
break;
|
|
141
|
-
default:
|
|
142
|
-
resData.push(this.getValue([...keys, i]));
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return resData;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Retrieve array type data
|
|
152
|
-
* 配列型のデータを取得
|
|
153
|
-
* @param {Array.<string|number>} keys - Path to the property, プロパティへのパス
|
|
154
|
-
* @returns {Array<any> | undefined} Retrieved array data, 取得された配列データ
|
|
155
|
-
*/
|
|
156
|
-
private getMap(keys: Array<string | number>) {
|
|
157
|
-
|
|
158
|
-
const data = this.getData(keys);
|
|
159
|
-
if (data === undefined) {
|
|
160
|
-
return undefined;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const mapProperty = this.getProperty(keys);
|
|
164
|
-
if (mapProperty.type !== 'map' && mapProperty.type !== 'map?') {
|
|
165
|
-
throw new Error(`getMapメソッドでMap型以外が入力された場合はエラー\n keys: ${keys.join(',')}`);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const mapData: {[key: string]: string | number | boolean} = {};
|
|
169
|
-
for (const [key, value] of Object.entries(data)) {
|
|
170
|
-
switch (mapProperty.mapType) {
|
|
171
|
-
case 'number':
|
|
172
|
-
if (this.isNumber(value) === false) {
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
mapData[key] = Number(value);
|
|
176
|
-
break;
|
|
177
|
-
case 'string':
|
|
178
|
-
switch (typeof value) {
|
|
179
|
-
case 'number':
|
|
180
|
-
mapData[key] = value.toString();
|
|
181
|
-
break;
|
|
182
|
-
case 'string':
|
|
183
|
-
mapData[key] = value;
|
|
184
|
-
break;
|
|
185
|
-
default:
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
case 'bool':
|
|
189
|
-
switch (typeof value) {
|
|
190
|
-
case 'boolean':
|
|
191
|
-
mapData[key] = value;
|
|
192
|
-
case 'number':
|
|
193
|
-
if (value === 0 || value === 1) {
|
|
194
|
-
mapData[key] = value === 1;
|
|
195
|
-
}
|
|
196
|
-
break;
|
|
197
|
-
case 'string':
|
|
198
|
-
if (value !== 'true' && value !== 'false') {
|
|
199
|
-
mapData[key] = value === 'true';
|
|
200
|
-
}
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return mapData;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Retrieve data based on the provided keys
|
|
211
|
-
* 指定されたキーに基づいてデータを取得
|
|
212
|
-
* @param {Array.<string|number>} keys - Path to the data, データへのパス
|
|
213
|
-
* @returns {any} Retrieved data, 取得されたデータ
|
|
214
|
-
*/
|
|
215
|
-
private getData(keys: Array<string | number>) {
|
|
216
|
-
let data: any = this.Data;
|
|
217
|
-
for (let i = 0;i < keys.length;i++) {
|
|
218
|
-
const key = keys[i];
|
|
219
|
-
if (typeof key === 'number') {
|
|
220
|
-
data = data[key];
|
|
221
|
-
continue;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
data = data[key];
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return data;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Retrieve value based on the provided keys
|
|
232
|
-
* 指定されたキーに基づいて値を取得
|
|
233
|
-
* @param {Array.<string|number>} keys - Path to the value, 値へのパス
|
|
234
|
-
* @returns {string | number | boolean | null | undefined} Retrieved value, 取得された値
|
|
235
|
-
*/
|
|
236
|
-
private getValue(keys: Array<string | number>): string | number | boolean | null | undefined {
|
|
237
|
-
const property = this.getProperty(keys);
|
|
238
|
-
const value = this.getData(keys);
|
|
239
|
-
|
|
240
|
-
if (value === null) {
|
|
241
|
-
return property.type.endsWith('?') ? null : undefined;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
switch (property.type) {
|
|
245
|
-
case 'number':
|
|
246
|
-
case 'number?':
|
|
247
|
-
if (this.isNumber(value) === false) {
|
|
248
|
-
return undefined;
|
|
249
|
-
}
|
|
250
|
-
return Number(value);
|
|
251
|
-
case 'boolean':
|
|
252
|
-
case 'boolean?':
|
|
253
|
-
switch (typeof value) {
|
|
254
|
-
case 'boolean':
|
|
255
|
-
return value;
|
|
256
|
-
case 'number':
|
|
257
|
-
if (value !== 0 && value !== 1) {
|
|
258
|
-
return undefined;
|
|
259
|
-
}
|
|
260
|
-
return value === 1 ? true : false;
|
|
261
|
-
case 'string':
|
|
262
|
-
if (value !== 'true' && value !== 'false') {
|
|
263
|
-
return undefined;
|
|
264
|
-
}
|
|
265
|
-
return value === 'true' ? true : false;
|
|
266
|
-
default:
|
|
267
|
-
return undefined;
|
|
268
|
-
}
|
|
269
|
-
case 'string':
|
|
270
|
-
case 'string?':
|
|
271
|
-
switch (typeof value) {
|
|
272
|
-
case 'number':
|
|
273
|
-
return value.toString();
|
|
274
|
-
case 'string':
|
|
275
|
-
return value;
|
|
276
|
-
default:
|
|
277
|
-
return undefined;
|
|
278
|
-
}
|
|
279
|
-
case 'uuid':
|
|
280
|
-
case 'uuid?':
|
|
281
|
-
if (StringUtil.isUUID(value)) {
|
|
282
|
-
return value;
|
|
283
|
-
}
|
|
284
|
-
return undefined;
|
|
285
|
-
case 'mail':
|
|
286
|
-
case 'mail?':
|
|
287
|
-
if (ValidateStringUtil.isMail(value)) {
|
|
288
|
-
return value;
|
|
289
|
-
}
|
|
290
|
-
return undefined;
|
|
291
|
-
case 'date':
|
|
292
|
-
case 'date?':
|
|
293
|
-
if (value instanceof Date) {
|
|
294
|
-
const year = value.getFullYear();
|
|
295
|
-
const month = String(value.getMonth() + 1).padStart(2, '0');
|
|
296
|
-
const day = String(value.getDate()).padStart(2, '0');
|
|
297
|
-
return `${year}-${month}-${day}`;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
if (this.isYYYYMMDD(value) && this.isErrorDateTime(value) === false) {
|
|
301
|
-
return value;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
return undefined;
|
|
305
|
-
case 'time':
|
|
306
|
-
case 'time?':
|
|
307
|
-
if (this.isHHMM(value)) {
|
|
308
|
-
return `${value}`;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
if (this.isHHMMSS(value)) {
|
|
312
|
-
return (value as string).slice(0, 5);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
return undefined;
|
|
316
|
-
case 'datetime':
|
|
317
|
-
case 'datetime?':
|
|
318
|
-
if (value instanceof Date) {
|
|
319
|
-
const year = value.getFullYear();
|
|
320
|
-
const month = String(value.getMonth() + 1).padStart(2, '0');
|
|
321
|
-
const day = String(value.getDate()).padStart(2, '0');
|
|
322
|
-
const hours = String(value.getHours()).padStart(2, '0');
|
|
323
|
-
const minutes = String(value.getMinutes()).padStart(2, '0');
|
|
324
|
-
const seconds = String(value.getSeconds()).padStart(2, '0');
|
|
325
|
-
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
if (this.isYYYYMMDDhhmiss(value) && this.isErrorDateTime(value) === false) {
|
|
329
|
-
return value.replace('T', ' ');
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
return undefined;
|
|
333
|
-
case 'https':
|
|
334
|
-
case 'https?':
|
|
335
|
-
if (ValidateStringUtil.isHttps(value)) {
|
|
336
|
-
return value;
|
|
337
|
-
}
|
|
338
|
-
return undefined;
|
|
339
|
-
case 'base64':
|
|
340
|
-
case 'base64?':
|
|
341
|
-
if (ValidateStringUtil.isBase64(value)) {
|
|
342
|
-
return value;
|
|
343
|
-
}
|
|
344
|
-
return undefined;
|
|
345
|
-
case 'enum':
|
|
346
|
-
case 'enum?':
|
|
347
|
-
if (Object.keys(property.enums).includes(value)) {
|
|
348
|
-
return value;
|
|
349
|
-
}
|
|
350
|
-
return undefined;
|
|
351
|
-
case 'map':
|
|
352
|
-
case 'map?':
|
|
353
|
-
// if (Object.keys(property.enums).includes(value)) {
|
|
354
|
-
// return value;
|
|
355
|
-
// }
|
|
356
|
-
return undefined;
|
|
357
|
-
default:
|
|
358
|
-
return undefined;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
// ****************************************************************************
|
|
364
|
-
// for create swagger
|
|
365
|
-
// ****************************************************************************
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* Generates Swagger response definition
|
|
369
|
-
* Swaggerのレスポンス定義を生成します
|
|
370
|
-
* @returns {string} Swagger format response definition
|
|
371
|
-
* Swagger形式のレスポンス定義
|
|
372
|
-
*/
|
|
373
|
-
public createSwagger(errorList: Array<IError>, apiCode: string): string {
|
|
374
|
-
let ymlString = ` responses:
|
|
375
|
-
'200':
|
|
376
|
-
description: 成功事レスポンス
|
|
377
|
-
content:
|
|
378
|
-
application/json:
|
|
379
|
-
schema:
|
|
380
|
-
type: object
|
|
381
|
-
properties:`;
|
|
382
|
-
|
|
383
|
-
if (Object.keys(this.properties).length === 0) {
|
|
384
|
-
ymlString += ' {}\n';
|
|
385
|
-
} else {
|
|
386
|
-
ymlString += `\n`;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
let tabCount = 9;
|
|
390
|
-
const space = ' '.repeat(tabCount);
|
|
391
|
-
for (const [key, property] of Object.entries(this.properties)) {
|
|
392
|
-
|
|
393
|
-
ymlString += `${space}${key}:\n`;
|
|
394
|
-
ymlString += `${space} type: ${this.replaceFromPropertyTypeToSwagger(property)}\n`;
|
|
395
|
-
if (property.description !== undefined) {
|
|
396
|
-
const joinSpace = `\n${space} `;
|
|
397
|
-
ymlString += `${space} description: |${joinSpace}${property.description.replaceAll("\n", joinSpace)}\n`;
|
|
398
|
-
}
|
|
399
|
-
switch (property.type) {
|
|
400
|
-
case 'object':
|
|
401
|
-
case 'object?':
|
|
402
|
-
ymlString += this.makeSwaggerProperyFromObject([key], tabCount + 1);
|
|
403
|
-
break;
|
|
404
|
-
case 'array':
|
|
405
|
-
case 'array?':
|
|
406
|
-
ymlString += this.makeSwaggerPropertyFromArray([key], tabCount + 1);
|
|
407
|
-
break;
|
|
408
|
-
case 'map':
|
|
409
|
-
case 'map?':
|
|
410
|
-
ymlString += this.makeSwaggerPropertyFromDictionary([key], tabCount + 1);
|
|
411
|
-
break;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
// statusごとにグルーピング
|
|
416
|
-
const grouped: { [status: number]: IError[] } = {};
|
|
417
|
-
for (const error of errorList) {
|
|
418
|
-
if (grouped[error.status] === undefined) {
|
|
419
|
-
grouped[error.status] = [];
|
|
420
|
-
}
|
|
421
|
-
grouped[error.status].push(error);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
// 出力順(存在するものだけ出す)
|
|
425
|
-
const statusOrder: Array<IError['status']> = [400, 401, 404, 409, 422, 500];
|
|
426
|
-
|
|
427
|
-
for (const status of statusOrder) {
|
|
428
|
-
const list = grouped[status];
|
|
429
|
-
if (!list || list.length === 0) { continue; }
|
|
430
|
-
|
|
431
|
-
const descIndentJoin = '\n ';
|
|
432
|
-
|
|
433
|
-
if (list.length === 1) {
|
|
434
|
-
// 単一エラーは1行説明
|
|
435
|
-
ymlString += ` '${status}':
|
|
436
|
-
description: ${list[0].description}${list[0].code !== '' ? ` > ${apiCode}-${list[0].code}` : ''}
|
|
437
|
-
`;
|
|
438
|
-
} else {
|
|
439
|
-
// 複数エラーは箇条書き
|
|
440
|
-
const bullets = list.map(e => `- ${e.description}${e.code !== '' ? ` > ${apiCode}-${e.code}` : ''}`).join(descIndentJoin);
|
|
441
|
-
ymlString += ` '${status}':
|
|
442
|
-
description: |${descIndentJoin}${bullets}
|
|
443
|
-
`;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
return ymlString;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* Generates Swagger properties from object type properties
|
|
452
|
-
* オブジェクト型のプロパティからSwaggerのプロパティを生成
|
|
453
|
-
* @param {Array.<string|number>} keys - Path to the properties
|
|
454
|
-
* プロパティへのパス
|
|
455
|
-
* @returns {string} Swagger format property definition
|
|
456
|
-
* Swagger形式のプロパティ定義
|
|
457
|
-
*/
|
|
458
|
-
private makeSwaggerProperyFromObject(keys: Array<string | number>, tabCount: number): string {
|
|
459
|
-
|
|
460
|
-
const objectProperty = this.getProperty(keys);
|
|
461
|
-
if (objectProperty.type !== 'object' && objectProperty.type !== 'object?') {
|
|
462
|
-
throw new Error(`makeSwaggerProperyFromObjectメソッドでObject型以外が入力された場合はエラー\n keys: ${keys.join(',')}`);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
const space = ' '.repeat(tabCount);
|
|
466
|
-
let ymlString = `${space}properties:\n`;
|
|
467
|
-
for (const key of Object.keys(objectProperty.properties)) {
|
|
468
|
-
const property = objectProperty.properties[key];
|
|
469
|
-
|
|
470
|
-
ymlString += `${space} ${key}:\n`;
|
|
471
|
-
ymlString += `${space} type: ${this.replaceFromPropertyTypeToSwagger(property)}\n`;
|
|
472
|
-
if (property.description !== undefined) {
|
|
473
|
-
const joinSpace = `\n${space} `;
|
|
474
|
-
ymlString += `${space} description: |${joinSpace}${property.description.replaceAll("\n", joinSpace)}\n`;
|
|
475
|
-
}
|
|
476
|
-
switch (property.type) {
|
|
477
|
-
case 'object':
|
|
478
|
-
case 'object?':
|
|
479
|
-
ymlString += this.makeSwaggerProperyFromObject([...keys, key], tabCount + 2);
|
|
480
|
-
break;
|
|
481
|
-
case 'array':
|
|
482
|
-
case 'array?':
|
|
483
|
-
ymlString += this.makeSwaggerPropertyFromArray([...keys, key], tabCount + 2);
|
|
484
|
-
break;
|
|
485
|
-
case 'map':
|
|
486
|
-
case 'map?':
|
|
487
|
-
ymlString += this.makeSwaggerPropertyFromDictionary([...keys, key], tabCount + 2);
|
|
488
|
-
break;
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
return ymlString;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
/**
|
|
496
|
-
* Generates Swagger properties from array type properties
|
|
497
|
-
* 配列型のプロパティからSwaggerのプロパティを生成
|
|
498
|
-
* @param {Array.<string|number>} keys - Path to the properties, プロパティへのパス
|
|
499
|
-
* @returns {string} Swagger format property definition, Swagger形式のプロパティ定義
|
|
500
|
-
*/
|
|
501
|
-
private makeSwaggerPropertyFromArray(keys: Array<string | number>, tabCount: number): string {
|
|
502
|
-
|
|
503
|
-
const arrayProperty = this.getProperty(keys);
|
|
504
|
-
if (arrayProperty.type !== 'array' && arrayProperty.type !== 'array?') {
|
|
505
|
-
throw new Error(`getArrayメソッドでArray型以外が入力された場合はエラー\n keys: ${keys.join(',')}`);
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
const space = ' '.repeat(tabCount);
|
|
509
|
-
let ymlString = `${space}items:\n`;
|
|
510
|
-
ymlString += `${space} type: ${this.replaceFromPropertyTypeToSwagger(arrayProperty.item)}\n`;
|
|
511
|
-
if (arrayProperty.item.description !== undefined) {
|
|
512
|
-
const joinSpace = `\n${space} `;
|
|
513
|
-
ymlString += `${space} description: |${joinSpace}${arrayProperty.item.description.replaceAll("\n", joinSpace)}\n`;
|
|
514
|
-
}
|
|
515
|
-
switch (arrayProperty.item.type) {
|
|
516
|
-
case 'object':
|
|
517
|
-
case 'object?':
|
|
518
|
-
ymlString += this.makeSwaggerProperyFromObject([...keys, 0], tabCount + 1);
|
|
519
|
-
break;
|
|
520
|
-
case 'array':
|
|
521
|
-
case 'array?':
|
|
522
|
-
ymlString += this.makeSwaggerPropertyFromArray([...keys, 0], tabCount + 1);
|
|
523
|
-
break;
|
|
524
|
-
case 'map':
|
|
525
|
-
case 'map?':
|
|
526
|
-
ymlString += this.makeSwaggerPropertyFromDictionary([...keys, 0], tabCount + 1);
|
|
527
|
-
break;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
return ymlString;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/**
|
|
534
|
-
* Generates Swagger properties from array type properties
|
|
535
|
-
* 配列型のプロパティからSwaggerのプロパティを生成
|
|
536
|
-
* @param {Array.<string|number>} keys - Path to the properties, プロパティへのパス
|
|
537
|
-
* @returns {string} Swagger format property definition, Swagger形式のプロパティ定義
|
|
538
|
-
*/
|
|
539
|
-
private makeSwaggerPropertyFromDictionary(keys: Array<string | number>, tabCount: number): string {
|
|
540
|
-
|
|
541
|
-
const property = this.getProperty(keys);
|
|
542
|
-
const space = ' '.repeat(tabCount);
|
|
543
|
-
let ymlString = `${space}properties:\n`;
|
|
544
|
-
ymlString += `${space} key:\n`;
|
|
545
|
-
ymlString += `${space} type: ${this.replaceFromPropertyTypeToSwagger(property)}\n`;
|
|
546
|
-
|
|
547
|
-
return ymlString;
|
|
548
|
-
}
|
|
549
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES6",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"esModuleInterop": true,
|
|
6
|
-
"lib": ["ES2021", "DOM"],
|
|
7
|
-
"forceConsistentCasingInFileNames": true,
|
|
8
|
-
"strict": true,
|
|
9
|
-
|
|
10
|
-
"outDir": "./dist",
|
|
11
|
-
"rootDir": "./src",
|
|
12
|
-
},
|
|
13
|
-
"include": ["src/**/*"]
|
|
14
|
-
}
|