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