@signaldb/svelte 2.0.0-beta.2 → 2.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/base/core/src/AsyncDataAdapter.d.ts +112 -0
  2. package/dist/base/core/src/AsyncDataAdapter.js +549 -0
  3. package/dist/base/core/src/AutoFetchDataAdapter.d.ts +112 -0
  4. package/dist/base/core/src/AutoFetchDataAdapter.js +612 -0
  5. package/dist/base/core/src/Collection/Cursor.d.ts +165 -0
  6. package/dist/base/core/src/Collection/Cursor.js +352 -0
  7. package/dist/base/core/src/Collection/Observer.d.ts +95 -0
  8. package/dist/base/core/src/Collection/Observer.js +227 -0
  9. package/dist/base/core/src/Collection/index.d.ts +341 -0
  10. package/dist/base/core/src/Collection/index.js +761 -0
  11. package/dist/base/core/src/Collection/types.d.ts +28 -0
  12. package/dist/base/core/src/Collection/types.js +2 -0
  13. package/dist/base/core/src/DataAdapter.d.ts +54 -0
  14. package/dist/base/core/src/DataAdapter.js +2 -0
  15. package/dist/base/core/src/DefaultDataAdapter.d.ts +35 -0
  16. package/dist/base/core/src/DefaultDataAdapter.js +408 -0
  17. package/dist/base/core/src/WorkerDataAdapter.d.ts +79 -0
  18. package/dist/base/core/src/WorkerDataAdapter.js +749 -0
  19. package/dist/base/core/src/WorkerDataAdapterHost.d.ts +64 -0
  20. package/dist/base/core/src/WorkerDataAdapterHost.js +430 -0
  21. package/dist/base/core/src/createIndex.d.ts +7 -0
  22. package/dist/base/core/src/createIndex.js +120 -0
  23. package/dist/base/core/src/createIndexProvider.d.ts +8 -0
  24. package/dist/base/core/src/createIndexProvider.js +11 -0
  25. package/dist/base/core/src/createReactivityAdapter.d.ts +8 -0
  26. package/dist/base/core/src/createReactivityAdapter.js +11 -0
  27. package/dist/base/core/src/createStorageAdapter.d.ts +9 -0
  28. package/dist/base/core/src/createStorageAdapter.js +11 -0
  29. package/dist/base/core/src/getIndexInfo.d.ts +39 -0
  30. package/dist/base/core/src/getIndexInfo.js +188 -0
  31. package/dist/base/core/src/index.d.ts +26 -0
  32. package/dist/base/core/src/index.js +39 -0
  33. package/dist/base/core/src/types/Dependency.d.ts +4 -0
  34. package/dist/base/core/src/types/Dependency.js +2 -0
  35. package/dist/base/core/src/types/IndexProvider.d.ts +26 -0
  36. package/dist/base/core/src/types/IndexProvider.js +2 -0
  37. package/dist/base/core/src/types/Modifier.d.ts +46 -0
  38. package/dist/base/core/src/types/Modifier.js +3 -0
  39. package/dist/base/core/src/types/ReactivityAdapter.d.ts +6 -0
  40. package/dist/base/core/src/types/ReactivityAdapter.js +2 -0
  41. package/dist/base/core/src/types/Selector.d.ts +46 -0
  42. package/dist/base/core/src/types/Selector.js +3 -0
  43. package/dist/base/core/src/types/Signal.d.ts +4 -0
  44. package/dist/base/core/src/types/Signal.js +2 -0
  45. package/dist/base/core/src/types/StorageAdapter.d.ts +28 -0
  46. package/dist/base/core/src/types/StorageAdapter.js +2 -0
  47. package/dist/base/core/src/utils/EventEmitter.d.ts +71 -0
  48. package/dist/base/core/src/utils/EventEmitter.js +144 -0
  49. package/dist/base/core/src/utils/applyQueryOptions.d.ts +15 -0
  50. package/dist/base/core/src/utils/applyQueryOptions.js +36 -0
  51. package/dist/base/core/src/utils/batchOnNextTick.d.ts +16 -0
  52. package/dist/base/core/src/utils/batchOnNextTick.js +72 -0
  53. package/dist/base/core/src/utils/compact.d.ts +9 -0
  54. package/dist/base/core/src/utils/compact.js +21 -0
  55. package/dist/base/core/src/utils/createSignal.d.ts +14 -0
  56. package/dist/base/core/src/utils/createSignal.js +38 -0
  57. package/dist/base/core/src/utils/deepClone.d.ts +17 -0
  58. package/dist/base/core/src/utils/deepClone.js +68 -0
  59. package/dist/base/core/src/utils/get.d.ts +9 -0
  60. package/dist/base/core/src/utils/get.js +27 -0
  61. package/dist/base/core/src/utils/getMatchingKeys.d.ts +19 -0
  62. package/dist/base/core/src/utils/getMatchingKeys.js +49 -0
  63. package/dist/base/core/src/utils/idIndexQuery.d.ts +20 -0
  64. package/dist/base/core/src/utils/idIndexQuery.js +49 -0
  65. package/dist/base/core/src/utils/incrementalQueryUpdate.d.ts +62 -0
  66. package/dist/base/core/src/utils/incrementalQueryUpdate.js +197 -0
  67. package/dist/base/core/src/utils/intersection.d.ts +9 -0
  68. package/dist/base/core/src/utils/intersection.js +16 -0
  69. package/dist/base/core/src/utils/isEqual.d.ts +14 -0
  70. package/dist/base/core/src/utils/isEqual.js +43 -0
  71. package/dist/base/core/src/utils/isFieldExpression.d.ts +11 -0
  72. package/dist/base/core/src/utils/isFieldExpression.js +52 -0
  73. package/dist/base/core/src/utils/match.d.ts +12 -0
  74. package/dist/base/core/src/utils/match.js +16 -0
  75. package/dist/base/core/src/utils/modify.d.ts +14 -0
  76. package/dist/base/core/src/utils/modify.js +29 -0
  77. package/dist/base/core/src/utils/project.d.ts +15 -0
  78. package/dist/base/core/src/utils/project.js +43 -0
  79. package/dist/base/core/src/utils/projectItems.d.ts +12 -0
  80. package/dist/base/core/src/utils/projectItems.js +25 -0
  81. package/dist/base/core/src/utils/queryDelta.d.ts +83 -0
  82. package/dist/base/core/src/utils/queryDelta.js +231 -0
  83. package/dist/base/core/src/utils/queryId.d.ts +9 -0
  84. package/dist/base/core/src/utils/queryId.js +61 -0
  85. package/dist/base/core/src/utils/randomId.d.ts +7 -0
  86. package/dist/base/core/src/utils/randomId.js +12 -0
  87. package/dist/base/core/src/utils/reactiveOrAsync.d.ts +59 -0
  88. package/dist/base/core/src/utils/reactiveOrAsync.js +93 -0
  89. package/dist/base/core/src/utils/serializeValue.d.ts +12 -0
  90. package/dist/base/core/src/utils/serializeValue.js +27 -0
  91. package/dist/base/core/src/utils/set.d.ts +13 -0
  92. package/dist/base/core/src/utils/set.js +43 -0
  93. package/dist/base/core/src/utils/sortItems.d.ts +12 -0
  94. package/dist/base/core/src/utils/sortItems.js +23 -0
  95. package/dist/base/core/src/utils/storageIndexQuery.d.ts +20 -0
  96. package/dist/base/core/src/utils/storageIndexQuery.js +75 -0
  97. package/dist/base/core/src/utils/uniqueBy.d.ts +10 -0
  98. package/dist/base/core/src/utils/uniqueBy.js +19 -0
  99. package/dist/index.cjs +38 -0
  100. package/dist/index.cjs.map +1 -0
  101. package/dist/index.mjs +38 -0
  102. package/dist/index.mjs.map +1 -0
  103. package/dist/reactivity-adapters/svelte/index.svelte.d.ts +10 -0
  104. package/dist/reactivity-adapters/svelte/index.svelte.js +36 -0
  105. package/package.json +3 -3
@@ -0,0 +1,112 @@
1
+ import type { BaseItem } from './Collection';
2
+ import type Collection from './Collection';
3
+ import type DataAdapter from './DataAdapter';
4
+ import type { CollectionBackend } from './DataAdapter';
5
+ import type StorageAdapter from './types/StorageAdapter';
6
+ import type Selector from './types/Selector';
7
+ /**
8
+ * AutoFetchDataAdapterOptions
9
+ *
10
+ * Merges the core options required to talk to a per-collection StorageAdapter with
11
+ * the auto-fetch behavior inspired by AutoFetchCollection.
12
+ */
13
+ export interface AutoFetchDataAdapterOptions {
14
+ /** Factory to obtain a StorageAdapter per collection name */
15
+ storage?: (name: string) => StorageAdapter<any, any>;
16
+ /** Optional logical id (handy if you run multiple adapters side-by-side) */
17
+ id?: string;
18
+ /** Optional error hook */
19
+ onError?: (error: Error) => void;
20
+ /**
21
+ * Fetch hook: given a selector, retrieve items from a remote source.
22
+ * Must resolve to an object with an `items` array. Items MUST include an `id`.
23
+ */
24
+ fetchQueryItems: (collectionName: string, selector: Selector<BaseItem>) => Promise<BaseItem[] | undefined>;
25
+ /**
26
+ * Optional: called once at adapter construction to subscribe to remote changes.
27
+ * When invoked, call the provided callback whenever the remote source changed
28
+ * and all active queries should be re-fetched.
29
+ */
30
+ registerRemoteChange?: (onChange: () => Promise<void>) => Promise<void>;
31
+ /**
32
+ * Merge strategy for ingesting freshly fetched items with existing ones.
33
+ * Default is shallow spread (right wins).
34
+ */
35
+ mergeItems?: <T extends BaseItem<any>>(a: T, b: T) => T;
36
+ /**
37
+ * Delay (ms) before purging auto-fetched items for a query after the query
38
+ * becomes inactive. Set to 0 to purge immediately. Default: 10s.
39
+ */
40
+ purgeDelay?: number;
41
+ }
42
+ /**
43
+ * AutoFetchDataAdapter
44
+ *
45
+ * A DataAdapter that:
46
+ * - Mirrors the CollectionBackend surface (CRUD + query registry + lifecycle)
47
+ * - Executes queries against a provided StorageAdapter (local cache)
48
+ * - On first registration of a selector, auto-fetches from a remote source and
49
+ * ingests the result into storage (upsert), then pushes query result updates
50
+ * - Optionally purges auto-fetched items for a selector once no observers remain
51
+ * - Can subscribe to remote change notifications to re-fetch active selectors
52
+ *
53
+ * IMPORTANT: Purging only ever deletes items that were introduced via the
54
+ * auto-fetch path and are no longer referenced by any active selector. Items
55
+ * inserted through CRUD calls are never purged.
56
+ */
57
+ export default class AutoFetchDataAdapter implements DataAdapter {
58
+ private options;
59
+ private id;
60
+ private onError;
61
+ private fetchQueryItems;
62
+ private mergeItems;
63
+ private purgeDelay;
64
+ private storageAdapters;
65
+ private storageAdapterReady;
66
+ private collectionIndices;
67
+ private queries;
68
+ private activeObservers;
69
+ private observerTimeouts;
70
+ private selectorIds;
71
+ private idRefCounts;
72
+ private autoloadIds;
73
+ constructor(options: AutoFetchDataAdapterOptions);
74
+ createCollectionBackend<T extends BaseItem<I>, I = any, E extends BaseItem = T, U = E>(collection: Collection<T, I, E, U>, indices: string[]): CollectionBackend<T, I>;
75
+ private forceRefetchAll;
76
+ private fetchAndIngest;
77
+ private purgeSelector;
78
+ private setupStorage;
79
+ private ensureStorageAdapter;
80
+ private publishForSelector;
81
+ private publishState;
82
+ private publishResult;
83
+ private fulfillQuery;
84
+ private getIndexInfo;
85
+ private queryItems;
86
+ private executeQuery;
87
+ private checkQueryUpdates;
88
+ private insert;
89
+ private updateOne;
90
+ private updateMany;
91
+ private replaceOne;
92
+ private removeOne;
93
+ private removeMany;
94
+ private upsertMerged;
95
+ }
96
+ /**
97
+ * Usage (example):
98
+ *
99
+ * const adapter = new AutoFetchDataAdapter({
100
+ * storage: (name) => new IndexedDBStorage(name),
101
+ * fetchQueryItems: async (collectionName, selector) => {
102
+ * const res = await fetch(`/api/${collectionName}?q=${encodeURIComponent(JSON.stringify(selector||{}))}`)
103
+ * const items = await res.json()
104
+ * return { items }
105
+ * },
106
+ * registerRemoteChange: (onChange) => subscribeToWS(onChange),
107
+ * mergeItems: (a, b) => ({ ...a, ...b }),
108
+ * purgeDelay: 10_000,
109
+ * })
110
+ *
111
+ * const backend = adapter.createCollectionBackend(myCollection, ['status', 'projectId'])
112
+ */