@webda/core 1.2.1 → 1.6.0-beta.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 (199) hide show
  1. package/lib/application.d.ts +3 -0
  2. package/lib/application.js +26 -22
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +185 -2
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +62 -6
  7. package/lib/core.js +127 -86
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +151 -6
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +4 -0
  12. package/lib/index.js +4 -0
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +42 -3
  15. package/lib/models/aclmodel.js +58 -3
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +46 -0
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +58 -10
  20. package/lib/models/coremodel.js +39 -32
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +68 -6
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +8 -2
  25. package/lib/models/ident.js.map +1 -1
  26. package/lib/models/ident.spec.js +16 -0
  27. package/lib/models/ident.spec.js.map +1 -1
  28. package/lib/models/ownermodel.d.ts +1 -1
  29. package/lib/models/ownermodel.js.map +1 -1
  30. package/lib/models/ownermodel.spec.js +22 -19
  31. package/lib/models/ownermodel.spec.js.map +1 -1
  32. package/lib/models/user.d.ts +2 -0
  33. package/lib/models/user.js +4 -2
  34. package/lib/models/user.js.map +1 -1
  35. package/lib/models/user.spec.js +9 -2
  36. package/lib/models/user.spec.js.map +1 -1
  37. package/lib/queues/filequeue.d.ts +63 -0
  38. package/lib/queues/filequeue.js +161 -0
  39. package/lib/queues/filequeue.js.map +1 -0
  40. package/lib/queues/filequeue.spec.d.ts +1 -0
  41. package/lib/queues/filequeue.spec.js +90 -0
  42. package/lib/queues/filequeue.spec.js.map +1 -0
  43. package/lib/queues/memoryqueue.d.ts +18 -4
  44. package/lib/queues/memoryqueue.js +20 -13
  45. package/lib/queues/memoryqueue.js.map +1 -1
  46. package/lib/queues/memoryqueue.spec.js +142 -39
  47. package/lib/queues/memoryqueue.spec.js.map +1 -1
  48. package/lib/queues/pubsubservice.d.ts +27 -0
  49. package/lib/queues/pubsubservice.js +21 -0
  50. package/lib/queues/pubsubservice.js.map +1 -0
  51. package/lib/queues/queue.spec.js +16 -7
  52. package/lib/queues/queue.spec.js.map +1 -1
  53. package/lib/queues/queueservice.d.ts +108 -13
  54. package/lib/queues/queueservice.js +100 -36
  55. package/lib/queues/queueservice.js.map +1 -1
  56. package/lib/router.js +4 -6
  57. package/lib/router.js.map +1 -1
  58. package/lib/router.spec.js +27 -2
  59. package/lib/router.spec.js.map +1 -1
  60. package/lib/services/asyncevents.d.ts +110 -5
  61. package/lib/services/asyncevents.js +134 -39
  62. package/lib/services/asyncevents.js.map +1 -1
  63. package/lib/services/asyncevents.spec.js +58 -4
  64. package/lib/services/asyncevents.spec.js.map +1 -1
  65. package/lib/services/authentication.d.ts +57 -5
  66. package/lib/services/authentication.js +93 -84
  67. package/lib/services/authentication.js.map +1 -1
  68. package/lib/services/authentication.spec.js +118 -82
  69. package/lib/services/authentication.spec.js.map +1 -1
  70. package/lib/services/binary.d.ts +175 -48
  71. package/lib/services/binary.js +205 -170
  72. package/lib/services/binary.js.map +1 -1
  73. package/lib/services/binary.spec.d.ts +22 -3
  74. package/lib/services/binary.spec.js +327 -22
  75. package/lib/services/binary.spec.js.map +1 -1
  76. package/lib/services/configuration.d.ts +94 -13
  77. package/lib/services/configuration.js +98 -28
  78. package/lib/services/configuration.js.map +1 -1
  79. package/lib/services/configuration.spec.js +40 -1
  80. package/lib/services/configuration.spec.js.map +1 -1
  81. package/lib/services/cron.d.ts +4 -4
  82. package/lib/services/cron.js +37 -53
  83. package/lib/services/cron.js.map +1 -1
  84. package/lib/services/cron.spec.d.ts +1 -0
  85. package/lib/services/cron.spec.js +76 -0
  86. package/lib/services/cron.spec.js.map +1 -0
  87. package/lib/services/debugmailer.spec.js +18 -4
  88. package/lib/services/debugmailer.spec.js.map +1 -1
  89. package/lib/services/echo.js +22 -13
  90. package/lib/services/echo.js.map +1 -1
  91. package/lib/services/echo.spec.d.ts +1 -0
  92. package/lib/services/echo.spec.js +52 -0
  93. package/lib/services/echo.spec.js.map +1 -0
  94. package/lib/services/filebinary.d.ts +16 -9
  95. package/lib/services/filebinary.js +58 -73
  96. package/lib/services/filebinary.js.map +1 -1
  97. package/lib/services/filebinary.spec.d.ts +8 -1
  98. package/lib/services/filebinary.spec.js +133 -7
  99. package/lib/services/filebinary.spec.js.map +1 -1
  100. package/lib/services/fileconfiguration.d.ts +9 -3
  101. package/lib/services/fileconfiguration.js +13 -6
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +100 -5
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/kubernetesconfiguration.d.ts +8 -2
  106. package/lib/services/kubernetesconfiguration.js +16 -5
  107. package/lib/services/kubernetesconfiguration.js.map +1 -1
  108. package/lib/services/kubernetesconfiguration.spec.js +53 -16
  109. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  110. package/lib/services/mailer.d.ts +11 -2
  111. package/lib/services/mailer.js +28 -34
  112. package/lib/services/mailer.js.map +1 -1
  113. package/lib/services/mailer.spec.js +69 -23
  114. package/lib/services/mailer.spec.js.map +1 -1
  115. package/lib/services/oauth.d.ts +5 -2
  116. package/lib/services/oauth.js +22 -8
  117. package/lib/services/oauth.js.map +1 -1
  118. package/lib/services/oauth.spec.js +33 -3
  119. package/lib/services/oauth.spec.js.map +1 -1
  120. package/lib/services/resource.spec.js +39 -2
  121. package/lib/services/resource.spec.js.map +1 -1
  122. package/lib/services/service.d.ts +16 -0
  123. package/lib/services/service.js +47 -6
  124. package/lib/services/service.js.map +1 -1
  125. package/lib/services/service.spec.d.ts +1 -0
  126. package/lib/services/service.spec.js +119 -0
  127. package/lib/services/service.spec.js.map +1 -0
  128. package/lib/stores/aggregator.d.ts +43 -0
  129. package/lib/stores/aggregator.js +106 -0
  130. package/lib/stores/aggregator.js.map +1 -0
  131. package/lib/stores/file.d.ts +49 -11
  132. package/lib/stores/file.js +84 -81
  133. package/lib/stores/file.js.map +1 -1
  134. package/lib/stores/file.spec.d.ts +6 -1
  135. package/lib/stores/file.spec.js +134 -9
  136. package/lib/stores/file.spec.js.map +1 -1
  137. package/lib/stores/mapper.d.ts +151 -0
  138. package/lib/stores/mapper.js +294 -0
  139. package/lib/stores/mapper.js.map +1 -0
  140. package/lib/stores/mapper.spec.d.ts +1 -0
  141. package/lib/stores/mapper.spec.js +55 -0
  142. package/lib/stores/mapper.spec.js.map +1 -0
  143. package/lib/stores/memory.d.ts +52 -7
  144. package/lib/stores/memory.js +71 -33
  145. package/lib/stores/memory.js.map +1 -1
  146. package/lib/stores/memory.spec.d.ts +6 -1
  147. package/lib/stores/memory.spec.js +65 -4
  148. package/lib/stores/memory.spec.js.map +1 -1
  149. package/lib/stores/store.d.ts +263 -126
  150. package/lib/stores/store.js +285 -493
  151. package/lib/stores/store.js.map +1 -1
  152. package/lib/stores/store.spec.d.ts +20 -0
  153. package/lib/stores/store.spec.js +242 -18
  154. package/lib/stores/store.spec.js.map +1 -1
  155. package/lib/test.d.ts +1 -7
  156. package/lib/test.js +3 -12
  157. package/lib/test.js.map +1 -1
  158. package/lib/utils/abstractdeployer.spec.d.ts +1 -0
  159. package/lib/utils/abstractdeployer.spec.js +23 -0
  160. package/lib/utils/abstractdeployer.spec.js.map +1 -0
  161. package/lib/utils/context.d.ts +25 -2
  162. package/lib/utils/context.js +33 -12
  163. package/lib/utils/context.js.map +1 -1
  164. package/lib/utils/context.spec.js +81 -11
  165. package/lib/utils/context.spec.js.map +1 -1
  166. package/lib/utils/cookie.d.ts +12 -0
  167. package/lib/utils/cookie.js +13 -1
  168. package/lib/utils/cookie.js.map +1 -1
  169. package/lib/utils/cookie.spec.js +42 -11
  170. package/lib/utils/cookie.spec.js.map +1 -1
  171. package/lib/utils/logger.d.ts +23 -4
  172. package/lib/utils/logger.js +29 -6
  173. package/lib/utils/logger.js.map +1 -1
  174. package/lib/utils/logger.spec.js +8 -0
  175. package/lib/utils/logger.spec.js.map +1 -1
  176. package/lib/utils/serializers.d.ts +5 -5
  177. package/lib/utils/serializers.js +10 -10
  178. package/lib/utils/serializers.js.map +1 -1
  179. package/lib/utils/serializers.spec.js +41 -16
  180. package/lib/utils/serializers.spec.js.map +1 -1
  181. package/lib/utils/waiter.d.ts +59 -1
  182. package/lib/utils/waiter.js +86 -3
  183. package/lib/utils/waiter.js.map +1 -1
  184. package/lib/utils/waiter.spec.js +48 -4
  185. package/lib/utils/waiter.spec.js.map +1 -1
  186. package/package.json +16 -11
  187. package/test/badapp/package.json +4 -0
  188. package/test/badapp/webda.config.json +1 -0
  189. package/test/cachedapp/webda.config.json +7 -0
  190. package/test/config-file-no-reload.json +70 -0
  191. package/test/config-file-reload.json +7 -1
  192. package/test/config-kube-reload.json +7 -1
  193. package/test/config.json +45 -21
  194. package/test/config.old-default.json +0 -16
  195. package/test/config.old.json +0 -16
  196. package/test/deployments/invalid.json +1 -0
  197. package/test/moddas/fakeservice.js +5 -0
  198. package/test/models/ident.js +10 -14
  199. package/test/models/task.js +2 -4
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MapperService = exports.MapperParameters = void 0;
19
+ const service_1 = require("../services/service");
20
+ /**
21
+ * Mapper configuration
22
+ */
23
+ class MapperParameters extends service_1.ServiceParameters {
24
+ constructor(params) {
25
+ var _a, _b;
26
+ super(params);
27
+ if (typeof params.fields === "string") {
28
+ this.fields = params.fields.split(",");
29
+ }
30
+ (_a = this.cascade) !== null && _a !== void 0 ? _a : (this.cascade = false);
31
+ (_b = this.fields) !== null && _b !== void 0 ? _b : (this.fields = []);
32
+ }
33
+ }
34
+ exports.MapperParameters = MapperParameters;
35
+ /**
36
+ * Map object to another object
37
+ */
38
+ class MapperService extends service_1.Service {
39
+ /**
40
+ * @override
41
+ */
42
+ loadParameters(params) {
43
+ return new MapperParameters(params);
44
+ }
45
+ /**
46
+ * @override
47
+ */
48
+ resolve() {
49
+ super.resolve();
50
+ this.targetStore.addReverseMap(this.parameters.targetAttribute, this.sourceService);
51
+ const method = this.parameters.async ? "onAsync" : "on";
52
+ this.sourceService[method]("Store.PartialUpdated", (evt) => __awaiter(this, void 0, void 0, function* () {
53
+ let prop;
54
+ if (evt.partial_update.increment) {
55
+ prop = evt.partial_update.increment.property;
56
+ }
57
+ else if (evt.partial_update.addItem) {
58
+ prop = evt.partial_update.addItem.property;
59
+ }
60
+ else if (evt.partial_update.deleteItem) {
61
+ prop = evt.partial_update.deleteItem.property;
62
+ }
63
+ yield this._handleMapFromPartial(evt.object_id, evt.updateDate, prop);
64
+ }));
65
+ this.sourceService[method]("Store.Saved", (evt) => __awaiter(this, void 0, void 0, function* () {
66
+ yield this.handleMap(evt.object, "created");
67
+ }));
68
+ this.sourceService[method]("Store.Update", (evt) => __awaiter(this, void 0, void 0, function* () {
69
+ yield this.handleMap(evt.object, evt.update);
70
+ }));
71
+ this.sourceService[method]("Store.PatchUpdate", (evt) => __awaiter(this, void 0, void 0, function* () {
72
+ yield this.handleMap(evt.object, evt.update);
73
+ }));
74
+ this.sourceService[method]("Store.Delete", (evt) => __awaiter(this, void 0, void 0, function* () {
75
+ yield this.handleMap(evt.object, "deleted");
76
+ }));
77
+ // Cascade delete when target is destroyed
78
+ if (this.parameters.cascade) {
79
+ this.targetStore[method]("Store.Deleted", (evt) => __awaiter(this, void 0, void 0, function* () {
80
+ let maps = evt.object[this.parameters.targetAttribute];
81
+ if (!maps) {
82
+ return;
83
+ }
84
+ yield Promise.all(maps.map(mapper => this.sourceService.cascadeDelete(mapper, evt.object.getUuid())));
85
+ }));
86
+ }
87
+ }
88
+ /**
89
+ * Get index of the mapper for an object
90
+ * @param map
91
+ * @param uuid
92
+ * @returns
93
+ */
94
+ getMapper(map, uuid) {
95
+ for (var i = 0; i < map.length; i++) {
96
+ if (map[i].uuid === uuid) {
97
+ return i;
98
+ }
99
+ }
100
+ return -1;
101
+ }
102
+ /**
103
+ * Create an object mapper
104
+ *
105
+ * @param map map to create mapper for
106
+ * @param object for the mapper to represent
107
+ * @param updates to the object being made
108
+ * @returns mapper object and found = true if updates will impact the mapper
109
+ */
110
+ createMapper(object, updates) {
111
+ var mapper = {
112
+ uuid: object.getUuid()
113
+ };
114
+ let found = Object.keys(updates).includes(this.parameters.targetAttribute);
115
+ for (let mapperfield of this.parameters.fields) {
116
+ // Create the mapper object
117
+ if (updates[mapperfield] !== undefined) {
118
+ mapper[mapperfield] = updates[mapperfield];
119
+ found = true;
120
+ }
121
+ else if (object[mapperfield] !== undefined) {
122
+ mapper[mapperfield] = object[mapperfield];
123
+ }
124
+ }
125
+ return [mapper, found];
126
+ }
127
+ /**
128
+ * Update a mapper after source object was modified
129
+ *
130
+ * @param source
131
+ * @param target
132
+ * @param mapper
133
+ * @returns
134
+ */
135
+ _handleUpdatedMap(source, target, updates) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ let [mapper, found] = this.createMapper(source, updates);
138
+ if (!found) {
139
+ // None of the mapped keys has been modified -> return
140
+ return;
141
+ }
142
+ // check if reference object has changed
143
+ if (updates[this.parameters.attribute] !== undefined &&
144
+ target.getUuid() !== updates[this.targetStore.getUuidField()]) {
145
+ let i = this.getMapper(target[this.parameters.targetAttribute], source.getUuid());
146
+ if (i >= 0) {
147
+ // Remove the data from old object
148
+ yield this.targetStore.deleteItemFromCollection(target.getUuid(), this.parameters.targetAttribute, i, source.getUuid(), "uuid");
149
+ }
150
+ // Add the data to new object
151
+ yield this.targetStore.upsertItemToCollection(updates[this.parameters.attribute], this.parameters.targetAttribute, mapper);
152
+ }
153
+ else {
154
+ return this._handleUpdatedMapMapper(source, target, mapper);
155
+ }
156
+ });
157
+ }
158
+ /**
159
+ * Update a mapper after source object was modified without change in target
160
+ *
161
+ * @param source
162
+ * @param target
163
+ * @param mapper
164
+ * @returns
165
+ */
166
+ _handleUpdatedMapMapper(source, target, mapper) {
167
+ // Remove old reference
168
+ let i = this.getMapper(target[this.parameters.targetAttribute], source.getUuid());
169
+ // If not found just add it to the collection
170
+ if (i < 0) {
171
+ return this.targetStore.upsertItemToCollection(target.getUuid(), this.parameters.targetAttribute, mapper);
172
+ }
173
+ // Else update with a check on the uuid
174
+ return this.targetStore.upsertItemToCollection(target.getUuid(), this.parameters.targetAttribute, mapper, i, source.getUuid(), "uuid");
175
+ }
176
+ /**
177
+ * Remove the mapper for a deleted object
178
+ *
179
+ * @param source
180
+ * @param target
181
+ * @returns
182
+ */
183
+ _handleDeletedMap(source, target) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ // Remove from the collection
186
+ if (target[this.parameters.targetAttribute] === undefined) {
187
+ return;
188
+ }
189
+ let i = this.getMapper(target[this.parameters.targetAttribute], source.getUuid());
190
+ if (i >= 0) {
191
+ return this.targetStore.deleteItemFromCollection(target.getUuid(), this.parameters.targetAttribute, i, source.getUuid(), "uuid");
192
+ }
193
+ });
194
+ }
195
+ /**
196
+ * Add the mapper for a newly created object
197
+ *
198
+ * @param source
199
+ * @param target
200
+ * @returns
201
+ */
202
+ _handleCreatedMap(source, target) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ // Add to the object
205
+ let [mapper] = this.createMapper(source, {});
206
+ return this.targetStore.upsertItemToCollection(target.getUuid(), this.parameters.targetAttribute, mapper);
207
+ });
208
+ }
209
+ /**
210
+ * Return true if property belongs to the mapped properties
211
+ *
212
+ * @param property
213
+ * @returns
214
+ */
215
+ isMapped(property) {
216
+ return this.parameters.fields.includes(property);
217
+ }
218
+ /**
219
+ * Handle the map from a partial update
220
+ *
221
+ * @param uid
222
+ * @param updateDate
223
+ * @param prop
224
+ */
225
+ _handleMapFromPartial(uid, updateDate, prop = undefined) {
226
+ return __awaiter(this, void 0, void 0, function* () {
227
+ if (this.isMapped(prop) || this.isMapped(this.sourceService.getLastUpdateField())) {
228
+ // Not optimal need to reload the object
229
+ let source = yield this.sourceService.getObject(uid);
230
+ let updates = {};
231
+ if (this.isMapped(this.sourceService.getLastUpdateField())) {
232
+ updates[this.sourceService.getLastUpdateField()] = updateDate;
233
+ }
234
+ if (this.isMapped(prop)) {
235
+ updates[prop] = source[prop];
236
+ }
237
+ yield this.handleMap(source, updates);
238
+ }
239
+ });
240
+ }
241
+ /**
242
+ * Manage one mapping update
243
+ *
244
+ * @param store
245
+ * @param object
246
+ * @param map
247
+ * @param updates
248
+ * @returns
249
+ */
250
+ handleMap(object, updates) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ let mapped = yield this.targetStore.get(object[this.parameters.attribute] || updates[this.parameters.attribute]);
253
+ if (mapped === undefined) {
254
+ return;
255
+ }
256
+ if (updates === "created") {
257
+ return this._handleCreatedMap(object, mapped);
258
+ }
259
+ else if (updates == "deleted") {
260
+ return this._handleDeletedMap(object, mapped);
261
+ }
262
+ else if (typeof updates == "object") {
263
+ return this._handleUpdatedMap(object, mapped, updates);
264
+ }
265
+ });
266
+ }
267
+ /**
268
+ * Recompute the whole mappers
269
+ */
270
+ recompute() {
271
+ return __awaiter(this, void 0, void 0, function* () { });
272
+ }
273
+ /**
274
+ * Override
275
+ */
276
+ static getModda() {
277
+ return {
278
+ uuid: "Webda/Mapper",
279
+ label: "Mapper",
280
+ description: "Deduplicate content between models",
281
+ documentation: "https://raw.githubusercontent.com/loopingz/webda/master/readmes/Store.md",
282
+ logo: "images/icons/filedb.png"
283
+ };
284
+ }
285
+ }
286
+ __decorate([
287
+ (0, service_1.Inject)("params:target")
288
+ ], MapperService.prototype, "targetStore", void 0);
289
+ __decorate([
290
+ (0, service_1.Inject)("params:source")
291
+ ], MapperService.prototype, "sourceService", void 0);
292
+ exports.default = MapperService;
293
+ exports.MapperService = MapperService;
294
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/stores/mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const assert = require("assert");
19
+ const mocha_1 = require("@testdeck/mocha");
20
+ const sinon = require("sinon");
21
+ const test_1 = require("../test");
22
+ const mapper_1 = require("./mapper");
23
+ let MapperTest = class MapperTest extends test_1.WebdaTest {
24
+ cov() {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ mapper_1.default.getModda();
27
+ let service = this.getService("MemoryIdentsMapper");
28
+ yield service.recompute();
29
+ let identStore = this.getService("MemoryIdents");
30
+ let ident = new identStore._model();
31
+ identStore.initModel(ident);
32
+ assert.notStrictEqual(ident.getUuid(), undefined);
33
+ // Test guard-rails (seems hardly reachable so might be useless)
34
+ assert.strictEqual(service.getMapper([], "id"), -1);
35
+ // @ts-ignore
36
+ assert.strictEqual(yield service._handleUpdatedMap(ident, { idents: [] }, {}), undefined);
37
+ // @ts-ignore
38
+ assert.strictEqual(yield service._handleDeletedMap(undefined, {}), undefined);
39
+ let stb = sinon.stub(service.targetStore, "upsertItemToCollection").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
40
+ // @ts-ignore
41
+ yield service._handleUpdatedMapMapper(ident, { idents: [], getUuid: () => "t" }, { uuid: "t" });
42
+ assert.strictEqual(stb.getCall(0).args.length, 3);
43
+ yield this.getService("MemoryUsers").emitSync("Store.Deleted", {
44
+ object: {}
45
+ });
46
+ });
47
+ }
48
+ };
49
+ __decorate([
50
+ mocha_1.test
51
+ ], MapperTest.prototype, "cov", null);
52
+ MapperTest = __decorate([
53
+ mocha_1.suite
54
+ ], MapperTest);
55
+ //# sourceMappingURL=mapper.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.spec.js","sourceRoot":"","sources":["../../src/stores/mapper.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,iCAAiC;AACjC,2CAA8C;AAC9C,+BAA+B;AAC/B,kCAAoC;AACpC,qCAAqC;AAGrC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,gBAAS;IAE1B,GAAG;;YACP,gBAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAgB,oBAAoB,CAAC,CAAC;YACnE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAQ,cAAc,CAAC,CAAC;YACxD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAElD,gEAAgE;YAChE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,aAAa;YACb,MAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAC1F,aAAa;YACb,MAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAE9E,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,SAAS,CAAC,GAAS,EAAE,gDAAE,CAAC,CAAA,CAAC,CAAC;YAC9F,aAAa;YACb,MAAM,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAChG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAElD,MAAM,IAAI,CAAC,UAAU,CAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE;gBACpE,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAA;AAzBC;IADC,YAAI;qCAyBJ;AA1BG,UAAU;IADf,aAAK;GACA,UAAU,CA2Bf"}
@@ -11,23 +11,68 @@ interface StorageMap {
11
11
  */
12
12
  declare class MemoryStore<T extends CoreModel, K extends StoreParameters = StoreParameters> extends Store<T, K> {
13
13
  storage: StorageMap;
14
+ /**
15
+ * @override
16
+ */
14
17
  init(): Promise<void>;
18
+ /**
19
+ * @override
20
+ */
15
21
  exists(uid: any): Promise<boolean>;
22
+ /**
23
+ * @override
24
+ */
16
25
  _find(request: any, offset: any, limit: any): Promise<any>;
17
- _save(object: any): Promise<T>;
18
- _delete(uid: any): Promise<void>;
19
- _patch(object: any, uuid: any): Promise<T>;
20
- _update(object: any, uuid: any): Promise<T>;
26
+ /**
27
+ * @override
28
+ */
29
+ _save(object: T): Promise<T>;
30
+ /**
31
+ * @override
32
+ */
33
+ _delete(uid: string): Promise<void>;
34
+ /**
35
+ * @override
36
+ */
37
+ _patch(object: any, uuid: string, writeCondition?: any, writeConditionField?: string): Promise<T>;
38
+ /**
39
+ * @override
40
+ */
41
+ _update(object: any, uid: string, writeCondition?: any, writeConditionField?: string): Promise<T>;
42
+ /**
43
+ * @override
44
+ */
21
45
  getAll(uids: any): Promise<any>;
22
- _getSync(uid: any): T;
23
- _removeAttribute(uuid: string, attribute: string): Promise<void>;
24
- _get(uid: any): Promise<T>;
46
+ /**
47
+ * Retrieve the object as model
48
+ *
49
+ * @param uid
50
+ * @returns
51
+ */
52
+ _getSync(uid: string, raiseIfNotFound?: boolean): T;
53
+ /**
54
+ * @override
55
+ */
56
+ _removeAttribute(uuid: string, attribute: string, writeCondition?: any, writeConditionField?: string): Promise<void>;
57
+ /**
58
+ * @override
59
+ */
60
+ _get(uid: any, raiseIfNotFound?: boolean): Promise<T>;
61
+ /**
62
+ * @override
63
+ */
25
64
  __clean(): Promise<void>;
65
+ /**
66
+ * @override
67
+ */
26
68
  _incrementAttribute(uid: any, prop: any, value: any, updateDate: Date): Promise<T>;
27
69
  /**
28
70
  * @inheritdoc
29
71
  */
30
72
  _upsertItemToCollection(uid: string, prop: string, item: any, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<void>;
73
+ /**
74
+ * @override
75
+ */
31
76
  _deleteItemFromCollection(uid: any, prop: any, index: any, itemWriteCondition: any, itemWriteConditionField: any, updateDate: Date): Promise<T>;
32
77
  /**
33
78
  *
@@ -21,6 +21,9 @@ class MemoryStore extends store_1.Store {
21
21
  super(...arguments);
22
22
  this.storage = {};
23
23
  }
24
+ /**
25
+ * @override
26
+ */
24
27
  init() {
25
28
  const _super = Object.create(null, {
26
29
  init: { get: () => super.init }
@@ -29,52 +32,69 @@ class MemoryStore extends store_1.Store {
29
32
  return _super.init.call(this);
30
33
  });
31
34
  }
35
+ /**
36
+ * @override
37
+ */
32
38
  exists(uid) {
33
39
  return __awaiter(this, void 0, void 0, function* () {
34
40
  return this.storage[uid] !== undefined;
35
41
  });
36
42
  }
43
+ /**
44
+ * @override
45
+ */
37
46
  _find(request, offset, limit) {
38
47
  return __awaiter(this, void 0, void 0, function* () {
39
48
  // Need to transfert to Array
40
49
  return this.storage;
41
50
  });
42
51
  }
52
+ /**
53
+ * @override
54
+ */
43
55
  _save(object) {
44
56
  return __awaiter(this, void 0, void 0, function* () {
45
57
  let uid = object[this._uuidField];
46
- if (!(object instanceof this._model)) {
47
- object = this.initModel(object);
48
- }
49
58
  this.storage[uid] = object.toStoredJSON(true);
50
59
  return this._getSync(uid);
51
60
  });
52
61
  }
62
+ /**
63
+ * @override
64
+ */
53
65
  _delete(uid) {
54
66
  return __awaiter(this, void 0, void 0, function* () {
55
67
  delete this.storage[uid];
56
68
  });
57
69
  }
58
- _patch(object, uuid) {
70
+ /**
71
+ * @override
72
+ */
73
+ _patch(object, uuid, writeCondition, writeConditionField) {
59
74
  return __awaiter(this, void 0, void 0, function* () {
60
- let uid = uuid || object[this._uuidField];
61
- let obj = this._getSync(uid);
62
- if (!obj) {
63
- return Promise.reject(Error("NotFound"));
64
- }
75
+ let obj = yield this._get(uuid, true);
76
+ this.checkUpdateCondition(obj, writeConditionField, writeCondition);
65
77
  for (let prop in object) {
66
78
  obj[prop] = object[prop];
67
79
  }
68
- this.storage[uid] = obj.toStoredJSON(true);
69
- return this._getSync(uid);
80
+ this.storage[uuid] = obj.toStoredJSON(true);
81
+ return this._getSync(uuid);
70
82
  });
71
83
  }
72
- _update(object, uuid) {
84
+ /**
85
+ * @override
86
+ */
87
+ _update(object, uid, writeCondition, writeConditionField) {
73
88
  return __awaiter(this, void 0, void 0, function* () {
89
+ let obj = yield this._get(uid, true);
90
+ this.checkUpdateCondition(obj, writeConditionField, writeCondition);
74
91
  yield this._save(object);
75
- return this._getSync(uuid || object[this._uuidField]);
92
+ return this._getSync(uid);
76
93
  });
77
94
  }
95
+ /**
96
+ * @override
97
+ */
78
98
  getAll(uids) {
79
99
  return __awaiter(this, void 0, void 0, function* () {
80
100
  if (!uids) {
@@ -91,41 +111,60 @@ class MemoryStore extends store_1.Store {
91
111
  return result;
92
112
  });
93
113
  }
94
- _getSync(uid) {
114
+ /**
115
+ * Retrieve the object as model
116
+ *
117
+ * @param uid
118
+ * @returns
119
+ */
120
+ _getSync(uid, raiseIfNotFound = false) {
95
121
  if (this.storage[uid]) {
96
122
  return this.initModel(JSON.parse(this.storage[uid]));
97
123
  }
124
+ else if (raiseIfNotFound) {
125
+ throw new store_1.StoreNotFoundError(uid, this.getName());
126
+ }
98
127
  return null;
99
128
  }
100
- _removeAttribute(uuid, attribute) {
129
+ /**
130
+ * @override
131
+ */
132
+ _removeAttribute(uuid, attribute, writeCondition, writeConditionField) {
101
133
  return __awaiter(this, void 0, void 0, function* () {
102
- let res = yield this._get(uuid);
134
+ let res = yield this._get(uuid, true);
135
+ this.checkUpdateCondition(res, writeConditionField, writeCondition);
103
136
  delete res[attribute];
104
137
  this._save(res);
105
138
  });
106
139
  }
107
- _get(uid) {
140
+ /**
141
+ * @override
142
+ */
143
+ _get(uid, raiseIfNotFound = false) {
108
144
  return __awaiter(this, void 0, void 0, function* () {
109
- if (!this.storage[uid])
145
+ if (!this.storage[uid]) {
146
+ if (raiseIfNotFound) {
147
+ throw new store_1.StoreNotFoundError(uid, this.getName());
148
+ }
110
149
  return;
150
+ }
111
151
  return this._getSync(uid);
112
152
  });
113
153
  }
154
+ /**
155
+ * @override
156
+ */
114
157
  __clean() {
115
158
  return __awaiter(this, void 0, void 0, function* () {
116
159
  this.storage = {};
117
- if (this.parameters.index) {
118
- yield this.createIndex();
119
- }
120
160
  });
121
161
  }
162
+ /**
163
+ * @override
164
+ */
122
165
  _incrementAttribute(uid, prop, value, updateDate) {
123
166
  return __awaiter(this, void 0, void 0, function* () {
124
- var res = this.storage[uid];
125
- if (res === undefined) {
126
- throw Error("NotFound");
127
- }
128
- res = this._getSync(uid);
167
+ var res = yield this._get(uid, true);
129
168
  if (!res[prop]) {
130
169
  res[prop] = 0;
131
170
  }
@@ -139,18 +178,17 @@ class MemoryStore extends store_1.Store {
139
178
  */
140
179
  _upsertItemToCollection(uid, prop, item, index, itemWriteCondition, itemWriteConditionField, updateDate) {
141
180
  return __awaiter(this, void 0, void 0, function* () {
142
- return this.emulateUpsertItemToCollection(this._getSync(uid), prop, item, index, itemWriteCondition, itemWriteConditionField, updateDate);
181
+ return this.simulateUpsertItemToCollection(this._getSync(uid, true), prop, item, updateDate, index, itemWriteCondition, itemWriteConditionField);
143
182
  });
144
183
  }
184
+ /**
185
+ * @override
186
+ */
145
187
  _deleteItemFromCollection(uid, prop, index, itemWriteCondition, itemWriteConditionField, updateDate) {
146
188
  return __awaiter(this, void 0, void 0, function* () {
147
- var res = this.storage[uid];
148
- if (res === undefined) {
149
- throw Error("NotFound");
150
- }
151
- res = this._getSync(uid);
189
+ var res = yield this._get(uid, true);
152
190
  if (itemWriteCondition && res[prop][index][itemWriteConditionField] != itemWriteCondition) {
153
- throw Error("UpdateCondition not met");
191
+ throw new store_1.UpdateConditionFailError(uid, itemWriteConditionField, itemWriteCondition);
154
192
  }
155
193
  res[prop].splice(index, 1);
156
194
  res[this._lastUpdateField] = updateDate;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mCAAiD;AAMjD;;;;GAIG;AACH,MAAM,WAA8E,SAAQ,aAAW;IAAvG;;QACE,YAAO,GAAe,EAAE,CAAC;IAsJ3B,CAAC;IApJO,IAAI;;;;;YACR,OAAO,OAAM,IAAI,YAAG;QACtB,CAAC;KAAA;IAEK,MAAM,CAAC,GAAG;;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;QACzC,CAAC;KAAA;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;;YAChC,6BAA6B;YAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;KAAA;IAEK,KAAK,CAAC,MAAM;;YAChB,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,CAAC,EAAE;gBACpC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO,CAAC,GAAG;;YACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;KAAA;IAEK,MAAM,CAAC,MAAM,EAAE,IAAI;;YACvB,IAAI,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;aAC1C;YACD,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;gBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aAC1B;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO,CAAC,MAAM,EAAE,IAAI;;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACxD,CAAC;KAAA;IAEK,MAAM,CAAC,IAAI;;YACf,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;gBAClB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrC;aACF;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAED,QAAQ,CAAC,GAAG;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEK,gBAAgB,CAAC,IAAY,EAAE,SAAiB;;YACpD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;KAAA;IAEK,IAAI,CAAC,GAAG;;YACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACzB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAgB;;YAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;aACzB;YACD,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACf;YACD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;KAAA;IAED;;OAEG;IACG,uBAAuB,CAC3B,GAAW,EACX,IAAY,EACZ,IAAS,EACT,KAAa,EACb,kBAAuB,EACvB,uBAA+B,EAC/B,UAAgB;;YAEhB,OAAO,IAAI,CAAC,6BAA6B,CACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAClB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACJ,CAAC;KAAA;IAEK,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,UAAgB;;YAC7G,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;aACzB;YACD,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,kBAAkB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,IAAI,kBAAkB,EAAE;gBACzF,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;aACxC;YACD,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC;YACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;KAAA;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ;QACb,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,qCAAqC;YAClD,aAAa,EAAE,EAAE;YACjB,IAAI,EAAE,8BAA8B;SACrC,CAAC;IACJ,CAAC;CACF;AAEQ,kCAAW"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"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"}