liwi-subscribe-store 9.0.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +3 -0
- package/dist/AbstractSubscribableStoreQuery.d.ts +1 -2
- package/dist/AbstractSubscribableStoreQuery.d.ts.map +1 -1
- package/dist/SubscribeStore.d.ts +2 -3
- package/dist/SubscribeStore.d.ts.map +1 -1
- package/dist/index-browser.cjs.js +31 -33
- package/dist/index-browser.cjs.js.map +1 -1
- package/dist/index-browser.es.js +30 -32
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-browsermodern.es.js.map +1 -1
- package/dist/index-node14.cjs.map +1 -1
- package/dist/index-node14.mjs.map +1 -1
- package/package.json +10 -15
- package/src/AbstractSubscribableStoreQuery.ts +3 -1
- package/src/SubscribeStore.ts +6 -5
- package/rollup.config.mjs +0 -5
- package/tsconfig.eslint.json +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.2.0](https://github.com/liwijs/liwi/compare/v9.1.0...v9.2.0) (2022-10-29)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package liwi-subscribe-store
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [9.1.0](https://github.com/liwijs/liwi/compare/v9.0.0...v9.1.0) (2022-10-08)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* update dev dependencies, fix ts remix, fix next babel config ([fadb30e](https://github.com/liwijs/liwi/commit/fadb30e9620fbbcb99cfbc6a7db78d9ef2dad5e2))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [9.0.0](https://github.com/liwijs/liwi/compare/v8.3.1...v9.0.0) (2022-03-05)
|
|
7
26
|
|
|
8
27
|
|
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
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Query, SubscribeCallback, QuerySubscription, QueryResult, QueryParams } from 'liwi-store';
|
|
2
|
-
import type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';
|
|
1
|
+
import type { Query, SubscribeCallback, QuerySubscription, QueryResult, QueryParams, BaseModel, InsertType, AllowedKeyValue } from 'liwi-store';
|
|
3
2
|
import type SubscribeStore from './SubscribeStore';
|
|
4
3
|
export default abstract class AbstractSubscribableStoreQuery<KeyPath extends keyof Model, KeyValue extends AllowedKeyValue, Model extends BaseModel & Record<KeyPath, KeyValue>, ModelInsertType extends InsertType<Model, KeyPath>, Params extends QueryParams<Params> = never, Result = Model> implements Query<Result, Params, KeyValue> {
|
|
5
4
|
changeParams(params: Params): never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSubscribableStoreQuery.d.ts","sourceRoot":"","sources":["../src/AbstractSubscribableStoreQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"AbstractSubscribableStoreQuery.d.ts","sourceRoot":"","sources":["../src/AbstractSubscribableStoreQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,8BAA8B,CAC1D,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,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,EAC1C,MAAM,GAAG,KAAK,CACd,YAAW,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAE1C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAInC,mBAAmB,CACjB,MAAM,EAAE,MAAM,SAAS,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GACzD,KAAK;IAIR,OAAO,CAAC,eAAe,CAAC,CAOtB;IAEF,iBAAiB,CACf,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,GACzE,IAAI;IAIP,iBAAiB,IAAI,cAAc,CACjC,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,EACf,GAAG,EACH,GAAG,CACJ;IAOD,QAAQ,CAAC,KAAK,CAAC,CAAC,EACd,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAEb,iBAAiB,CACf,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,GAC5C,iBAAiB;IAIpB,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,iBAAiB;IAI3E,QAAQ,CAAC,UAAU,CACjB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7C,eAAe,EAAE,OAAO,GACvB,iBAAiB;CACrB"}
|
package/dist/SubscribeStore.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Store as StoreInterface, AbstractConnection, UpsertResult, SubscribableStoreQuery, AbstractStoreCursor, SubscribableStore, QueryParams, UpsertPartialObject } from 'liwi-store';
|
|
2
|
-
import type { BaseModel, InsertType, Update, Criteria, Sort, QueryOptions, Transformer, AllowedKeyValue, OptionalBaseModelKeysForInsert } from 'liwi-types';
|
|
1
|
+
import type { Store as StoreInterface, AbstractConnection, UpsertResult, SubscribableStoreQuery, AbstractStoreCursor, SubscribableStore, QueryParams, UpsertPartialObject, BaseModel, InsertType, Update, Criteria, Sort, QueryOptions, Transformer, AllowedKeyValue, OptionalBaseModelKeysForInsert } from 'liwi-store';
|
|
3
2
|
export declare type Actions<Model> = {
|
|
4
3
|
type: 'inserted';
|
|
5
4
|
next: Model[];
|
|
@@ -36,6 +35,6 @@ export default class SubscribeStore<KeyPath extends keyof Model, KeyValue extend
|
|
|
36
35
|
deleteOne(object: Model): Promise<void>;
|
|
37
36
|
deleteMany(criteria: Criteria<Model>): Promise<void>;
|
|
38
37
|
count(criteria?: Criteria<Model>): Promise<number>;
|
|
39
|
-
cursor<Result = Model>(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>>;
|
|
38
|
+
cursor<Result extends Partial<Model> = Model>(criteria?: Criteria<Model>, sort?: Sort<Model>): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>>;
|
|
40
39
|
}
|
|
41
40
|
//# 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,
|
|
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
|
|
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 BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-store';\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({\n [this.store.keyPath]: key,\n ...criteria,\n } as Criteria<Model>))!,\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 BaseModel,\n InsertType,\n AllowedKeyValue,\n} from 'liwi-store';\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":";;;;;;;;;;;;;;;;AAAA;IA4BqBA;AAsBnB,EAAA,SAAA,cAAA,CAAYC,KAAZ,EAA0B;AAAA,IAAA,IAAA,CAJTC,SAIS,GAJyB,IAAIC,GAAJ,EAIzB,CAAA;IACxB,IAAKF,CAAAA,KAAL,GAAaA,KAAb,CAAA;AACA,IAAA,IAAA,CAAKG,OAAL,GAAeH,KAAK,CAACG,OAArB,CAAA;AACD,GAAA;;;;SAMDC,YAAA,SAAUC,SAAAA,CAAAA,QAAV,EAAiD;AAC/C,IAAA,IAAA,CAAKJ,SAAL,CAAeK,GAAf,CAAmBD,QAAnB,CAAA,CAAA;IACA,OAAO,YAAA;AAAA,MAAA,OAAM,IAAKJ,CAAAA,SAAL,CAAsBI,QAAAA,CAAAA,CAAAA,QAAtB,CAAN,CAAA;KAAP,CAAA;;;SAGFE,iBAAA,SAAeC,cAAAA,CAAAA,MAAf,EAA6C;AAC3C,IAAA,IAAA,CAAKP,SAAL,CAAeQ,OAAf,CAAuB,UAACC,QAAD,EAAA;MAAA,OAAcA,QAAQ,CAACF,MAAD,CAAtB,CAAA;KAAvB,CAAA,CAAA;;;AAGFG,EAAAA,MAAAA,CAAAA,wBAAA,SAAA,qBAAA,CAIEC,OAJF,EAKEC,WALF,EAaE;IACA,IAAMC,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;;;AAGFE,EAAAA,MAAAA,CAAAA,wBAAA,SAAA,qBAAA,CAIEJ,OAJF,EAKEC,WALF,EAaE;IACA,IAAMC,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;;;AAGFG,EAAAA,MAAAA,CAAAA,UAAA,SAAA,OAAA,CAAQC,QAAR,EAAoCC,IAApC,EAA0E;IACxE,OAAO,IAAA,CAAKnB,KAAL,CAAWiB,OAAX,CAAmBC,QAAnB,EAA6BC,IAA7B,CAAP,CAAA;;;AAGFC,EAAAA,MAAAA,CAAAA,YAAA,SAAA,SAAA,CACEC,GADF,EAEEH,QAFF,EAG8B;IAC5B,OAAO,IAAA,CAAKlB,KAAL,CAAWoB,SAAX,CAAqBC,GAArB,EAA0BH,QAA1B,CAAP,CAAA;;;AAGFI,EAAAA,MAAAA,CAAAA,UAAA,SAAA,OAAA,CACEJ,QADF,EAEEC,IAFF,EAG8B;IAC5B,OAAO,IAAA,CAAKnB,KAAL,CAAWsB,OAAX,CAAmBJ,QAAnB,EAA6BC,IAA7B,CAAP,CAAA;;;SAGII;AAAN,IAAA,IAAA,UAAA,GAAAC,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,OAAA,CAAgBC,MAAhB,EAAA;AAAA,MAAA,IAAA,QAAA,CAAA;AAAA,MAAA,OAAAD,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAA,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,QAAA,CAAA,IAAA,GAAA,QAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,QAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACyB,KAAKzB,KAAL,CAAWuB,SAAX,CAAqBG,MAArB,CADzB,CAAA;;AAAA,YAAA,KAAA,CAAA;cACQC,QADR,GAAA,QAAA,CAAA,IAAA,CAAA;AAEE,cAAA,IAAA,CAAKpB,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,UAAR;gBAAoBC,IAAI,EAAE,CAACF,QAAD,CAAA;eAA9C,CAAA,CAAA;AAFF,cAAA,OAAA,QAAA,CAAA,MAAA,CAAA,QAAA,EAGSA,QAHT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,QAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAMMG;AAAN,IAAA,IAAA,WAAA,GAAAN,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAiBC,MAAjB,EAAA;AAAA,MAAA,IAAA,QAAA,CAAA;AAAA,MAAA,OAAAD,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACyB,KAAKzB,KAAL,CAAW8B,UAAX,CAAsBJ,MAAtB,CADzB,CAAA;;AAAA,YAAA,KAAA,CAAA;cACQK,QADR,GAAA,SAAA,CAAA,IAAA,CAAA;AAEE,cAAA,IAAA,CAAKxB,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,SAAR;AAAmBI,gBAAAA,OAAO,EAAE,CAAC,CAACN,MAAD,EAASK,QAAT,CAAD,CAAA;eAAhD,CAAA,CAAA;AAFF,cAAA,OAAA,SAAA,CAAA,MAAA,CAAA,QAAA,EAGSA,QAHT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAMME;AAAN,IAAA,IAAA,eAAA,GAAAT,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAqBS,OAArB,EAAA;AAAA,MAAA,IAAA,eAAA,CAAA;AAAA,MAAA,OAAAT,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACgC,KAAKzB,KAAL,CAAWiC,cAAX,CAA0BC,OAA1B,CADhC,CAAA;;AAAA,YAAA,KAAA,CAAA;cACQC,eADR,GAAA,SAAA,CAAA,IAAA,CAAA;AAEE,cAAA,IAAA,CAAK5B,cAAL,CAAoB;AAClBqB,gBAAAA,IAAI,EAAE,SADY;gBAElBI,OAAO,EAAEE,OAAO,CAACE,GAAR,CAAY,UAACC,IAAD,EAAOC,KAAP,EAAA;AAAA,kBAAA,OAAiB,CAACD,IAAD,EAAOF,eAAe,CAACG,KAAD,CAAtB,CAAjB,CAAA;iBAAZ,CAAA;eAFX,CAAA,CAAA;AAFF,cAAA,OAAA,SAAA,CAAA,MAAA,CAAA,QAAA,EAMSH,eANT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SASMI;kGAAN,SAGEb,QAAAA,CAAAA,MAHF,EAIEc,wBAJF,EAAA;AAAA,MAAA,IAAA,MAAA,CAAA;AAAA,MAAA,OAAAf,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAMuB,KAAKgB,iBAAL,CACnBf,MADmB,EAEnBc,wBAFmB,CANvB,CAAA;;AAAA,YAAA,KAAA,CAAA;cAMQE,MANR,GAAA,SAAA,CAAA,IAAA,CAAA;cAAA,OAUSA,SAAAA,CAAAA,MAAAA,CAAAA,QAAAA,EAAAA,MAAM,CAAChB,MAVhB,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAaMe;0GAAN,SAGEf,QAAAA,CAAAA,MAHF,EAIEc,wBAJF,EAAA;AAAA,MAAA,IAAA,gBAAA,CAAA;AAAA,MAAA,OAAAf,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAMiC,IAAA,CAAKzB,KAAL,CAAWyC,iBAAX,CAC7Bf,MAD6B,EAE7Bc,wBAF6B,CANjC,CAAA;;AAAA,YAAA,KAAA,CAAA;cAMQG,gBANR,GAAA,SAAA,CAAA,IAAA,CAAA;;cAAA,IAUMA,CAAAA,gBAAgB,CAAChB,QAVvB,EAAA;AAAA,gBAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;;AAWI,cAAA,IAAA,CAAKpB,cAAL,CAAoB;AAClBqB,gBAAAA,IAAI,EAAE,UADY;AAElBC,gBAAAA,IAAI,EAAE,CAACc,gBAAgB,CAACjB,MAAlB,CAAA;eAFR,CAAA,CAAA;AAXJ,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,MAgBU,IAAIkB,KAAJ,CAAU,MAAV,CAhBV,CAAA;;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAA,SAAA,CAAA,MAAA,CAAA,QAAA,EAkBSD,gBAlBT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAqBME;AAAN,IAAA,IAAA,mBAAA,GAAArB,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CACEJ,GADF,EAEEyB,aAFF,EAGE5B,QAHF,EAAA;AAAA,MAAA,IAAA,SAAA,CAAA;;AAAA,MAAA,OAAAO,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,EAAA,GAKS,IALT,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAMW,IAAA,CAAKH,OAAL,CAAAyB,iBAAA,EAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CACJ,IAAK/C,CAAAA,KAAL,CAAWG,OADP,CACiBkB,GAAAA,GADjB,EAEFH,SAAAA,GAAAA,QAFE,CANX,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,EAAA,GAAA,SAAA,CAAA,IAAA,CAAA;AAAA,cAAA,SAAA,CAAA,EAAA,GAUI4B,aAVJ,CAAA;AAAA,cAAA,OAAA,SAAA,CAAA,MAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAKcE,gBALd,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,EAAA,SAAA,CAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAcMA;yGAAN,SACEtB,QAAAA,CAAAA,MADF,EAEEoB,aAFF,EAAA;AAAA,MAAA,IAAA,OAAA,CAAA;AAAA,MAAA,OAAArB,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAIwB,IAAA,CAAKzB,KAAL,CAAWgD,gBAAX,CAA4BtB,MAA5B,EAAoCoB,aAApC,CAJxB,CAAA;;AAAA,YAAA,KAAA,CAAA;cAIQG,OAJR,GAAA,SAAA,CAAA,IAAA,CAAA;AAKE,cAAA,IAAA,CAAK1C,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,SAAR;AAAmBI,gBAAAA,OAAO,EAAE,CAAC,CAACN,MAAD,EAASuB,OAAT,CAAD,CAAA;eAAhD,CAAA,CAAA;AALF,cAAA,OAAA,SAAA,CAAA,MAAA,CAAA,QAAA,EAMSA,OANT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SASMC;0GAAN,SACEhC,QAAAA,CAAAA,QADF,EAEE4B,aAFF,EAAA;AAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;AAAA,MAAA,IAAA,MAAA,EAAA,OAAA,CAAA;AAAA,MAAA,OAAArB,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAIuB,KAAKzB,KAAL,CAAWmD,MAAX,CAAkBjC,QAAlB,CAJvB,CAAA;;AAAA,YAAA,KAAA,CAAA;cAIQiC,MAJR,GAAA,SAAA,CAAA,IAAA,CAAA;AAKQnB,cAAAA,OALR,GAKoC,EALpC,CAAA;AAAA,cAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAOQmB,MAAM,CAAC1C,OAAP,eAAA,YAAA;AAAA,gBAAA,IAAA,IAAA,GAAAe,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAe,kBAAO2B,KAAP,EAAA;AAAA,kBAAA,IAAA,GAAA,EAAA,OAAA,CAAA;AAAA,kBAAA,OAAA3B,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAA,SAAA,EAAA;AAAA,oBAAA,OAAA,CAAA,EAAA;AAAA,sBAAA,QAAA,SAAA,CAAA,IAAA,GAAA,SAAA,CAAA,IAAA;AAAA,wBAAA,KAAA,CAAA;0BACbJ,GADa,GACP+B,KAAK,CAAC,MAAI,CAACpD,KAAL,CAAWG,OAAZ,CADE,CAAA;AAAA,0BAAA,SAAA,CAAA,IAAA,GAAA,CAAA,CAAA;0BAAA,OAEG,MAAI,CAACH,KAAL,CAAW6C,kBAAX,CACpBxB,GADoB,EAEpByB,aAFoB,EAGpB5B,QAHoB,CAFH,CAAA;;AAAA,wBAAA,KAAA,CAAA;0BAEb+B,OAFa,GAAA,SAAA,CAAA,IAAA,CAAA;AAOnBjB,0BAAAA,OAAO,CAACqB,IAAR,CAAa,CAACD,KAAD,EAAQH,OAAR,CAAb,CAAA,CAAA;;AAPmB,wBAAA,KAAA,CAAA,CAAA;AAAA,wBAAA,KAAA,KAAA;AAAA,0BAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,uBAAA;AAAA,qBAAA;AAAA,mBAAA,EAAA,QAAA,CAAA,CAAA;iBAAf,CAAA,CAAA,CAAA;;AAAA,gBAAA,OAAA,YAAA;AAAA,kBAAA,OAAA,IAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,iBAAA,CAAA;eAPR,EAAA,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA;AAgBE,cAAA,IAAA,CAAK1C,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,SAAR;AAAmBI,gBAAAA,OAAO,EAAPA,OAAAA;eAAvC,CAAA,CAAA;;AAhBF,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAmBMsB;oGAAN,SAAkBjC,SAAAA,CAAAA,GAAlB,EAAiCH,QAAjC,EAAA;AAAA,MAAA,OAAAO,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,UAAA,CAAA,IAAA,GAAA,UAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,UAAA,CAAA,EAAA,GACS,IADT,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAC+B,KAAKL,SAAL,CAAeC,GAAf,EAAoBH,QAApB,CAD/B,CAAA;;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,UAAA,CAAA,EAAA,GAAA,UAAA,CAAA,IAAA,CAAA;AAAA,cAAA,OAAA,UAAA,CAAA,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CACcqC,SADd,CAAA,IAAA,CAAA,UAAA,CAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAIMA;AAAN,IAAA,IAAA,UAAA,GAAA/B,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAgBC,MAAhB,EAAA;AAAA,MAAA,OAAAD,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,UAAA,CAAA,IAAA,GAAA,UAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACQ,KAAKzB,KAAL,CAAWuD,SAAX,CAAqB7B,MAArB,CADR,CAAA;;AAAA,YAAA,KAAA,CAAA;AAEE,cAAA,IAAA,CAAKnB,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,SAAR;gBAAmBS,IAAI,EAAE,CAACX,MAAD,CAAA;eAA7C,CAAA,CAAA;;AAFF,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAKM8B;AAAN,IAAA,IAAA,WAAA,GAAAhC,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAiBP,QAAjB,EAAA;AAAA,MAAA,IAAA,MAAA,EAAA,IAAA,CAAA;AAAA,MAAA,OAAAO,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,UAAA,CAAA,IAAA,GAAA,UAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACuB,KAAKzB,KAAL,CAAWmD,MAAX,CAAkBjC,QAAlB,CADvB,CAAA;;AAAA,YAAA,KAAA,CAAA;cACQiC,MADR,GAAA,UAAA,CAAA,IAAA,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAE8BA,MAAM,CAACM,OAAP,EAF9B,CAAA;;AAAA,YAAA,KAAA,CAAA;cAEQpB,IAFR,GAAA,UAAA,CAAA,IAAA,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAGQ,KAAKrC,KAAL,CAAWwD,UAAX,CAAsBtC,QAAtB,CAHR,CAAA;;AAAA,YAAA,KAAA,CAAA;AAIE,cAAA,IAAA,CAAKX,cAAL,CAAoB;AAAEqB,gBAAAA,IAAI,EAAE,SAAR;AAAmBS,gBAAAA,IAAI,EAAJA,IAAAA;eAAvC,CAAA,CAAA;;AAJF,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAOMqB;AAAN,IAAA,IAAA,MAAA,GAAAlC,0BAAA,eAAAC,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,SAAA,CAAYP,QAAZ,EAAA;AAAA,MAAA,OAAAO,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,UAAA,CAAA,IAAA,GAAA,UAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAA,UAAA,CAAA,MAAA,CAAA,QAAA,EACS,KAAKzB,KAAL,CAAW0D,KAAX,CAAiBxC,QAAjB,CADT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;SAIMiC;+FAAN,SACEjC,SAAAA,CAAAA,QADF,EAEEC,IAFF,EAAA;AAAA,MAAA,IAAA,MAAA,CAAA;AAAA,MAAA,OAAAM,4BAAA,EAAA,CAAA,IAAA,CAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA;AAAA,UAAA,QAAA,UAAA,CAAA,IAAA,GAAA,UAAA,CAAA,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,UAAA,CAAA,IAAA,GAAA,CAAA,CAAA;cAAA,OAIuB,IAAA,CAAKzB,KAAL,CAAWmD,MAAX,CAA0BjC,QAA1B,EAAoCC,IAApC,CAJvB,CAAA;;AAAA,YAAA,KAAA,CAAA;cAIQgC,MAJR,GAAA,UAAA,CAAA,IAAA,CAAA;cAKEA,MAAM,CAACQ,aAAP,CAAqB,IAArB,CAAA,CAAA;AALF,cAAA,OAAA,UAAA,CAAA,MAAA,CAAA,QAAA,EAMSR,MANT,CAAA,CAAA;;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;AAAA,cAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;;;SAxMA,SAA6B,GAAA,GAAA;MAC3B,OAAO,IAAA,CAAKnD,KAAL,CAAW4D,UAAlB,CAAA;AACD,KAAA;;;;;;IC7C2BC;;;;;AAS5BC,EAAAA,MAAAA,CAAAA,eAAA,SAAoC,YAAA,GAAA;AAClC,IAAA,MAAM,IAAIlB,KAAJ,CAAU,kDAAV,CAAN,CAAA;;;AAGFmB,EAAAA,MAAAA,CAAAA,sBAAA,SAES,mBAAA,GAAA;AACP,IAAA,MAAM,IAAInB,KAAJ,CAAU,kDAAV,CAAN,CAAA;;;SAYF7B,oBAAA,SACEf,iBAAAA,CAAAA,KADF,EAEQ;IACN,IAAKgE,CAAAA,eAAL,GAAuBhE,KAAvB,CAAA;;;AAGFiE,EAAAA,MAAAA,CAAAA,oBAAA,SAOE,iBAAA,GAAA;IACA,IAAI,CAAC,IAAKD,CAAAA,eAAV,EAA2B;AACzB,MAAA,MAAM,IAAIpB,KAAJ,CAAU,oCAAV,CAAN,CAAA;AACD,KAAA;;AACD,IAAA,OAAO,KAAKoB,eAAZ,CAAA;;;SAOFE,oBAAA,SACE7D,iBAAAA,CAAAA,QADF,EAEqB;AACnB,IAAA,OAAO,KAAK8D,UAAL,CAAgB9D,QAAhB,EAA0B,IAA1B,CAAP,CAAA;;;SAGFD,YAAA,SAAUC,SAAAA,CAAAA,QAAV,EAA4E;AAC1E,IAAA,OAAO,KAAK8D,UAAL,CAAgB9D,QAAhB,EAA0B,KAA1B,CAAP,CAAA;;;;;;;;;"}
|
package/dist/index-browser.es.js
CHANGED
|
@@ -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
|
|
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 BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-store';\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({\n [this.store.keyPath]: key,\n ...criteria,\n } as Criteria<Model>))!,\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 BaseModel,\n InsertType,\n AllowedKeyValue,\n} from 'liwi-store';\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 BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-store';\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({\n [this.store.keyPath]: key,\n ...criteria,\n } as Criteria<Model>))!,\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 BaseModel,\n InsertType,\n AllowedKeyValue,\n} from 'liwi-store';\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 BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-store';\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({\n [this.store.keyPath]: key,\n ...criteria,\n } as Criteria<Model>))!,\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 BaseModel,\n InsertType,\n AllowedKeyValue,\n} from 'liwi-store';\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.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 BaseModel,\n InsertType,\n Update,\n Criteria,\n Sort,\n QueryOptions,\n Transformer,\n AllowedKeyValue,\n OptionalBaseModelKeysForInsert,\n} from 'liwi-store';\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({\n [this.store.keyPath]: key,\n ...criteria,\n } as Criteria<Model>))!,\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 BaseModel,\n InsertType,\n AllowedKeyValue,\n} from 'liwi-store';\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.
|
|
3
|
+
"version": "9.2.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": "
|
|
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,15 @@
|
|
|
89
85
|
]
|
|
90
86
|
},
|
|
91
87
|
"dependencies": {
|
|
92
|
-
"@babel/runtime": "^7.
|
|
93
|
-
"liwi-store": "9.
|
|
94
|
-
"liwi-types": "9.0.0"
|
|
88
|
+
"@babel/runtime": "^7.19.0",
|
|
89
|
+
"liwi-store": "9.2.0"
|
|
95
90
|
},
|
|
96
91
|
"devDependencies": {
|
|
97
|
-
"@babel/core": "7.
|
|
98
|
-
"@babel/preset-env": "7.
|
|
92
|
+
"@babel/core": "7.19.3",
|
|
93
|
+
"@babel/preset-env": "7.19.3",
|
|
99
94
|
"babel-preset-modern-browsers": "15.0.2",
|
|
100
|
-
"pob-babel": "
|
|
101
|
-
"typescript": "4.
|
|
95
|
+
"pob-babel": "34.3.0",
|
|
96
|
+
"typescript": "4.8.4"
|
|
102
97
|
},
|
|
103
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "00374a5d4f50f8995ce99fa33907ddb6c30c969d"
|
|
104
99
|
}
|
|
@@ -4,8 +4,10 @@ import type {
|
|
|
4
4
|
QuerySubscription,
|
|
5
5
|
QueryResult,
|
|
6
6
|
QueryParams,
|
|
7
|
+
BaseModel,
|
|
8
|
+
InsertType,
|
|
9
|
+
AllowedKeyValue,
|
|
7
10
|
} from 'liwi-store';
|
|
8
|
-
import type { BaseModel, InsertType, AllowedKeyValue } from 'liwi-types';
|
|
9
11
|
import type SubscribeStore from './SubscribeStore';
|
|
10
12
|
|
|
11
13
|
export default abstract class AbstractSubscribableStoreQuery<
|
package/src/SubscribeStore.ts
CHANGED
|
@@ -8,8 +8,6 @@ import type {
|
|
|
8
8
|
SubscribableStore,
|
|
9
9
|
QueryParams,
|
|
10
10
|
UpsertPartialObject,
|
|
11
|
-
} from 'liwi-store';
|
|
12
|
-
import type {
|
|
13
11
|
BaseModel,
|
|
14
12
|
InsertType,
|
|
15
13
|
Update,
|
|
@@ -19,7 +17,7 @@ import type {
|
|
|
19
17
|
Transformer,
|
|
20
18
|
AllowedKeyValue,
|
|
21
19
|
OptionalBaseModelKeysForInsert,
|
|
22
|
-
} from 'liwi-
|
|
20
|
+
} from 'liwi-store';
|
|
23
21
|
|
|
24
22
|
export type Actions<Model> =
|
|
25
23
|
| { type: 'inserted'; next: Model[] }
|
|
@@ -199,7 +197,10 @@ export default class SubscribeStore<
|
|
|
199
197
|
criteria?: Criteria<Model>,
|
|
200
198
|
): Promise<Model> {
|
|
201
199
|
return this.partialUpdateOne(
|
|
202
|
-
(await this.findOne({
|
|
200
|
+
(await this.findOne({
|
|
201
|
+
[this.store.keyPath]: key,
|
|
202
|
+
...criteria,
|
|
203
|
+
} as Criteria<Model>))!,
|
|
203
204
|
partialUpdate,
|
|
204
205
|
);
|
|
205
206
|
}
|
|
@@ -252,7 +253,7 @@ export default class SubscribeStore<
|
|
|
252
253
|
return this.store.count(criteria);
|
|
253
254
|
}
|
|
254
255
|
|
|
255
|
-
async cursor<Result = Model>(
|
|
256
|
+
async cursor<Result extends Partial<Model> = Model>(
|
|
256
257
|
criteria?: Criteria<Model>,
|
|
257
258
|
sort?: Sort<Model>,
|
|
258
259
|
): Promise<AbstractStoreCursor<any, KeyValue, Model, Result>> {
|
package/rollup.config.mjs
DELETED