liwi-subscribe-store 9.0.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [9.1.0](https://github.com/liwijs/liwi/compare/v9.0.0...v9.1.0) (2022-10-08)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update dev dependencies, fix ts remix, fix next babel config ([fadb30e](https://github.com/liwijs/liwi/commit/fadb30e9620fbbcb99cfbc6a7db78d9ef2dad5e2))
12
+
13
+
14
+
15
+
16
+
6
17
  # [9.0.0](https://github.com/liwijs/liwi/compare/v8.3.1...v9.0.0) (2022-03-05)
7
18
 
8
19
 
package/README.md CHANGED
@@ -8,6 +8,9 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://npmjs.org/package/liwi-subscribe-store"><img src="https://img.shields.io/npm/v/liwi-subscribe-store.svg?style=flat-square"></a>
11
+ <a href="https://npmjs.org/package/liwi-subscribe-store"><img src="https://img.shields.io/npm/dw/liwi-subscribe-store.svg?style=flat-square"></a>
12
+ <a href="https://npmjs.org/package/liwi-subscribe-store"><img src="https://img.shields.io/node/v/liwi-subscribe-store.svg?style=flat-square"></a>
13
+ <a href="https://npmjs.org/package/liwi-subscribe-store"><img src="https://img.shields.io/npm/types/liwi-subscribe-store.svg?style=flat-square"></a>
11
14
  </p>
12
15
 
13
16
  ## Install
@@ -36,6 +36,6 @@ export default class SubscribeStore<KeyPath extends keyof Model, KeyValue extend
36
36
  deleteOne(object: Model): Promise<void>;
37
37
  deleteMany(criteria: Criteria<Model>): Promise<void>;
38
38
  count(criteria?: Criteria<Model>): Promise<number>;
39
- cursor<Result = Model>(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>>;
39
+ cursor<Result extends Partial<Model> = Model>(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>>;
40
40
  }
41
41
  //# sourceMappingURL=SubscribeStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscribeStore.d.ts","sourceRoot":"","sources":["../src/SubscribeStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,IAAI,cAAc,EACvB,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAEpB,oBAAY,OAAO,CAAC,KAAK,IACrB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC;AAEvC,oBAAY,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;AAElE,MAAM,CAAC,OAAO,OAAO,cAAc,CACjC,OAAO,SAAS,MAAM,KAAK,EAC3B,QAAQ,SAAS,eAAe,EAChC,KAAK,SAAS,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EACnD,eAAe,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,UAAU,SAAS,kBAAkB,EACrC,KAAK,SAAS,iBAAiB,CAC7B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,EACf,UAAU,CACX,CACD,YACE,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC;IAEvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAE7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,KAAK,EAAE,KAAK;IAKxB,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI;IAKhD,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI;IAI5C,qBAAqB,CACnB,MAAM,SAAS,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EACxC,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,EAElC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAC5B,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,GACvC,sBAAsB,CACvB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,EACxE,MAAM,EACN,MAAM,CACP;IAaD,qBAAqB,CACnB,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EACtC,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,EAElC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAC5B,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GACrC,sBAAsB,CACvB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,EACxE,IAAI,EAAE,EACN,MAAM,CACP;IAaD,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIzE,SAAS,CACP,GAAG,EAAE,QAAQ,EACb,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GACzB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAI7B,OAAO,CACL,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EACzB,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GACjB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAIvB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAMlD,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAMzC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IASlD,SAAS,CACb,CAAC,SAAS,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAAC,EAExE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EACxD,wBAAwB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GACvD,OAAO,CAAC,KAAK,CAAC;IAQX,iBAAiB,CACrB,CAAC,SAAS,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAAC,EAExE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EACxD,wBAAwB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GACvD,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAgBzB,kBAAkB,CACtB,GAAG,EAAE,QAAQ,EACb,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,EAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GACzB,OAAO,CAAC,KAAK,CAAC;IAOX,gBAAgB,CACpB,MAAM,EAAE,KAAK,EACb,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,GAC3B,OAAO,CAAC,KAAK,CAAC;IAMX,iBAAiB,CACrB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EACzB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC;IAgBV,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,MAAM,CAAC,MAAM,GAAG,KAAK,EACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GACjB,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;CAK9D"}
1
+ {"version":3,"file":"SubscribeStore.d.ts","sourceRoot":"","sources":["../src/SubscribeStore.ts"],"names":[],"mappings":"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"}
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _extends = require('@babel/runtime/helpers/esm/extends');
6
+ var _regeneratorRuntime = require('@babel/runtime/helpers/esm/regeneratorRuntime');
6
7
  var _asyncToGenerator = require('@babel/runtime/helpers/esm/asyncToGenerator');
7
8
  var _createClass = require('@babel/runtime/helpers/esm/createClass');
8
- var _regeneratorRuntime = require('@babel/runtime/regenerator');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
11
11
 
12
12
  var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
13
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
13
14
  var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
14
15
  var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
15
- var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
16
16
 
17
17
  /* eslint-disable max-lines */
18
18
  var SubscribeStore = /*#__PURE__*/function () {
@@ -25,11 +25,9 @@ var SubscribeStore = /*#__PURE__*/function () {
25
25
  var _proto = SubscribeStore.prototype;
26
26
 
27
27
  _proto.subscribe = function subscribe(callback) {
28
- var _this = this;
29
-
30
28
  this.listeners.add(callback);
31
29
  return function () {
32
- return _this.listeners["delete"](callback);
30
+ return this.listeners["delete"](callback);
33
31
  };
34
32
  };
35
33
 
@@ -64,9 +62,9 @@ var SubscribeStore = /*#__PURE__*/function () {
64
62
  };
65
63
 
66
64
  _proto.insertOne = /*#__PURE__*/function () {
67
- var _insertOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee(object) {
65
+ var _insertOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee(object) {
68
66
  var inserted;
69
- return _regeneratorRuntime__default.wrap(function _callee$(_context) {
67
+ return _regeneratorRuntime__default().wrap(function _callee$(_context) {
70
68
  while (1) {
71
69
  switch (_context.prev = _context.next) {
72
70
  case 0:
@@ -95,9 +93,9 @@ var SubscribeStore = /*#__PURE__*/function () {
95
93
  }();
96
94
 
97
95
  _proto.replaceOne = /*#__PURE__*/function () {
98
- var _replaceOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee2(object) {
96
+ var _replaceOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee2(object) {
99
97
  var replaced;
100
- return _regeneratorRuntime__default.wrap(function _callee2$(_context2) {
98
+ return _regeneratorRuntime__default().wrap(function _callee2$(_context2) {
101
99
  while (1) {
102
100
  switch (_context2.prev = _context2.next) {
103
101
  case 0:
@@ -126,9 +124,9 @@ var SubscribeStore = /*#__PURE__*/function () {
126
124
  }();
127
125
 
128
126
  _proto.replaceSeveral = /*#__PURE__*/function () {
129
- var _replaceSeveral = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee3(objects) {
127
+ var _replaceSeveral = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee3(objects) {
130
128
  var replacedObjects;
131
- return _regeneratorRuntime__default.wrap(function _callee3$(_context3) {
129
+ return _regeneratorRuntime__default().wrap(function _callee3$(_context3) {
132
130
  while (1) {
133
131
  switch (_context3.prev = _context3.next) {
134
132
  case 0:
@@ -159,9 +157,9 @@ var SubscribeStore = /*#__PURE__*/function () {
159
157
  }();
160
158
 
161
159
  _proto.upsertOne = /*#__PURE__*/function () {
162
- var _upsertOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee4(object, setOnInsertPartialObject) {
160
+ var _upsertOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee4(object, setOnInsertPartialObject) {
163
161
  var result;
164
- return _regeneratorRuntime__default.wrap(function _callee4$(_context4) {
162
+ return _regeneratorRuntime__default().wrap(function _callee4$(_context4) {
165
163
  while (1) {
166
164
  switch (_context4.prev = _context4.next) {
167
165
  case 0:
@@ -186,9 +184,9 @@ var SubscribeStore = /*#__PURE__*/function () {
186
184
  }();
187
185
 
188
186
  _proto.upsertOneWithInfo = /*#__PURE__*/function () {
189
- var _upsertOneWithInfo = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee5(object, setOnInsertPartialObject) {
187
+ var _upsertOneWithInfo = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee5(object, setOnInsertPartialObject) {
190
188
  var upsertedWithInfo;
191
- return _regeneratorRuntime__default.wrap(function _callee5$(_context5) {
189
+ return _regeneratorRuntime__default().wrap(function _callee5$(_context5) {
192
190
  while (1) {
193
191
  switch (_context5.prev = _context5.next) {
194
192
  case 0:
@@ -230,10 +228,10 @@ var SubscribeStore = /*#__PURE__*/function () {
230
228
  }();
231
229
 
232
230
  _proto.partialUpdateByKey = /*#__PURE__*/function () {
233
- var _partialUpdateByKey = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee6(key, partialUpdate, criteria) {
231
+ var _partialUpdateByKey = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee6(key, partialUpdate, criteria) {
234
232
  var _extends2;
235
233
 
236
- return _regeneratorRuntime__default.wrap(function _callee6$(_context6) {
234
+ return _regeneratorRuntime__default().wrap(function _callee6$(_context6) {
237
235
  while (1) {
238
236
  switch (_context6.prev = _context6.next) {
239
237
  case 0:
@@ -260,9 +258,9 @@ var SubscribeStore = /*#__PURE__*/function () {
260
258
  }();
261
259
 
262
260
  _proto.partialUpdateOne = /*#__PURE__*/function () {
263
- var _partialUpdateOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee7(object, partialUpdate) {
261
+ var _partialUpdateOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee7(object, partialUpdate) {
264
262
  var updated;
265
- return _regeneratorRuntime__default.wrap(function _callee7$(_context7) {
263
+ return _regeneratorRuntime__default().wrap(function _callee7$(_context7) {
266
264
  while (1) {
267
265
  switch (_context7.prev = _context7.next) {
268
266
  case 0:
@@ -291,11 +289,11 @@ var SubscribeStore = /*#__PURE__*/function () {
291
289
  }();
292
290
 
293
291
  _proto.partialUpdateMany = /*#__PURE__*/function () {
294
- var _partialUpdateMany = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee9(criteria, partialUpdate) {
292
+ var _partialUpdateMany = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee9(criteria, partialUpdate) {
295
293
  var _this2 = this;
296
294
 
297
295
  var cursor, changes;
298
- return _regeneratorRuntime__default.wrap(function _callee9$(_context9) {
296
+ return _regeneratorRuntime__default().wrap(function _callee9$(_context9) {
299
297
  while (1) {
300
298
  switch (_context9.prev = _context9.next) {
301
299
  case 0:
@@ -307,9 +305,9 @@ var SubscribeStore = /*#__PURE__*/function () {
307
305
  changes = [];
308
306
  _context9.next = 6;
309
307
  return cursor.forEach( /*#__PURE__*/function () {
310
- var _ref = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee8(model) {
308
+ var _ref = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee8(model) {
311
309
  var key, updated;
312
- return _regeneratorRuntime__default.wrap(function _callee8$(_context8) {
310
+ return _regeneratorRuntime__default().wrap(function _callee8$(_context8) {
313
311
  while (1) {
314
312
  switch (_context8.prev = _context8.next) {
315
313
  case 0:
@@ -354,8 +352,8 @@ var SubscribeStore = /*#__PURE__*/function () {
354
352
  }();
355
353
 
356
354
  _proto.deleteByKey = /*#__PURE__*/function () {
357
- var _deleteByKey = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee10(key, criteria) {
358
- return _regeneratorRuntime__default.wrap(function _callee10$(_context10) {
355
+ var _deleteByKey = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee10(key, criteria) {
356
+ return _regeneratorRuntime__default().wrap(function _callee10$(_context10) {
359
357
  while (1) {
360
358
  switch (_context10.prev = _context10.next) {
361
359
  case 0:
@@ -381,8 +379,8 @@ var SubscribeStore = /*#__PURE__*/function () {
381
379
  }();
382
380
 
383
381
  _proto.deleteOne = /*#__PURE__*/function () {
384
- var _deleteOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee11(object) {
385
- return _regeneratorRuntime__default.wrap(function _callee11$(_context11) {
382
+ var _deleteOne = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee11(object) {
383
+ return _regeneratorRuntime__default().wrap(function _callee11$(_context11) {
386
384
  while (1) {
387
385
  switch (_context11.prev = _context11.next) {
388
386
  case 0:
@@ -409,9 +407,9 @@ var SubscribeStore = /*#__PURE__*/function () {
409
407
  }();
410
408
 
411
409
  _proto.deleteMany = /*#__PURE__*/function () {
412
- var _deleteMany = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee12(criteria) {
410
+ var _deleteMany = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee12(criteria) {
413
411
  var cursor, prev;
414
- return _regeneratorRuntime__default.wrap(function _callee12$(_context12) {
412
+ return _regeneratorRuntime__default().wrap(function _callee12$(_context12) {
415
413
  while (1) {
416
414
  switch (_context12.prev = _context12.next) {
417
415
  case 0:
@@ -448,8 +446,8 @@ var SubscribeStore = /*#__PURE__*/function () {
448
446
  }();
449
447
 
450
448
  _proto.count = /*#__PURE__*/function () {
451
- var _count = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee13(criteria) {
452
- return _regeneratorRuntime__default.wrap(function _callee13$(_context13) {
449
+ var _count = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee13(criteria) {
450
+ return _regeneratorRuntime__default().wrap(function _callee13$(_context13) {
453
451
  while (1) {
454
452
  switch (_context13.prev = _context13.next) {
455
453
  case 0:
@@ -469,9 +467,9 @@ var SubscribeStore = /*#__PURE__*/function () {
469
467
  }();
470
468
 
471
469
  _proto.cursor = /*#__PURE__*/function () {
472
- var _cursor = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default.mark(function _callee14(criteria, sort) {
470
+ var _cursor = _asyncToGenerator__default( /*#__PURE__*/_regeneratorRuntime__default().mark(function _callee14(criteria, sort) {
473
471
  var cursor;
474
- return _regeneratorRuntime__default.wrap(function _callee14$(_context14) {
472
+ return _regeneratorRuntime__default().wrap(function _callee14$(_context14) {
475
473
  while (1) {
476
474
  switch (_context14.prev = _context14.next) {
477
475
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"index-browser.cjs.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","store","listeners","Set","keyPath","subscribe","callback","add","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","upsertOneWithInfo","result","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","connection","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"index-browser.cjs.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result extends Partial<Model> = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","store","listeners","Set","keyPath","subscribe","callback","add","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","_asyncToGenerator","_regeneratorRuntime","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","upsertOneWithInfo","result","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","_extends","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","connection","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import _regeneratorRuntime from '@babel/runtime/helpers/esm/regeneratorRuntime';
2
3
  import _asyncToGenerator from '@babel/runtime/helpers/esm/asyncToGenerator';
3
4
  import _createClass from '@babel/runtime/helpers/esm/createClass';
4
- import _regeneratorRuntime from '@babel/runtime/regenerator';
5
5
 
6
6
  /* eslint-disable max-lines */
7
7
  var SubscribeStore = /*#__PURE__*/function () {
@@ -14,11 +14,9 @@ var SubscribeStore = /*#__PURE__*/function () {
14
14
  var _proto = SubscribeStore.prototype;
15
15
 
16
16
  _proto.subscribe = function subscribe(callback) {
17
- var _this = this;
18
-
19
17
  this.listeners.add(callback);
20
18
  return function () {
21
- return _this.listeners["delete"](callback);
19
+ return this.listeners["delete"](callback);
22
20
  };
23
21
  };
24
22
 
@@ -53,9 +51,9 @@ var SubscribeStore = /*#__PURE__*/function () {
53
51
  };
54
52
 
55
53
  _proto.insertOne = /*#__PURE__*/function () {
56
- var _insertOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(object) {
54
+ var _insertOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(object) {
57
55
  var inserted;
58
- return _regeneratorRuntime.wrap(function _callee$(_context) {
56
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
59
57
  while (1) {
60
58
  switch (_context.prev = _context.next) {
61
59
  case 0:
@@ -84,9 +82,9 @@ var SubscribeStore = /*#__PURE__*/function () {
84
82
  }();
85
83
 
86
84
  _proto.replaceOne = /*#__PURE__*/function () {
87
- var _replaceOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(object) {
85
+ var _replaceOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(object) {
88
86
  var replaced;
89
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
87
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
90
88
  while (1) {
91
89
  switch (_context2.prev = _context2.next) {
92
90
  case 0:
@@ -115,9 +113,9 @@ var SubscribeStore = /*#__PURE__*/function () {
115
113
  }();
116
114
 
117
115
  _proto.replaceSeveral = /*#__PURE__*/function () {
118
- var _replaceSeveral = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(objects) {
116
+ var _replaceSeveral = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(objects) {
119
117
  var replacedObjects;
120
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
118
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
121
119
  while (1) {
122
120
  switch (_context3.prev = _context3.next) {
123
121
  case 0:
@@ -148,9 +146,9 @@ var SubscribeStore = /*#__PURE__*/function () {
148
146
  }();
149
147
 
150
148
  _proto.upsertOne = /*#__PURE__*/function () {
151
- var _upsertOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(object, setOnInsertPartialObject) {
149
+ var _upsertOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(object, setOnInsertPartialObject) {
152
150
  var result;
153
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
151
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
154
152
  while (1) {
155
153
  switch (_context4.prev = _context4.next) {
156
154
  case 0:
@@ -175,9 +173,9 @@ var SubscribeStore = /*#__PURE__*/function () {
175
173
  }();
176
174
 
177
175
  _proto.upsertOneWithInfo = /*#__PURE__*/function () {
178
- var _upsertOneWithInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(object, setOnInsertPartialObject) {
176
+ var _upsertOneWithInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(object, setOnInsertPartialObject) {
179
177
  var upsertedWithInfo;
180
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
178
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
181
179
  while (1) {
182
180
  switch (_context5.prev = _context5.next) {
183
181
  case 0:
@@ -219,10 +217,10 @@ var SubscribeStore = /*#__PURE__*/function () {
219
217
  }();
220
218
 
221
219
  _proto.partialUpdateByKey = /*#__PURE__*/function () {
222
- var _partialUpdateByKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(key, partialUpdate, criteria) {
220
+ var _partialUpdateByKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(key, partialUpdate, criteria) {
223
221
  var _extends2;
224
222
 
225
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
223
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
226
224
  while (1) {
227
225
  switch (_context6.prev = _context6.next) {
228
226
  case 0:
@@ -249,9 +247,9 @@ var SubscribeStore = /*#__PURE__*/function () {
249
247
  }();
250
248
 
251
249
  _proto.partialUpdateOne = /*#__PURE__*/function () {
252
- var _partialUpdateOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(object, partialUpdate) {
250
+ var _partialUpdateOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(object, partialUpdate) {
253
251
  var updated;
254
- return _regeneratorRuntime.wrap(function _callee7$(_context7) {
252
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
255
253
  while (1) {
256
254
  switch (_context7.prev = _context7.next) {
257
255
  case 0:
@@ -280,11 +278,11 @@ var SubscribeStore = /*#__PURE__*/function () {
280
278
  }();
281
279
 
282
280
  _proto.partialUpdateMany = /*#__PURE__*/function () {
283
- var _partialUpdateMany = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(criteria, partialUpdate) {
281
+ var _partialUpdateMany = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(criteria, partialUpdate) {
284
282
  var _this2 = this;
285
283
 
286
284
  var cursor, changes;
287
- return _regeneratorRuntime.wrap(function _callee9$(_context9) {
285
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
288
286
  while (1) {
289
287
  switch (_context9.prev = _context9.next) {
290
288
  case 0:
@@ -296,9 +294,9 @@ var SubscribeStore = /*#__PURE__*/function () {
296
294
  changes = [];
297
295
  _context9.next = 6;
298
296
  return cursor.forEach( /*#__PURE__*/function () {
299
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(model) {
297
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(model) {
300
298
  var key, updated;
301
- return _regeneratorRuntime.wrap(function _callee8$(_context8) {
299
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
302
300
  while (1) {
303
301
  switch (_context8.prev = _context8.next) {
304
302
  case 0:
@@ -343,8 +341,8 @@ var SubscribeStore = /*#__PURE__*/function () {
343
341
  }();
344
342
 
345
343
  _proto.deleteByKey = /*#__PURE__*/function () {
346
- var _deleteByKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(key, criteria) {
347
- return _regeneratorRuntime.wrap(function _callee10$(_context10) {
344
+ var _deleteByKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(key, criteria) {
345
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
348
346
  while (1) {
349
347
  switch (_context10.prev = _context10.next) {
350
348
  case 0:
@@ -370,8 +368,8 @@ var SubscribeStore = /*#__PURE__*/function () {
370
368
  }();
371
369
 
372
370
  _proto.deleteOne = /*#__PURE__*/function () {
373
- var _deleteOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(object) {
374
- return _regeneratorRuntime.wrap(function _callee11$(_context11) {
371
+ var _deleteOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(object) {
372
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
375
373
  while (1) {
376
374
  switch (_context11.prev = _context11.next) {
377
375
  case 0:
@@ -398,9 +396,9 @@ var SubscribeStore = /*#__PURE__*/function () {
398
396
  }();
399
397
 
400
398
  _proto.deleteMany = /*#__PURE__*/function () {
401
- var _deleteMany = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(criteria) {
399
+ var _deleteMany = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(criteria) {
402
400
  var cursor, prev;
403
- return _regeneratorRuntime.wrap(function _callee12$(_context12) {
401
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
404
402
  while (1) {
405
403
  switch (_context12.prev = _context12.next) {
406
404
  case 0:
@@ -437,8 +435,8 @@ var SubscribeStore = /*#__PURE__*/function () {
437
435
  }();
438
436
 
439
437
  _proto.count = /*#__PURE__*/function () {
440
- var _count = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(criteria) {
441
- return _regeneratorRuntime.wrap(function _callee13$(_context13) {
438
+ var _count = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(criteria) {
439
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
442
440
  while (1) {
443
441
  switch (_context13.prev = _context13.next) {
444
442
  case 0:
@@ -458,9 +456,9 @@ var SubscribeStore = /*#__PURE__*/function () {
458
456
  }();
459
457
 
460
458
  _proto.cursor = /*#__PURE__*/function () {
461
- var _cursor = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(criteria, sort) {
459
+ var _cursor = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(criteria, sort) {
462
460
  var cursor;
463
- return _regeneratorRuntime.wrap(function _callee14$(_context14) {
461
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
464
462
  while (1) {
465
463
  switch (_context14.prev = _context14.next) {
466
464
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"index-browser.es.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","store","listeners","Set","keyPath","subscribe","callback","add","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","upsertOneWithInfo","result","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","connection","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"index-browser.es.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result extends Partial<Model> = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","store","listeners","Set","keyPath","subscribe","callback","add","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","upsertOneWithInfo","result","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","connection","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-browsermodern.es.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"index-browsermodern.es.js","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result extends Partial<Model> = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-node14.cjs","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"index-node14.cjs","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result extends Partial<Model> = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":";;;;AAAA;AA8Be,MAAMA,cAAN,CAef;EAGmBC,SAAS,GAAyB,IAAIC,GAAJ,EAAzB,CAAA;;EAI1BC,WAAW,CAACC,KAAD,EAAe;IACxB,IAAKA,CAAAA,KAAL,GAAaA,KAAb,CAAA;AACA,IAAA,IAAA,CAAKC,OAAL,GAAeD,KAAK,CAACC,OAArB,CAAA;AACD,GAAA;;AAEa,EAAA,IAAVC,UAAU,GAAe;IAC3B,OAAO,IAAA,CAAKF,KAAL,CAAWE,UAAlB,CAAA;AACD,GAAA;;EAEDC,SAAS,CAACC,QAAD,EAAwC;AAC/C,IAAA,IAAA,CAAKP,SAAL,CAAeQ,GAAf,CAAmBD,QAAnB,CAAA,CAAA;AACA,IAAA,OAAO,MAAM,IAAKP,CAAAA,SAAL,CAAeS,MAAf,CAAsBF,QAAtB,CAAb,CAAA;AACD,GAAA;;EAEDG,cAAc,CAACC,MAAD,EAA+B;IAC3C,IAAKX,CAAAA,SAAL,CAAeY,OAAf,CAAwBC,QAAD,IAAcA,QAAQ,CAACF,MAAD,CAA7C,CAAA,CAAA;AACD,GAAA;;AAEDG,EAAAA,qBAAqB,CAInBC,OAJmB,EAKnBC,WALmB,EAanB;IACA,MAAMC,KAOL,GAAG,IAAA,CAAKd,KAAL,CAAWW,qBAAX,CAAiDC,OAAjD,EAA0DC,WAA1D,CAPJ,CAAA;IAQAC,KAAK,CAACC,iBAAN,CAAwB,IAAxB,CAAA,CAAA;AACA,IAAA,OAAOD,KAAP,CAAA;AACD,GAAA;;AAEDE,EAAAA,qBAAqB,CAInBJ,OAJmB,EAKnBC,WALmB,EAanB;IACA,MAAMC,KAOL,GAAG,IAAA,CAAKd,KAAL,CAAWgB,qBAAX,CAA+CJ,OAA/C,EAAwDC,WAAxD,CAPJ,CAAA;IAQAC,KAAK,CAACC,iBAAN,CAAwB,IAAxB,CAAA,CAAA;AACA,IAAA,OAAOD,KAAP,CAAA;AACD,GAAA;;AAEDG,EAAAA,OAAO,CAACC,QAAD,EAA6BC,IAA7B,EAAmE;IACxE,OAAO,IAAA,CAAKnB,KAAL,CAAWiB,OAAX,CAAmBC,QAAnB,EAA6BC,IAA7B,CAAP,CAAA;AACD,GAAA;;AAEDC,EAAAA,SAAS,CACPC,GADO,EAEPH,QAFO,EAGqB;IAC5B,OAAO,IAAA,CAAKlB,KAAL,CAAWoB,SAAX,CAAqBC,GAArB,EAA0BH,QAA1B,CAAP,CAAA;AACD,GAAA;;AAEDI,EAAAA,OAAO,CACLJ,QADK,EAELC,IAFK,EAGuB;IAC5B,OAAO,IAAA,CAAKnB,KAAL,CAAWsB,OAAX,CAAmBJ,QAAnB,EAA6BC,IAA7B,CAAP,CAAA;AACD,GAAA;;EAEc,MAATI,SAAS,CAACC,MAAD,EAA0C;IACvD,MAAMC,QAAQ,GAAG,MAAM,IAAA,CAAKzB,KAAL,CAAWuB,SAAX,CAAqBC,MAArB,CAAvB,CAAA;AACA,IAAA,IAAA,CAAKjB,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,UAAR;MAAoBC,IAAI,EAAE,CAACF,QAAD,CAAA;KAA9C,CAAA,CAAA;AACA,IAAA,OAAOA,QAAP,CAAA;AACD,GAAA;;EAEe,MAAVG,UAAU,CAACJ,MAAD,EAAgC;IAC9C,MAAMK,QAAQ,GAAG,MAAM,IAAA,CAAK7B,KAAL,CAAW4B,UAAX,CAAsBJ,MAAtB,CAAvB,CAAA;AACA,IAAA,IAAA,CAAKjB,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,SAAR;AAAmBI,MAAAA,OAAO,EAAE,CAAC,CAACN,MAAD,EAASK,QAAT,CAAD,CAAA;KAAhD,CAAA,CAAA;AACA,IAAA,OAAOA,QAAP,CAAA;AACD,GAAA;;EAEmB,MAAdE,cAAc,CAACC,OAAD,EAAqC;IACvD,MAAMC,eAAe,GAAG,MAAM,IAAA,CAAKjC,KAAL,CAAW+B,cAAX,CAA0BC,OAA1B,CAA9B,CAAA;AACA,IAAA,IAAA,CAAKzB,cAAL,CAAoB;AAClBmB,MAAAA,IAAI,EAAE,SADY;AAElBI,MAAAA,OAAO,EAAEE,OAAO,CAACE,GAAR,CAAY,CAACC,IAAD,EAAOC,KAAP,KAAiB,CAACD,IAAD,EAAOF,eAAe,CAACG,KAAD,CAAtB,CAA7B,CAAA;KAFX,CAAA,CAAA;AAIA,IAAA,OAAOH,eAAP,CAAA;AACD,GAAA;;AAEc,EAAA,MAATI,SAAS,CAGbb,MAHa,EAIbc,wBAJa,EAKG;IAChB,MAAMC,MAAM,GAAG,MAAM,IAAA,CAAKC,iBAAL,CACnBhB,MADmB,EAEnBc,wBAFmB,CAArB,CAAA;IAIA,OAAOC,MAAM,CAACf,MAAd,CAAA;AACD,GAAA;;AAEsB,EAAA,MAAjBgB,iBAAiB,CAGrBhB,MAHqB,EAIrBc,wBAJqB,EAKS;IAC9B,MAAMG,gBAAgB,GAAG,MAAM,IAAKzC,CAAAA,KAAL,CAAWwC,iBAAX,CAC7BhB,MAD6B,EAE7Bc,wBAF6B,CAA/B,CAAA;;IAIA,IAAIG,gBAAgB,CAAChB,QAArB,EAA+B;AAC7B,MAAA,IAAA,CAAKlB,cAAL,CAAoB;AAClBmB,QAAAA,IAAI,EAAE,UADY;AAElBC,QAAAA,IAAI,EAAE,CAACc,gBAAgB,CAACjB,MAAlB,CAAA;OAFR,CAAA,CAAA;AAID,KALD,MAKO;AACL,MAAA,MAAM,IAAIkB,KAAJ,CAAU,MAAV,CAAN,CAAA;AACD,KAAA;;AACD,IAAA,OAAOD,gBAAP,CAAA;AACD,GAAA;;AAEuB,EAAA,MAAlBE,kBAAkB,CACtBtB,GADsB,EAEtBuB,aAFsB,EAGtB1B,QAHsB,EAIN;AAChB,IAAA,OAAO,KAAK2B,gBAAL,CACJ,MAAM,IAAA,CAAKvB,OAAL,CAAa;AAAE,MAAA,CAAC,IAAKtB,CAAAA,KAAL,CAAWC,OAAZ,GAAsBoB,GAAxB;MAA6B,GAAGH,QAAAA;KAA7C,CADF,EAEL0B,aAFK,CAAP,CAAA;AAID,GAAA;;AAEqB,EAAA,MAAhBC,gBAAgB,CACpBrB,MADoB,EAEpBoB,aAFoB,EAGJ;IAChB,MAAME,OAAO,GAAG,MAAM,IAAK9C,CAAAA,KAAL,CAAW6C,gBAAX,CAA4BrB,MAA5B,EAAoCoB,aAApC,CAAtB,CAAA;AACA,IAAA,IAAA,CAAKrC,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,SAAR;AAAmBI,MAAAA,OAAO,EAAE,CAAC,CAACN,MAAD,EAASsB,OAAT,CAAD,CAAA;KAAhD,CAAA,CAAA;AACA,IAAA,OAAOA,OAAP,CAAA;AACD,GAAA;;AAEsB,EAAA,MAAjBC,iBAAiB,CACrB7B,QADqB,EAErB0B,aAFqB,EAGN;IACf,MAAMI,MAAM,GAAG,MAAM,IAAA,CAAKhD,KAAL,CAAWgD,MAAX,CAAkB9B,QAAlB,CAArB,CAAA;IACA,MAAMY,OAAyB,GAAG,EAAlC,CAAA;AAEA,IAAA,MAAMkB,MAAM,CAACvC,OAAP,CAAe,MAAOwC,KAAP,IAAiB;MACpC,MAAM5B,GAAG,GAAG4B,KAAK,CAAC,KAAKjD,KAAL,CAAWC,OAAZ,CAAjB,CAAA;AACA,MAAA,MAAM6C,OAAO,GAAG,MAAM,IAAA,CAAK9C,KAAL,CAAW2C,kBAAX,CACpBtB,GADoB,EAEpBuB,aAFoB,EAGpB1B,QAHoB,CAAtB,CAAA;AAKAY,MAAAA,OAAO,CAACoB,IAAR,CAAa,CAACD,KAAD,EAAQH,OAAR,CAAb,CAAA,CAAA;AACD,KARK,CAAN,CAAA;AASA,IAAA,IAAA,CAAKvC,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,SAAR;AAAmBI,MAAAA,OAAAA;KAAvC,CAAA,CAAA;AACD,GAAA;;AAEgB,EAAA,MAAXqB,WAAW,CAAC9B,GAAD,EAAgBH,QAAhB,EAA2D;IAC1E,OAAO,IAAA,CAAKkC,SAAL,CAAgB,MAAM,IAAA,CAAKhC,SAAL,CAAeC,GAAf,EAAoBH,QAApB,CAAtB,CAAP,CAAA;AACD,GAAA;;EAEc,MAATkC,SAAS,CAAC5B,MAAD,EAA+B;AAC5C,IAAA,MAAM,KAAKxB,KAAL,CAAWoD,SAAX,CAAqB5B,MAArB,CAAN,CAAA;AACA,IAAA,IAAA,CAAKjB,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,SAAR;MAAmBS,IAAI,EAAE,CAACX,MAAD,CAAA;KAA7C,CAAA,CAAA;AACD,GAAA;;EAEe,MAAV6B,UAAU,CAACnC,QAAD,EAA2C;IACzD,MAAM8B,MAAM,GAAG,MAAM,IAAA,CAAKhD,KAAL,CAAWgD,MAAX,CAAkB9B,QAAlB,CAArB,CAAA;AACA,IAAA,MAAMiB,IAAa,GAAG,MAAMa,MAAM,CAACM,OAAP,EAA5B,CAAA;AACA,IAAA,MAAM,KAAKtD,KAAL,CAAWqD,UAAX,CAAsBnC,QAAtB,CAAN,CAAA;AACA,IAAA,IAAA,CAAKX,cAAL,CAAoB;AAAEmB,MAAAA,IAAI,EAAE,SAAR;AAAmBS,MAAAA,IAAAA;KAAvC,CAAA,CAAA;AACD,GAAA;;EAEU,MAALoB,KAAK,CAACrC,QAAD,EAA8C;AACvD,IAAA,OAAO,KAAKlB,KAAL,CAAWuD,KAAX,CAAiBrC,QAAjB,CAAP,CAAA;AACD,GAAA;;AAEW,EAAA,MAAN8B,MAAM,CACV9B,QADU,EAEVC,IAFU,EAGkD;IAC5D,MAAM6B,MAAM,GAAG,MAAM,IAAKhD,CAAAA,KAAL,CAAWgD,MAAX,CAA0B9B,QAA1B,EAAoCC,IAApC,CAArB,CAAA;IACA6B,MAAM,CAACQ,aAAP,CAAqB,IAArB,CAAA,CAAA;AACA,IAAA,OAAOR,MAAP,CAAA;AACD,GAAA;;AAxNH;;ACnCe,MAAeS,8BAAf,CAQf;AACEC,EAAAA,YAAY,GAAwB;AAClC,IAAA,MAAM,IAAIhB,KAAJ,CAAU,kDAAV,CAAN,CAAA;AACD,GAAA;;AAEDiB,EAAAA,mBAAmB,GAEV;AACP,IAAA,MAAM,IAAIjB,KAAJ,CAAU,kDAAV,CAAN,CAAA;AACD,GAAA;;EAWD3B,iBAAiB,CACff,KADe,EAET;IACN,IAAK4D,CAAAA,eAAL,GAAuB5D,KAAvB,CAAA;AACD,GAAA;;AAED6D,EAAAA,iBAAiB,GAOf;IACA,IAAI,CAAC,IAAKD,CAAAA,eAAV,EAA2B;AACzB,MAAA,MAAM,IAAIlB,KAAJ,CAAU,oCAAV,CAAN,CAAA;AACD,KAAA;;AACD,IAAA,OAAO,KAAKkB,eAAZ,CAAA;AACD,GAAA;;EAMDE,iBAAiB,CACf1D,QADe,EAEI;AACnB,IAAA,OAAO,KAAK2D,UAAL,CAAgB3D,QAAhB,EAA0B,IAA1B,CAAP,CAAA;AACD,GAAA;;EAEDD,SAAS,CAACC,QAAD,EAAmE;AAC1E,IAAA,OAAO,KAAK2D,UAAL,CAAgB3D,QAAhB,EAA0B,KAA1B,CAAP,CAAA;AACD,GAAA;;AApDH;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-node14.mjs","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"index-node14.mjs","sources":["../src/SubscribeStore.ts","../src/AbstractSubscribableStoreQuery.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type {\n Store as StoreInterface,\n AbstractConnection,\n UpsertResult,\n SubscribableStoreQuery,\n AbstractStoreCursor,\n SubscribableStore,\n QueryParams,\n UpsertPartialObject,\n} from 'liwi-store';\nimport type {\n BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-types';\n\nexport type Actions<Model> =\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, Model][] }\n | { type: 'deleted'; prev: Model[] };\n\nexport type Listener<Model> = (action: Actions<Model>) => unknown;\n\nexport default class SubscribeStore<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Connection extends AbstractConnection,\n Store extends SubscribableStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n Connection\n >,\n> implements\n StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection>\n{\n private readonly store: Store;\n\n private readonly listeners: Set<Listener<Model>> = new Set();\n\n readonly keyPath: KeyPath;\n\n constructor(store: Store) {\n this.store = store;\n this.keyPath = store.keyPath;\n }\n\n get connection(): Connection {\n return this.store.connection;\n }\n\n subscribe(callback: Listener<Model>): () => void {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n callSubscribed(action: Actions<Model>): void {\n this.listeners.forEach((listener) => listener(action));\n }\n\n createQuerySingleItem<\n Result extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Result>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Result,\n Params\n > = this.store.createQuerySingleItem<Result, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n createQueryCollection<\n Item extends Record<KeyPath, KeyValue>,\n Params extends QueryParams<Params>,\n >(\n options: QueryOptions<Model>,\n transformer?: Transformer<Model, Item>,\n ): SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > {\n const query: SubscribableStoreQuery<\n KeyPath,\n KeyValue,\n Model,\n SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>,\n Item[],\n Params\n > = this.store.createQueryCollection<Item, Params>(options, transformer);\n query.setSubscribeStore(this);\n return query;\n }\n\n findAll(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<Model[]> {\n return this.store.findAll(criteria, sort);\n }\n\n findByKey(\n key: KeyValue,\n criteria?: Criteria<Model>,\n ): Promise<Model | undefined> {\n return this.store.findByKey(key, criteria);\n }\n\n findOne(\n criteria: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<Model | undefined> {\n return this.store.findOne(criteria, sort);\n }\n\n async insertOne(object: ModelInsertType): Promise<Model> {\n const inserted = await this.store.insertOne(object);\n this.callSubscribed({ type: 'inserted', next: [inserted] });\n return inserted;\n }\n\n async replaceOne(object: Model): Promise<Model> {\n const replaced = await this.store.replaceOne(object);\n this.callSubscribed({ type: 'updated', changes: [[object, replaced]] });\n return replaced;\n }\n\n async replaceSeveral(objects: Model[]): Promise<Model[]> {\n const replacedObjects = await this.store.replaceSeveral(objects);\n this.callSubscribed({\n type: 'updated',\n changes: objects.map((prev, index) => [prev, replacedObjects[index]]),\n });\n return replacedObjects;\n }\n\n async upsertOne<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<Model> {\n const result = await this.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n return result.object;\n }\n\n async upsertOneWithInfo<\n K extends Exclude<keyof Model, KeyPath | OptionalBaseModelKeysForInsert>,\n >(\n object: UpsertPartialObject<KeyPath, KeyValue, Model, K>,\n setOnInsertPartialObject?: Update<Model>['$setOnInsert'],\n ): Promise<UpsertResult<Model>> {\n const upsertedWithInfo = await this.store.upsertOneWithInfo(\n object,\n setOnInsertPartialObject,\n );\n if (upsertedWithInfo.inserted) {\n this.callSubscribed({\n type: 'inserted',\n next: [upsertedWithInfo.object],\n });\n } else {\n throw new Error('TODO');\n }\n return upsertedWithInfo;\n }\n\n async partialUpdateByKey(\n key: KeyValue,\n partialUpdate: Update<Model>,\n criteria?: Criteria<Model>,\n ): Promise<Model> {\n return this.partialUpdateOne(\n (await this.findOne({ [this.store.keyPath]: key, ...criteria }))!,\n partialUpdate,\n );\n }\n\n async partialUpdateOne(\n object: Model,\n partialUpdate: Update<Model>,\n ): Promise<Model> {\n const updated = await this.store.partialUpdateOne(object, partialUpdate);\n this.callSubscribed({ type: 'updated', changes: [[object, updated]] });\n return updated;\n }\n\n async partialUpdateMany(\n criteria: Criteria<Model>,\n partialUpdate: Update<Model>,\n ): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const changes: [Model, Model][] = [];\n\n await cursor.forEach(async (model) => {\n const key = model[this.store.keyPath];\n const updated = await this.store.partialUpdateByKey(\n key,\n partialUpdate,\n criteria,\n );\n changes.push([model, updated]);\n });\n this.callSubscribed({ type: 'updated', changes });\n }\n\n async deleteByKey(key: KeyValue, criteria?: Criteria<Model>): Promise<void> {\n return this.deleteOne((await this.findByKey(key, criteria))!);\n }\n\n async deleteOne(object: Model): Promise<void> {\n await this.store.deleteOne(object);\n this.callSubscribed({ type: 'deleted', prev: [object] });\n }\n\n async deleteMany(criteria: Criteria<Model>): Promise<void> {\n const cursor = await this.store.cursor(criteria);\n const prev: Model[] = await cursor.toArray();\n await this.store.deleteMany(criteria);\n this.callSubscribed({ type: 'deleted', prev });\n }\n\n async count(criteria?: Criteria<Model>): Promise<number> {\n return this.store.count(criteria);\n }\n\n async cursor<Result extends Partial<Model> = Model>(\n criteria?: Criteria<Model>,\n sort?: Sort<Model>,\n ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {\n const cursor = await this.store.cursor<Result>(criteria, sort);\n cursor.overrideStore(this);\n return cursor;\n }\n}\n","import type {\n Query,\n SubscribeCallback,\n QuerySubscription,\n QueryResult,\n QueryParams,\n} from 'liwi-store';\nimport type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';\nimport type SubscribeStore from './SubscribeStore';\n\nexport default abstract class AbstractSubscribableStoreQuery<\n KeyPath extends keyof Model,\n KeyValue extends AllowedKeyValue,\n Model extends BaseModel & Record<KeyPath, KeyValue>,\n ModelInsertType extends InsertType<Model, KeyPath>,\n Params extends QueryParams<Params> = never,\n Result = Model,\n> implements Query<Result, Params, KeyValue>\n{\n changeParams(params: Params): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n changePartialParams(\n params: Params extends undefined ? never : Partial<Params>,\n ): never {\n throw new Error('Method not supported. Please create a new query.');\n }\n\n private _subscribeStore?: SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n >;\n\n setSubscribeStore(\n store: SubscribeStore<KeyPath, KeyValue, Model, ModelInsertType, any, any>,\n ): void {\n this._subscribeStore = store;\n }\n\n getSubscribeStore(): SubscribeStore<\n KeyPath,\n KeyValue,\n Model,\n ModelInsertType,\n any,\n any\n > {\n if (!this._subscribeStore) {\n throw new Error('_subscribeStore is not initialized');\n }\n return this._subscribeStore;\n }\n\n abstract fetch<T>(\n onFulfilled: (result: QueryResult<Result>) => T,\n ): Promise<T>;\n\n fetchAndSubscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n ): QuerySubscription {\n return this._subscribe(callback, true);\n }\n\n subscribe(callback: SubscribeCallback<KeyValue, Result>): QuerySubscription {\n return this._subscribe(callback, false);\n }\n\n abstract _subscribe(\n callback: SubscribeCallback<KeyValue, Result>,\n _includeInitial: boolean,\n ): QuerySubscription;\n}\n"],"names":["SubscribeStore","listeners","Set","constructor","store","keyPath","connection","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","object","inserted","type","next","replaceOne","replaced","changes","replaceSeveral","objects","replacedObjects","map","prev","index","upsertOne","setOnInsertPartialObject","result","upsertOneWithInfo","upsertedWithInfo","Error","partialUpdateByKey","partialUpdate","partialUpdateOne","updated","partialUpdateMany","cursor","model","push","deleteByKey","deleteOne","deleteMany","toArray","count","overrideStore","AbstractSubscribableStoreQuery","changeParams","changePartialParams","_subscribeStore","getSubscribeStore","fetchAndSubscribe","_subscribe"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "liwi-subscribe-store",
3
- "version": "9.0.0",
3
+ "version": "9.1.0",
4
4
  "description": "subscribe store proxy",
5
5
  "keywords": [],
6
6
  "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
@@ -49,16 +49,12 @@
49
49
  "build": "yarn clean:build && rollup --config rollup.config.mjs && yarn run build:definitions",
50
50
  "build:definitions": "tsc -p tsconfig.build.json",
51
51
  "clean": "yarn clean:build",
52
- "clean:build": "rm -Rf dist",
52
+ "clean:build": "pob-babel-clean-out dist",
53
53
  "lint": "yarn run lint:eslint",
54
54
  "lint:eslint": "cd ../.. && yarn run eslint --report-unused-disable-directives --resolve-plugins-relative-to . --quiet packages/liwi-subscribe-store",
55
55
  "watch": "yarn clean:build && rollup --config rollup.config.mjs --watch"
56
56
  },
57
- "prettier": {
58
- "trailingComma": "all",
59
- "singleQuote": true,
60
- "arrowParens": "always"
61
- },
57
+ "prettier": "@pob/root/prettier-config",
62
58
  "pob": {
63
59
  "babelEnvs": [
64
60
  {
@@ -89,16 +85,16 @@
89
85
  ]
90
86
  },
91
87
  "dependencies": {
92
- "@babel/runtime": "^7.17.2",
93
- "liwi-store": "9.0.0",
94
- "liwi-types": "9.0.0"
88
+ "@babel/runtime": "^7.19.0",
89
+ "liwi-store": "9.1.0",
90
+ "liwi-types": "9.1.0"
95
91
  },
96
92
  "devDependencies": {
97
- "@babel/core": "7.17.5",
98
- "@babel/preset-env": "7.16.11",
93
+ "@babel/core": "7.19.3",
94
+ "@babel/preset-env": "7.19.3",
99
95
  "babel-preset-modern-browsers": "15.0.2",
100
- "pob-babel": "32.2.0",
101
- "typescript": "4.6.2"
96
+ "pob-babel": "34.2.0",
97
+ "typescript": "4.8.4"
102
98
  },
103
- "gitHead": "b587af1aee4cfead212586e3cd41e3c3d8227801"
99
+ "gitHead": "53bf2c0a8a57b008ede529ed7fad116fbb74b822"
104
100
  }
@@ -252,7 +252,7 @@ export default class SubscribeStore<
252
252
  return this.store.count(criteria);
253
253
  }
254
254
 
255
- async cursor<Result = Model>(
255
+ async cursor<Result extends Partial<Model> = Model>(
256
256
  criteria?: Criteria<Model>,
257
257
  sort?: Sort<Model>,
258
258
  ): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {
package/rollup.config.mjs DELETED
@@ -1,5 +0,0 @@
1
- import createRollupConfig from 'pob-babel/createRollupConfig.js';
2
-
3
- export default createRollupConfig({
4
- cwd: new URL('.', import.meta.url).pathname,
5
- });
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
-
4
- "compilerOptions": {
5
- "noEmit": true
6
- }
7
- }