my-q-format-response-aws-lambda 1.0.62 → 2.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 (3) hide show
  1. package/index.js +59 -39
  2. package/index.ts +68 -59
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseMessageResponse = exports.controlResponseNull = exports.normaliseMongoPaginate = exports.normaliseMongoFilter = exports.optionsPaginationParams = exports.messagesREST = exports.CreateResponse = exports.ResponseVO = exports.ResponseBodyVO = exports.StatusCode = exports.StatusResult = void 0;
3
+ exports.parseMessageResponse = exports.controlResponseNull = exports.normaliseMongoPaginate = exports.normaliseMongoFilter = exports.optionsPaginationParams = exports.messagesREST = exports.CreateResponse = exports.bodyToString = exports.ResponseBodyJSON = exports.ResponseBodyVOFull = exports.ResponseBodyVO = exports.ResponseBodyVOBase = exports.StatusCode = exports.StatusResult = void 0;
4
4
  class StatusResult {
5
5
  }
6
6
  exports.StatusResult = StatusResult;
@@ -61,7 +61,7 @@ StatusCode.Forbidden = 403;
61
61
  StatusCode.InternalServerError = 500;
62
62
  StatusCode.NotImplemented = 501;
63
63
  StatusCode.BadGateway = 502;
64
- class ResponseBodyVO {
64
+ class ResponseBodyVOBase {
65
65
  constructor() {
66
66
  this.statusResult = StatusResult.ok;
67
67
  this.message = '';
@@ -70,19 +70,35 @@ class ResponseBodyVO {
70
70
  this.error = null;
71
71
  this.info = null;
72
72
  this.identity = null;
73
+ }
74
+ }
75
+ exports.ResponseBodyVOBase = ResponseBodyVOBase;
76
+ class ResponseBodyVO extends ResponseBodyVOBase {
77
+ constructor() {
78
+ super(...arguments);
73
79
  this.redirectTo = undefined;
80
+ this.token = null;
81
+ this.bodyWrap = true;
74
82
  }
75
83
  }
76
84
  exports.ResponseBodyVO = ResponseBodyVO;
77
- class ResponseVO {
85
+ class ResponseBodyVOFull extends ResponseBodyVO {
86
+ constructor() {
87
+ super(...arguments);
88
+ this.statusCode = StatusCode.OK;
89
+ }
90
+ }
91
+ exports.ResponseBodyVOFull = ResponseBodyVOFull;
92
+ class ResponseBodyJSON {
78
93
  constructor() {
79
94
  this.statusCode = StatusCode.OK;
80
95
  this.body = '';
81
96
  }
82
97
  }
83
- exports.ResponseVO = ResponseVO;
84
- class Result {
85
- constructor({ statusCode = StatusCode.OK, statusResult = StatusResult.ok, message, data = null, count = null, error = null, info = null, identity = null, redirectTo = undefined, bodyWrap = true, }) {
98
+ exports.ResponseBodyJSON = ResponseBodyJSON;
99
+ class Result extends ResponseBodyVOFull {
100
+ constructor({ statusCode = StatusCode.OK, statusResult = StatusResult.ok, message, data = null, count = null, error = null, info = null, identity = null, redirectTo = undefined, token = null, bodyWrap = true, }) {
101
+ super();
86
102
  this.statusCode = statusCode;
87
103
  this.statusResult = statusResult;
88
104
  this.message = !message ? '' : message;
@@ -92,32 +108,35 @@ class Result {
92
108
  this.info = info;
93
109
  this.identity = identity;
94
110
  this.redirectTo = redirectTo;
111
+ this.token = token;
95
112
  this.bodyWrap = bodyWrap;
96
113
  }
97
- /**
98
- * Serverless: According to the API Gateway specs, the body content must be stringified
99
- * If use to AWS Appsync need response value without body wrap
100
- */
101
- bodyToString() {
102
- let _err = this.error && this.error.message ? this.error.message : !this.error ? null : JSON.stringify(this.error);
103
- const valueBody = {
104
- statusResult: this.statusResult,
105
- message: this.message,
106
- data: this.data,
107
- count: this.count,
108
- error: _err,
109
- info: this.info,
110
- identity: this.identity,
111
- };
112
- if (this.redirectTo)
113
- valueBody.redirectTo = this.redirectTo;
114
- const valueBodyWrap = {
115
- statusCode: this.statusCode,
116
- body: JSON.stringify(valueBody),
117
- };
118
- return this.bodyWrap ? valueBodyWrap : valueBody;
119
- }
120
114
  }
115
+ /**
116
+ * Serverless: According to the API Gateway specs, the body content must be stringified
117
+ * If use to AWS Appsync need response value without body wrap
118
+ */
119
+ const bodyToString = (result) => {
120
+ let _err = result.error && result.error.message ? result.error.message : !result.error ? null : JSON.stringify(result.error);
121
+ const valueBody = {
122
+ statusResult: result.statusResult,
123
+ message: result.message,
124
+ data: result.data,
125
+ count: result.count,
126
+ error: _err,
127
+ info: result.info,
128
+ identity: result.identity,
129
+ token: result.token,
130
+ };
131
+ if (result.redirectTo)
132
+ valueBody.redirectTo = result.redirectTo;
133
+ const valueBodyWrap = {
134
+ statusCode: result.statusCode,
135
+ body: JSON.stringify(valueBody),
136
+ };
137
+ return result.bodyWrap ? valueBodyWrap : valueBody;
138
+ };
139
+ exports.bodyToString = bodyToString;
121
140
  class CreateResponse {
122
141
  /**
123
142
  * Success
@@ -126,7 +145,7 @@ class CreateResponse {
126
145
  * @param message
127
146
  * @param bodyWrap
128
147
  */
129
- static success({ data = null, count = null, message = 'success', bodyWrap = true, info = null, identity = null, }) {
148
+ static success({ data = null, count = null, message = 'success', bodyWrap = true, info = null, identity = null, token = null, }) {
130
149
  const result = new Result({
131
150
  statusCode: StatusCode.OK,
132
151
  statusResult: StatusResult.ok,
@@ -136,8 +155,9 @@ class CreateResponse {
136
155
  bodyWrap,
137
156
  info,
138
157
  identity,
158
+ token,
139
159
  });
140
- return result.bodyToString();
160
+ return result;
141
161
  }
142
162
  /**
143
163
  * Created
@@ -155,7 +175,7 @@ class CreateResponse {
155
175
  info,
156
176
  identity,
157
177
  });
158
- return result.bodyToString();
178
+ return result;
159
179
  }
160
180
  /**
161
181
  * Update
@@ -173,7 +193,7 @@ class CreateResponse {
173
193
  info,
174
194
  identity,
175
195
  });
176
- return result.bodyToString();
196
+ return result;
177
197
  }
178
198
  /**
179
199
  * Update or Create
@@ -191,7 +211,7 @@ class CreateResponse {
191
211
  info,
192
212
  identity,
193
213
  });
194
- return result.bodyToString();
214
+ return result;
195
215
  }
196
216
  /**
197
217
  * Not Found
@@ -209,7 +229,7 @@ class CreateResponse {
209
229
  bodyWrap,
210
230
  identity,
211
231
  });
212
- return result.bodyToString();
232
+ return result;
213
233
  }
214
234
  /**
215
235
  * Error
@@ -228,7 +248,7 @@ class CreateResponse {
228
248
  bodyWrap,
229
249
  identity,
230
250
  });
231
- return result.bodyToString();
251
+ return result;
232
252
  }
233
253
  /**
234
254
  * Unauthorized
@@ -247,7 +267,7 @@ class CreateResponse {
247
267
  bodyWrap,
248
268
  identity,
249
269
  });
250
- return result.bodyToString();
270
+ return result;
251
271
  }
252
272
  /**
253
273
  * Redirect
@@ -267,7 +287,7 @@ class CreateResponse {
267
287
  bodyWrap,
268
288
  identity,
269
289
  });
270
- return result.bodyToString();
290
+ return result;
271
291
  }
272
292
  /**
273
293
  * Custom
@@ -291,7 +311,7 @@ class CreateResponse {
291
311
  info,
292
312
  identity,
293
313
  });
294
- return result.bodyToString();
314
+ return result;
295
315
  }
296
316
  }
297
317
  exports.CreateResponse = CreateResponse;
package/index.ts CHANGED
@@ -76,6 +76,7 @@ type TError = any | null
76
76
  type TInfo = any | null
77
77
  type TIdentity = any | null
78
78
  type TRedirectTo = string | undefined
79
+ type TToken = string | null
79
80
 
80
81
  interface TResultIn {
81
82
  statusCode?: StatusCode
@@ -87,7 +88,8 @@ interface TResultIn {
87
88
  info?: TInfo
88
89
  identity?: TIdentity
89
90
  redirectTo?: TRedirectTo
90
- bodyWrap: boolean
91
+ token?: TToken
92
+ bodyWrap?: boolean
91
93
  }
92
94
 
93
95
  interface TFuncParams {
@@ -100,10 +102,11 @@ interface TFuncParams {
100
102
  data?: TData
101
103
  count?: TCount
102
104
  redirectTo?: TRedirectTo
105
+ token?: TToken
103
106
  bodyWrap?: boolean
104
107
  }
105
108
 
106
- export class ResponseBodyVO {
109
+ export class ResponseBodyVOBase {
107
110
  statusResult: StatusResult = StatusResult.ok
108
111
  message: string = ''
109
112
  data: TData = null
@@ -111,28 +114,26 @@ export class ResponseBodyVO {
111
114
  error: TError = null
112
115
  info: TInfo = null
113
116
  identity: TIdentity = null
117
+ }
118
+
119
+ export class ResponseBodyVO extends ResponseBodyVOBase {
114
120
  redirectTo?: TRedirectTo = undefined
121
+ token?: TToken = null
122
+ bodyWrap?: boolean = true
115
123
  }
116
124
 
117
- export class ResponseVO {
118
- statusCode: StatusCode = StatusCode.OK
119
- body: string = ''
125
+ export class ResponseBodyVOFull extends ResponseBodyVO {
126
+ statusCode?: StatusCode = StatusCode.OK
120
127
  }
121
128
 
122
- export type ResponseVoAWS = ResponseVO | ResponseBodyVO
129
+ export class ResponseBodyJSON {
130
+ statusCode?: StatusCode = StatusCode.OK
131
+ body: string = ''
132
+ }
123
133
 
124
- class Result {
125
- private statusCode: StatusCode
126
- private statusResult: StatusResult
127
- private message: string
128
- private data: TData
129
- private count: TCount
130
- private error: any
131
- private info: any
132
- private identity: any
133
- private redirectTo: TRedirectTo
134
- private bodyWrap: boolean
134
+ export type ResponseVoAWS = ResponseBodyJSON | ResponseBodyVO
135
135
 
136
+ class Result extends ResponseBodyVOFull {
136
137
  constructor({
137
138
  statusCode = StatusCode.OK,
138
139
  statusResult = StatusResult.ok,
@@ -143,8 +144,10 @@ class Result {
143
144
  info = null,
144
145
  identity = null,
145
146
  redirectTo = undefined,
147
+ token = null,
146
148
  bodyWrap = true,
147
149
  }: TResultIn) {
150
+ super()
148
151
  this.statusCode = statusCode
149
152
  this.statusResult = statusResult
150
153
  this.message = !message ? '' : message
@@ -154,34 +157,38 @@ class Result {
154
157
  this.info = info
155
158
  this.identity = identity
156
159
  this.redirectTo = redirectTo
160
+ this.token = token
157
161
  this.bodyWrap = bodyWrap
158
- }
162
+ }
163
+ }
164
+
159
165
 
160
166
  /**
161
167
  * Serverless: According to the API Gateway specs, the body content must be stringified
162
168
  * If use to AWS Appsync need response value without body wrap
163
169
  */
164
- bodyToString(): ResponseVoAWS {
165
- let _err = this.error && this.error.message ? this.error.message : !this.error ? null : JSON.stringify(this.error)
166
-
167
- const valueBody: ResponseBodyVO = {
168
- statusResult: this.statusResult,
169
- message: this.message,
170
- data: this.data,
171
- count: this.count,
170
+ export const bodyToString = (result: ResponseBodyVOFull): ResponseVoAWS => {
171
+ let _err = result.error && result.error.message ? result.error.message : !result.error ? null : JSON.stringify(result.error)
172
+
173
+ const valueBody: ResponseBodyVOFull = {
174
+ statusResult: result.statusResult,
175
+ message: result.message,
176
+ data: result.data,
177
+ count: result.count,
172
178
  error: _err,
173
- info: this.info,
174
- identity: this.identity,
179
+ info: result.info,
180
+ identity: result.identity,
181
+ token: result.token,
175
182
  }
176
- if (this.redirectTo) valueBody.redirectTo = this.redirectTo
177
- const valueBodyWrap: ResponseVO = {
178
- statusCode: this.statusCode,
183
+ if (result.redirectTo) valueBody.redirectTo = result.redirectTo
184
+ const valueBodyWrap: ResponseBodyJSON = {
185
+ statusCode: result.statusCode,
179
186
  body: JSON.stringify(valueBody),
180
187
  }
181
188
 
182
- return this.bodyWrap ? valueBodyWrap : valueBody
189
+ return result.bodyWrap ? valueBodyWrap : valueBody
183
190
  }
184
- }
191
+
185
192
 
186
193
  export class CreateResponse {
187
194
  /**
@@ -198,7 +205,8 @@ export class CreateResponse {
198
205
  bodyWrap = true,
199
206
  info = null,
200
207
  identity = null,
201
- }: TFuncParams): ResponseVoAWS {
208
+ token = null,
209
+ }: TFuncParams): ResponseBodyVO {
202
210
  const result = new Result({
203
211
  statusCode: StatusCode.OK,
204
212
  statusResult: StatusResult.ok,
@@ -208,8 +216,9 @@ export class CreateResponse {
208
216
  bodyWrap,
209
217
  info,
210
218
  identity,
211
- })
212
- return result.bodyToString()
219
+ token,
220
+ }) as ResponseBodyVOFull
221
+ return result
213
222
  }
214
223
 
215
224
  /**
@@ -224,7 +233,7 @@ export class CreateResponse {
224
233
  bodyWrap = true,
225
234
  info = null,
226
235
  identity = null,
227
- }: TFuncParams): ResponseVoAWS {
236
+ }: TFuncParams): ResponseBodyVO {
228
237
  const result = new Result({
229
238
  statusCode: StatusCode.Created,
230
239
  statusResult: StatusResult.ok,
@@ -233,8 +242,8 @@ export class CreateResponse {
233
242
  bodyWrap,
234
243
  info,
235
244
  identity,
236
- })
237
- return result.bodyToString()
245
+ }) as ResponseBodyVOFull
246
+ return result
238
247
  }
239
248
 
240
249
  /**
@@ -249,7 +258,7 @@ export class CreateResponse {
249
258
  bodyWrap = true,
250
259
  info = null,
251
260
  identity = null,
252
- }: TFuncParams): ResponseVoAWS {
261
+ }: TFuncParams): ResponseBodyVO {
253
262
  const result = new Result({
254
263
  statusCode: StatusCode.OK,
255
264
  statusResult: StatusResult.ok,
@@ -258,8 +267,8 @@ export class CreateResponse {
258
267
  bodyWrap,
259
268
  info,
260
269
  identity,
261
- })
262
- return result.bodyToString()
270
+ }) as ResponseBodyVOFull
271
+ return result
263
272
  }
264
273
 
265
274
  /**
@@ -274,7 +283,7 @@ export class CreateResponse {
274
283
  bodyWrap = true,
275
284
  info = null,
276
285
  identity = null,
277
- }: TFuncParams): ResponseVoAWS {
286
+ }: TFuncParams): ResponseBodyVO {
278
287
  const result = new Result({
279
288
  statusCode: StatusCode.OK,
280
289
  statusResult: StatusResult.ok,
@@ -283,8 +292,8 @@ export class CreateResponse {
283
292
  bodyWrap,
284
293
  info,
285
294
  identity,
286
- })
287
- return result.bodyToString()
295
+ }) as ResponseBodyVOFull
296
+ return result
288
297
  }
289
298
 
290
299
  /**
@@ -293,7 +302,7 @@ export class CreateResponse {
293
302
  * @param message
294
303
  * @param bodyWrap
295
304
  */
296
- static notFound({ error = null, message = '', bodyWrap = true, identity = null }: TFuncParams): ResponseVoAWS {
305
+ static notFound({ error = null, message = '', bodyWrap = true, identity = null }: TFuncParams): ResponseBodyVO {
297
306
  const result = new Result({
298
307
  statusCode: StatusCode.NotFound,
299
308
  statusResult: StatusResult.notFound,
@@ -302,8 +311,8 @@ export class CreateResponse {
302
311
  error,
303
312
  bodyWrap,
304
313
  identity,
305
- })
306
- return result.bodyToString()
314
+ }) as ResponseBodyVOFull
315
+ return result
307
316
  }
308
317
 
309
318
  /**
@@ -319,7 +328,7 @@ export class CreateResponse {
319
328
  message = 'Error',
320
329
  bodyWrap = true,
321
330
  identity = null,
322
- }: TFuncParams): ResponseVoAWS {
331
+ }: TFuncParams): ResponseBodyVO {
323
332
  const result = new Result({
324
333
  statusCode,
325
334
  statusResult: StatusResult.error,
@@ -328,8 +337,8 @@ export class CreateResponse {
328
337
  message,
329
338
  bodyWrap,
330
339
  identity,
331
- })
332
- return result.bodyToString()
340
+ }) as ResponseBodyVOFull
341
+ return result
333
342
  }
334
343
 
335
344
  /**
@@ -345,7 +354,7 @@ export class CreateResponse {
345
354
  message = 'Unauthorized',
346
355
  bodyWrap = true,
347
356
  identity = null,
348
- }: TFuncParams): ResponseVoAWS {
357
+ }: TFuncParams): ResponseBodyVO {
349
358
  const result = new Result({
350
359
  statusCode,
351
360
  statusResult: StatusResult.unauthorized,
@@ -354,8 +363,8 @@ export class CreateResponse {
354
363
  message,
355
364
  bodyWrap,
356
365
  identity,
357
- })
358
- return result.bodyToString()
366
+ }) as ResponseBodyVOFull
367
+ return result
359
368
  }
360
369
 
361
370
  /**
@@ -371,7 +380,7 @@ export class CreateResponse {
371
380
  bodyWrap = true,
372
381
  redirectTo = '',
373
382
  identity = null,
374
- }: TFuncParams): ResponseVoAWS {
383
+ }: TFuncParams): ResponseBodyVO {
375
384
  const result = new Result({
376
385
  statusCode,
377
386
  statusResult: StatusResult.needRedirect,
@@ -381,8 +390,8 @@ export class CreateResponse {
381
390
  redirectTo,
382
391
  bodyWrap,
383
392
  identity,
384
- })
385
- return result.bodyToString()
393
+ }) as ResponseBodyVOFull
394
+ return result
386
395
  }
387
396
 
388
397
  /**
@@ -416,8 +425,8 @@ export class CreateResponse {
416
425
  bodyWrap,
417
426
  info,
418
427
  identity,
419
- })
420
- return result.bodyToString()
428
+ }) as ResponseBodyVOFull
429
+ return result
421
430
  }
422
431
  }
423
432
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "my-q-format-response-aws-lambda",
3
- "version": "1.0.62",
3
+ "version": "2.0.2",
4
4
  "homepage": "https://github.com/zhukyuri/my-q-format-response-aws-lambda",
5
5
  "description": "my-q-format-response-aws-lambda",
6
6
  "main": "index.js",