@signalium/query 1.0.9 → 1.0.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.
- package/CHANGELOG.md +21 -0
- package/dist/cjs/EntityMap.js +63 -6
- package/dist/cjs/EntityMap.js.map +1 -1
- package/dist/cjs/QueryClient.js +71 -6
- package/dist/cjs/QueryClient.js.map +1 -1
- package/dist/cjs/QueryResult.js +506 -86
- package/dist/cjs/QueryResult.js.map +1 -1
- package/dist/cjs/QueryStore.js +0 -500
- package/dist/cjs/QueryStore.js.map +1 -1
- package/dist/cjs/errors.js +23 -0
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parseEntities.js +14 -2
- package/dist/cjs/parseEntities.js.map +1 -1
- package/dist/cjs/proxy.js +76 -19
- package/dist/cjs/proxy.js.map +1 -1
- package/dist/cjs/query.js +65 -1
- package/dist/cjs/query.js.map +1 -1
- package/dist/cjs/react/use-query.js.map +1 -1
- package/dist/cjs/stores/async.js +38 -3
- package/dist/cjs/stores/async.js.map +1 -1
- package/dist/cjs/stores/shared.js +5 -1
- package/dist/cjs/stores/shared.js.map +1 -1
- package/dist/cjs/stores/sync.js +46 -10
- package/dist/cjs/stores/sync.js.map +1 -1
- package/dist/cjs/typeDefs.js +228 -5
- package/dist/cjs/typeDefs.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/EntityMap.d.ts +12 -4
- package/dist/esm/EntityMap.d.ts.map +1 -1
- package/dist/esm/EntityMap.js +64 -7
- package/dist/esm/EntityMap.js.map +1 -1
- package/dist/esm/QueryClient.d.ts +66 -13
- package/dist/esm/QueryClient.d.ts.map +1 -1
- package/dist/esm/QueryClient.js +68 -6
- package/dist/esm/QueryClient.js.map +1 -1
- package/dist/esm/QueryResult.d.ts +42 -8
- package/dist/esm/QueryResult.d.ts.map +1 -1
- package/dist/esm/QueryResult.js +510 -90
- package/dist/esm/QueryResult.js.map +1 -1
- package/dist/esm/QueryStore.d.ts +8 -104
- package/dist/esm/QueryStore.d.ts.map +1 -1
- package/dist/esm/QueryStore.js +1 -491
- package/dist/esm/QueryStore.js.map +1 -1
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +23 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parseEntities.d.ts.map +1 -1
- package/dist/esm/parseEntities.js +14 -2
- package/dist/esm/parseEntities.js.map +1 -1
- package/dist/esm/proxy.d.ts +2 -1
- package/dist/esm/proxy.d.ts.map +1 -1
- package/dist/esm/proxy.js +76 -20
- package/dist/esm/proxy.js.map +1 -1
- package/dist/esm/query.d.ts +29 -11
- package/dist/esm/query.d.ts.map +1 -1
- package/dist/esm/query.js +65 -1
- package/dist/esm/query.js.map +1 -1
- package/dist/esm/react/use-query.d.ts +2 -2
- package/dist/esm/react/use-query.d.ts.map +1 -1
- package/dist/esm/react/use-query.js.map +1 -1
- package/dist/esm/stores/async.d.ts +5 -3
- package/dist/esm/stores/async.d.ts.map +1 -1
- package/dist/esm/stores/async.js +39 -4
- package/dist/esm/stores/async.js.map +1 -1
- package/dist/esm/stores/shared.d.ts +2 -0
- package/dist/esm/stores/shared.d.ts.map +1 -1
- package/dist/esm/stores/shared.js +2 -0
- package/dist/esm/stores/shared.js.map +1 -1
- package/dist/esm/stores/sync.d.ts +6 -4
- package/dist/esm/stores/sync.d.ts.map +1 -1
- package/dist/esm/stores/sync.js +40 -5
- package/dist/esm/stores/sync.js.map +1 -1
- package/dist/esm/type-utils.d.ts +4 -0
- package/dist/esm/type-utils.d.ts.map +1 -1
- package/dist/esm/typeDefs.d.ts +81 -3
- package/dist/esm/typeDefs.d.ts.map +1 -1
- package/dist/esm/typeDefs.js +224 -4
- package/dist/esm/typeDefs.js.map +1 -1
- package/dist/esm/types.d.ts +99 -28
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @signalium/query
|
|
2
2
|
|
|
3
|
+
## 1.0.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7f94377: Fixup format registry and add global format type registry
|
|
8
|
+
- d1f9def: Add ability to defined cached methods to entities
|
|
9
|
+
- e0a4844: Add ability for Entities to subscribe to streams when in use
|
|
10
|
+
- 6b961f0: Add support for Signal query parameters and debounced updates
|
|
11
|
+
- Updated dependencies [2cf6766]
|
|
12
|
+
- signalium@2.1.4
|
|
13
|
+
|
|
14
|
+
## 1.0.10
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 24495ac: Add t.enum.caseInsensitive()
|
|
19
|
+
- 047d4dc: Allow all primitive types in search params
|
|
20
|
+
- 9b2c2f3: Add extend to Entity and Object typedefs
|
|
21
|
+
- c8fc4b8: Allow typenames to be optional on entities
|
|
22
|
+
- 0245106: Add streamOrphans and optimisticInserts
|
|
23
|
+
|
|
3
24
|
## 1.0.9
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/dist/cjs/EntityMap.js
CHANGED
|
@@ -5,42 +5,99 @@ const signalium_1 = require("signalium");
|
|
|
5
5
|
const proxy_js_1 = require("./proxy.js");
|
|
6
6
|
class EntityStore {
|
|
7
7
|
map = new Map();
|
|
8
|
+
queryClient;
|
|
9
|
+
constructor(queryClient) {
|
|
10
|
+
this.queryClient = queryClient;
|
|
11
|
+
}
|
|
8
12
|
hasEntity(key) {
|
|
9
13
|
return this.map.has(key);
|
|
10
14
|
}
|
|
11
15
|
getEntity(key) {
|
|
12
16
|
return this.map.get(key);
|
|
13
17
|
}
|
|
18
|
+
getNestedEntityRefIds(key, refIds) {
|
|
19
|
+
const record = this.getEntity(key);
|
|
20
|
+
if (record === undefined) {
|
|
21
|
+
throw new Error(`Entity ${key} not found when getting nested entity ref ids`);
|
|
22
|
+
}
|
|
23
|
+
refIds.add(key);
|
|
24
|
+
// Entangle the signal value. Whenever the signal value is updated, refIds
|
|
25
|
+
// will also be updated, so no need for a second signal.
|
|
26
|
+
record.notifier.consume();
|
|
27
|
+
if (record.entityRefs !== undefined) {
|
|
28
|
+
for (const ref of record.entityRefs) {
|
|
29
|
+
this.getNestedEntityRefIds(ref, refIds);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return refIds;
|
|
33
|
+
}
|
|
14
34
|
hydratePreloadedEntity(key, shape) {
|
|
15
35
|
const record = this.getEntity(key);
|
|
16
36
|
if (record === undefined) {
|
|
17
37
|
throw new Error(`Entity ${key} not found`);
|
|
18
38
|
}
|
|
19
|
-
record.proxy =
|
|
39
|
+
record.proxy = this.createEntityProxy(record, shape);
|
|
20
40
|
return record;
|
|
21
41
|
}
|
|
22
|
-
setPreloadedEntity(key,
|
|
42
|
+
setPreloadedEntity(key, data) {
|
|
23
43
|
const record = {
|
|
24
44
|
key,
|
|
25
|
-
|
|
45
|
+
data,
|
|
46
|
+
notifier: (0, signalium_1.notifier)(),
|
|
26
47
|
cache: new Map(),
|
|
48
|
+
id: undefined,
|
|
27
49
|
proxy: undefined,
|
|
50
|
+
entityRefs: undefined,
|
|
28
51
|
};
|
|
29
52
|
this.map.set(key, record);
|
|
30
53
|
return record;
|
|
31
54
|
}
|
|
32
|
-
setEntity(key, obj, shape) {
|
|
55
|
+
setEntity(key, obj, shape, entityRefs) {
|
|
33
56
|
let record = this.map.get(key);
|
|
34
57
|
if (record === undefined) {
|
|
35
58
|
record = this.setPreloadedEntity(key, obj);
|
|
36
|
-
record.proxy =
|
|
59
|
+
record.proxy = this.createEntityProxy(record, shape);
|
|
37
60
|
}
|
|
38
61
|
else {
|
|
39
|
-
record.
|
|
62
|
+
record.data = (0, proxy_js_1.mergeValues)(record.data, obj);
|
|
63
|
+
record.notifier.notify();
|
|
40
64
|
record.cache.clear();
|
|
41
65
|
}
|
|
66
|
+
record.entityRefs = entityRefs;
|
|
42
67
|
return record;
|
|
43
68
|
}
|
|
69
|
+
createEntityProxy(record, shape) {
|
|
70
|
+
const idField = shape.idField;
|
|
71
|
+
if (idField === undefined) {
|
|
72
|
+
throw new Error(`Entity id field is required ${shape.typenameValue}`);
|
|
73
|
+
}
|
|
74
|
+
const id = record.data[idField];
|
|
75
|
+
if (typeof id !== 'string' && typeof id !== 'number') {
|
|
76
|
+
console.log(record.data);
|
|
77
|
+
throw new Error(`Entity id must be string or number: ${shape.typenameValue}`);
|
|
78
|
+
}
|
|
79
|
+
record.id = id;
|
|
80
|
+
let entityRelay;
|
|
81
|
+
const entityConfig = shape._entityConfig;
|
|
82
|
+
if (entityConfig?.stream) {
|
|
83
|
+
entityRelay = (0, signalium_1.relay)(state => {
|
|
84
|
+
const context = this.queryClient.getContext();
|
|
85
|
+
const onUpdate = (update) => {
|
|
86
|
+
const currentValue = record.data;
|
|
87
|
+
const merged = (0, proxy_js_1.mergeValues)(currentValue, update);
|
|
88
|
+
record.data = merged;
|
|
89
|
+
record.notifier.notify();
|
|
90
|
+
record.cache.clear();
|
|
91
|
+
};
|
|
92
|
+
const unsubscribe = entityConfig.stream.subscribe(context, id, onUpdate);
|
|
93
|
+
// Set initial value to the proxy - this resolves the relay promise
|
|
94
|
+
// Proxy should always exist at this point since it's created before relay access
|
|
95
|
+
state.value = record.proxy;
|
|
96
|
+
return unsubscribe;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return (0, proxy_js_1.createEntityProxy)(record.key, record, shape, entityRelay, this.queryClient);
|
|
100
|
+
}
|
|
44
101
|
}
|
|
45
102
|
exports.EntityStore = EntityStore;
|
|
46
103
|
//# sourceMappingURL=EntityMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMap.js","sourceRoot":"","sources":["../../src/EntityMap.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"EntityMap.js","sourceRoot":"","sources":["../../src/EntityMap.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/QueryClient.js
CHANGED
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.QueryClientContext = exports.QueryClient = exports.queryKeyFor = void 0;
|
|
16
|
+
exports.extractParamsForKey = extractParamsForKey;
|
|
17
|
+
exports.addOptimisticInsert = addOptimisticInsert;
|
|
18
|
+
exports.removeOptimisticInsert = removeOptimisticInsert;
|
|
16
19
|
const signalium_1 = require("signalium");
|
|
17
20
|
const utils_1 = require("signalium/utils");
|
|
18
21
|
const EntityMap_js_1 = require("./EntityMap.js");
|
|
@@ -20,6 +23,41 @@ const NetworkManager_js_1 = require("./NetworkManager.js");
|
|
|
20
23
|
const QueryResult_js_1 = require("./QueryResult.js");
|
|
21
24
|
const RefetchManager_js_1 = require("./RefetchManager.js");
|
|
22
25
|
const MemoryEvictionManager_js_1 = require("./MemoryEvictionManager.js");
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a value is a Signal instance
|
|
28
|
+
*/
|
|
29
|
+
function isSignal(value) {
|
|
30
|
+
return typeof value === 'object' && value !== null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extracts actual values from params that may contain Signals.
|
|
34
|
+
*/
|
|
35
|
+
function extractParamsForKey(params) {
|
|
36
|
+
if (params === undefined) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const extracted = {};
|
|
40
|
+
for (const [key, value] of Object.entries(params)) {
|
|
41
|
+
if (isSignal(value)) {
|
|
42
|
+
extracted[key] = value.value;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
extracted[key] = value;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return extracted;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Computes the query key for instance lookup. This is used for two different keys:
|
|
52
|
+
*
|
|
53
|
+
* - Query instance key
|
|
54
|
+
* - Query storage key
|
|
55
|
+
*
|
|
56
|
+
* Instance keys are created by passing in the query definition and parameters WITHOUT
|
|
57
|
+
* extracting the Signal values, whereas storage keys are created by extracting the Signal values.
|
|
58
|
+
* This way, we can reuse the same instance for given Signals, but different underlying values
|
|
59
|
+
* will be stored and put into the LRU cache separately.
|
|
60
|
+
*/
|
|
23
61
|
const queryKeyFor = (queryDef, params) => {
|
|
24
62
|
return (0, utils_1.hashValue)([queryDef.id, queryDef.shapeKey, params]);
|
|
25
63
|
};
|
|
@@ -27,7 +65,7 @@ exports.queryKeyFor = queryKeyFor;
|
|
|
27
65
|
class QueryClient {
|
|
28
66
|
store;
|
|
29
67
|
context;
|
|
30
|
-
entityMap
|
|
68
|
+
entityMap;
|
|
31
69
|
queryInstances = new Map();
|
|
32
70
|
memoryEvictionManager;
|
|
33
71
|
refetchManager;
|
|
@@ -41,21 +79,26 @@ class QueryClient {
|
|
|
41
79
|
this.refetchManager = refetchManager ?? new RefetchManager_js_1.RefetchManager(this.context.refetchMultiplier);
|
|
42
80
|
this.networkManager = networkManager ?? new NetworkManager_js_1.NetworkManager();
|
|
43
81
|
this.isServer = typeof window === 'undefined';
|
|
82
|
+
this.entityMap = new EntityMap_js_1.EntityStore(this);
|
|
44
83
|
}
|
|
45
84
|
getContext() {
|
|
46
85
|
return this.context;
|
|
47
86
|
}
|
|
48
|
-
saveQueryData(queryDef, queryKey, data, updatedAt, entityRefs) {
|
|
87
|
+
saveQueryData(queryDef, queryKey, data, updatedAt, entityRefs, extra) {
|
|
88
|
+
// Clone entityRefs to avoid mutation in setValue
|
|
89
|
+
const clonedRefs = entityRefs !== undefined ? new Set(entityRefs) : undefined;
|
|
49
90
|
// QueryStore expects the base definition structure
|
|
50
|
-
this.store.saveQuery(queryDef, queryKey, data, updatedAt,
|
|
91
|
+
this.store.saveQuery(queryDef, queryKey, data, updatedAt, clonedRefs, extra);
|
|
51
92
|
}
|
|
52
93
|
activateQuery(queryInstance) {
|
|
53
|
-
const { def, queryKey } = queryInstance;
|
|
54
|
-
|
|
94
|
+
const { def, queryKey, storageKey } = queryInstance;
|
|
95
|
+
// Use storageKey for cache operations (store.activateQuery)
|
|
96
|
+
this.store.activateQuery(def, storageKey);
|
|
55
97
|
// Only add to refetch manager if it's not a stream
|
|
56
98
|
if (def.type !== "stream" /* QueryType.Stream */ && def.cache?.refetchInterval) {
|
|
57
99
|
this.refetchManager.addQuery(queryInstance);
|
|
58
100
|
}
|
|
101
|
+
// Use queryKey for instance eviction (memoryEvictionManager)
|
|
59
102
|
this.memoryEvictionManager.cancelEviction(queryKey);
|
|
60
103
|
}
|
|
61
104
|
loadCachedQuery(queryDef, queryKey) {
|
|
@@ -80,10 +123,15 @@ class QueryClient {
|
|
|
80
123
|
return this.entityMap.hydratePreloadedEntity(key, shape);
|
|
81
124
|
}
|
|
82
125
|
saveEntity(key, obj, shape, entityRefs) {
|
|
83
|
-
|
|
126
|
+
// console.log('saveEntity', key, JSON.stringify(obj, null, 2), shape, entityRefs, new Error().stack);
|
|
127
|
+
const record = this.entityMap.setEntity(key, obj, shape, entityRefs);
|
|
128
|
+
// console.log('saveEntity record', JSON.stringify(obj, null, 2), new Error().stack);
|
|
84
129
|
this.store.saveEntity(key, obj, entityRefs);
|
|
85
130
|
return record;
|
|
86
131
|
}
|
|
132
|
+
getNestedEntityRefIds(key, refIds) {
|
|
133
|
+
return this.entityMap.getNestedEntityRefIds(key, refIds);
|
|
134
|
+
}
|
|
87
135
|
destroy() {
|
|
88
136
|
this.refetchManager.destroy();
|
|
89
137
|
this.memoryEvictionManager.destroy();
|
|
@@ -91,4 +139,21 @@ class QueryClient {
|
|
|
91
139
|
}
|
|
92
140
|
exports.QueryClient = QueryClient;
|
|
93
141
|
exports.QueryClientContext = (0, signalium_1.context)(undefined);
|
|
142
|
+
/**
|
|
143
|
+
* Add an optimistic insert to a query result.
|
|
144
|
+
* The insert will be automatically removed when:
|
|
145
|
+
* - The entity appears in a refetched response
|
|
146
|
+
* - The entity appears as a stream orphan
|
|
147
|
+
* - refetch() is called
|
|
148
|
+
*/
|
|
149
|
+
function addOptimisticInsert(query, insert) {
|
|
150
|
+
query.addOptimisticInsert(insert);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Remove an optimistic insert from a query result.
|
|
154
|
+
* This is a no-op if the insert has already been removed.
|
|
155
|
+
*/
|
|
156
|
+
function removeOptimisticInsert(query, insert) {
|
|
157
|
+
query.removeOptimisticInsert(insert);
|
|
158
|
+
}
|
|
94
159
|
//# sourceMappingURL=QueryClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryClient.js","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;
|
|
1
|
+
{"version":3,"file":"QueryClient.js","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"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"}
|