lemon-core 2.2.20 → 3.1.0

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 (310) hide show
  1. package/README.md +12 -21
  2. package/dist/common/test-helper.js +20 -12
  3. package/dist/common/test-helper.js.map +1 -1
  4. package/dist/controllers/dummy-controller.js.map +1 -1
  5. package/dist/controllers/general-api-controller.js +5 -5
  6. package/dist/controllers/general-api-controller.js.map +1 -1
  7. package/dist/controllers/general-controller.js +2 -1
  8. package/dist/controllers/general-controller.js.map +1 -1
  9. package/dist/controllers/index.js +6 -2
  10. package/dist/controllers/index.js.map +1 -1
  11. package/dist/cores/api-service.js +19 -18
  12. package/dist/cores/api-service.js.map +1 -1
  13. package/dist/cores/aws/aws-kms-service.js +10 -14
  14. package/dist/cores/aws/aws-kms-service.js.map +1 -1
  15. package/dist/cores/aws/aws-s3-service.js +19 -18
  16. package/dist/cores/aws/aws-s3-service.js.map +1 -1
  17. package/dist/cores/aws/aws-sns-service.js +12 -12
  18. package/dist/cores/aws/aws-sns-service.js.map +1 -1
  19. package/dist/cores/aws/aws-sqs-service.js +12 -12
  20. package/dist/cores/aws/aws-sqs-service.js.map +1 -1
  21. package/dist/cores/aws/index.js +1 -1
  22. package/dist/cores/cache-service.js +33 -33
  23. package/dist/cores/cache-service.js.map +1 -1
  24. package/dist/cores/config/config-service.js +11 -10
  25. package/dist/cores/config/config-service.js.map +1 -1
  26. package/dist/cores/core-services.js +6 -2
  27. package/dist/cores/core-services.js.map +1 -1
  28. package/dist/cores/core-types.d.ts +92 -2
  29. package/dist/cores/core-types.js +1 -0
  30. package/dist/cores/core-types.js.map +1 -1
  31. package/dist/cores/dynamo-query-service.js +7 -7
  32. package/dist/cores/dynamo-query-service.js.map +1 -1
  33. package/dist/cores/dynamo-scan-service.js +8 -8
  34. package/dist/cores/dynamo-scan-service.js.map +1 -1
  35. package/dist/cores/dynamo-service.js +21 -21
  36. package/dist/cores/dynamo-service.js.map +1 -1
  37. package/dist/cores/elastic6-query-service.d.ts +42 -9
  38. package/dist/cores/elastic6-query-service.js +148 -138
  39. package/dist/cores/elastic6-query-service.js.map +1 -1
  40. package/dist/cores/elastic6-service.d.ts +144 -57
  41. package/dist/cores/elastic6-service.js +522 -346
  42. package/dist/cores/elastic6-service.js.map +1 -1
  43. package/dist/cores/http-storage-service.js +1 -1
  44. package/dist/cores/http-storage-service.js.map +1 -1
  45. package/dist/cores/index.d.ts +4 -4
  46. package/dist/cores/index.js +6 -2
  47. package/dist/cores/index.js.map +1 -1
  48. package/dist/cores/lambda/index.js +8 -4
  49. package/dist/cores/lambda/index.js.map +1 -1
  50. package/dist/cores/lambda/lambda-cognito-handler.js +2 -2
  51. package/dist/cores/lambda/lambda-cognito-handler.js.map +1 -1
  52. package/dist/cores/lambda/lambda-cron-handler.js +2 -2
  53. package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
  54. package/dist/cores/lambda/lambda-dynamo-stream-handler.js +23 -23
  55. package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
  56. package/dist/cores/lambda/lambda-handler.js +12 -11
  57. package/dist/cores/lambda/lambda-handler.js.map +1 -1
  58. package/dist/cores/lambda/lambda-notification-handler.js +10 -10
  59. package/dist/cores/lambda/lambda-notification-handler.js.map +1 -1
  60. package/dist/cores/lambda/lambda-sns-handler.js +13 -13
  61. package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
  62. package/dist/cores/lambda/lambda-sqs-handler.js +13 -13
  63. package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
  64. package/dist/cores/lambda/lambda-web-handler.js +58 -55
  65. package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
  66. package/dist/cores/lambda/lambda-wss-handler.js +16 -12
  67. package/dist/cores/lambda/lambda-wss-handler.js.map +1 -1
  68. package/dist/cores/model-manager.js +11 -11
  69. package/dist/cores/model-manager.js.map +1 -1
  70. package/dist/cores/protocol/protocol-service.d.ts +1 -2
  71. package/dist/cores/protocol/protocol-service.js +39 -36
  72. package/dist/cores/protocol/protocol-service.js.map +1 -1
  73. package/dist/cores/proxy-storage-service.js +7 -10
  74. package/dist/cores/proxy-storage-service.js.map +1 -1
  75. package/dist/cores/redis-storage-service.js +13 -13
  76. package/dist/cores/redis-storage-service.js.map +1 -1
  77. package/dist/cores/storage-service.js +8 -6
  78. package/dist/cores/storage-service.js.map +1 -1
  79. package/dist/engine/builder.d.ts +1 -0
  80. package/dist/engine/builder.js +28 -21
  81. package/dist/engine/builder.js.map +1 -1
  82. package/dist/engine/engine.js +55 -45
  83. package/dist/engine/engine.js.map +1 -1
  84. package/dist/engine/index.d.ts +0 -1
  85. package/dist/engine/index.js +9 -7
  86. package/dist/engine/index.js.map +1 -1
  87. package/dist/engine/types.d.ts +0 -4
  88. package/dist/engine/types.js.map +1 -1
  89. package/dist/engine/utilities.d.ts +5 -1
  90. package/dist/engine/utilities.js +146 -36
  91. package/dist/engine/utilities.js.map +1 -1
  92. package/dist/environ.js +13 -6
  93. package/dist/environ.js.map +1 -1
  94. package/dist/exec-cli.js +26 -26
  95. package/dist/exec-cli.js.map +1 -1
  96. package/dist/helpers/helpers.d.ts +266 -0
  97. package/dist/helpers/helpers.js +606 -0
  98. package/dist/helpers/helpers.js.map +1 -0
  99. package/dist/helpers/index.d.ts +10 -0
  100. package/dist/helpers/index.js +27 -0
  101. package/dist/helpers/index.js.map +1 -0
  102. package/dist/index.d.ts +6 -5
  103. package/dist/index.js +8 -3
  104. package/dist/index.js.map +1 -1
  105. package/dist/lib/dynamo/expressions.js +35 -27
  106. package/dist/lib/dynamo/expressions.js.map +1 -1
  107. package/dist/lib/dynamo/query.js +24 -20
  108. package/dist/lib/dynamo/query.js.map +1 -1
  109. package/dist/lib/dynamo/scan.js +17 -13
  110. package/dist/lib/dynamo/scan.js.map +1 -1
  111. package/dist/lib/dynamo/serializer.js +11 -7
  112. package/dist/lib/dynamo/serializer.js.map +1 -1
  113. package/dist/lib/dynamo/utils.js +19 -14
  114. package/dist/lib/dynamo/utils.js.map +1 -1
  115. package/dist/lib/dynamodb-value.js +3 -3
  116. package/dist/lib/dynamodb-value.js.map +1 -1
  117. package/dist/lib/index.js +6 -2
  118. package/dist/lib/index.js.map +1 -1
  119. package/dist/tools/express.js +21 -18
  120. package/dist/tools/express.js.map +1 -1
  121. package/dist/tools/index.js +6 -2
  122. package/dist/tools/index.js.map +1 -1
  123. package/dist/tools/shared.js +12 -6
  124. package/dist/tools/shared.js.map +1 -1
  125. package/package.json +15 -21
  126. package/CHANGELOG.md +0 -61
  127. package/dist/docs/assets/css/main.css +0 -2321
  128. package/dist/docs/assets/images/icons.png +0 -0
  129. package/dist/docs/assets/images/icons@2x.png +0 -0
  130. package/dist/docs/assets/images/widgets.png +0 -0
  131. package/dist/docs/assets/images/widgets@2x.png +0 -0
  132. package/dist/docs/assets/js/main.js +0 -1
  133. package/dist/docs/assets/js/search.js +0 -3
  134. package/dist/docs/classes/abstractmanager.html +0 -1054
  135. package/dist/docs/classes/apiproxyclient.html +0 -509
  136. package/dist/docs/classes/apiservice.html +0 -805
  137. package/dist/docs/classes/awskmsservice.html +0 -468
  138. package/dist/docs/classes/awsmodule.html +0 -353
  139. package/dist/docs/classes/awss3service.html +0 -563
  140. package/dist/docs/classes/awssnsservice.html +0 -543
  141. package/dist/docs/classes/awssqsservice.html +0 -517
  142. package/dist/docs/classes/cacheservice.html +0 -996
  143. package/dist/docs/classes/configmodule.html +0 -311
  144. package/dist/docs/classes/dummycacheservice.html +0 -1000
  145. package/dist/docs/classes/dummycontroller.html +0 -709
  146. package/dist/docs/classes/dummydynamoservice.html +0 -915
  147. package/dist/docs/classes/dummyelastic6service.html +0 -791
  148. package/dist/docs/classes/dummyredisstorageservice.html +0 -804
  149. package/dist/docs/classes/dummystoragemaker.html +0 -383
  150. package/dist/docs/classes/dummystorageservice.html +0 -592
  151. package/dist/docs/classes/dynamoqueryservice.html +0 -413
  152. package/dist/docs/classes/dynamoscanservice.html +0 -358
  153. package/dist/docs/classes/dynamoservice.html +0 -844
  154. package/dist/docs/classes/dynamostorageservice.html +0 -623
  155. package/dist/docs/classes/elastic6queryservice.html +0 -458
  156. package/dist/docs/classes/elastic6service.html +0 -804
  157. package/dist/docs/classes/generalapicontroller.html +0 -877
  158. package/dist/docs/classes/generalcontroller.html +0 -454
  159. package/dist/docs/classes/generalcontrollerlocal.html +0 -499
  160. package/dist/docs/classes/generalcontrollerlocal2.html +0 -523
  161. package/dist/docs/classes/generalkeymaker.html +0 -335
  162. package/dist/docs/classes/generalmodelfilter.html +0 -529
  163. package/dist/docs/classes/generalwebcontroller.html +0 -580
  164. package/dist/docs/classes/hangulservice.html +0 -636
  165. package/dist/docs/classes/httpstorageservice.html +0 -539
  166. package/dist/docs/classes/lambdacognitohandler.html +0 -355
  167. package/dist/docs/classes/lambdacronhandler.html +0 -390
  168. package/dist/docs/classes/lambdacronhandlerlocal.html +0 -371
  169. package/dist/docs/classes/lambdadynamostreamhandler.html +0 -472
  170. package/dist/docs/classes/lambdadynamostreamhandlerlocal.html +0 -455
  171. package/dist/docs/classes/lambdahandler.html +0 -479
  172. package/dist/docs/classes/lambdahandlerlocal.html +0 -472
  173. package/dist/docs/classes/lambdamodule.html +0 -433
  174. package/dist/docs/classes/lambdanotificationhandler.html +0 -474
  175. package/dist/docs/classes/lambdanotificationhandlerlocal.html +0 -457
  176. package/dist/docs/classes/lambdasnshandler.html +0 -394
  177. package/dist/docs/classes/lambdasnshandlerlocal.html +0 -397
  178. package/dist/docs/classes/lambdasqshandler.html +0 -394
  179. package/dist/docs/classes/lambdasqshandlerlocal.html +0 -397
  180. package/dist/docs/classes/lambdasubhandler.html +0 -305
  181. package/dist/docs/classes/lambdawebhandler.html +0 -603
  182. package/dist/docs/classes/lambdawebhandlerlocal.html +0 -581
  183. package/dist/docs/classes/lambdawsshandler.html +0 -359
  184. package/dist/docs/classes/memcachedbackend.html +0 -900
  185. package/dist/docs/classes/mocksapiservice.html +0 -691
  186. package/dist/docs/classes/modelutil.html +0 -311
  187. package/dist/docs/classes/myconfigservice.html +0 -561
  188. package/dist/docs/classes/myconfigservicetest.html +0 -527
  189. package/dist/docs/classes/myconfigservicetest2.html +0 -522
  190. package/dist/docs/classes/mydummysqsservice.html +0 -419
  191. package/dist/docs/classes/myenginemodules.html +0 -357
  192. package/dist/docs/classes/mygeneralapicontroller.html +0 -837
  193. package/dist/docs/classes/mylemonwebcontroller.html +0 -356
  194. package/dist/docs/classes/mymodelfilter.html +0 -479
  195. package/dist/docs/classes/myprotocolservice.html +0 -993
  196. package/dist/docs/classes/myprotocolservicetest.html +0 -983
  197. package/dist/docs/classes/myservice.html +0 -329
  198. package/dist/docs/classes/mystorage.html +0 -1370
  199. package/dist/docs/classes/nodecachebackend.html +0 -714
  200. package/dist/docs/classes/protocolmodule.html +0 -311
  201. package/dist/docs/classes/proxystorageservice.html +0 -1441
  202. package/dist/docs/classes/query.html +0 -850
  203. package/dist/docs/classes/redisbackend.html +0 -781
  204. package/dist/docs/classes/redisstorageservice.html +0 -867
  205. package/dist/docs/classes/s3putobjectrequestbuilder.html +0 -509
  206. package/dist/docs/classes/scan.html +0 -685
  207. package/dist/docs/classes/snsprotocoltransformer.html +0 -334
  208. package/dist/docs/classes/sqsprotocoltransformer.html +0 -334
  209. package/dist/docs/classes/typedstorageservice.html +0 -914
  210. package/dist/docs/classes/uniquefieldmanager.html +0 -477
  211. package/dist/docs/classes/usermanager.html +0 -931
  212. package/dist/docs/classes/utilities.html +0 -1914
  213. package/dist/docs/classes/webprotocoltransformer.html +0 -330
  214. package/dist/docs/globals.html +0 -7477
  215. package/dist/docs/index.html +0 -1519
  216. package/dist/docs/interfaces/accountitem.html +0 -277
  217. package/dist/docs/interfaces/accountmodel.html +0 -306
  218. package/dist/docs/interfaces/adaptiveparam.html +0 -203
  219. package/dist/docs/interfaces/apiheaders.html +0 -183
  220. package/dist/docs/interfaces/apihttpproxy.html +0 -304
  221. package/dist/docs/interfaces/apiserviceclient.html +0 -448
  222. package/dist/docs/interfaces/autocompletesearchparam.html +0 -309
  223. package/dist/docs/interfaces/betweencondition.html +0 -226
  224. package/dist/docs/interfaces/cachebackend.html +0 -714
  225. package/dist/docs/interfaces/cacheentry.html +0 -248
  226. package/dist/docs/interfaces/cacheoptions.html +0 -267
  227. package/dist/docs/interfaces/callbackdata.html +0 -279
  228. package/dist/docs/interfaces/callbackparam.html +0 -252
  229. package/dist/docs/interfaces/comparisoncondition.html +0 -226
  230. package/dist/docs/interfaces/coreconfigservice.html +0 -342
  231. package/dist/docs/interfaces/corekey.html +0 -278
  232. package/dist/docs/interfaces/corekeymakeable.html +0 -292
  233. package/dist/docs/interfaces/corekmsservice.html +0 -311
  234. package/dist/docs/interfaces/coremodel.html +0 -499
  235. package/dist/docs/interfaces/coremodelfilterable.html +0 -281
  236. package/dist/docs/interfaces/cores3service.html +0 -444
  237. package/dist/docs/interfaces/coreservices.html +0 -232
  238. package/dist/docs/interfaces/coresnsservice.html +0 -317
  239. package/dist/docs/interfaces/corewebcontroller.html +0 -271
  240. package/dist/docs/interfaces/cronevent.html +0 -223
  241. package/dist/docs/interfaces/cronparam.html +0 -212
  242. package/dist/docs/interfaces/dynamooption.html +0 -254
  243. package/dist/docs/interfaces/dynamoqueryresult.html +0 -244
  244. package/dist/docs/interfaces/dynamoscanresult.html +0 -244
  245. package/dist/docs/interfaces/dynamosimplequeriable.html +0 -308
  246. package/dist/docs/interfaces/dynamosimplescannable.html +0 -255
  247. package/dist/docs/interfaces/dynamostreambody.html +0 -268
  248. package/dist/docs/interfaces/dynamostreamcallback.html +0 -209
  249. package/dist/docs/interfaces/dynamostreamfilter.html +0 -218
  250. package/dist/docs/interfaces/dynamostreamparam.html +0 -240
  251. package/dist/docs/interfaces/elastic6item.html +0 -221
  252. package/dist/docs/interfaces/elastic6option.html +0 -275
  253. package/dist/docs/interfaces/elastic6simplequeriable.html +0 -284
  254. package/dist/docs/interfaces/engineconsole.html +0 -292
  255. package/dist/docs/interfaces/enginecore.html +0 -344
  256. package/dist/docs/interfaces/enginemodule.html +0 -269
  257. package/dist/docs/interfaces/enginemodules.html +0 -316
  258. package/dist/docs/interfaces/engineoption.html +0 -244
  259. package/dist/docs/interfaces/enginescope.html +0 -220
  260. package/dist/docs/interfaces/existencecondition.html +0 -212
  261. package/dist/docs/interfaces/filter.html +0 -253
  262. package/dist/docs/interfaces/generalfuntion.html +0 -207
  263. package/dist/docs/interfaces/generalitem.html +0 -212
  264. package/dist/docs/interfaces/handlermap.html +0 -171
  265. package/dist/docs/interfaces/incrementable.html +0 -190
  266. package/dist/docs/interfaces/internalkey.html +0 -210
  267. package/dist/docs/interfaces/internalmodel.html +0 -226
  268. package/dist/docs/interfaces/itementry.html +0 -241
  269. package/dist/docs/interfaces/jwtcommon.html +0 -242
  270. package/dist/docs/interfaces/lambdahandlerservice.html +0 -340
  271. package/dist/docs/interfaces/lemonengine.html +0 -593
  272. package/dist/docs/interfaces/metricpostbody.html +0 -220
  273. package/dist/docs/interfaces/mygeneral.html +0 -271
  274. package/dist/docs/interfaces/mymodel.html +0 -554
  275. package/dist/docs/interfaces/myprotocolparam.html +0 -359
  276. package/dist/docs/interfaces/nextcontext.html +0 -381
  277. package/dist/docs/interfaces/nextidentity.html +0 -325
  278. package/dist/docs/interfaces/nextidentityaccess.html +0 -495
  279. package/dist/docs/interfaces/nextidentitycognito.html +0 -422
  280. package/dist/docs/interfaces/notificationbody.html +0 -171
  281. package/dist/docs/interfaces/notificationparam.html +0 -304
  282. package/dist/docs/interfaces/options.html +0 -226
  283. package/dist/docs/interfaces/parrallelcallback.html +0 -203
  284. package/dist/docs/interfaces/parrallelparam.html +0 -285
  285. package/dist/docs/interfaces/protocolbody.html +0 -183
  286. package/dist/docs/interfaces/protocolparam.html +0 -336
  287. package/dist/docs/interfaces/protocolservice.html +0 -548
  288. package/dist/docs/interfaces/protocoltransformer.html +0 -295
  289. package/dist/docs/interfaces/proxyparams.html +0 -212
  290. package/dist/docs/interfaces/putobjectresult.html +0 -282
  291. package/dist/docs/interfaces/queryresult.html +0 -272
  292. package/dist/docs/interfaces/redisoptions.html +0 -248
  293. package/dist/docs/interfaces/simplesearchparam.html +0 -351
  294. package/dist/docs/interfaces/slackaction.html +0 -240
  295. package/dist/docs/interfaces/slackattachment.html +0 -459
  296. package/dist/docs/interfaces/slackpostbody.html +0 -240
  297. package/dist/docs/interfaces/sqsattribute.html +0 -171
  298. package/dist/docs/interfaces/sqsmessage.html +0 -254
  299. package/dist/docs/interfaces/sqsrecord.html +0 -324
  300. package/dist/docs/interfaces/sqsservice.html +0 -333
  301. package/dist/docs/interfaces/sqsstatistics.html +0 -240
  302. package/dist/docs/interfaces/storagemakeable.html +0 -258
  303. package/dist/docs/interfaces/storagemodel.html +0 -285
  304. package/dist/docs/interfaces/storageservice.html +0 -497
  305. package/dist/docs/interfaces/stringcondition.html +0 -226
  306. package/dist/docs/interfaces/tagset.html +0 -171
  307. package/dist/docs/interfaces/testmodel.html +0 -334
  308. package/dist/docs/interfaces/timeout.html +0 -233
  309. package/dist/docs/interfaces/updatable.html +0 -193
  310. package/dist/docs/interfaces/user.html +0 -534
@@ -0,0 +1,606 @@
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_sequence = 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 cores_1 = __importDefault(require("../cores/"));
30
+ const engine_1 = require("../engine/");
31
+ const test_helper_1 = require("../common/test-helper");
32
+ const querystring_1 = __importDefault(require("querystring"));
33
+ const perf_hooks_1 = require("perf_hooks");
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: (0, 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
+ const $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
+ exports.$protocol = $protocol;
461
+ /**
462
+ * get the current config info
463
+ */
464
+ const $info = () => {
465
+ const $conf = cores_1.default.config.config;
466
+ const service = $conf.getService();
467
+ const version = $conf.getVersion();
468
+ const stage = $conf.getStage();
469
+ return { service, version, stage };
470
+ };
471
+ exports.$info = $info;
472
+ /**
473
+ * send message to slack/public
474
+ *
475
+ * @param title 헤터 타이틀
476
+ * @param text object or 텍스트 내용
477
+ * @param pretext (optional) 텍스트 미리보기용.
478
+ * @param params (optional) customize more options.
479
+ */
480
+ const $slack = (title, text, pretext, params) => __awaiter(void 0, void 0, void 0, function* () {
481
+ var _a, _b;
482
+ //! about current service.................
483
+ const { service, version, stage } = (0, exports.$info)();
484
+ const name = `${service}#${version}` + (stage !== 'prod' ? `/${stage}` : '');
485
+ return (0, engine_1.doReportSlack)((params === null || params === void 0 ? void 0 : params.channel) ? `!${params === null || params === void 0 ? void 0 : params.channel}` : 'public', {
486
+ channel: (_a = params === null || params === void 0 ? void 0 : params.channel) !== null && _a !== void 0 ? _a : undefined,
487
+ attachments: [
488
+ {
489
+ color: `${(params === null || params === void 0 ? void 0 : params.color) || '#FFB71B' || 'good'}`,
490
+ title,
491
+ pretext: pretext !== null && pretext !== void 0 ? pretext : ((params === null || params === void 0 ? void 0 : params.scope) ? `#${name} [\`${params.scope}\`]` : undefined),
492
+ text: typeof text === 'string' ? text : engine_1.$U.json(text),
493
+ ts: Math.floor(engine_1.$U.current_time_ms() / 1000),
494
+ fields: params === null || params === void 0 ? void 0 : params.fields,
495
+ footer: (_b = params === null || params === void 0 ? void 0 : params.footer) !== null && _b !== void 0 ? _b : `${service}/${stage}#${version}`,
496
+ },
497
+ ],
498
+ }, params === null || params === void 0 ? void 0 : params.context).catch(e => `#err:${(0, test_helper_1.GETERR)(e)}`);
499
+ });
500
+ exports.$slack = $slack;
501
+ /**
502
+ * event producer builder
503
+ * @param context current context
504
+ * @param defEndpoint (optional) the default endpoint.
505
+ */
506
+ const $event = (context, defEndpoint = '') => {
507
+ const $protocol = cores_1.default.protocol;
508
+ const endpoint = engine_1.$U.env('EVENT_RELAY_SNS', defEndpoint);
509
+ if (!endpoint)
510
+ throw new Error(`env[EVENT_RELAY_SNS] is required - $event()`);
511
+ return {
512
+ publish: (body) => __awaiter(void 0, void 0, void 0, function* () { return $protocol.service.broadcast(context, endpoint, body); }),
513
+ };
514
+ };
515
+ exports.$event = $event;
516
+ /**
517
+ * authentication helper - get identity-id from context
518
+ * @param ctx
519
+ */
520
+ function getIdentityId(ctx) {
521
+ var _a;
522
+ const identityId = (_a = ctx.identity) === null || _a === void 0 ? void 0 : _a.identityId;
523
+ // for localhost development
524
+ if (!identityId) {
525
+ const profile = process.env.NAME;
526
+ if (ctx.domain === 'localhost' && profile === 'lemon')
527
+ return 'ap-northeast-2:009fa3a9-173f-440b-be74-2cf83370b08b';
528
+ if (ctx.domain === 'localhost' && profile === 'colover')
529
+ return 'ap-northeast-2:cef62bef-2f3e-4775-893f-7addb6efbeb3';
530
+ }
531
+ return identityId;
532
+ }
533
+ exports.getIdentityId = getIdentityId;
534
+ /**
535
+ * authentication helper - check user is authorized
536
+ * - 이 메서드는 AWS IAM 인증 여부만을 확인한다.
537
+ * - 따라서 true를 반환한다고 하여 회원 가입이 되어있다는 의미는 아니다.
538
+ *
539
+ * @param ctx the current context
540
+ * @param param (optional) to override `identity` when running local.
541
+ */
542
+ function isUserAuthorized(ctx, param) {
543
+ const identityId = getIdentityId(ctx);
544
+ //NOTE - local 실행이라면 넘기자...
545
+ if ((ctx === null || ctx === void 0 ? void 0 : ctx.clientIp) === '::1' && (ctx === null || ctx === void 0 ? void 0 : ctx.domain) === 'localhost') {
546
+ ctx.identity = Object.assign({}, param); //! override with parameter.
547
+ return true;
548
+ }
549
+ return !!identityId;
550
+ }
551
+ exports.isUserAuthorized = isUserAuthorized;
552
+ /**
553
+ * parse range expression
554
+ * @param exp range expression (e.g. '[63100 TO 224000]' or '[* TO 150000}')
555
+ */
556
+ function parseRange(exp) {
557
+ const match = exp.match(/^([\[{])([0-9]+|\*) TO ([0-9]+|\*)([}\]])$/);
558
+ if (match && (match[2] !== '*' || match[3] !== '*')) {
559
+ const range = {};
560
+ if (match[2] !== '*') {
561
+ const n = exports.$T.N(match[2]);
562
+ if (match[1] === '[')
563
+ range.gte = n;
564
+ else if (match[1] === '{')
565
+ range.gt = n;
566
+ }
567
+ if (match[3] !== '*') {
568
+ const n = exports.$T.N(match[3]);
569
+ if (match[4] === ']')
570
+ range.lte = n;
571
+ else if (match[4] === '}')
572
+ range.lt = n;
573
+ }
574
+ return range;
575
+ }
576
+ }
577
+ exports.parseRange = parseRange;
578
+ /**
579
+ * customized of `do_parrallel` for safe error-handling.
580
+ * - use `.error` to report the internal error.
581
+ */
582
+ const my_parrallel = (list, func, size) => __awaiter(void 0, void 0, void 0, function* () {
583
+ const results = yield (0, engine_1.do_parrallel)(list, (item, i) => {
584
+ const ret = (() => {
585
+ try {
586
+ return func(item, i);
587
+ }
588
+ catch (e) {
589
+ return Promise.reject(e);
590
+ }
591
+ })();
592
+ const res = ret instanceof Promise ? ret : Promise.resolve(ret);
593
+ return res.catch(e => ({ id: item.id, error: (0, test_helper_1.GETERR)(e) }));
594
+ }, size);
595
+ return results;
596
+ });
597
+ exports.my_parrallel = my_parrallel;
598
+ /**
599
+ * run in sequence order
600
+ * = my_parrallel(list, func, 1);
601
+ *
602
+ * 주의) 내부 error를 throw 하지 않으니, list 를 전부 처리할때까지 안끝남.
603
+ */
604
+ const my_sequence = (list, func) => (0, exports.my_parrallel)(list, func, 1);
605
+ exports.my_sequence = my_sequence;
606
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `helpers.ts`
3
+ * - several function helpers.
4
+ *
5
+ * @author Steve Jung <steve@lemoncloud.io>
6
+ * @date 2022-03-17 initial commit
7
+ *
8
+ * @copyright (C) lemoncloud.io 2022 - All Rights Reserved.
9
+ */
10
+ export * from './helpers';