lemon-core 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/README.md +13 -21
  2. package/dist/common/test-helper.js +19 -11
  3. package/dist/common/test-helper.js.map +1 -1
  4. package/dist/controllers/dummy-controller.d.ts +1 -1
  5. package/dist/controllers/dummy-controller.js +2 -2
  6. package/dist/controllers/dummy-controller.js.map +1 -1
  7. package/dist/controllers/general-api-controller.d.ts +1 -1
  8. package/dist/controllers/general-api-controller.js +5 -5
  9. package/dist/controllers/general-api-controller.js.map +1 -1
  10. package/dist/controllers/general-controller.js +2 -1
  11. package/dist/controllers/general-controller.js.map +1 -1
  12. package/dist/controllers/index.js +6 -2
  13. package/dist/controllers/index.js.map +1 -1
  14. package/dist/cores/api/api-service.d.ts +239 -0
  15. package/dist/cores/api/api-service.js +674 -0
  16. package/dist/cores/api/api-service.js.map +1 -0
  17. package/dist/cores/api/index.d.ts +10 -0
  18. package/dist/cores/api/index.js +27 -0
  19. package/dist/cores/api/index.js.map +1 -0
  20. package/dist/cores/api-service.js +19 -18
  21. package/dist/cores/api-service.js.map +1 -1
  22. package/dist/cores/aws/aws-kms-service.d.ts +53 -2
  23. package/dist/cores/aws/aws-kms-service.js +112 -29
  24. package/dist/cores/aws/aws-kms-service.js.map +1 -1
  25. package/dist/cores/aws/aws-s3-service.js +19 -18
  26. package/dist/cores/aws/aws-s3-service.js.map +1 -1
  27. package/dist/cores/aws/aws-sns-service.js +10 -10
  28. package/dist/cores/aws/aws-sns-service.js.map +1 -1
  29. package/dist/cores/aws/aws-sqs-service.js +12 -12
  30. package/dist/cores/aws/aws-sqs-service.js.map +1 -1
  31. package/dist/cores/aws/index.js +1 -1
  32. package/dist/cores/cache/cache-service.d.ts +440 -0
  33. package/dist/cores/cache/cache-service.js +967 -0
  34. package/dist/cores/cache/cache-service.js.map +1 -0
  35. package/dist/cores/cache/index.d.ts +10 -0
  36. package/dist/cores/cache/index.js +27 -0
  37. package/dist/cores/cache/index.js.map +1 -0
  38. package/dist/cores/cache-service.d.ts +54 -18
  39. package/dist/cores/cache-service.js +56 -45
  40. package/dist/cores/cache-service.js.map +1 -1
  41. package/dist/cores/config/config-service.js +11 -10
  42. package/dist/cores/config/config-service.js.map +1 -1
  43. package/dist/cores/core-services.js +6 -2
  44. package/dist/cores/core-services.js.map +1 -1
  45. package/dist/cores/core-types.d.ts +42 -12
  46. package/dist/cores/dynamo/dynamo-query-service.d.ts +52 -0
  47. package/dist/cores/dynamo/dynamo-query-service.js +127 -0
  48. package/dist/cores/dynamo/dynamo-query-service.js.map +1 -0
  49. package/dist/cores/dynamo/dynamo-scan-service.d.ts +70 -0
  50. package/dist/cores/dynamo/dynamo-scan-service.js +164 -0
  51. package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -0
  52. package/dist/cores/dynamo/dynamo-service.d.ts +192 -0
  53. package/dist/cores/dynamo/dynamo-service.js +525 -0
  54. package/dist/cores/dynamo/dynamo-service.js.map +1 -0
  55. package/dist/cores/dynamo/index.d.ts +12 -0
  56. package/dist/cores/dynamo/index.js +29 -0
  57. package/dist/cores/dynamo/index.js.map +1 -0
  58. package/dist/cores/dynamo-query-service.js +7 -7
  59. package/dist/cores/dynamo-query-service.js.map +1 -1
  60. package/dist/cores/dynamo-scan-service.js +8 -8
  61. package/dist/cores/dynamo-scan-service.js.map +1 -1
  62. package/dist/cores/dynamo-service.js +19 -19
  63. package/dist/cores/dynamo-service.js.map +1 -1
  64. package/dist/cores/elastic/elastic6-query-service.d.ts +104 -0
  65. package/dist/cores/elastic/elastic6-query-service.js +510 -0
  66. package/dist/cores/elastic/elastic6-query-service.js.map +1 -0
  67. package/dist/cores/elastic/elastic6-service.d.ts +273 -0
  68. package/dist/cores/elastic/elastic6-service.js +903 -0
  69. package/dist/cores/elastic/elastic6-service.js.map +1 -0
  70. package/dist/cores/elastic/hangul-service.d.ts +102 -0
  71. package/dist/cores/elastic/hangul-service.js +205 -0
  72. package/dist/cores/elastic/hangul-service.js.map +1 -0
  73. package/dist/cores/elastic/index.d.ts +12 -0
  74. package/dist/cores/elastic/index.js +29 -0
  75. package/dist/cores/elastic/index.js.map +1 -0
  76. package/dist/cores/elastic6-query-service.js +7 -7
  77. package/dist/cores/elastic6-query-service.js.map +1 -1
  78. package/dist/cores/elastic6-service.js +57 -65
  79. package/dist/cores/elastic6-service.js.map +1 -1
  80. package/dist/cores/hangul-service.d.ts +17 -3
  81. package/dist/cores/hangul-service.js +17 -8
  82. package/dist/cores/hangul-service.js.map +1 -1
  83. package/dist/cores/http-storage-service.js +1 -1
  84. package/dist/cores/http-storage-service.js.map +1 -1
  85. package/dist/cores/index.d.ts +9 -15
  86. package/dist/cores/index.js +14 -15
  87. package/dist/cores/index.js.map +1 -1
  88. package/dist/cores/lambda/index.js +8 -4
  89. package/dist/cores/lambda/index.js.map +1 -1
  90. package/dist/cores/lambda/lambda-cognito-handler.js +2 -2
  91. package/dist/cores/lambda/lambda-cognito-handler.js.map +1 -1
  92. package/dist/cores/lambda/lambda-cron-handler.js +2 -2
  93. package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
  94. package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +2 -2
  95. package/dist/cores/lambda/lambda-dynamo-stream-handler.js +20 -20
  96. package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
  97. package/dist/cores/lambda/lambda-handler.js +12 -11
  98. package/dist/cores/lambda/lambda-handler.js.map +1 -1
  99. package/dist/cores/lambda/lambda-notification-handler.js +10 -10
  100. package/dist/cores/lambda/lambda-notification-handler.js.map +1 -1
  101. package/dist/cores/lambda/lambda-sns-handler.js +13 -13
  102. package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
  103. package/dist/cores/lambda/lambda-sqs-handler.js +13 -13
  104. package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
  105. package/dist/cores/lambda/lambda-web-handler.d.ts +158 -8
  106. package/dist/cores/lambda/lambda-web-handler.js +330 -119
  107. package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
  108. package/dist/cores/lambda/lambda-wss-handler.js +16 -12
  109. package/dist/cores/lambda/lambda-wss-handler.js.map +1 -1
  110. package/dist/cores/model-manager.js +11 -11
  111. package/dist/cores/model-manager.js.map +1 -1
  112. package/dist/cores/protocol/protocol-service.d.ts +4 -0
  113. package/dist/cores/protocol/protocol-service.js +46 -40
  114. package/dist/cores/protocol/protocol-service.js.map +1 -1
  115. package/dist/cores/proxy-storage-service.js +7 -10
  116. package/dist/cores/proxy-storage-service.js.map +1 -1
  117. package/dist/cores/redis-storage-service.js +13 -13
  118. package/dist/cores/redis-storage-service.js.map +1 -1
  119. package/dist/cores/storage/http-storage-service.d.ts +22 -0
  120. package/dist/cores/storage/http-storage-service.js +129 -0
  121. package/dist/cores/storage/http-storage-service.js.map +1 -0
  122. package/dist/cores/storage/index.d.ts +14 -0
  123. package/dist/cores/storage/index.js +31 -0
  124. package/dist/cores/storage/index.js.map +1 -0
  125. package/dist/cores/storage/model-manager.d.ts +93 -0
  126. package/dist/cores/storage/model-manager.js +192 -0
  127. package/dist/cores/storage/model-manager.js.map +1 -0
  128. package/dist/cores/storage/proxy-storage-service.d.ts +573 -0
  129. package/dist/cores/storage/proxy-storage-service.js +913 -0
  130. package/dist/cores/storage/proxy-storage-service.js.map +1 -0
  131. package/dist/cores/storage/redis-storage-service.d.ts +183 -0
  132. package/dist/cores/storage/redis-storage-service.js +391 -0
  133. package/dist/cores/storage/redis-storage-service.js.map +1 -0
  134. package/dist/cores/storage/storage-service.d.ts +169 -0
  135. package/dist/cores/storage/storage-service.js +374 -0
  136. package/dist/cores/storage/storage-service.js.map +1 -0
  137. package/dist/cores/storage-service.d.ts +1 -1
  138. package/dist/cores/storage-service.js +10 -8
  139. package/dist/cores/storage-service.js.map +1 -1
  140. package/dist/engine/builder.js +27 -20
  141. package/dist/engine/builder.js.map +1 -1
  142. package/dist/engine/engine.js +53 -44
  143. package/dist/engine/engine.js.map +1 -1
  144. package/dist/engine/index.js +8 -4
  145. package/dist/engine/index.js.map +1 -1
  146. package/dist/engine/utilities.d.ts +4 -3
  147. package/dist/engine/utilities.js +32 -37
  148. package/dist/engine/utilities.js.map +1 -1
  149. package/dist/environ.d.ts +2 -2
  150. package/dist/environ.js +20 -10
  151. package/dist/environ.js.map +1 -1
  152. package/dist/exec-cli.js +26 -26
  153. package/dist/exec-cli.js.map +1 -1
  154. package/dist/extended/abstract-service.d.ts +533 -0
  155. package/dist/extended/abstract-service.js +915 -0
  156. package/dist/extended/abstract-service.js.map +1 -0
  157. package/dist/extended/index.d.ts +10 -0
  158. package/dist/extended/index.js +27 -0
  159. package/dist/extended/index.js.map +1 -0
  160. package/dist/helpers/helpers.d.ts +273 -0
  161. package/dist/helpers/helpers.js +613 -0
  162. package/dist/helpers/helpers.js.map +1 -0
  163. package/dist/helpers/index.d.ts +10 -0
  164. package/dist/helpers/index.js +27 -0
  165. package/dist/helpers/index.js.map +1 -0
  166. package/dist/index.d.ts +7 -5
  167. package/dist/index.js +11 -4
  168. package/dist/index.js.map +1 -1
  169. package/dist/lib/dynamo/expressions.js +35 -27
  170. package/dist/lib/dynamo/expressions.js.map +1 -1
  171. package/dist/lib/dynamo/query.js +24 -20
  172. package/dist/lib/dynamo/query.js.map +1 -1
  173. package/dist/lib/dynamo/scan.js +17 -13
  174. package/dist/lib/dynamo/scan.js.map +1 -1
  175. package/dist/lib/dynamo/serializer.js +11 -7
  176. package/dist/lib/dynamo/serializer.js.map +1 -1
  177. package/dist/lib/dynamo/utils.js +19 -14
  178. package/dist/lib/dynamo/utils.js.map +1 -1
  179. package/dist/lib/dynamodb-value.js +3 -3
  180. package/dist/lib/dynamodb-value.js.map +1 -1
  181. package/dist/lib/index.js +6 -2
  182. package/dist/lib/index.js.map +1 -1
  183. package/dist/tools/express.js +21 -15
  184. package/dist/tools/express.js.map +1 -1
  185. package/dist/tools/index.js +6 -2
  186. package/dist/tools/index.js.map +1 -1
  187. package/dist/tools/shared.js +12 -6
  188. package/dist/tools/shared.js.map +1 -1
  189. package/package.json +16 -15
@@ -0,0 +1,169 @@
1
+ /**
2
+ * only for type information for internal partition-key.
3
+ */
4
+ export interface InternalKey {
5
+ _id?: string;
6
+ }
7
+ /**
8
+ * use shared `NoSQL` data storage. (ex: DynamoDB, MongoDB, ...)
9
+ * - use `key-value` simple storage service.
10
+ * - `no-search`: need to support 'search' function. (but scan)
11
+ */
12
+ export interface StorageModel extends InternalKey {
13
+ id?: string;
14
+ type?: string;
15
+ stereo?: string;
16
+ meta?: string | any;
17
+ }
18
+ /**
19
+ * Abstract Concept of `StorageService`
20
+ * - simplified `storage-service` for `NoSQL` data.
21
+ */
22
+ export interface StorageService<T extends StorageModel> {
23
+ /**
24
+ * say hello(name)
25
+ *
26
+ * @returns simple service name like `storage-service:${name}`
27
+ */
28
+ hello(): string;
29
+ /**
30
+ * read (or error `404 NOT FOUND - id:...`)
31
+ *
32
+ * @param id unique-id
33
+ */
34
+ read(id: string): Promise<T>;
35
+ /**
36
+ * read or create if not-found.
37
+ *
38
+ * @param id unique-id
39
+ * @param model auto creation if not-found.
40
+ */
41
+ readOrCreate(id: string, model: T): Promise<T>;
42
+ /**
43
+ * save (or create) of model.
44
+ * - WARN! overwrite if exists
45
+ *
46
+ * @param id unique-id
47
+ * @param model data.
48
+ */
49
+ save(id: string, model: T): Promise<T>;
50
+ /**
51
+ * update some attributes of model
52
+ * - NOTE! it will create if not exist.
53
+ *
54
+ * @param id unique-id
55
+ * @param model data
56
+ * @param incrementals (optional) incrementals like `count = count + 1`
57
+ */
58
+ update(id: string, model: T, incrementals?: T): Promise<T>;
59
+ /**
60
+ * increment number attribute (or overwrite string field)
61
+ * - NOTE! increments only number type.
62
+ *
63
+ * @param id unique-id
64
+ * @param model data (ONLY number is supportable)
65
+ * @param $update (optional) update-set.
66
+ */
67
+ increment(id: string, model: T, $update?: T): Promise<T>;
68
+ /**
69
+ * delete item by id
70
+ *
71
+ * @param id unique-id
72
+ */
73
+ delete(id: string): Promise<T>;
74
+ }
75
+ import { KEY_TYPE } from '../dynamo/';
76
+ /**
77
+ * class: `DynamoStorageService`
78
+ * - service via DynamoDB with id + json data.
79
+ */
80
+ export declare class DynamoStorageService<T extends StorageModel> implements StorageService<T> {
81
+ private _table;
82
+ private _idName;
83
+ private _fields;
84
+ private $dynamo;
85
+ constructor(table: string, fields: string[], idName?: string, idType?: KEY_TYPE);
86
+ /**
87
+ * say hello()
88
+ * @param name (optional) given name
89
+ */
90
+ hello: () => string;
91
+ /**
92
+ * (extended) get copy of fields.
93
+ */
94
+ fields: () => string[];
95
+ /**
96
+ * Read whole model via database.
97
+ *
98
+ * @param id id
99
+ */
100
+ read(id: string): Promise<T>;
101
+ /**
102
+ * auto-create if not found.
103
+ *
104
+ * @param id
105
+ * @param model
106
+ */
107
+ readOrCreate(id: string, model: T): Promise<T>;
108
+ /**
109
+ * simply save(or overwrite) all model
110
+ *
111
+ * @param id id
112
+ * @param model whole object.
113
+ */
114
+ save(id: string, model: T): Promise<T>;
115
+ /**
116
+ * update some attributes
117
+ *
118
+ * @param id id
119
+ * @param model attributes to update
120
+ * @param incrementals (optional) attributes to increment
121
+ */
122
+ update(id: string, model: T, incrementals?: T): Promise<T>;
123
+ /**
124
+ * increment number attribute (or overwrite string field)
125
+ * - if not exists, then just update property with base zero 0.
126
+ *
127
+ * @param id id
128
+ * @param model attributes of number.
129
+ * @param $update (optional) update-set.
130
+ */
131
+ increment(id: string, model: T, $update?: T): Promise<T>;
132
+ /**
133
+ * delete set.
134
+ * - if not exists, then just update property with base zero 0.
135
+ *
136
+ * @param id id
137
+ */
138
+ delete(id: string): Promise<T>;
139
+ }
140
+ /** ****************************************************************************************************************
141
+ * Dummy Data Service
142
+ ** ****************************************************************************************************************/
143
+ /**
144
+ * class: `DummyStorageService`
145
+ * - service in-memory dummy data
146
+ *
147
+ * **NOTE**
148
+ * - this dummy service should be replaceable with real service `DynamoStorageService`
149
+ */
150
+ export declare class DummyStorageService<T extends StorageModel> implements StorageService<T> {
151
+ private name;
152
+ private idName;
153
+ constructor(dataFile: string, name?: string, idName?: string);
154
+ private buffer;
155
+ load(data: StorageModel[]): void;
156
+ /**
157
+ * say hello()
158
+ * @param name (optional) given name
159
+ */
160
+ hello: () => string;
161
+ read(id: string): Promise<T>;
162
+ protected readSafe(id: string): Promise<T>;
163
+ readOrCreate(id: string, model: T): Promise<T>;
164
+ save(id: string, item: T): Promise<T>;
165
+ private $locks;
166
+ update(id: string, item: T, $inc?: T): Promise<T>;
167
+ increment(id: string, $inc: T, $upt?: T): Promise<T>;
168
+ delete(id: string): Promise<T>;
169
+ }
@@ -0,0 +1,374 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DummyStorageService = exports.DynamoStorageService = void 0;
13
+ /**
14
+ * `storage-service.js`
15
+ * - common service for `storage`
16
+ *
17
+ * @author Steve Jung <steve@lemoncloud.io>
18
+ * @date 2019-09-26 initial version
19
+ * @date 2019-10-01 moved from ticket-data-service to storage-service.
20
+ * @date 2019-12-01 migrated to storage-service.
21
+ *
22
+ * @copyright (C) 2019 LemonCloud Co Ltd. - All Rights Reserved.
23
+ */
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ const engine_1 = require("../../engine/");
26
+ const NS = engine_1.$U.NS('STRS', 'green'); // NAMESPACE TO BE PRINTED.
27
+ const dynamo_1 = require("../dynamo/");
28
+ const shared_1 = require("../../tools/shared");
29
+ const clearDuplicated = (arr) => arr.sort().reduce((L, val) => {
30
+ if (L.indexOf(val) < 0)
31
+ L.push(val);
32
+ return L;
33
+ }, []);
34
+ /**
35
+ * class: `DynamoStorageService`
36
+ * - service via DynamoDB with id + json data.
37
+ */
38
+ class DynamoStorageService {
39
+ constructor(table, fields, idName = 'id', idType = 'string') {
40
+ /**
41
+ * say hello()
42
+ * @param name (optional) given name
43
+ */
44
+ this.hello = () => `dynamo-storage-service:${this._table}/${this._idName}/${this._fields.length}`;
45
+ /**
46
+ * (extended) get copy of fields.
47
+ */
48
+ this.fields = () => [...this._fields];
49
+ if (!table)
50
+ throw new Error(`@table (table-name) is required!`);
51
+ this._table = table;
52
+ this._idName = idName;
53
+ this._fields = clearDuplicated(['id', 'type', 'stereo', 'meta', idName].concat(fields));
54
+ this.$dynamo = new dynamo_1.DynamoService({ tableName: this._table, idName, idType });
55
+ }
56
+ /**
57
+ * Read whole model via database.
58
+ *
59
+ * @param id id
60
+ */
61
+ read(id) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const data = yield this.$dynamo.readItem(id);
64
+ const fields = this._fields || [];
65
+ const item = fields.reduce((N, key) => {
66
+ const val = data[key];
67
+ if (val !== undefined)
68
+ N[key] = val;
69
+ return N;
70
+ }, {});
71
+ return item;
72
+ });
73
+ }
74
+ /**
75
+ * auto-create if not found.
76
+ *
77
+ * @param id
78
+ * @param model
79
+ */
80
+ readOrCreate(id, model) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ return this.read(id).catch((e) => {
83
+ if (`${e.message}`.startsWith('404 NOT FOUND'))
84
+ return this.update(id, model);
85
+ throw e;
86
+ });
87
+ });
88
+ }
89
+ /**
90
+ * simply save(or overwrite) all model
91
+ *
92
+ * @param id id
93
+ * @param model whole object.
94
+ */
95
+ save(id, model) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const fields = this._fields || [];
98
+ const data = fields.reduce((N, key) => {
99
+ const val = model[key];
100
+ if (val !== undefined)
101
+ N[key] = val;
102
+ return N;
103
+ }, {});
104
+ yield this.$dynamo.saveItem(id, data); // must be `{}`
105
+ const item = Object.assign({ [this._idName]: id }, data);
106
+ return item;
107
+ });
108
+ }
109
+ /**
110
+ * update some attributes
111
+ *
112
+ * @param id id
113
+ * @param model attributes to update
114
+ * @param incrementals (optional) attributes to increment
115
+ */
116
+ update(id, model, incrementals) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const fields = this._fields || [];
119
+ const $U = fields.reduce((N, key) => {
120
+ const val = model[key];
121
+ if (val !== undefined)
122
+ N[key] = val;
123
+ return N;
124
+ }, {});
125
+ /* eslint-disable prettier/prettier */
126
+ const $I = !incrementals ? null : Object.keys(incrementals).reduce((M, key) => {
127
+ const val = incrementals[key];
128
+ if (typeof val !== 'number')
129
+ throw new Error(`.${key} (${val}) should be number!`);
130
+ M[key] = val;
131
+ return M;
132
+ }, {});
133
+ /* eslint-enable prettier/prettier */
134
+ const ret = yield this.$dynamo.updateItem(id, undefined, $U, $I);
135
+ return ret;
136
+ });
137
+ }
138
+ /**
139
+ * increment number attribute (or overwrite string field)
140
+ * - if not exists, then just update property with base zero 0.
141
+ *
142
+ * @param id id
143
+ * @param model attributes of number.
144
+ * @param $update (optional) update-set.
145
+ */
146
+ increment(id, model, $update) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ if (!model && !$update)
149
+ throw new Error('@item is required!');
150
+ const $org = yield this.read(id).catch(e => {
151
+ if (`${e.message || e}`.startsWith('404 NOT FOUND'))
152
+ return { id };
153
+ throw e;
154
+ });
155
+ const fields = this._fields || [];
156
+ const $U = fields.reduce((N, key) => {
157
+ const val = $update ? $update[key] : undefined;
158
+ if (val !== undefined)
159
+ N[key] = val;
160
+ return N;
161
+ }, {});
162
+ const $I = fields.reduce((N, key) => {
163
+ const val = model[key];
164
+ if (val !== undefined) {
165
+ const org = $org[key];
166
+ //! check type matched!
167
+ if (org !== undefined && typeof org === 'number' && typeof val !== 'number')
168
+ throw new Error(`.${key} (${val}) should be number!`);
169
+ //! if not exists, update it.
170
+ if (org === undefined && typeof val === 'number')
171
+ N[key] = val;
172
+ else if (typeof val !== 'number' && !Array.isArray(val))
173
+ $U[key] = val;
174
+ else
175
+ N[key] = val;
176
+ }
177
+ return N;
178
+ }, {});
179
+ const ret = yield this.$dynamo.updateItem(id, undefined, $U, $I);
180
+ return ret;
181
+ });
182
+ }
183
+ /**
184
+ * delete set.
185
+ * - if not exists, then just update property with base zero 0.
186
+ *
187
+ * @param id id
188
+ */
189
+ delete(id) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ const $org = yield this.read(id);
192
+ yield this.$dynamo.deleteItem(id);
193
+ return $org;
194
+ });
195
+ }
196
+ }
197
+ exports.DynamoStorageService = DynamoStorageService;
198
+ /** ****************************************************************************************************************
199
+ * Dummy Data Service
200
+ ** ****************************************************************************************************************/
201
+ /**
202
+ * class: `DummyStorageService`
203
+ * - service in-memory dummy data
204
+ *
205
+ * **NOTE**
206
+ * - this dummy service should be replaceable with real service `DynamoStorageService`
207
+ */
208
+ class DummyStorageService {
209
+ constructor(dataFile, name = 'memory', idName) {
210
+ this.buffer = {};
211
+ /**
212
+ * say hello()
213
+ * @param name (optional) given name
214
+ */
215
+ this.hello = () => `dummy-storage-service:${this.name}/${this.idName}`;
216
+ this.$locks = {}; //! only for lock.
217
+ (0, engine_1._log)(NS, `DummyStorageService(${dataFile || ''})...`);
218
+ if (!dataFile)
219
+ throw new Error('@dataFile(string) is required!');
220
+ this.name = `${name || ''}`;
221
+ this.idName = `${idName || 'id'}`;
222
+ // const loadDataYml = require('../express').loadDataYml;
223
+ const dummy = (0, shared_1.loadDataYml)(dataFile);
224
+ this.load(dummy.data);
225
+ }
226
+ load(data) {
227
+ if (!data || !Array.isArray(data))
228
+ throw new Error('@data should be array!');
229
+ data.map(item => {
230
+ const id = item.id || '';
231
+ this.buffer[id] = item;
232
+ });
233
+ }
234
+ read(id) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ if (!id.trim())
237
+ throw new Error('@id (string) is required!');
238
+ const item = this.buffer[id];
239
+ if (!item)
240
+ throw new Error(`404 NOT FOUND - ${this.idName}:${id}`);
241
+ return Object.assign(Object.assign({}, item), { [this.idName]: id });
242
+ });
243
+ }
244
+ readSafe(id) {
245
+ return __awaiter(this, void 0, void 0, function* () {
246
+ return this.read(id).catch(e => {
247
+ if (`${e.message || e}`.startsWith('404 NOT FOUND')) {
248
+ const $org = { [this.idName]: id };
249
+ return $org;
250
+ }
251
+ throw e;
252
+ });
253
+ });
254
+ }
255
+ readOrCreate(id, model) {
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ return this.read(id).catch((e) => {
258
+ if (`${e.message}`.startsWith('404 NOT FOUND'))
259
+ return this.update(id, model);
260
+ throw e;
261
+ });
262
+ });
263
+ }
264
+ save(id, item) {
265
+ return __awaiter(this, void 0, void 0, function* () {
266
+ if (!id)
267
+ throw new Error('@id is required!');
268
+ if (!item)
269
+ throw new Error('@item is required!');
270
+ if (item && typeof item.lock == 'number')
271
+ this.$locks[id] = item.lock;
272
+ this.buffer[id] = item;
273
+ return Object.assign({ [this.idName]: id }, item);
274
+ });
275
+ }
276
+ update(id, item, $inc) {
277
+ return __awaiter(this, void 0, void 0, function* () {
278
+ if (!id)
279
+ throw new Error('@id is required!');
280
+ if (!item)
281
+ throw new Error('@item is required!');
282
+ //! atomic operation for `.lock`
283
+ const lock = (() => {
284
+ let lock = 0;
285
+ if (item && typeof item.lock == 'number')
286
+ this.$locks[id] = lock = item.lock;
287
+ if ($inc && typeof $inc.lock == 'number')
288
+ this.$locks[id] = lock = $inc.lock + engine_1.$U.N(this.$locks[id], 0);
289
+ return lock;
290
+ })();
291
+ const $org = yield this.readSafe(id);
292
+ const $new = Object.assign($org, item);
293
+ /* eslint-disable prettier/prettier */
294
+ const incremented = !$inc ? null : Object.keys($inc).reduce((M, key) => {
295
+ const val = $inc[key];
296
+ if (typeof val !== 'number')
297
+ throw new Error(`.${key} (${val}) should be number!`);
298
+ if (key == 'lock') {
299
+ M[key] = lock;
300
+ }
301
+ else {
302
+ M[key] = engine_1.$U.N($new[key], 0) + val;
303
+ }
304
+ return M;
305
+ }, {});
306
+ if (incremented)
307
+ Object.assign($new, incremented);
308
+ /* eslint-enable prettier/prettier */
309
+ yield this.save(id, $new);
310
+ const $set = Object.assign(Object.assign({}, item), incremented);
311
+ if (typeof $set.lock == 'number')
312
+ $set.lock = lock;
313
+ return Object.assign({ [this.idName]: id }, $set);
314
+ });
315
+ }
316
+ increment(id, $inc, $upt) {
317
+ return __awaiter(this, void 0, void 0, function* () {
318
+ if (!id)
319
+ throw new Error('@id is required!');
320
+ if (!$inc && !$upt)
321
+ throw new Error('@item is required!');
322
+ //! atomic operation for `.lock`
323
+ const lock = (() => {
324
+ let lock = 0;
325
+ if ($upt && typeof $upt.lock == 'number')
326
+ this.$locks[id] = lock = $upt.lock;
327
+ if ($inc && typeof $inc.lock == 'number')
328
+ this.$locks[id] = lock = $inc.lock + engine_1.$U.N(this.$locks[id], 0);
329
+ return lock;
330
+ })();
331
+ const $org = yield this.readSafe(id);
332
+ const $set = Object.keys($inc)
333
+ .concat(Object.keys($upt || {}))
334
+ .reduce((N, key) => {
335
+ const val = $inc ? $inc[key] : undefined;
336
+ const upt = $upt ? $upt[key] : undefined;
337
+ const org = $org[key];
338
+ if (upt !== undefined) {
339
+ N[key] = upt;
340
+ }
341
+ else if (val !== undefined) {
342
+ if (org !== undefined && typeof org === 'number' && typeof val !== 'number')
343
+ throw new Error(`.${key} (${val}) should be number!`);
344
+ if (typeof val !== 'number') {
345
+ N[key] = val;
346
+ }
347
+ else if (key == 'lock') {
348
+ N[key] = lock;
349
+ $org[key] = lock;
350
+ }
351
+ else {
352
+ N[key] = (org === undefined ? 0 : org) + val;
353
+ $org[key] = (org === undefined ? 0 : org) + val;
354
+ }
355
+ }
356
+ return N;
357
+ }, {});
358
+ if (typeof $set.lock == 'number')
359
+ $set.lock = lock;
360
+ yield this.save(id, Object.assign($org, $set));
361
+ return Object.assign({ [this.idName]: id }, $set);
362
+ });
363
+ }
364
+ delete(id) {
365
+ return __awaiter(this, void 0, void 0, function* () {
366
+ const $org = yield this.read(id);
367
+ delete this.buffer[id];
368
+ delete this.$locks[id];
369
+ return $org;
370
+ });
371
+ }
372
+ }
373
+ exports.DummyStorageService = DummyStorageService;
374
+ //# sourceMappingURL=storage-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-service.js","sourceRoot":"","sources":["../../../src/cores/storage/storage-service.ts"],"names":[],"mappings":"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"}
@@ -73,7 +73,7 @@ export interface StorageService<T extends StorageModel> {
73
73
  */
74
74
  delete(id: string): Promise<T>;
75
75
  }
76
- import { KEY_TYPE } from './dynamo-service';
76
+ import { KEY_TYPE } from './dynamo/';
77
77
  /**
78
78
  * class: `DynamoStorageService`
79
79
  * - service via DynamoDB with id + json data.
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
17
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -35,7 +39,7 @@ exports.DummyStorageService = exports.DynamoStorageService = void 0;
35
39
  const engine_1 = require("../engine/");
36
40
  const NS = engine_1.$U.NS('STRS', 'green'); // NAMESPACE TO BE PRINTED.
37
41
  __exportStar(require("./http-storage-service"), exports);
38
- const dynamo_service_1 = require("./dynamo-service");
42
+ const dynamo_1 = require("./dynamo/");
39
43
  const shared_1 = require("../tools/shared");
40
44
  const clearDuplicated = (arr) => arr.sort().reduce((L, val) => {
41
45
  if (L.indexOf(val) < 0)
@@ -62,7 +66,7 @@ class DynamoStorageService {
62
66
  this._table = table;
63
67
  this._idName = idName;
64
68
  this._fields = clearDuplicated(['id', 'type', 'stereo', 'meta', idName].concat(fields));
65
- this.$dynamo = new dynamo_service_1.DynamoService({ tableName: this._table, idName, idType });
69
+ this.$dynamo = new dynamo_1.DynamoService({ tableName: this._table, idName, idType });
66
70
  }
67
71
  /**
68
72
  * Read whole model via database.
@@ -225,13 +229,13 @@ class DummyStorageService {
225
229
  */
226
230
  this.hello = () => `dummy-storage-service:${this.name}/${this.idName}`;
227
231
  this.$locks = {}; //! only for lock.
228
- engine_1._log(NS, `DummyStorageService(${dataFile || ''})...`);
232
+ (0, engine_1._log)(NS, `DummyStorageService(${dataFile || ''})...`);
229
233
  if (!dataFile)
230
234
  throw new Error('@dataFile(string) is required!');
231
235
  this.name = `${name || ''}`;
232
236
  this.idName = `${idName || 'id'}`;
233
237
  // const loadDataYml = require('../express').loadDataYml;
234
- const dummy = shared_1.loadDataYml(dataFile);
238
+ const dummy = (0, shared_1.loadDataYml)(dataFile);
235
239
  this.load(dummy.data);
236
240
  }
237
241
  load(data) {
@@ -249,7 +253,6 @@ class DummyStorageService {
249
253
  const item = this.buffer[id];
250
254
  if (!item)
251
255
  throw new Error(`404 NOT FOUND - ${this.idName}:${id}`);
252
- // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
253
256
  return Object.assign(Object.assign({}, item), { [this.idName]: id });
254
257
  });
255
258
  }
@@ -257,7 +260,6 @@ class DummyStorageService {
257
260
  return __awaiter(this, void 0, void 0, function* () {
258
261
  return this.read(id).catch(e => {
259
262
  if (`${e.message || e}`.startsWith('404 NOT FOUND')) {
260
- // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
261
263
  const $org = { [this.idName]: id };
262
264
  return $org;
263
265
  }