@signaldb/svelte 2.0.0-beta.10 → 2.0.0-beta.11

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.
@@ -6,6 +6,12 @@ interface WorkerDataAdapterOptions {
6
6
  id?: string;
7
7
  log?: (message: string, ...args: any[]) => void;
8
8
  }
9
+ export interface WorkerDataAdapterEndpoint {
10
+ addEventListener: (type: 'message', listener: (event: MessageEvent) => void) => void;
11
+ removeEventListener: (type: 'message', listener: (event: MessageEvent) => void) => void;
12
+ postMessage: (message: unknown) => void;
13
+ terminate?: () => void;
14
+ }
9
15
  export default class WorkerDataAdapter implements DataAdapter {
10
16
  private worker;
11
17
  private options;
@@ -16,7 +22,7 @@ export default class WorkerDataAdapter implements DataAdapter {
16
22
  private collectionReady;
17
23
  private batchExecutionHelpers;
18
24
  private queries;
19
- constructor(worker: Worker, options: WorkerDataAdapterOptions);
25
+ constructor(worker: WorkerDataAdapterEndpoint, options: WorkerDataAdapterOptions);
20
26
  private exec;
21
27
  private enqueueBatched;
22
28
  private updateQuery;
@@ -188,7 +188,7 @@ class WorkerDataAdapter {
188
188
  return () => {
189
189
  const currentCallbacks = this.queries[collection.name]?.get((0, queryId_1.default)(selector, options))?.stateChangeCallbacks;
190
190
  if (!currentCallbacks)
191
- throw new Error('State change callbacks are not defined!');
191
+ return;
192
192
  this.updateQuery(collection.name, { selector, options }, {
193
193
  stateChangeCallbacks: currentCallbacks
194
194
  .filter(existingCallback => existingCallback !== callback),
@@ -200,7 +200,7 @@ class WorkerDataAdapter {
200
200
  dispose: async () => {
201
201
  await this.exec('unregisterCollection', collection.name);
202
202
  this.isDisposed = true;
203
- this.worker.terminate();
203
+ this.worker.terminate?.();
204
204
  },
205
205
  isReady: async () => {
206
206
  await this.exec('isReady', collection.name);
@@ -3,7 +3,7 @@ import type { QueryOptions } from './DataAdapter';
3
3
  import type Modifier from './types/Modifier';
4
4
  import type StorageAdapter from './types/StorageAdapter';
5
5
  import type Selector from './types/Selector';
6
- interface WorkerContext {
6
+ export interface WorkerDataAdapterHostEndpoint {
7
7
  addEventListener: (type: 'message', listener: (event: MessageEvent) => any) => void;
8
8
  postMessage: (message: any) => void;
9
9
  }
@@ -37,7 +37,7 @@ export default class WorkerDataAdapterHost<T extends BaseItem<I>, I = any> {
37
37
  private collectionIndices;
38
38
  private queries;
39
39
  private onError;
40
- constructor(workerContext: WorkerContext, options: WorkerDataAdapterHostOptions);
40
+ constructor(workerContext: WorkerDataAdapterHostEndpoint, options: WorkerDataAdapterHostOptions);
41
41
  private respond;
42
42
  private handleMessage;
43
43
  private getIndexInfo;
@@ -35,9 +35,6 @@ class WorkerDataAdapterHost {
35
35
  }
36
36
  if (this.options.log)
37
37
  this.log = this.options.log;
38
- if (typeof addEventListener === 'undefined' || typeof postMessage === 'undefined') {
39
- throw new TypeError('WorkerDataAdapterHost can only be used in a Web Worker context');
40
- }
41
38
  this.workerContext.addEventListener('message', async (event) => {
42
39
  try {
43
40
  const { workerId, id, method, args } = event.data;
@@ -19,4 +19,6 @@ export { default as DefaultDataAdapter } from './DefaultDataAdapter';
19
19
  export { default as AsyncDataAdapter } from './AsyncDataAdapter';
20
20
  export { default as WorkerDataAdapter } from './WorkerDataAdapter';
21
21
  export { default as WorkerDataAdapterHost } from './WorkerDataAdapterHost';
22
+ export type { WorkerDataAdapterEndpoint } from './WorkerDataAdapter';
23
+ export type { WorkerDataAdapterHostEndpoint } from './WorkerDataAdapterHost';
22
24
  export { default as AutoFetchDataAdapter } from './AutoFetchDataAdapter';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@signaldb/svelte",
3
3
  "type": "module",
4
- "version": "2.0.0-beta.10",
4
+ "version": "2.0.0-beta.11",
5
5
  "scripts": {
6
6
  "build": "tsc -d --noEmit false",
7
7
  "analyze-bundle": "bundle-analyzer ./dist --upload-token=$BUNDLE_ANALYZER_UPLOAD_TOKEN --bundle-name=@signaldb/svelte",