@signalium/query 0.0.2 → 1.0.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 +21 -0
- package/dist/cjs/EntityMap.js +2 -2
- package/dist/cjs/EntityMap.js.map +1 -1
- package/dist/cjs/NetworkManager.js +105 -0
- package/dist/cjs/NetworkManager.js.map +1 -0
- package/dist/cjs/QueryClient.js +390 -76
- package/dist/cjs/QueryClient.js.map +1 -1
- package/dist/cjs/QueryStore.js +295 -3
- package/dist/cjs/QueryStore.js.map +1 -1
- package/dist/cjs/index.js +16 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/parseEntities.js +3 -0
- package/dist/cjs/parseEntities.js.map +1 -1
- package/dist/cjs/proxy.js +19 -0
- package/dist/cjs/proxy.js.map +1 -1
- package/dist/cjs/query.js +40 -2
- package/dist/cjs/query.js.map +1 -1
- package/dist/cjs/stores/async.js +6 -0
- package/dist/cjs/stores/async.js.map +1 -0
- package/dist/cjs/stores/sync.js +7 -0
- package/dist/cjs/stores/sync.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/type-utils.js +3 -0
- package/dist/cjs/type-utils.js.map +1 -0
- package/dist/cjs/types.js +19 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/EntityMap.js +3 -3
- package/dist/esm/EntityMap.js.map +1 -1
- package/dist/esm/NetworkManager.d.ts +48 -0
- package/dist/esm/NetworkManager.d.ts.map +1 -0
- package/dist/esm/NetworkManager.js +101 -0
- package/dist/esm/NetworkManager.js.map +1 -0
- package/dist/esm/QueryClient.d.ts +81 -25
- package/dist/esm/QueryClient.d.ts.map +1 -1
- package/dist/esm/QueryClient.js +390 -76
- package/dist/esm/QueryClient.js.map +1 -1
- package/dist/esm/QueryStore.d.ts +64 -2
- package/dist/esm/QueryStore.d.ts.map +1 -1
- package/dist/esm/QueryStore.js +293 -2
- package/dist/esm/QueryStore.js.map +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parseEntities.d.ts.map +1 -1
- package/dist/esm/parseEntities.js +3 -0
- package/dist/esm/parseEntities.js.map +1 -1
- package/dist/esm/proxy.d.ts +6 -0
- package/dist/esm/proxy.d.ts.map +1 -1
- package/dist/esm/proxy.js +18 -0
- package/dist/esm/proxy.js.map +1 -1
- package/dist/esm/query.d.ts +30 -29
- package/dist/esm/query.d.ts.map +1 -1
- package/dist/esm/query.js +39 -3
- package/dist/esm/query.js.map +1 -1
- package/dist/esm/stores/async.d.ts +2 -0
- package/dist/esm/stores/async.d.ts.map +1 -0
- package/dist/esm/stores/async.js +2 -0
- package/dist/esm/stores/async.js.map +1 -0
- package/dist/esm/stores/sync.d.ts +2 -0
- package/dist/esm/stores/sync.d.ts.map +1 -0
- package/dist/esm/stores/sync.js +2 -0
- package/dist/esm/stores/sync.js.map +1 -0
- package/dist/esm/type-utils.d.ts +12 -0
- package/dist/esm/type-utils.d.ts.map +1 -0
- package/dist/esm/type-utils.js +2 -0
- package/dist/esm/type-utils.js.map +1 -0
- package/dist/esm/types.d.ts +62 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +18 -0
- package/dist/esm/types.js.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +25 -7
- package/stores/async.d.ts +1 -0
- package/stores/async.js +15 -0
- package/stores/sync.d.ts +1 -0
- package/stores/sync.js +15 -0
- package/.turbo/turbo-build.log +0 -12
- package/ENTITY_STORE_DESIGN.md +0 -386
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- package/src/EntityMap.ts +0 -63
- package/src/QueryClient.ts +0 -482
- package/src/QueryStore.ts +0 -322
- package/src/__tests__/caching-persistence.test.ts +0 -983
- package/src/__tests__/entity-system.test.ts +0 -556
- package/src/__tests__/gc-time.test.ts +0 -327
- package/src/__tests__/mock-fetch.test.ts +0 -186
- package/src/__tests__/parse-entities.test.ts +0 -425
- package/src/__tests__/path-interpolation.test.ts +0 -225
- package/src/__tests__/reactivity.test.ts +0 -424
- package/src/__tests__/refetch-interval.test.ts +0 -262
- package/src/__tests__/rest-query-api.test.ts +0 -568
- package/src/__tests__/stale-time.test.ts +0 -357
- package/src/__tests__/type-to-string.test.ts +0 -129
- package/src/__tests__/utils.ts +0 -258
- package/src/__tests__/validation-edge-cases.test.ts +0 -821
- package/src/errors.ts +0 -124
- package/src/index.ts +0 -7
- package/src/parseEntities.ts +0 -213
- package/src/pathInterpolator.ts +0 -74
- package/src/proxy.ts +0 -257
- package/src/query.ts +0 -164
- package/src/react/__tests__/basic.test.tsx +0 -926
- package/src/react/__tests__/component.test.tsx +0 -984
- package/src/react/__tests__/utils.tsx +0 -71
- package/src/typeDefs.ts +0 -351
- package/src/types.ts +0 -132
- package/src/utils.ts +0 -66
- package/tsconfig.cjs.json +0 -14
- package/tsconfig.esm.json +0 -13
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @signalium/query
|
|
2
2
|
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 1a94943: Add NetworkManager and network mode options
|
|
8
|
+
- 0f609e4: Adds infinite query, includes some minor breaking API changes
|
|
9
|
+
- 4c35e93: Add Stream Query support
|
|
10
|
+
- f59a776: Add async store and split out stores into separate import paths
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [e64597d]
|
|
15
|
+
- Updated dependencies [4c35e93]
|
|
16
|
+
- signalium@2.1.0
|
|
17
|
+
|
|
18
|
+
## 0.1.0
|
|
19
|
+
|
|
20
|
+
### Minor Changes
|
|
21
|
+
|
|
22
|
+
- 919ecd9: Remove unused decoders dependency and prepare for initial pre-release
|
|
23
|
+
|
|
3
24
|
## 0.0.2
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/dist/cjs/EntityMap.js
CHANGED
|
@@ -22,7 +22,7 @@ class EntityStore {
|
|
|
22
22
|
setPreloadedEntity(key, obj) {
|
|
23
23
|
const record = {
|
|
24
24
|
key,
|
|
25
|
-
signal: (0, signalium_1.signal)(obj),
|
|
25
|
+
signal: (0, signalium_1.signal)(obj, { equals: false }),
|
|
26
26
|
cache: new Map(),
|
|
27
27
|
proxy: undefined,
|
|
28
28
|
};
|
|
@@ -36,7 +36,7 @@ class EntityStore {
|
|
|
36
36
|
record.proxy = (0, proxy_js_1.createEntityProxy)(key, record, shape);
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
record.signal.value
|
|
39
|
+
record.signal.update(value => (0, proxy_js_1.mergeValues)(value, obj));
|
|
40
40
|
record.cache.clear();
|
|
41
41
|
}
|
|
42
42
|
return record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMap.js","sourceRoot":"","sources":["../../src/EntityMap.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAE3C,
|
|
1
|
+
{"version":3,"file":"EntityMap.js","sourceRoot":"","sources":["../../src/EntityMap.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAE3C,yCAA4D;AAW5D,MAAa,WAAW;IACd,GAAG,GAAG,IAAI,GAAG,EAAgD,CAAC;IAEtE,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,sBAAsB,CAAC,GAAW,EAAE,KAAgB;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,IAAA,4BAAiB,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,MAAsB,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,GAAW,EAAE,GAA4B;QAC1D,MAAM,MAAM,GAA0B;YACpC,GAAG;YACH,MAAM,EAAE,IAAA,kBAAM,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACtC,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,GAA4B,EAAE,KAAgB;QACnE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE3C,MAAM,CAAC,KAAK,GAAG,IAAA,4BAAiB,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,sBAAW,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,MAAsB,CAAC;IAChC,CAAC;CACF;AAjDD,kCAiDC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NetworkManager - Tracks network connectivity status
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Signal-based reactivity for online/offline status
|
|
7
|
+
* - Automatic detection using navigator.onLine and events
|
|
8
|
+
* - Manual override capability for testing and custom scenarios
|
|
9
|
+
* - Platform-agnostic (works in browser and React Native)
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.NetworkManagerContext = exports.defaultNetworkManager = exports.NetworkManager = void 0;
|
|
13
|
+
const signalium_1 = require("signalium");
|
|
14
|
+
class NetworkManager {
|
|
15
|
+
onlineSignal;
|
|
16
|
+
manualOverride = undefined;
|
|
17
|
+
eventListenersAttached = false;
|
|
18
|
+
constructor(initialStatus) {
|
|
19
|
+
// Initialize with manual status if provided, otherwise detect from environment
|
|
20
|
+
const initialOnlineStatus = initialStatus ?? this.detectOnlineStatus();
|
|
21
|
+
this.onlineSignal = (0, signalium_1.signal)(initialOnlineStatus);
|
|
22
|
+
// Automatically attach event listeners if in browser/React Native environment
|
|
23
|
+
if (this.canAttachListeners()) {
|
|
24
|
+
this.attachEventListeners();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns true if the network is currently online
|
|
29
|
+
*/
|
|
30
|
+
get isOnline() {
|
|
31
|
+
// Manual override takes precedence
|
|
32
|
+
if (this.manualOverride !== undefined) {
|
|
33
|
+
return this.manualOverride;
|
|
34
|
+
}
|
|
35
|
+
return this.onlineSignal.value;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Manually set the network status (useful for testing)
|
|
39
|
+
*/
|
|
40
|
+
setNetworkStatus(online) {
|
|
41
|
+
this.manualOverride = online;
|
|
42
|
+
this.onlineSignal.value = online;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Clear manual override and return to automatic detection
|
|
46
|
+
*/
|
|
47
|
+
clearManualOverride() {
|
|
48
|
+
this.manualOverride = undefined;
|
|
49
|
+
this.onlineSignal.value = this.detectOnlineStatus();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the reactive signal for online status
|
|
53
|
+
* This allows reactive functions to depend on network status
|
|
54
|
+
*/
|
|
55
|
+
getOnlineSignal() {
|
|
56
|
+
return this.onlineSignal;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Detect current online status from the environment
|
|
60
|
+
*/
|
|
61
|
+
detectOnlineStatus() {
|
|
62
|
+
// Check if we're in a browser or React Native environment
|
|
63
|
+
if (typeof navigator !== 'undefined' && 'onLine' in navigator) {
|
|
64
|
+
return navigator.onLine;
|
|
65
|
+
}
|
|
66
|
+
// Default to online if we can't detect (e.g., Node.js/SSR)
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if we can attach event listeners (browser or React Native)
|
|
71
|
+
*/
|
|
72
|
+
canAttachListeners() {
|
|
73
|
+
return typeof window !== 'undefined' && typeof window.addEventListener === 'function';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Attach event listeners for online/offline events
|
|
77
|
+
*/
|
|
78
|
+
attachEventListeners() {
|
|
79
|
+
if (this.eventListenersAttached) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const handleOnline = () => {
|
|
83
|
+
if (this.manualOverride === undefined) {
|
|
84
|
+
this.onlineSignal.value = true;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const handleOffline = () => {
|
|
88
|
+
if (this.manualOverride === undefined) {
|
|
89
|
+
this.onlineSignal.value = false;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
window.addEventListener('online', handleOnline);
|
|
93
|
+
window.addEventListener('offline', handleOffline);
|
|
94
|
+
this.eventListenersAttached = true;
|
|
95
|
+
// Note: In a real production app, you might want to provide a cleanup method
|
|
96
|
+
// to remove these listeners, but for a singleton that lives for the app lifetime,
|
|
97
|
+
// it's not critical
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.NetworkManager = NetworkManager;
|
|
101
|
+
// Default singleton instance for convenience
|
|
102
|
+
exports.defaultNetworkManager = new NetworkManager();
|
|
103
|
+
// Context for dependency injection
|
|
104
|
+
exports.NetworkManagerContext = (0, signalium_1.context)(exports.defaultNetworkManager);
|
|
105
|
+
//# sourceMappingURL=NetworkManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkManager.js","sourceRoot":"","sources":["../../src/NetworkManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,yCAA6D;AAE7D,MAAa,cAAc;IACjB,YAAY,CAAkB;IAC9B,cAAc,GAAwB,SAAS,CAAC;IAChD,sBAAsB,GAAG,KAAK,CAAC;IAEvC,YAAY,aAAuB;QACjC,+EAA+E;QAC/E,MAAM,mBAAmB,GAAG,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,IAAA,kBAAM,EAAC,mBAAmB,CAAC,CAAC;QAEhD,8EAA8E;QAC9E,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,mCAAmC;QACnC,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAe;QAC9B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,0DAA0D;QAC1D,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC9D,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QAED,2DAA2D;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,CAAC;IACxF,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,6EAA6E;QAC7E,kFAAkF;QAClF,oBAAoB;IACtB,CAAC;CACF;AArGD,wCAqGC;AAED,6CAA6C;AAChC,QAAA,qBAAqB,GAAG,IAAI,cAAc,EAAE,CAAC;AAE1D,mCAAmC;AACtB,QAAA,qBAAqB,GAA4B,IAAA,mBAAO,EAAiB,6BAAqB,CAAC,CAAC"}
|