liwi-subscribe-store 10.3.1 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
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
+ ## [10.4.0](https://github.com/liwijs/liwi/compare/v10.3.3...v10.4.0) (2023-07-28)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * add types in exports for typescript 5 ([0630185](https://github.com/liwijs/liwi/commit/0630185dee33a72b43b29848d6001bb54cb4c4b9))
12
+
13
+
14
+
15
+ ## [10.3.2](https://github.com/liwijs/liwi/compare/v10.3.1...v10.3.2) (2023-01-31)
16
+
17
+ **Note:** Version bump only for package liwi-subscribe-store
18
+
19
+
20
+
21
+
22
+
6
23
  ## [10.3.1](https://github.com/liwijs/liwi/compare/v10.3.0...v10.3.1) (2023-01-31)
7
24
 
8
25
  **Note:** Version bump only for package liwi-subscribe-store
@@ -1,13 +1,13 @@
1
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';
2
2
  export type Actions<Model> = {
3
+ type: 'deleted';
4
+ prev: Model[];
5
+ } | {
3
6
  type: 'inserted';
4
7
  next: Model[];
5
8
  } | {
6
9
  type: 'updated';
7
10
  changes: [Model, Model][];
8
- } | {
9
- type: 'deleted';
10
- prev: Model[];
11
11
  };
12
12
  export type Listener<Model> = (action: Actions<Model>) => unknown;
13
13
  export default class SubscribeStore<KeyPath extends keyof Model, KeyValue extends AllowedKeyValue, Model extends BaseModel & Record<KeyPath, KeyValue>, ModelInsertType extends InsertType<Model, KeyPath>, Connection extends AbstractConnection, Store extends SubscribableStore<KeyPath, KeyValue, Model, ModelInsertType, Connection>> implements StoreInterface<KeyPath, KeyValue, Model, ModelInsertType, Connection> {
@@ -1 +1 @@
1
- {"version":3,"file":"SubscribeStore.d.ts","sourceRoot":"","sources":["../../src/SubscribeStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscribeStore.d.ts","sourceRoot":"","sources":["../../src/SubscribeStore.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ var SubscribeStore = /*#__PURE__*/function () {
14
14
  _proto.subscribe = function subscribe(callback) {
15
15
  this.listeners.add(callback);
16
16
  return function () {
17
- return this.listeners["delete"](callback);
17
+ return this.listeners.delete(callback);
18
18
  };
19
19
  };
20
20
  _proto.callSubscribed = function callSubscribed(action) {
@@ -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 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
+ {"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: 'deleted'; prev: Model[] }\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, 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 = new Set<Listener<Model>>();\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","_proto","prototype","subscribe","callback","add","delete","callSubscribed","action","forEach","listener","createQuerySingleItem","options","transformer","query","setSubscribeStore","createQueryCollection","findAll","criteria","sort","findByKey","key","findOne","insertOne","_insertOne","_asyncToGenerator","_regeneratorRuntime","mark","_callee","object","inserted","wrap","_callee$","_context","prev","next","sent","type","abrupt","stop","apply","arguments","replaceOne","_replaceOne","_callee2","replaced","_callee2$","_context2","changes","replaceSeveral","_replaceSeveral","_callee3","objects","replacedObjects","_callee3$","_context3","map","index","upsertOne","_upsertOne","_callee4","setOnInsertPartialObject","result","_callee4$","_context4","upsertOneWithInfo","_upsertOneWithInfo","_callee5","upsertedWithInfo","_callee5$","_context5","Error","partialUpdateByKey","_partialUpdateByKey","_callee6","partialUpdate","_extends2","_callee6$","_context6","t0","_extends","t1","t2","partialUpdateOne","call","_partialUpdateOne","_callee7","updated","_callee7$","_context7","partialUpdateMany","_partialUpdateMany","_callee9","_this2","cursor","_callee9$","_context9","_ref","_callee8","model","_callee8$","_context8","push","deleteByKey","_deleteByKey","_callee10","_callee10$","_context10","deleteOne","_deleteOne","_callee11","_callee11$","_context11","deleteMany","_deleteMany","_callee12","_callee12$","_context12","toArray","count","_count","_callee13","_callee13$","_context13","_cursor","_callee14","_callee14$","_context14","overrideStore","_createClass","get","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 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
+ {"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: 'deleted'; prev: Model[] }\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, 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 = new Set<Listener<Model>>();\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-node16.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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"}
1
+ {"version":3,"file":"index-node16.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: 'deleted'; prev: Model[] }\n | { type: 'inserted'; next: Model[] }\n | { type: 'updated'; changes: [Model, 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 = new Set<Listener<Model>>();\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": "10.3.1",
3
+ "version": "10.4.0",
4
4
  "description": "subscribe store proxy",
5
5
  "keywords": [],
6
6
  "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
@@ -15,13 +15,15 @@
15
15
  "engines": {
16
16
  "node": ">=16.0.0"
17
17
  },
18
- "browserslist": [
19
- "defaults",
20
- "> 0.2%",
21
- "not ie < 12",
22
- "not safari < 10",
23
- "not ios_saf < 10"
24
- ],
18
+ "browserslist": {
19
+ "production": [
20
+ "defaults",
21
+ "> 0.2%",
22
+ "not ie < 12",
23
+ "not safari < 10",
24
+ "not ios_saf < 10"
25
+ ]
26
+ },
25
27
  "main": "./dist/index-node16.mjs",
26
28
  "types": "./dist/definitions/index.d.ts",
27
29
  "module": "./dist/index-browser.es.js",
@@ -29,6 +31,7 @@
29
31
  "exports": {
30
32
  "./package.json": "./package.json",
31
33
  ".": {
34
+ "types": "./dist/definitions/index.d.ts",
32
35
  "node": {
33
36
  "import": "./dist/index-node16.mjs"
34
37
  },
@@ -70,15 +73,14 @@
70
73
  ]
71
74
  },
72
75
  "dependencies": {
73
- "@babel/runtime": "^7.20.7",
74
- "liwi-store": "10.3.1"
76
+ "@babel/runtime": "^7.21.0",
77
+ "liwi-store": "10.4.0"
75
78
  },
76
79
  "devDependencies": {
77
- "@babel/core": "7.20.12",
80
+ "@babel/core": "7.21.3",
78
81
  "@babel/preset-env": "7.20.2",
79
- "babel-preset-modern-browsers": "15.0.2",
80
- "pob-babel": "35.4.0",
82
+ "pob-babel": "35.6.2",
81
83
  "typescript": "4.9.5"
82
84
  },
83
- "gitHead": "b5d14caadb67bef17af7149d321951cfcb85686a"
85
+ "gitHead": "e1ef308c87c430fb2402767fe8ca346cc1b95b95"
84
86
  }
@@ -20,9 +20,9 @@ import type {
20
20
  } from 'liwi-store';
21
21
 
22
22
  export type Actions<Model> =
23
+ | { type: 'deleted'; prev: Model[] }
23
24
  | { type: 'inserted'; next: Model[] }
24
- | { type: 'updated'; changes: [Model, Model][] }
25
- | { type: 'deleted'; prev: Model[] };
25
+ | { type: 'updated'; changes: [Model, Model][] };
26
26
 
27
27
  export type Listener<Model> = (action: Actions<Model>) => unknown;
28
28
 
@@ -44,7 +44,7 @@ export default class SubscribeStore<
44
44
  {
45
45
  private readonly store: Store;
46
46
 
47
- private readonly listeners: Set<Listener<Model>> = new Set();
47
+ private readonly listeners = new Set<Listener<Model>>();
48
48
 
49
49
  readonly keyPath: KeyPath;
50
50