lemon-core 3.0.0 → 3.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.
- package/README.md +11 -21
- package/dist/cores/cache-service.js +12 -12
- package/dist/cores/cache-service.js.map +1 -1
- package/dist/helpers/helpers.d.ts +266 -0
- package/dist/helpers/helpers.js +600 -0
- package/dist/helpers/helpers.js.map +1 -0
- package/dist/helpers/index.d.ts +10 -0
- package/dist/helpers/index.js +23 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/helpers.d.ts +243 -0
- package/dist/tools/helpers.js +593 -0
- package/dist/tools/helpers.js.map +1 -0
- package/package.json +1 -2
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.my_parrallel = exports.parseRange = exports.isUserAuthorized = exports.getIdentityId = exports.$event = exports.$slack = exports.$info = exports.$protocol = exports.$rand = exports.$T = void 0;
|
|
16
|
+
/**
|
|
17
|
+
* `helpers.ts`
|
|
18
|
+
* - helper functions used globally in project
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
22
|
+
* @date 2020-12-22 initial version
|
|
23
|
+
* @date 2021-12-21 protocol support `//self` url.
|
|
24
|
+
* @date 2021-12-23 optimize types of $protocol.
|
|
25
|
+
* @date 2022-03-17 addition text processing. (S2, P)
|
|
26
|
+
*
|
|
27
|
+
* @copyright (C) 2021 LemonCloud Co Ltd. - All Rights Reserved.
|
|
28
|
+
*/
|
|
29
|
+
const engine_1 = require("../engine/");
|
|
30
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
31
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
32
|
+
const cores_1 = __importDefault(require("../cores/"));
|
|
33
|
+
const test_helper_1 = require("../common/test-helper");
|
|
34
|
+
/**
|
|
35
|
+
* Helpers to transform data-types.
|
|
36
|
+
*/
|
|
37
|
+
exports.$T = {
|
|
38
|
+
/**
|
|
39
|
+
* transform to string w/ trim()
|
|
40
|
+
*/
|
|
41
|
+
S: (val, def = '') => `${val !== null && val !== void 0 ? val : def}`.trim(),
|
|
42
|
+
/**
|
|
43
|
+
* as string w/o white-space.
|
|
44
|
+
*/
|
|
45
|
+
S2: (val, def = '', delim = '') => `${val !== null && val !== void 0 ? val : def}`.replace(/\s+/g, delim),
|
|
46
|
+
/**
|
|
47
|
+
* transform to string[]
|
|
48
|
+
*/
|
|
49
|
+
SS: (val, def = []) => {
|
|
50
|
+
if (val === null || val === undefined)
|
|
51
|
+
return def;
|
|
52
|
+
if (typeof val === 'string')
|
|
53
|
+
return val ? val.split(',').map(_ => exports.$T.S(_, '').trim()) : def;
|
|
54
|
+
if (Array.isArray(val))
|
|
55
|
+
return val.length > 0 ? val.map(_ => exports.$T.S(_, '').trim()) : def;
|
|
56
|
+
return [exports.$T.S(val)];
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* text to Plain text (remove html tag)
|
|
60
|
+
*/
|
|
61
|
+
P: (text, max = 0) => {
|
|
62
|
+
const msg = (typeof text === 'string' ? text : `${text || ''}`)
|
|
63
|
+
.replace(/<[^>]*>/g, ' ') //! remove html tag.
|
|
64
|
+
.replace(/[^a-zA-Z0-9가-힣ㅋ-ㅎㅏ-ㅣ\.\?]+/g, ' ') //! remove non-char.
|
|
65
|
+
.trim();
|
|
66
|
+
const len = msg.length;
|
|
67
|
+
return max && len > max ? msg.substring(0, max) + '...' : msg;
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* transform to number(integer).
|
|
71
|
+
*/
|
|
72
|
+
N: (val, def = 0) => {
|
|
73
|
+
const n = engine_1.$U.N(val, def);
|
|
74
|
+
return Number.isNaN(n) ? def : n;
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* number array
|
|
78
|
+
*/
|
|
79
|
+
NN: (val, def = []) => {
|
|
80
|
+
if (val === null || val === undefined)
|
|
81
|
+
return def;
|
|
82
|
+
if (typeof val === 'string')
|
|
83
|
+
return val ? val.split(',').map(_ => exports.$T.N(_, 0)) : def;
|
|
84
|
+
if (Array.isArray(val))
|
|
85
|
+
return val.length > 0 ? val.map(_ => exports.$T.N(_, 0)) : def;
|
|
86
|
+
return [exports.$T.N(val)];
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* transform to number(float)
|
|
90
|
+
*/
|
|
91
|
+
F: (val, def = 0) => engine_1.$U.F(val, def),
|
|
92
|
+
/**
|
|
93
|
+
* transform to number(float)[]
|
|
94
|
+
*/
|
|
95
|
+
FF: (val, def = []) => {
|
|
96
|
+
if (val === null || val === undefined)
|
|
97
|
+
return def;
|
|
98
|
+
if (typeof val === 'string')
|
|
99
|
+
return val ? val.split(',').map(_ => exports.$T.F(_, 0)) : def;
|
|
100
|
+
if (Array.isArray(val))
|
|
101
|
+
return val.length > 0 ? val.map(_ => exports.$T.F(_, 0)) : def;
|
|
102
|
+
return [exports.$T.F(val)];
|
|
103
|
+
},
|
|
104
|
+
B: (val, def = 0) => {
|
|
105
|
+
if (val === null || val === undefined)
|
|
106
|
+
return def;
|
|
107
|
+
if (typeof val === 'boolean')
|
|
108
|
+
return val ? 1 : 0;
|
|
109
|
+
if (typeof val === 'string' && ['y', 'yes', 't', 'true'].includes(val.toLowerCase()))
|
|
110
|
+
return 1;
|
|
111
|
+
return engine_1.$U.N(val, def) && 1;
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* transform to Time number via string | number.
|
|
115
|
+
*/
|
|
116
|
+
T: (val, def = 0) => {
|
|
117
|
+
const checkVal = `${val || ''}`.includes('-');
|
|
118
|
+
if (checkVal) {
|
|
119
|
+
if (engine_1.$U.dt(val))
|
|
120
|
+
return engine_1.$U.dt(val).getTime();
|
|
121
|
+
else
|
|
122
|
+
throw new Error(`@val[${val}] is invalid!`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return engine_1.$U.dt(engine_1.$U.N(val, def)).getTime();
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
/**
|
|
129
|
+
* transform to Date formatted string
|
|
130
|
+
*/
|
|
131
|
+
D: (val, def = '') => {
|
|
132
|
+
let s = exports.$T.S(val);
|
|
133
|
+
let y;
|
|
134
|
+
let m;
|
|
135
|
+
let d;
|
|
136
|
+
if (s.includes('-')) {
|
|
137
|
+
[y, m, d] = s.split('-');
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
y = s.slice(0, 4);
|
|
141
|
+
m = s.slice(4, 6);
|
|
142
|
+
d = s.slice(6);
|
|
143
|
+
}
|
|
144
|
+
s = [y, m, d]
|
|
145
|
+
.filter(e => (e === null || e === void 0 ? void 0 : e.length) > 0)
|
|
146
|
+
.map(e => e.padStart(2, '0'))
|
|
147
|
+
.join('-');
|
|
148
|
+
if (y && y.length === 4 && !Number.isNaN(Date.parse(s)))
|
|
149
|
+
return s;
|
|
150
|
+
return def;
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* date-time format
|
|
154
|
+
*/
|
|
155
|
+
DT: (val, def = '2020-01-01') => {
|
|
156
|
+
const s = exports.$T.D(val, '').split('-'); // must be valid date-format like '2000-01-02'
|
|
157
|
+
const d = def.split('-');
|
|
158
|
+
return d
|
|
159
|
+
.map((d, i) => s[i] || d || '01')
|
|
160
|
+
.map(e => e.padStart(2, '0'))
|
|
161
|
+
.join('-');
|
|
162
|
+
},
|
|
163
|
+
/**
|
|
164
|
+
* Extract Text
|
|
165
|
+
*/
|
|
166
|
+
EX: (data, txt1, txt2) => {
|
|
167
|
+
data = `${data || ''}`;
|
|
168
|
+
const a = data.indexOf(txt1);
|
|
169
|
+
const b = a >= 0 ? data.indexOf(txt2, a + txt1.length) : a;
|
|
170
|
+
return b > a ? data.substring(a + txt1.length, b) : '';
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* transform to simple-set.
|
|
174
|
+
* @param val json object.
|
|
175
|
+
*/
|
|
176
|
+
simples: (val, throws = false) => {
|
|
177
|
+
//! validate if simple-type (string | number | null | undefined)
|
|
178
|
+
const t = typeof val;
|
|
179
|
+
if (val === undefined)
|
|
180
|
+
return undefined;
|
|
181
|
+
else if (val === null || val === '')
|
|
182
|
+
return { _: null };
|
|
183
|
+
else if (t === 'string' || t === 'number')
|
|
184
|
+
return { _: val };
|
|
185
|
+
else if (t === 'object' && !Array.isArray(val)) {
|
|
186
|
+
const keys = Object.keys(val);
|
|
187
|
+
const reName = /^[a-z_][a-zA-Z0-9_\-]*$/;
|
|
188
|
+
return keys.reduce((N, k) => {
|
|
189
|
+
const v = val[k];
|
|
190
|
+
if (v === undefined) {
|
|
191
|
+
//! NOP
|
|
192
|
+
}
|
|
193
|
+
else if (reName.test(k)) {
|
|
194
|
+
const t = typeof v;
|
|
195
|
+
if (v === null || v === '')
|
|
196
|
+
N[k] = null;
|
|
197
|
+
else if (t === 'string' || t === 'number')
|
|
198
|
+
N[k] = v;
|
|
199
|
+
else if (throws)
|
|
200
|
+
throw new Error(`.${k}[${v}] is invalid!`);
|
|
201
|
+
}
|
|
202
|
+
else if (throws)
|
|
203
|
+
throw new Error(`.${k} is invalid format!`);
|
|
204
|
+
return N;
|
|
205
|
+
}, {});
|
|
206
|
+
}
|
|
207
|
+
else if (throws)
|
|
208
|
+
throw new Error(`@val[${t}] is invalid!`);
|
|
209
|
+
return {};
|
|
210
|
+
},
|
|
211
|
+
/**
|
|
212
|
+
* catch string between txt1 and txt2
|
|
213
|
+
* @param data string
|
|
214
|
+
* @param txt1 head
|
|
215
|
+
* @param txt2 tail
|
|
216
|
+
*/
|
|
217
|
+
catch: (data, txt1, txt2) => {
|
|
218
|
+
data = typeof data == 'string' ? data : `${data}`;
|
|
219
|
+
const a = data.indexOf(txt1);
|
|
220
|
+
const b = a >= 0 ? data.indexOf(txt2, a + txt1.length) : a;
|
|
221
|
+
const c = b > a ? data.substring(a + txt1.length, b) : '';
|
|
222
|
+
return c;
|
|
223
|
+
},
|
|
224
|
+
/**
|
|
225
|
+
* merge simple-set from $org to $new
|
|
226
|
+
* @param $org the origin set
|
|
227
|
+
* @param $new the update set.
|
|
228
|
+
*/
|
|
229
|
+
merge: ($org, $new) => {
|
|
230
|
+
if (!$new)
|
|
231
|
+
return $org;
|
|
232
|
+
return Object.keys($new).reduce((N, k) => {
|
|
233
|
+
const val = $new[k];
|
|
234
|
+
if (val === null || val === undefined)
|
|
235
|
+
delete N[k];
|
|
236
|
+
else
|
|
237
|
+
N[k] = val;
|
|
238
|
+
return N;
|
|
239
|
+
}, Object.assign({}, $org));
|
|
240
|
+
},
|
|
241
|
+
/**
|
|
242
|
+
* replace message with template.
|
|
243
|
+
*/
|
|
244
|
+
template: (msg, set) => {
|
|
245
|
+
// const msg = $U.env('MSG_PHONE_CODE', '인증 번호는 [{code}] 입니다.') as string;
|
|
246
|
+
const tmp = Object.assign({}, set);
|
|
247
|
+
return msg.replace(/\{(\w+)\}/g, (a, b) => (tmp[b] !== undefined ? `${tmp[b]}` : `{${b}}`));
|
|
248
|
+
},
|
|
249
|
+
/**
|
|
250
|
+
* make random-code by length
|
|
251
|
+
* @param size length of code
|
|
252
|
+
* @param rand flag to use random (0 => 0, 1 => max)
|
|
253
|
+
*/
|
|
254
|
+
makeRandomCode: (size = 6, rand) => {
|
|
255
|
+
const flag = rand === undefined || rand === true || typeof rand == 'number' ? true : false;
|
|
256
|
+
const min = size >= 1 ? Math.pow(10, size - 1) : 1;
|
|
257
|
+
const max = 10 * min - 1;
|
|
258
|
+
const val = min + (flag ? Math.floor((max - min) * (typeof rand == 'number' ? rand : Math.random())) : max - min);
|
|
259
|
+
return { val, min, max };
|
|
260
|
+
},
|
|
261
|
+
/**
|
|
262
|
+
* 객체 정규화 시킴.
|
|
263
|
+
* - null 에 대해서는 특별히 처리.
|
|
264
|
+
*/
|
|
265
|
+
normal: (N) => Object.keys(N || {}).reduce((M, k) => {
|
|
266
|
+
if (k.startsWith('_') || k.startsWith('$'))
|
|
267
|
+
return M;
|
|
268
|
+
const v = N[k];
|
|
269
|
+
//! `null` 은 DynamoDB에서 비어있는 문자임.
|
|
270
|
+
M[k] = v === null ? '' : v;
|
|
271
|
+
return M;
|
|
272
|
+
}, {}),
|
|
273
|
+
/**
|
|
274
|
+
* transform list to map by `id`
|
|
275
|
+
*/
|
|
276
|
+
asMap: (list, id = 'id') => list.reduce((M, N) => {
|
|
277
|
+
const key = `${N[id] || ''}`;
|
|
278
|
+
M[key] = N;
|
|
279
|
+
return M;
|
|
280
|
+
}, {}),
|
|
281
|
+
/**
|
|
282
|
+
* compare object, and extract the only diff properties.
|
|
283
|
+
*/
|
|
284
|
+
diff: (A, B, onlyValid = false) => {
|
|
285
|
+
if (!A || !B)
|
|
286
|
+
return B;
|
|
287
|
+
else if (typeof A !== 'object' || typeof B !== 'object')
|
|
288
|
+
return B;
|
|
289
|
+
return engine_1.$U
|
|
290
|
+
.diff(A, B)
|
|
291
|
+
.map(s => `${s || ''}`)
|
|
292
|
+
.reduce((M, k) => {
|
|
293
|
+
const org = A[k];
|
|
294
|
+
const val = B[k];
|
|
295
|
+
if (onlyValid) {
|
|
296
|
+
if (val !== undefined && val !== null) {
|
|
297
|
+
//! dynamo 에서는 null 과 '' 이 같음.
|
|
298
|
+
if (org === null && val === '') {
|
|
299
|
+
// NOP - due to same value.
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
M[k] = val;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
M[k] = val === undefined && org !== undefined ? null : val;
|
|
308
|
+
}
|
|
309
|
+
return M;
|
|
310
|
+
}, {});
|
|
311
|
+
},
|
|
312
|
+
/**
|
|
313
|
+
* get $perf instance.
|
|
314
|
+
* ```ts
|
|
315
|
+
* const p = $T.perf()
|
|
316
|
+
* const took = p.took();
|
|
317
|
+
*/
|
|
318
|
+
perf: () => {
|
|
319
|
+
return new (class MyPerfmance {
|
|
320
|
+
constructor(t0) {
|
|
321
|
+
this.took = () => {
|
|
322
|
+
const t1 = perf_hooks_1.performance.now(); // start of processing
|
|
323
|
+
const took = Math.round((t1 - this.t0) / 100) / 10; // in sec.
|
|
324
|
+
return took;
|
|
325
|
+
};
|
|
326
|
+
this.t0 = t0 || perf_hooks_1.performance.now(); // start of processing
|
|
327
|
+
}
|
|
328
|
+
})();
|
|
329
|
+
},
|
|
330
|
+
/**
|
|
331
|
+
* parse `.meta` property as object.
|
|
332
|
+
* @param meta any
|
|
333
|
+
*/
|
|
334
|
+
parseMeta: (meta) => {
|
|
335
|
+
if (typeof meta === 'string' && meta) {
|
|
336
|
+
try {
|
|
337
|
+
if (meta.startsWith('[') && meta.endsWith(']')) {
|
|
338
|
+
const list = JSON.parse(meta);
|
|
339
|
+
const $ret = { list };
|
|
340
|
+
return $ret;
|
|
341
|
+
}
|
|
342
|
+
else if (meta.startsWith('{') && meta.endsWith('}')) {
|
|
343
|
+
return JSON.parse(meta);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
const $ret = { type: 'string', value: meta };
|
|
347
|
+
return $ret;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
catch (e) {
|
|
351
|
+
const $ret = { type: 'string', value: meta, error: test_helper_1.GETERR(e) };
|
|
352
|
+
return $ret;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
else if (meta === null || meta === undefined) {
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
else if (typeof meta === 'object') {
|
|
359
|
+
return meta;
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
const type = typeof meta;
|
|
363
|
+
const $ret = { type, value: meta };
|
|
364
|
+
return $ret;
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
/**
|
|
369
|
+
* random number generator
|
|
370
|
+
*/
|
|
371
|
+
exports.$rand = {
|
|
372
|
+
/**
|
|
373
|
+
* list of number[] in n-size.
|
|
374
|
+
*/
|
|
375
|
+
range: (n) => [...Array(n).keys()],
|
|
376
|
+
/**
|
|
377
|
+
* generate random number
|
|
378
|
+
*/
|
|
379
|
+
float: (from, to) => Math.random() * (to - from) + from,
|
|
380
|
+
/**
|
|
381
|
+
* generate multiple float numbers
|
|
382
|
+
*/
|
|
383
|
+
floats: (from, to, n) => new Array(n).fill(0).map(() => exports.$rand.float(from, to)),
|
|
384
|
+
/**
|
|
385
|
+
* generate an integer
|
|
386
|
+
*/
|
|
387
|
+
integer: (from, to) => Math.floor(exports.$rand.float(Math.ceil(from), Math.floor(to))),
|
|
388
|
+
/**
|
|
389
|
+
* generate multiple integers
|
|
390
|
+
*/
|
|
391
|
+
integers: (from, to, n) => new Array(n).fill(0).map(() => exports.$rand.integer(from, to)),
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* builder to support protocol-service.
|
|
395
|
+
* @param context the current context (or service name).
|
|
396
|
+
* @param service service name
|
|
397
|
+
* @param options additional options.
|
|
398
|
+
*/
|
|
399
|
+
exports.$protocol = (context = {}, service, options) => {
|
|
400
|
+
//! for backward compartibility. shift arguments if 1st context is string.
|
|
401
|
+
const ctx = typeof context === 'string' ? {} : context;
|
|
402
|
+
service = typeof context === 'string' ? context : service;
|
|
403
|
+
const param = typeof context === 'string' ? service : options === null || options === void 0 ? void 0 : options.param;
|
|
404
|
+
const body = typeof context === 'string' ? param : options === null || options === void 0 ? void 0 : options.body;
|
|
405
|
+
if (!ctx)
|
|
406
|
+
throw new Error(`@context (NextContext) is required!`);
|
|
407
|
+
if (!service)
|
|
408
|
+
throw new Error(`@service (string) is required!`);
|
|
409
|
+
const $proto = cores_1.default.protocol.service;
|
|
410
|
+
const isProd = (options === null || options === void 0 ? void 0 : options.isProd) !== undefined ? options === null || options === void 0 ? void 0 : options.isProd : engine_1.$U.env('NS') === 'SS' ? true : false;
|
|
411
|
+
//TODO - `STAGE` is not changed from env.yml file @211215.
|
|
412
|
+
// _inf(NS, 'NS =', $U.env('NS'), $engine.cores.config.config.get('NS'), process.env['NS']);
|
|
413
|
+
// _inf(NS, 'stage =', $U.env('STAGE'), $engine.cores.config.config.get('STAGE'), process.env['STAGE']); //NOTE - STAGE is not changed.
|
|
414
|
+
//! prod용 lambda접근을 위한 환경 구성!!!!!
|
|
415
|
+
const $param = (p, b, x) => {
|
|
416
|
+
const protoParam = Object.assign(Object.assign({}, $proto.fromURL(ctx, asTargetUrl(), p || param, b || body)), x);
|
|
417
|
+
if (isProd)
|
|
418
|
+
protoParam.stage = 'prod';
|
|
419
|
+
return protoParam;
|
|
420
|
+
};
|
|
421
|
+
const $callback = (callback) => {
|
|
422
|
+
if (callback) {
|
|
423
|
+
const [path, qs] = callback.split('?');
|
|
424
|
+
if (path) {
|
|
425
|
+
const [type, id, cmd] = path.split('/');
|
|
426
|
+
const param = querystring_1.default.parse(qs);
|
|
427
|
+
return { type, id, cmd, param };
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
//! find the target protocol-url from context.
|
|
432
|
+
const asTargetUrl = () => {
|
|
433
|
+
if (!service.startsWith('//'))
|
|
434
|
+
throw new Error(`@service[${service}] (string) is invalid!`);
|
|
435
|
+
if (service.startsWith('//self/')) {
|
|
436
|
+
const self = $proto.myProtocolURI(ctx);
|
|
437
|
+
const [a, b] = [self.indexOf('@'), self.indexOf('#')];
|
|
438
|
+
const target = self.substring(a < 0 ? 'api://'.length : a + 1, b > a ? b : self.length) +
|
|
439
|
+
service.substring('//self'.length);
|
|
440
|
+
return `api://${target}`;
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
return `api:${service}`;
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
//! execute via protocol-service.
|
|
447
|
+
const execute = (param, body, mode = 'POST') => $proto.execute($param(param, body, { mode }));
|
|
448
|
+
// eslint-disable-next-line prettier/prettier
|
|
449
|
+
const enqueue = (param, body, mode = 'POST', callback, delaySeconds = 1) => $proto.enqueue($param(param, body, { mode }), $callback(callback), delaySeconds);
|
|
450
|
+
const notify = (param, body, mode = 'POST', callback) => $proto.notify($param(param, body, { mode }), $callback(callback));
|
|
451
|
+
//! returns instance.
|
|
452
|
+
return {
|
|
453
|
+
hello: () => `helper:protocol:${service || ''}`,
|
|
454
|
+
asTargetUrl,
|
|
455
|
+
execute,
|
|
456
|
+
enqueue,
|
|
457
|
+
notify,
|
|
458
|
+
};
|
|
459
|
+
};
|
|
460
|
+
/**
|
|
461
|
+
* get the current config info
|
|
462
|
+
*/
|
|
463
|
+
exports.$info = () => {
|
|
464
|
+
const $conf = cores_1.default.config.config;
|
|
465
|
+
const service = $conf.getService();
|
|
466
|
+
const version = $conf.getVersion();
|
|
467
|
+
const stage = $conf.getStage();
|
|
468
|
+
return { service, version, stage };
|
|
469
|
+
};
|
|
470
|
+
/**
|
|
471
|
+
* send message to slack/public
|
|
472
|
+
*
|
|
473
|
+
* @param title 헤터 타이틀
|
|
474
|
+
* @param text object or 텍스트 내용
|
|
475
|
+
* @param pretext (optional) 텍스트 미리보기용.
|
|
476
|
+
* @param params (optional) customize more options.
|
|
477
|
+
*/
|
|
478
|
+
exports.$slack = (title, text, pretext, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
479
|
+
var _a, _b;
|
|
480
|
+
//! about current service.................
|
|
481
|
+
const { service, version, stage } = exports.$info();
|
|
482
|
+
const name = `${service}#${version}` + (stage !== 'prod' ? `/${stage}` : '');
|
|
483
|
+
return engine_1.doReportSlack((params === null || params === void 0 ? void 0 : params.channel) ? `!${params === null || params === void 0 ? void 0 : params.channel}` : 'public', {
|
|
484
|
+
channel: (_a = params === null || params === void 0 ? void 0 : params.channel) !== null && _a !== void 0 ? _a : undefined,
|
|
485
|
+
attachments: [
|
|
486
|
+
{
|
|
487
|
+
color: `${(params === null || params === void 0 ? void 0 : params.color) || '#FFB71B' || 'good'}`,
|
|
488
|
+
title,
|
|
489
|
+
pretext: pretext !== null && pretext !== void 0 ? pretext : ((params === null || params === void 0 ? void 0 : params.scope) ? `#${name} [\`${params.scope}\`]` : undefined),
|
|
490
|
+
text: typeof text === 'string' ? text : engine_1.$U.json(text),
|
|
491
|
+
ts: Math.floor(engine_1.$U.current_time_ms() / 1000),
|
|
492
|
+
fields: params === null || params === void 0 ? void 0 : params.fields,
|
|
493
|
+
footer: (_b = params === null || params === void 0 ? void 0 : params.footer) !== null && _b !== void 0 ? _b : `${service}/${stage}#${version}`,
|
|
494
|
+
},
|
|
495
|
+
],
|
|
496
|
+
}, params === null || params === void 0 ? void 0 : params.context).catch(e => `#err:${test_helper_1.GETERR(e)}`);
|
|
497
|
+
});
|
|
498
|
+
/**
|
|
499
|
+
* event producer builder
|
|
500
|
+
* @param context current context
|
|
501
|
+
* @param defEndpoint (optional) the default endpoint.
|
|
502
|
+
*/
|
|
503
|
+
exports.$event = (context, defEndpoint = '') => {
|
|
504
|
+
const $protocol = cores_1.default.protocol;
|
|
505
|
+
const endpoint = engine_1.$U.env('EVENT_RELAY_SNS', defEndpoint);
|
|
506
|
+
if (!endpoint)
|
|
507
|
+
throw new Error(`env[EVENT_RELAY_SNS] is required - $event()`);
|
|
508
|
+
return {
|
|
509
|
+
publish: (body) => __awaiter(void 0, void 0, void 0, function* () { return $protocol.service.broadcast(context, endpoint, body); }),
|
|
510
|
+
};
|
|
511
|
+
};
|
|
512
|
+
/**
|
|
513
|
+
* authentication helper - get identity-id from context
|
|
514
|
+
* @param ctx
|
|
515
|
+
*/
|
|
516
|
+
function getIdentityId(ctx) {
|
|
517
|
+
var _a;
|
|
518
|
+
const identityId = (_a = ctx.identity) === null || _a === void 0 ? void 0 : _a.identityId;
|
|
519
|
+
// for localhost development
|
|
520
|
+
if (!identityId) {
|
|
521
|
+
const profile = process.env.NAME;
|
|
522
|
+
if (ctx.domain === 'localhost' && profile === 'lemon')
|
|
523
|
+
return 'ap-northeast-2:009fa3a9-173f-440b-be74-2cf83370b08b';
|
|
524
|
+
if (ctx.domain === 'localhost' && profile === 'colover')
|
|
525
|
+
return 'ap-northeast-2:cef62bef-2f3e-4775-893f-7addb6efbeb3';
|
|
526
|
+
}
|
|
527
|
+
return identityId;
|
|
528
|
+
}
|
|
529
|
+
exports.getIdentityId = getIdentityId;
|
|
530
|
+
/**
|
|
531
|
+
* authentication helper - check user is authorized
|
|
532
|
+
* - 이 메서드는 AWS IAM 인증 여부만을 확인한다.
|
|
533
|
+
* - 따라서 true를 반환한다고 하여 회원 가입이 되어있다는 의미는 아니다.
|
|
534
|
+
*
|
|
535
|
+
* @param ctx the current context
|
|
536
|
+
* @param param (optional) to override `identity` when running local.
|
|
537
|
+
*/
|
|
538
|
+
function isUserAuthorized(ctx, param) {
|
|
539
|
+
const identityId = getIdentityId(ctx);
|
|
540
|
+
//NOTE - local 실행이라면 넘기자...
|
|
541
|
+
if ((ctx === null || ctx === void 0 ? void 0 : ctx.clientIp) === '::1' && (ctx === null || ctx === void 0 ? void 0 : ctx.domain) === 'localhost') {
|
|
542
|
+
ctx.identity = Object.assign({}, param); //! override with parameter.
|
|
543
|
+
return true;
|
|
544
|
+
}
|
|
545
|
+
return !!identityId;
|
|
546
|
+
}
|
|
547
|
+
exports.isUserAuthorized = isUserAuthorized;
|
|
548
|
+
/**
|
|
549
|
+
* parse range expression
|
|
550
|
+
* @param exp range expression (e.g. '[63100 TO 224000]' or '[* TO 150000}')
|
|
551
|
+
*/
|
|
552
|
+
function parseRange(exp) {
|
|
553
|
+
const match = exp.match(/^([\[{])([0-9]+|\*) TO ([0-9]+|\*)([}\]])$/);
|
|
554
|
+
if (match && (match[2] !== '*' || match[3] !== '*')) {
|
|
555
|
+
const range = {};
|
|
556
|
+
if (match[2] !== '*') {
|
|
557
|
+
const n = exports.$T.N(match[2]);
|
|
558
|
+
if (match[1] === '[')
|
|
559
|
+
range.gte = n;
|
|
560
|
+
else if (match[1] === '{')
|
|
561
|
+
range.gt = n;
|
|
562
|
+
}
|
|
563
|
+
if (match[3] !== '*') {
|
|
564
|
+
const n = exports.$T.N(match[3]);
|
|
565
|
+
if (match[4] === ']')
|
|
566
|
+
range.lte = n;
|
|
567
|
+
else if (match[4] === '}')
|
|
568
|
+
range.lt = n;
|
|
569
|
+
}
|
|
570
|
+
return range;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
exports.parseRange = parseRange;
|
|
574
|
+
/**
|
|
575
|
+
* customized of `do_parrallel` for safe error-handling.
|
|
576
|
+
* - use `.error` to report the internal error.
|
|
577
|
+
*/
|
|
578
|
+
exports.my_parrallel = (list, func, size) => __awaiter(void 0, void 0, void 0, function* () {
|
|
579
|
+
const results = yield engine_1.do_parrallel(list, (item, i) => {
|
|
580
|
+
const ret = (() => {
|
|
581
|
+
try {
|
|
582
|
+
return func(item, i);
|
|
583
|
+
}
|
|
584
|
+
catch (e) {
|
|
585
|
+
return Promise.reject(e);
|
|
586
|
+
}
|
|
587
|
+
})();
|
|
588
|
+
const res = ret instanceof Promise ? ret : Promise.resolve(ret);
|
|
589
|
+
return res.catch(e => ({ id: item.id, error: test_helper_1.GETERR(e) }));
|
|
590
|
+
}, size);
|
|
591
|
+
return results;
|
|
592
|
+
});
|
|
593
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;GAYG;AACH,uCAA6D;AAC7D,8DAAsC;AACtC,2CAAyC;AACzC,sDAAsG;AACtG,uDAA+C;AAW/C;;GAEG;AACU,QAAA,EAAE,GAAG;IACd;;OAEG;IACH,CAAC,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,EAAE,EAAU,EAAE,CAAC,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,GAAG,EAAE,CAAC,IAAI,EAAE;IACzD;;OAEG;IACH,EAAE,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAU,EAAE,CAAC,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;IACtF;;OAEG;IACH,EAAE,EAAE,CAAC,GAAQ,EAAE,MAAM,EAAc,EAAY,EAAE;QAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5F,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvF,OAAO,CAAC,UAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD;;OAEG;IACH,CAAC,EAAE,CAAC,IAAY,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;aAC1D,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,oBAAoB;aAC7C,OAAO,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,oBAAoB;aAChE,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAClE,CAAC;IACD;;OAEG;IACH,CAAC,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,CAAC,EAAU,EAAE;QAC7B,MAAM,CAAC,GAAG,WAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD;;OAEG;IACH,EAAE,EAAE,CAAC,GAAQ,EAAE,MAAM,EAAc,EAAY,EAAE;QAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpF,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/E,OAAO,CAAC,UAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD;;OAEG;IACH,CAAC,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,CAAC,EAAU,EAAE,CAAC,WAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IAChD;;OAEG;IACH,EAAE,EAAE,CAAC,GAAQ,EAAE,MAAM,EAAc,EAAY,EAAE;QAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpF,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/E,OAAO,CAAC,UAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,CAAC,EAAE,CAAC,GAAQ,EAAE,MAAa,CAAC,EAAS,EAAE;QACnC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAY,CAAC;QAC3D,IAAI,OAAO,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;QAC/F,OAAO,WAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD;;OAEG;IACH,CAAC,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,CAAC,EAAU,EAAE;QAC7B,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE;YACV,IAAI,WAAE,CAAC,EAAE,CAAC,GAAG,CAAC;gBAAE,OAAO,WAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;gBACvC,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC;SACpD;aAAM;YACH,OAAO,WAAE,CAAC,EAAE,CAAC,WAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1C;IACL,CAAC;IACD;;OAEG;IACH,CAAC,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,EAAE,EAAU,EAAE;QAC9B,IAAI,CAAC,GAAG,UAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM;YACH,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,IAAG,CAAC,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC;IACf,CAAC;IACD;;OAEG;IACH,EAAE,EAAE,CAAC,GAAQ,EAAE,GAAG,GAAG,YAAY,EAAU,EAAE;QACzC,MAAM,CAAC,GAAG,UAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,8CAA8C;QAClF,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC;aACH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD;;OAEG;IACH,EAAE,EAAE,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE;QAC7C,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD;;;OAGG;IACH,OAAO,EAAE,CAAC,GAAQ,EAAE,SAAkB,KAAK,EAAa,EAAE;QACtD,gEAAgE;QAChE,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC;QACrB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;aACnC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;aACnD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;aACxD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,CAAS,EAAE,EAAE;gBAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,SAAS,EAAE;oBACjB,OAAO;iBACV;qBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACvB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;oBACnB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;yBACnC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;yBAC/C,IAAI,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBAC/D;qBAAM,IAAI,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC/D,OAAO,CAAC,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;SACV;aAAM,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC;IACd,CAAC;IACD;;;;;OAKG;IACH,KAAK,EAAE,CAAC,IAAS,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE;QAC7C,IAAI,GAAG,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,CAAC;IACb,CAAC;IACD;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAe,EAAE,IAAe,EAAE,EAAE;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAY,EAAE,CAAS,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;gBAC9C,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAChB,OAAO,CAAC,CAAC;QACb,CAAC,oBACI,IAAI,EACZ,CAAC;IACN,CAAC;IACD;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAW,EAAE,GAAuC,EAAE,EAAE;QAC/D,0EAA0E;QAC1E,MAAM,GAAG,qBAAa,GAAG,CAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,CAAC;IACD;;;;OAIG;IACH,cAAc,EAAE,CAAC,OAAe,CAAC,EAAE,IAAuB,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3F,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;QACzB,MAAM,GAAG,GACL,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAC1G,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD;;;OAGG;IACH,MAAM,EAAE,CAAa,CAAI,EAAE,EAAE,CACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAI,CAAC,CAAI,EAAE,CAAC,EAAK,EAAE;QAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,GAAI,CAAS,CAAC,CAAC,CAAC,CAAC;QACxB,iCAAiC;QAChC,CAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACb,CAAC,EAAE,EAAS,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,CAAI,IAAS,EAAE,KAAa,IAAI,EAAE,EAAE,CACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAuB,EAAE,CAAI,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,CAAC,CAAC;IACb,CAAC,EAAE,EAAE,CAAC;IACV;;OAEG;IACH,IAAI,EAAE,CAAU,CAAI,EAAE,CAAI,EAAE,SAAS,GAAG,KAAK,EAAK,EAAE;QAChD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;aAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAClE,OAAO,WAAE;aACJ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;aACtB,MAAM,CAAC,CAAC,CAAM,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,GAAG,GAAI,CAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAI,CAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,SAAS,EAAE;gBACX,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;oBACnC,8BAA8B;oBAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;wBAC5B,2BAA2B;qBAC9B;yBAAM;wBACH,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;qBACd;iBACJ;aACJ;iBAAM;gBACH,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;aAC9D;YACD,OAAO,CAAC,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,CAAC;IACD;;;;;OAKG;IACH,IAAI,EAAE,GAAG,EAAE;QACP,OAAO,IAAI,CAAC,MAAM,WAAW;YAEzB,YAAmB,EAAW;gBAGvB,SAAI,GAAG,GAAG,EAAE;oBACf,MAAM,EAAE,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;oBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;oBAC9D,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;gBANE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,wBAAW,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;YAC7D,CAAC;SAMJ,CAAC,EAAE,CAAC;IACT,CAAC;IACD;;;OAGG;IACH,SAAS,EAAE,CACP,IAAS,EACR,EAAE;QACH,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE;YAClC,IAAI;gBACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC5C,MAAM,IAAI,GAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,CAAC;oBAC3B,OAAO,IAAS,CAAC;iBACpB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;iBAChC;qBAAM;oBACH,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBAClD,OAAO,IAAI,CAAC;iBACf;aACJ;YAAC,OAAO,CAAC,EAAE;gBACR,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC;aACf;SACJ;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;YAC5C,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO,IAAS,CAAC;SACpB;aAAM;YACH,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC;YACzB,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ,CAAC;AAEF;;GAEG;AACU,QAAA,KAAK,GAAG;IACjB;;OAEG;IACH,KAAK,EAAE,CAAC,CAAS,EAAY,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD;;OAEG;IACH,KAAK,EAAE,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI;IAC/E;;OAEG;IACH,MAAM,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,CAAS,EAAY,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChH;;OAEG;IACH,OAAO,EAAE,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,CAAS,EAAY,EAAE,CACxD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;CAC9D,CAAC;AAEF;;;;;GAKG;AACU,QAAA,SAAS,GAAG,CACrB,UAAgC,EAAE,EAClC,OAAgB,EAChB,OAIC,EACH,EAAE;IACA,0EAA0E;IAC1E,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACvD,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,MAAM,KAAK,GAAQ,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;IAC1E,MAAM,IAAI,GAAQ,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IACtE,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAoB,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxD,MAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,SAAS,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC,CAAC,WAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACtG,0DAA0D;IAC1D,4FAA4F;IAC5F,uIAAuI;IACvI,iCAAiC;IACjC,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,CAAO,EAAE,EAAE;QACvC,MAAM,UAAU,mCACT,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,GACzD,CAAC,CACP,CAAC;QACF,IAAI,MAAM;YAAE,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC;QACtC,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,QAAiB,EAAE,EAAE;QACpC,IAAI,QAAQ,EAAE;YACV,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,IAAI,EAAE;gBACN,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,qBAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;aACnC;SACJ;IACL,CAAC,CAAC;IAEF,8CAA8C;IAC9C,MAAM,WAAW,GAAG,GAAW,EAAE;QAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC5F,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GACR,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,SAAS,MAAM,EAAE,CAAC;SAC5B;aAAM;YACH,OAAO,OAAO,OAAO,EAAE,CAAC;SAC3B;IACL,CAAC,CAAC;IACF,iCAAiC;IACjC,MAAM,OAAO,GAAG,CAAU,KAAW,EAAE,IAAU,EAAE,OAAe,MAAM,EAAc,EAAE,CACpF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,6CAA6C;IAC7C,MAAM,OAAO,GAAG,CAAQ,KAAW,EAAE,IAAU,EAAE,OAAe,MAAM,EAAE,QAAiB,EAAE,eAAuB,CAAC,EAAmB,EAAE,CACpI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,CAAC,KAAW,EAAE,IAAU,EAAE,OAAe,MAAM,EAAE,QAAiB,EAAmB,EAAE,CAClG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtE,qBAAqB;IACrB,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAmB,OAAO,IAAI,EAAE,EAAE;QAC/C,WAAW;QACX,OAAO;QACP,OAAO;QACP,MAAM;KACT,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACU,QAAA,KAAK,GAAG,GAAG,EAAE;IACtB,MAAM,KAAK,GAAG,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACU,QAAA,MAAM,GAAG,CAClB,KAAc,EACd,IAAsB,EACtB,OAAgB,EAChB,MAOC,EACH,EAAE;;IACA,0CAA0C;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,aAAK,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,sBAAa,CAChB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAC,CAAC,CAAC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAClD;QACI,OAAO,QAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,SAAS;QACrC,WAAW,EAAE;YACT;gBACI,KAAK,EAAE,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,SAAS,IAAI,MAAM,EAAE;gBAChD,KAAK;gBACL,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAC,CAAC,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrD,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,WAAE,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC;gBAC3C,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;gBACtB,MAAM,QAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,GAAG,OAAO,IAAI,KAAK,IAAI,OAAO,EAAE;aAC7D;SACJ;KACJ,EACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAClB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,oBAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAA,CAAC;AAEF;;;;GAIG;AACU,QAAA,MAAM,GAAG,CAAC,OAAoB,EAAE,cAAqB,EAAE,EAAE,EAAE;IACpE,MAAM,SAAS,GAAmB,eAAM,CAAC,QAAQ,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAE9E,OAAO;QACH,OAAO,EAAE,CAAO,IAA4B,EAAmB,EAAE,kDAC7D,OAAA,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA,GAAA;KAC3D,CAAC;AACN,CAAC,CAAC;AACF;;;GAGG;AACH,SAAgB,aAAa,CAAC,GAAgB;;IAC1C,MAAM,UAAU,SAAI,GAAG,CAAC,QAAgC,0CAAE,UAAU,CAAC;IACrE,4BAA4B;IAC5B,IAAI,CAAC,UAAU,EAAE;QACb,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,KAAK,OAAO;YACjD,OAAO,qDAAqD,CAAC;QACjE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,KAAK,SAAS;YACnD,OAAO,qDAAqD,CAAC;KACpE;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAXD,sCAWC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,GAAgB,EAAE,KAAW;IAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,2BAA2B;IAC3B,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,MAAK,KAAK,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,MAAK,WAAW,EAAE;QACxD,GAAG,CAAC,QAAQ,qBAAQ,KAAK,CAAE,CAAC,CAAC,4BAA4B;QACzD,OAAO,IAAI,CAAC;KACf;IACD,OAAO,CAAC,CAAC,UAAU,CAAC;AACxB,CAAC;AARD,4CAQC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACtE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;QACjD,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,UAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;iBAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,UAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;iBAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C;QACD,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAhBD,gCAgBC;AAED;;;GAGG;AACU,QAAA,YAAY,GAAG,CACxB,IAAS,EACT,IAA6C,EAC7C,IAAa,EACf,EAAE;IACA,MAAM,OAAO,GAAG,MAAM,qBAAY,CAC9B,IAAI,EACJ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACR,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;YACd,IAAI;gBACA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aACxB;YAAC,OAAO,CAAC,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC5B;QACL,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,GAAG,GAAG,GAAG,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,oBAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC,EACD,IAAI,CACP,CAAC;IACF,OAAQ,OAA0B,CAAC;AACvC,CAAC,CAAA,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lemon-core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "Lemon Serverless Micro-Service Platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"prepare": "npm run build",
|
|
25
25
|
"!prepublishOnly": "npm test && npm run lint && npm run format",
|
|
26
26
|
"!!prepublishOnly": "npm test && npm run lint",
|
|
27
|
-
"prepublishOnly": "npm test",
|
|
28
27
|
"!plato": "----- analysis code complexity -----",
|
|
29
28
|
"plato": "plato -r -d complexity dist"
|
|
30
29
|
},
|