on-zero 0.3.1 → 0.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/dist/cjs/createZeroClient.cjs +2 -2
- package/dist/cjs/createZeroClient.native.js +2 -2
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/clearZeroClientData.cjs +72 -0
- package/dist/cjs/helpers/clearZeroClientData.native.js +99 -0
- package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -0
- package/dist/cjs/helpers/showZeroClientError.cjs +65 -0
- package/dist/cjs/helpers/showZeroClientError.native.js +71 -0
- package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -0
- package/dist/cjs/index.cjs +7 -2
- package/dist/cjs/index.native.js +6 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/queryRegistry.cjs +3 -4
- package/dist/cjs/queryRegistry.native.js +3 -6
- package/dist/cjs/queryRegistry.native.js.map +1 -1
- package/dist/cjs/resolveQuery.cjs +8 -1
- package/dist/cjs/resolveQuery.native.js +15 -2
- package/dist/cjs/resolveQuery.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +2 -2
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +2 -2
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/clearZeroClientData.mjs +49 -0
- package/dist/esm/helpers/clearZeroClientData.mjs.map +1 -0
- package/dist/esm/helpers/clearZeroClientData.native.js +73 -0
- package/dist/esm/helpers/clearZeroClientData.native.js.map +1 -0
- package/dist/esm/helpers/showZeroClientError.mjs +41 -0
- package/dist/esm/helpers/showZeroClientError.mjs.map +1 -0
- package/dist/esm/helpers/showZeroClientError.native.js +44 -0
- package/dist/esm/helpers/showZeroClientError.native.js.map +1 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/queryRegistry.mjs +3 -4
- package/dist/esm/queryRegistry.mjs.map +1 -1
- package/dist/esm/queryRegistry.native.js +3 -6
- package/dist/esm/queryRegistry.native.js.map +1 -1
- package/dist/esm/resolveQuery.mjs +8 -1
- package/dist/esm/resolveQuery.mjs.map +1 -1
- package/dist/esm/resolveQuery.native.js +15 -2
- package/dist/esm/resolveQuery.native.js.map +1 -1
- package/package.json +2 -2
- package/src/createZeroClient.tsx +5 -4
- package/src/helpers/clearZeroClientData.ts +67 -0
- package/src/helpers/showZeroClientError.ts +76 -0
- package/src/index.ts +11 -0
- package/src/queryRegistry.ts +9 -8
- package/src/resolveQuery.ts +7 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/helpers/clearZeroClientData.d.ts +17 -0
- package/types/helpers/clearZeroClientData.d.ts.map +1 -0
- package/types/helpers/showZeroClientError.d.ts +24 -0
- package/types/helpers/showZeroClientError.d.ts.map +1 -0
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/queryRegistry.d.ts.map +1 -1
- package/types/resolveQuery.d.ts.map +1 -1
|
@@ -175,12 +175,12 @@ function createZeroClient(param) {
|
|
|
175
175
|
return createMutators({
|
|
176
176
|
models,
|
|
177
177
|
environment: "client",
|
|
178
|
-
authData,
|
|
178
|
+
authData: null,
|
|
179
179
|
can: permissionsHelpers.can
|
|
180
180
|
});
|
|
181
181
|
},
|
|
182
182
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
183
|
-
[
|
|
183
|
+
[]);
|
|
184
184
|
return disable ? children : /* @__PURE__ */_jsx(AuthDataContext.Provider, {
|
|
185
185
|
value: authData,
|
|
186
186
|
children: /* @__PURE__ */_jsxs(ZeroProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","useContext","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","getEnvironment","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","createZeroClient","param","schema","models","groupedQueries","permissionStrategy","permissionsHelpers","environment","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","value","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","err","return","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","auth","_uid","id","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,EAAAC,IAAe,IAAAC,KAAA,QAAmB;AAC3C,SAASC,aAAA,EAAAC,WAAoB,QAAS,gBAAoB;AAC1D,SAASC,kBAAA,EAAAC,OAAqB,EAAAC,YAAA;AAC9B,SAAAC,aAAA;AAAA,SACEC,aAAA,EAAAC,IAAA,EAAAC,UAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,MAAA;AAAA,SACAC,iBAAA;AAAA,SACAC,cAAA;AAAA,SACAC,cAAA;AAAA,SACAC,OAAA;AAAA,SACAC,0BAAA,EAAAC,uBAAA;AAAA,SAEKC,aAAA;AAEP,SAASC,YAAA,kCAAyB;AAClC,SAASC,gBAAA,QAA6C;AACtD,SAASC,cAAA,EAAAC,WAAsB,EAAAC,cAAA,EAAAC,SAAA;AAC/B,SAASC,WAAA,EAAAC,uBAAe;AACxB,SAASC,SAAA,gCAA4B;AACrC,SAASC,GAAA;AACT,SAASC,iBAAAC,KAAuC;EAChD;IAAAC,MAAS;IAAAC,MAAA;IAAAC,cAAwB;IAAAC,kBAAA;EAAA,IAAAJ,KAAA;EACjCN,SAAS,CAAAO,MAAA,GAAAV,cAAgB,OAAa,QAAAE,cAAgB,SAAiB;EACvE,IAAAY,kBAAsB,GAAAvB,iBAAA;MACtBmB,MAAS;MACTK,WAAS;
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","createEmitter","createContext","memo","useContext","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","getEnvironment","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","createZeroClient","param","schema","models","groupedQueries","permissionStrategy","permissionsHelpers","environment","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","value","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","err","return","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","permission","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","DisabledContext","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","zeroEvents","AuthDataContext","useQuery","usePermission","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","auth","_uid","id","data","status","console","info","result","type","current","ProvideZero","children","authData","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","query","options","run","zeroEvents2","state","prevState","reason","message","emit"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const ZERO_DB_PATTERNS = ["zero", "replicache", "roc"],
|
|
2
|
+
ZERO_DB_PREFIXES = ["rep:"];
|
|
3
|
+
function matchesZeroDB(name) {
|
|
4
|
+
const lower = name.toLowerCase();
|
|
5
|
+
return ZERO_DB_PATTERNS.some(p => lower.includes(p)) || ZERO_DB_PREFIXES.some(p => lower.startsWith(p));
|
|
6
|
+
}
|
|
7
|
+
function deleteIndexedDB(name) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
const req = indexedDB.deleteDatabase(name);
|
|
10
|
+
req.onsuccess = () => resolve(), req.onerror = () => reject(req.error ?? new Error("failed to delete database")), req.onblocked = () => reject(new Error("database deletion blocked"));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async function clearZeroClientData(options = {}) {
|
|
14
|
+
const {
|
|
15
|
+
closeZero,
|
|
16
|
+
onCleared,
|
|
17
|
+
onError,
|
|
18
|
+
reload = !0,
|
|
19
|
+
reloadDelay = 1e3
|
|
20
|
+
} = options;
|
|
21
|
+
try {
|
|
22
|
+
closeZero && (await closeZero().catch(() => {}));
|
|
23
|
+
const databases = await indexedDB.databases(),
|
|
24
|
+
zeroDbs = databases.filter(db => db.name && matchesZeroDB(db.name));
|
|
25
|
+
if (zeroDbs.length > 0) {
|
|
26
|
+
await Promise.all(zeroDbs.map(db => deleteIndexedDB(db.name)));
|
|
27
|
+
const names = zeroDbs.map(db => db.name);
|
|
28
|
+
onCleared?.({
|
|
29
|
+
count: zeroDbs.length,
|
|
30
|
+
names
|
|
31
|
+
});
|
|
32
|
+
} else {
|
|
33
|
+
const allWithNames = databases.filter(db => db.name);
|
|
34
|
+
await Promise.all(allWithNames.map(db => deleteIndexedDB(db.name)));
|
|
35
|
+
const names = allWithNames.map(db => db.name);
|
|
36
|
+
onCleared?.({
|
|
37
|
+
count: allWithNames.length,
|
|
38
|
+
names
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
reload && setTimeout(() => {
|
|
42
|
+
window.location.reload();
|
|
43
|
+
}, reloadDelay);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error("[on-zero] error clearing client data:", error), onError?.(error);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export { clearZeroClientData };
|
|
49
|
+
//# sourceMappingURL=clearZeroClientData.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ZERO_DB_PATTERNS","ZERO_DB_PREFIXES","matchesZeroDB","name","lower","toLowerCase","some","p","includes","startsWith","deleteIndexedDB","Promise","resolve","reject","req","indexedDB","deleteDatabase","onsuccess","onerror","error","Error","onblocked","clearZeroClientData","options","closeZero","onCleared","onError","reload","reloadDelay","catch","databases","zeroDbs","filter","db","length","all","map","names","count","allWithNames","setTimeout","window","location","console"],"sources":["../../../src/helpers/clearZeroClientData.ts"],"sourcesContent":[null],"mappings":"AAAA,MAAMA,gBAAA,GAAmB,CAAC,QAAQ,cAAc,KAAK;EAC/CC,gBAAA,GAAmB,CAAC,MAAM;AAEhC,SAASC,cAAcC,IAAA,EAAuB;EAC5C,MAAMC,KAAA,GAAQD,IAAA,CAAKE,WAAA,CAAY;EAC/B,OACEL,gBAAA,CAAiBM,IAAA,CAAMC,CAAA,IAAMH,KAAA,CAAMI,QAAA,CAASD,CAAC,CAAC,KAC9CN,gBAAA,CAAiBK,IAAA,CAAMC,CAAA,IAAMH,KAAA,CAAMK,UAAA,CAAWF,CAAC,CAAC;AAEpD;AAEA,SAASG,gBAAgBP,IAAA,EAA6B;EACpD,OAAO,IAAIQ,OAAA,CAAc,CAACC,OAAA,EAASC,MAAA,KAAW;IAC5C,MAAMC,GAAA,GAAMC,SAAA,CAAUC,cAAA,CAAeb,IAAI;IACzCW,GAAA,CAAIG,SAAA,GAAY,MAAML,OAAA,CAAQ,GAC9BE,GAAA,CAAII,OAAA,GAAU,MAAML,MAAA,CAAOC,GAAA,CAAIK,KAAA,IAAS,IAAIC,KAAA,CAAM,2BAA2B,CAAC,GAC9EN,GAAA,CAAIO,SAAA,GAAY,MAAMR,MAAA,CAAO,IAAIO,KAAA,CAAM,2BAA2B,CAAC;EACrE,CAAC;AACH;AAeA,eAAsBE,oBAAoBC,OAAA,GAAsC,CAAC,GAAG;EAClF,MAAM;IAAEC,SAAA;IAAWC,SAAA;IAAWC,OAAA;IAASC,MAAA,GAAS;IAAMC,WAAA,GAAc;EAAK,IAAIL,OAAA;EAE7E,IAAI;IACEC,SAAA,KACF,MAAMA,SAAA,CAAU,EAAEK,KAAA,CAAM,MAAM,CAAC,CAAC;IAGlC,MAAMC,SAAA,GAAY,MAAMf,SAAA,CAAUe,SAAA,CAAU;MAEtCC,OAAA,GAAUD,SAAA,CAAUE,MAAA,CAAQC,EAAA,IAAOA,EAAA,CAAG9B,IAAA,IAAQD,aAAA,CAAc+B,EAAA,CAAG9B,IAAI,CAAC;IAE1E,IAAI4B,OAAA,CAAQG,MAAA,GAAS,GAAG;MACtB,MAAMvB,OAAA,CAAQwB,GAAA,CAAIJ,OAAA,CAAQK,GAAA,CAAKH,EAAA,IAAOvB,eAAA,CAAgBuB,EAAA,CAAG9B,IAAK,CAAC,CAAC;MAChE,MAAMkC,KAAA,GAAQN,OAAA,CAAQK,GAAA,CAAKH,EAAA,IAAOA,EAAA,CAAG9B,IAAK;MAC1CsB,SAAA,GAAY;QAAEa,KAAA,EAAOP,OAAA,CAAQG,MAAA;QAAQG;MAAM,CAAC;IAC9C,OAAO;MAEL,MAAME,YAAA,GAAeT,SAAA,CAAUE,MAAA,CAAQC,EAAA,IAAOA,EAAA,CAAG9B,IAAI;MACrD,MAAMQ,OAAA,CAAQwB,GAAA,CAAII,YAAA,CAAaH,GAAA,CAAKH,EAAA,IAAOvB,eAAA,CAAgBuB,EAAA,CAAG9B,IAAK,CAAC,CAAC;MACrE,MAAMkC,KAAA,GAAQE,YAAA,CAAaH,GAAA,CAAKH,EAAA,IAAOA,EAAA,CAAG9B,IAAK;MAC/CsB,SAAA,GAAY;QAAEa,KAAA,EAAOC,YAAA,CAAaL,MAAA;QAAQG;MAAM,CAAC;IACnD;IAEIV,MAAA,IACFa,UAAA,CAAW,MAAM;MACfC,MAAA,CAAOC,QAAA,CAASf,MAAA,CAAO;IACzB,GAAGC,WAAW;EAElB,SAAST,KAAA,EAAO;IACdwB,OAAA,CAAQxB,KAAA,CAAM,yCAAyCA,KAAK,GAC5DO,OAAA,GAAUP,KAAK;EACjB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var ZERO_DB_PATTERNS = ["zero", "replicache", "roc"],
|
|
2
|
+
ZERO_DB_PREFIXES = ["rep:"];
|
|
3
|
+
function matchesZeroDB(name) {
|
|
4
|
+
var lower = name.toLowerCase();
|
|
5
|
+
return ZERO_DB_PATTERNS.some(function (p) {
|
|
6
|
+
return lower.includes(p);
|
|
7
|
+
}) || ZERO_DB_PREFIXES.some(function (p) {
|
|
8
|
+
return lower.startsWith(p);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function deleteIndexedDB(name) {
|
|
12
|
+
return new Promise(function (resolve, reject) {
|
|
13
|
+
var req = indexedDB.deleteDatabase(name);
|
|
14
|
+
req.onsuccess = function () {
|
|
15
|
+
return resolve();
|
|
16
|
+
}, req.onerror = function () {
|
|
17
|
+
var _req_error;
|
|
18
|
+
return reject((_req_error = req.error) !== null && _req_error !== void 0 ? _req_error : new Error("failed to delete database"));
|
|
19
|
+
}, req.onblocked = function () {
|
|
20
|
+
return reject(new Error("database deletion blocked"));
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function clearZeroClientData() {
|
|
25
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
|
|
26
|
+
{
|
|
27
|
+
closeZero,
|
|
28
|
+
onCleared,
|
|
29
|
+
onError,
|
|
30
|
+
reload = !0,
|
|
31
|
+
reloadDelay = 1e3
|
|
32
|
+
} = options;
|
|
33
|
+
try {
|
|
34
|
+
closeZero && (await closeZero().catch(function () {}));
|
|
35
|
+
var databases = await indexedDB.databases(),
|
|
36
|
+
zeroDbs = databases.filter(function (db) {
|
|
37
|
+
return db.name && matchesZeroDB(db.name);
|
|
38
|
+
});
|
|
39
|
+
if (zeroDbs.length > 0) {
|
|
40
|
+
await Promise.all(zeroDbs.map(function (db) {
|
|
41
|
+
return deleteIndexedDB(db.name);
|
|
42
|
+
}));
|
|
43
|
+
var names = zeroDbs.map(function (db) {
|
|
44
|
+
return db.name;
|
|
45
|
+
});
|
|
46
|
+
onCleared?.({
|
|
47
|
+
count: zeroDbs.length,
|
|
48
|
+
names
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
var allWithNames = databases.filter(function (db) {
|
|
52
|
+
return db.name;
|
|
53
|
+
});
|
|
54
|
+
await Promise.all(allWithNames.map(function (db) {
|
|
55
|
+
return deleteIndexedDB(db.name);
|
|
56
|
+
}));
|
|
57
|
+
var names1 = allWithNames.map(function (db) {
|
|
58
|
+
return db.name;
|
|
59
|
+
});
|
|
60
|
+
onCleared?.({
|
|
61
|
+
count: allWithNames.length,
|
|
62
|
+
names: names1
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
reload && setTimeout(function () {
|
|
66
|
+
window.location.reload();
|
|
67
|
+
}, reloadDelay);
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error("[on-zero] error clearing client data:", error), onError?.(error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export { clearZeroClientData };
|
|
73
|
+
//# sourceMappingURL=clearZeroClientData.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ZERO_DB_PATTERNS","ZERO_DB_PREFIXES","matchesZeroDB","name","lower","toLowerCase","some","p","includes","startsWith","deleteIndexedDB","Promise","resolve","reject","req","indexedDB","deleteDatabase","onsuccess","onerror","_req_error","error","Error","onblocked","clearZeroClientData","options","arguments","length","closeZero","onCleared","onError","reload","reloadDelay","catch","databases","zeroDbs","filter","db"],"sources":["../../../src/helpers/clearZeroClientData.ts"],"sourcesContent":[null],"mappings":"AAAA,IAAAA,gBAAM,IAGN,QACE,YAAM,EACN,MAIF;EAAAC,gBAAA,IAEA,OACE;AACE,SAAAC,aAAYA,CAAAC,IAAU;EACtB,IAAAC,KAAI,GAAAD,IAAA,CAAAE,WAAkB;EAGxB,OAACL,gBAAA,CAAAM,IAAA,WAAAC,CAAA;IACH,OAAAH,KAAA,CAAAI,QAAA,CAAAD,CAAA;EAeA,MAAAN,gBAAsB,CAAAK,IAAA,WAAoBC,CAAA;IACxC,OAAQH,KAAA,CAAAK,UAAW,CAAAF,CAAA;EAEnB;AACE;AACgC,SAAEG,gBAAAP,IAAA;EAGlC,WAAMQ,OAAA,WAAkBC,OAAA,EAAUC,MAAA;IAIlC,IAAIC,GAAA,GAAAC,SAAQ,CAAAC,cAAY,CAAAb,IAAA;IACtBW,GAAA,CAAAG,SAAM,GAAQ,YAAI;MAClB,OAAML,OAAQ;IACd,GAAAE,GAAA,CAAAI,OAAY,GAAE,YAAO;MACvB,IAAAC,UAAO;MAEL,OAAMN,MAAA,EAAAM,UAAe,GAAAL,GAAU,CAAAM,KAAA,MAAQ,IAAO,IAAGD,UAAI,cAAAA,UAAA,OAAAE,KAAA;IACrD,GAAAP,GAAA,CAAAQ,SAAc,eAAI;MAClB,OAAMT,MAAA,CAAQ,IAAAQ,KAAA,4BAAiC;IAC/C;EAAiD,EACnD;AAEA;AAEI,eAAOE,mBAAgBA,CAAA;EAAA,IACzBC,OAAG,GAAAC,SAAW,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAA;MAAAE,SAAA;MAAAC,SAAA;MAAAC,OAAA;MAAAC,MAAA;MAAAC,WAAA;IAAA,IAAAP,OAAA;EAElB;IACEG,SAAQ,WAAMA,SAAA,GAAAK,KAAA,cAEhB;IACF,IAAAC,SAAA,SAAAlB,SAAA,CAAAkB,SAAA;MAAAC,OAAA,GAAAD,SAAA,CAAAE,MAAA,WAAAC,EAAA","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { clearZeroClientData } from "./clearZeroClientData.mjs";
|
|
2
|
+
const shownErrorKeys = /* @__PURE__ */new Set(),
|
|
3
|
+
LAST_RELOAD_AT_KEY = "zero-client-data-last-reload-at",
|
|
4
|
+
REPEAT_WINDOW_MS = 180 * 1e3;
|
|
5
|
+
function getLastReloadAt() {
|
|
6
|
+
if (typeof window > "u") return 0;
|
|
7
|
+
const raw = window.localStorage.getItem(LAST_RELOAD_AT_KEY),
|
|
8
|
+
parsed = Number(raw || 0);
|
|
9
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
10
|
+
}
|
|
11
|
+
function markErrorShown() {
|
|
12
|
+
typeof window > "u" || window.localStorage.setItem(LAST_RELOAD_AT_KEY, String(Date.now()));
|
|
13
|
+
}
|
|
14
|
+
function showZeroClientErrorOnce({
|
|
15
|
+
key = "client-data-error",
|
|
16
|
+
title = "Data Error",
|
|
17
|
+
description,
|
|
18
|
+
onError,
|
|
19
|
+
clearOptions
|
|
20
|
+
}) {
|
|
21
|
+
if (shownErrorKeys.has(key)) return;
|
|
22
|
+
shownErrorKeys.add(key);
|
|
23
|
+
const shouldOfferReset = Date.now() - getLastReloadAt() <= REPEAT_WINDOW_MS;
|
|
24
|
+
markErrorShown(), onError({
|
|
25
|
+
key,
|
|
26
|
+
title,
|
|
27
|
+
description,
|
|
28
|
+
shouldOfferReset,
|
|
29
|
+
reload() {
|
|
30
|
+
markErrorShown(), window.location.reload();
|
|
31
|
+
},
|
|
32
|
+
async reset() {
|
|
33
|
+
await clearZeroClientData(clearOptions);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function resetShownZeroClientError(key = "client-data-error") {
|
|
38
|
+
shownErrorKeys.delete(key);
|
|
39
|
+
}
|
|
40
|
+
export { resetShownZeroClientError, showZeroClientErrorOnce };
|
|
41
|
+
//# sourceMappingURL=showZeroClientError.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["clearZeroClientData","shownErrorKeys","Set","LAST_RELOAD_AT_KEY","REPEAT_WINDOW_MS","getLastReloadAt","window","raw","localStorage","getItem","parsed","Number","isFinite","markErrorShown","setItem","String","Date","now","showZeroClientErrorOnce","key","title","description","onError","clearOptions","has","add","shouldOfferReset","reload","location","reset","resetShownZeroClientError","delete"],"sources":["../../../src/helpers/showZeroClientError.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,mBAAA,QAEK;AAEP,MAAMC,cAAA,GAAiB,mBAAIC,GAAA,CAAY;EACjCC,kBAAA,GAAqB;EACrBC,gBAAA,GAAmB,MAAS;AAElC,SAASC,gBAAA,EAAkB;EACzB,IAAI,OAAOC,MAAA,GAAW,KAAa,OAAO;EAC1C,MAAMC,GAAA,GAAMD,MAAA,CAAOE,YAAA,CAAaC,OAAA,CAAQN,kBAAkB;IACpDO,MAAA,GAASC,MAAA,CAAOJ,GAAA,IAAO,CAAC;EAC9B,OAAOI,MAAA,CAAOC,QAAA,CAASF,MAAM,IAAIA,MAAA,GAAS;AAC5C;AAEA,SAASG,eAAA,EAAiB;EACpB,OAAOP,MAAA,GAAW,OACtBA,MAAA,CAAOE,YAAA,CAAaM,OAAA,CAAQX,kBAAA,EAAoBY,MAAA,CAAOC,IAAA,CAAKC,GAAA,CAAI,CAAC,CAAC;AACpE;AAwBO,SAASC,wBAAwB;EACtCC,GAAA,GAAM;EACNC,KAAA,GAAQ;EACRC,WAAA;EACAC,OAAA;EACAC;AACF,GAA+B;EAC7B,IAAItB,cAAA,CAAeuB,GAAA,CAAIL,GAAG,GAAG;EAE7BlB,cAAA,CAAewB,GAAA,CAAIN,GAAG;EAEtB,MAAMO,gBAAA,GAAmBV,IAAA,CAAKC,GAAA,CAAI,IAAIZ,eAAA,CAAgB,KAAKD,gBAAA;EAE3DS,cAAA,CAAe,GAEfS,OAAA,CAAQ;IACNH,GAAA;IACAC,KAAA;IACAC,WAAA;IACAK,gBAAA;IACAC,OAAA,EAAS;MACPd,cAAA,CAAe,GACfP,MAAA,CAAOsB,QAAA,CAASD,MAAA,CAAO;IACzB;IACA,MAAME,MAAA,EAAQ;MACZ,MAAM7B,mBAAA,CAAoBuB,YAAY;IACxC;EACF,CAAC;AACH;AAEO,SAASO,0BAA0BX,GAAA,GAAM,qBAAqB;EACnElB,cAAA,CAAe8B,MAAA,CAAOZ,GAAG;AAC3B","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { clearZeroClientData } from "./clearZeroClientData.native.js";
|
|
2
|
+
var shownErrorKeys = /* @__PURE__ */new Set(),
|
|
3
|
+
LAST_RELOAD_AT_KEY = "zero-client-data-last-reload-at",
|
|
4
|
+
REPEAT_WINDOW_MS = 180 * 1e3;
|
|
5
|
+
function getLastReloadAt() {
|
|
6
|
+
if (typeof window > "u") return 0;
|
|
7
|
+
var raw = window.localStorage.getItem(LAST_RELOAD_AT_KEY),
|
|
8
|
+
parsed = Number(raw || 0);
|
|
9
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
10
|
+
}
|
|
11
|
+
function markErrorShown() {
|
|
12
|
+
typeof window > "u" || window.localStorage.setItem(LAST_RELOAD_AT_KEY, String(Date.now()));
|
|
13
|
+
}
|
|
14
|
+
function showZeroClientErrorOnce(param) {
|
|
15
|
+
var {
|
|
16
|
+
key = "client-data-error",
|
|
17
|
+
title = "Data Error",
|
|
18
|
+
description,
|
|
19
|
+
onError,
|
|
20
|
+
clearOptions
|
|
21
|
+
} = param;
|
|
22
|
+
if (!shownErrorKeys.has(key)) {
|
|
23
|
+
shownErrorKeys.add(key);
|
|
24
|
+
var shouldOfferReset = Date.now() - getLastReloadAt() <= REPEAT_WINDOW_MS;
|
|
25
|
+
markErrorShown(), onError({
|
|
26
|
+
key,
|
|
27
|
+
title,
|
|
28
|
+
description,
|
|
29
|
+
shouldOfferReset,
|
|
30
|
+
reload() {
|
|
31
|
+
markErrorShown(), window.location.reload();
|
|
32
|
+
},
|
|
33
|
+
async reset() {
|
|
34
|
+
await clearZeroClientData(clearOptions);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function resetShownZeroClientError() {
|
|
40
|
+
var key = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "client-data-error";
|
|
41
|
+
shownErrorKeys.delete(key);
|
|
42
|
+
}
|
|
43
|
+
export { resetShownZeroClientError, showZeroClientErrorOnce };
|
|
44
|
+
//# sourceMappingURL=showZeroClientError.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["clearZeroClientData","shownErrorKeys","Set","LAST_RELOAD_AT_KEY","REPEAT_WINDOW_MS","getLastReloadAt","window","raw","localStorage","getItem","parsed","Number","isFinite","markErrorShown","setItem","String","Date","now","showZeroClientErrorOnce","param","key","title","description","onError","clearOptions","has","add","shouldOfferReset","reload","location","reset","resetShownZeroClientError","arguments","length","delete"],"sources":["../../../src/helpers/showZeroClientError.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,mBAAA;AAAA,IACEC,cAAA,sBAAAC,GAAA;EAAAC,kBAAA;EAAAC,gBAAA;AAAA,SAEKC,gBAAA;EAEP,IAAM,OAAAC,MAAA,MAAiB;EAIvB,IAAAC,GAAS,GAAAD,MAAA,CAAAE,YAAkB,CAAAC,OAAA,CAAAN,kBAAA;IAAAO,MAAA,GAAAC,MAAA,CAAAJ,GAAA;EACzB,OAAII,MAAO,CAAAC,QAAW,CAAAF,MAAa,IAAOA,MAAA;AAC1C;AAEA,SAAOG,cAAOA,CAAA,EAAS;EACzB,OAAAP,MAAA,UAAAA,MAAA,CAAAE,YAAA,CAAAM,OAAA,CAAAX,kBAAA,EAAAY,MAAA,CAAAC,IAAA,CAAAC,GAAA;AAEA;AACE,SAAWC,uBACJA,CAAAC,KAAA;EACT;IAAAC,GAAA;IAAAC,KAAA;IAAAC,WAAA;IAAAC,OAAA;IAAAC;EAAA,IAAAL,KAAA;EAwBO,KAAAlB,cAAS,CAAAwB,GAAA,CAAAL,GAAA;IACdnB,cAAM,CAAAyB,GAAA,CAAAN,GAAA;IACN,IAAAO,gBAAQ,GAAAX,IAAA,CAAAC,GAAA,KAAAZ,eAAA,MAAAD,gBAAA;IACRS,cAAA,IAAAU,OAAA;MACAH,GAAA;MACAC,KAAA;MAC6BC,WAAA;MACzBK,gBAAe;MAEnBC,OAAA;QAEMf,cAAA,IAAAP,MAAwB,CAAAuB,QAAQ,CAAAD,MAAA;MAEtC;MAGE,MAAAE,MAAA;QACA,MAAA9B,mBAAA,CAAAwB,YAAA;MACA;IACA;EAAA;AAEE;AACuB,SACzBO,0BAAA;EAAA,IACAX,GAAA,GAAMY,SAAQ,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;EACZ/B,cAAM,CAAAiC,MAAA,CAAAd,GAAA;AAAgC;AACxC,SAEJW,yBAAA,EAEOb,uBAAS","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -15,5 +15,7 @@ export * from "./mutations.mjs";
|
|
|
15
15
|
export * from "./where.mjs";
|
|
16
16
|
export * from "./serverWhere.mjs";
|
|
17
17
|
export * from "./zql.mjs";
|
|
18
|
-
|
|
18
|
+
import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
|
|
19
|
+
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
|
|
20
|
+
export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -15,5 +15,7 @@ export * from "./mutations.mjs";
|
|
|
15
15
|
export * from "./where.mjs";
|
|
16
16
|
export * from "./serverWhere.mjs";
|
|
17
17
|
export * from "./zql.mjs";
|
|
18
|
-
|
|
18
|
+
import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
|
|
19
|
+
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
|
|
20
|
+
export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
19
21
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -15,5 +15,7 @@ export * from "./mutations.native.js";
|
|
|
15
15
|
export * from "./where.native.js";
|
|
16
16
|
export * from "./serverWhere.native.js";
|
|
17
17
|
export * from "./zql.native.js";
|
|
18
|
-
|
|
18
|
+
import { clearZeroClientData } from "./helpers/clearZeroClientData.native.js";
|
|
19
|
+
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.native.js";
|
|
20
|
+
export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
19
21
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SAAAC,mBAAA;AAAA,SACEC,uBAAA,EAAAC,yBAAA;AAAA,SAGFF,mBAAA,EACEL,UAAA,EACAC,OAAA,EAAAM,yBAGK,E","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
const queryNameRegistry = globalValue("on-zero:query-name", () => /* @__PURE__ */new WeakMap());
|
|
1
|
+
const QUERY_NAME_KEY = "__onZeroQueryName";
|
|
3
2
|
function registerQuery(fn, name) {
|
|
4
|
-
|
|
3
|
+
fn[QUERY_NAME_KEY] = name;
|
|
5
4
|
}
|
|
6
5
|
function getQueryName(fn) {
|
|
7
|
-
return
|
|
6
|
+
return fn?.[QUERY_NAME_KEY];
|
|
8
7
|
}
|
|
9
8
|
export { getQueryName, registerQuery };
|
|
10
9
|
//# sourceMappingURL=queryRegistry.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["QUERY_NAME_KEY","registerQuery","fn","name","getQueryName"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,MAAMA,cAAA,GAAiB;AAEhB,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACtDD,EAAA,CAAWF,cAAc,IAAIG,IAAA;AACjC;AAEO,SAASC,aAAaF,EAAA,EAAkC;EAC7D,OAAQA,EAAA,GAAaF,cAAc;AACrC","ignoreList":[]}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
var queryNameRegistry = globalValue("on-zero:query-name", function () {
|
|
3
|
-
return /* @__PURE__ */new WeakMap();
|
|
4
|
-
});
|
|
1
|
+
var QUERY_NAME_KEY = "__onZeroQueryName";
|
|
5
2
|
function registerQuery(fn, name) {
|
|
6
|
-
|
|
3
|
+
fn[QUERY_NAME_KEY] = name;
|
|
7
4
|
}
|
|
8
5
|
function getQueryName(fn) {
|
|
9
|
-
return
|
|
6
|
+
return fn?.[QUERY_NAME_KEY];
|
|
10
7
|
}
|
|
11
8
|
export { getQueryName, registerQuery };
|
|
12
9
|
//# sourceMappingURL=queryRegistry.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["QUERY_NAME_KEY","registerQuery","fn","name","getQueryName"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,IAAAA,cAAM,sBAAiB;AAEhB,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACtDD,EAAA,CAAWF,cAAc,IAAIG,IAAA;AACjC;AAEO,SAASC,aAAaF,EAAA,EAAkC;EAC7D,OAAQA,EAAA,GAAaF,cAAc;AACrC","ignoreList":[]}
|
|
@@ -7,7 +7,14 @@ function resolveQuery({
|
|
|
7
7
|
const queryName = getQueryName(fn);
|
|
8
8
|
if (!queryName) {
|
|
9
9
|
const fnName = fn?.name || "anonymous";
|
|
10
|
-
throw
|
|
10
|
+
throw console.error("[on-zero] resolveQuery FAILED:", {
|
|
11
|
+
fnName,
|
|
12
|
+
fnIsDefined: fn !== void 0,
|
|
13
|
+
fnType: typeof fn,
|
|
14
|
+
fnStr: typeof fn == "function" ? fn.toString().slice(0, 80) : String(fn),
|
|
15
|
+
stack: new Error().stack?.split(`
|
|
16
|
+
`).slice(1, 5).join(" | ")
|
|
17
|
+
}), new Error(`Query function '${fnName}' not registered. Ensure it is exported from a queries file and passed to createZeroClient via groupedQueries.`);
|
|
11
18
|
}
|
|
12
19
|
const [namespace, name] = queryName.split(".", 2),
|
|
13
20
|
customQuery = customQueries[namespace]?.[name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getQueryName","resolveQuery","customQueries","fn","params","queryName","fnName","name","
|
|
1
|
+
{"version":3,"names":["getQueryName","resolveQuery","customQueries","fn","params","queryName","fnName","name","console","error","fnIsDefined","fnType","fnStr","toString","slice","String","stack","Error","split","join","namespace","customQuery"],"sources":["../../src/resolveQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAYtB,SAASC,aAAwC;EACtDC,aAAA;EACAC,EAAA;EACAC;AACF,GAIG;EACD,MAAMC,SAAA,GAAYL,YAAA,CAAaG,EAAE;EACjC,IAAI,CAACE,SAAA,EAAW;IACd,MAAMC,MAAA,GAASH,EAAA,EAAII,IAAA,IAAQ;IAC3B,MAAAC,OAAA,CAAQC,KAAA,CAAM,kCAAkC;MAC9CH,MAAA;MACAI,WAAA,EAAaP,EAAA,KAAO;MACpBQ,MAAA,EAAQ,OAAOR,EAAA;MACfS,KAAA,EAAO,OAAOT,EAAA,IAAO,aAAaA,EAAA,CAAGU,QAAA,CAAS,EAAEC,KAAA,CAAM,GAAG,EAAE,IAAIC,MAAA,CAAOZ,EAAE;MACxEa,KAAA,EAAO,IAAIC,KAAA,CAAM,EAAED,KAAA,EAAOE,KAAA,CAAM;AAAA,CAAI,EAAEJ,KAAA,CAAM,GAAG,CAAC,EAAEK,IAAA,CAAK,KAAK;IAC9D,CAAC,GACK,IAAIF,KAAA,CACR,mBAAmBX,MAAM,gHAE3B;EACF;EAIA,MAAM,CAACc,SAAA,EAAWb,IAAI,IAAIF,SAAA,CAAUa,KAAA,CAAM,KAAK,CAAC;IAC1CG,WAAA,GAAenB,aAAA,CAAsBkB,SAAS,IAAIb,IAAI;EAE5D,IAAI,CAACc,WAAA,EACH,MAAM,IAAIJ,KAAA,CACR,gBAAgBZ,SAAS,+EAE3B;EAGF,OAAOD,MAAA,KAAW,SAAYiB,WAAA,CAAYjB,MAAM,IAAIiB,WAAA,CAAY;AAClE","ignoreList":[]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { getQueryName } from "./queryRegistry.native.js";
|
|
2
|
+
function _type_of(obj) {
|
|
3
|
+
"@swc/helpers - typeof";
|
|
4
|
+
|
|
5
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
6
|
+
}
|
|
2
7
|
function resolveQuery(param) {
|
|
3
8
|
var {
|
|
4
9
|
customQueries,
|
|
@@ -8,8 +13,16 @@ function resolveQuery(param) {
|
|
|
8
13
|
_customQueries_namespace,
|
|
9
14
|
queryName = getQueryName(fn);
|
|
10
15
|
if (!queryName) {
|
|
11
|
-
var
|
|
12
|
-
|
|
16
|
+
var _stack,
|
|
17
|
+
fnName = fn?.name || "anonymous";
|
|
18
|
+
throw console.error("[on-zero] resolveQuery FAILED:", {
|
|
19
|
+
fnName,
|
|
20
|
+
fnIsDefined: fn !== void 0,
|
|
21
|
+
fnType: typeof fn > "u" ? "undefined" : _type_of(fn),
|
|
22
|
+
fnStr: typeof fn == "function" ? fn.toString().slice(0, 80) : String(fn),
|
|
23
|
+
stack: (_stack = new Error().stack) === null || _stack === void 0 ? void 0 : _stack.split(`
|
|
24
|
+
`).slice(1, 5).join(" | ")
|
|
25
|
+
}), new Error(`Query function '${fnName}' not registered. Ensure it is exported from a queries file and passed to createZeroClient via groupedQueries.`);
|
|
13
26
|
}
|
|
14
27
|
var [namespace, name] = queryName.split(".", 2),
|
|
15
28
|
customQuery = (_customQueries_namespace = customQueries[namespace]) === null || _customQueries_namespace === void 0 ? void 0 : _customQueries_namespace[name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getQueryName","resolveQuery","param","customQueries","fn","params","_customQueries_namespace","queryName","fnName","name","
|
|
1
|
+
{"version":3,"names":["getQueryName","_type_of","obj","Symbol","constructor","resolveQuery","param","customQueries","fn","params","_customQueries_namespace","queryName","_stack","fnName","name","console","error","fnIsDefined","fnType","fnStr","toString","slice","String","stack","Error","split","join","namespace","customQuery"],"sources":["../../src/resolveQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAYtB,SAASC,SAAAC,GAAA,EAAwC;EACtD;;EACA,OAAAA,GAAA,WAAAC,MAAA,UAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AAAA;AAEF,SAIGG,aAAAC,KAAA;EACD;MAAMC,aAAY;MAAAC,EAAA;MAAAC;IAAa,CAAE,GAAAH,KAAA;IAAAI,wBAAA;IAAAC,SAAA,GAAAX,YAAA,CAAAQ,EAAA;EACjC,IAAI,CAACG,SAAA,EAAW;IACd,IAAAC,MAAM;MAAAC,MAAS,GAAIL,EAAA,EAAAM,IAAQ;IAC3B,MAAAC,OAAA,CAAQC,KAAA,CAAM,kCAAkC;MAC9CH,MAAA;MACAI,WAAA,EAAaT,EAAA,KAAO;MACpBU,MAAA,EAAQ,OAAOV,EAAA,uBAAAP,QAAA,CAAAO,EAAA;MACfW,KAAA,EAAO,OAAOX,EAAA,IAAO,aAAaA,EAAA,CAAGY,QAAA,CAAS,EAAEC,KAAA,CAAM,GAAG,EAAE,IAAIC,MAAA,CAAOd,EAAE;MACxEe,KAAA,EAAO,CAAAX,MAAI,GAAM,IAAEY,KAAO,GAAAD,KAAM,cAAAX,MAAA,uBAAAA,MAAA,CAAAa,KAAA;AAAA,CAAI,EAAEJ,KAAA,CAAM,GAAG,CAAC,EAAEK,IAAA,CAAK,KAAK;IAC9D,CAAC,GACK,IAAIF,KAAA,oBAAAX,MAAA;EAAA;EACiB,IAE3B,CAAAc,SAAA,EAAAb,IAAA,IAAAH,SAAA,CAAAc,KAAA;IAAAG,WAAA,IAAAlB,wBAAA,GAAAH,aAAA,CAAAoB,SAAA,eAAAjB,wBAAA,uBAAAA,wBAAA,CAAAI,IAAA;EACF,KAAAc,WAAA,EAIA,MAAO,IAAAJ,KAAA,CAAW,gBAAQb,SAAgB,+EACkB;EAE5D,OAAKF,MAAA,cAAAmB,WAAA,CAAAnB,MAAA,IAAAmB,WAAA;AACH;AAAU,SACiBvB,YAE3B","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@take-out/helpers": "0.
|
|
75
|
+
"@take-out/helpers": "0.4.0",
|
|
76
76
|
"chokidar": "^4.0.3",
|
|
77
77
|
"citty": "^0.1.6",
|
|
78
78
|
"valibot": "^1.1.0"
|
package/src/createZeroClient.tsx
CHANGED
|
@@ -249,17 +249,18 @@ export function createZeroClient<
|
|
|
249
249
|
// (mutations read auth dynamically via getAuthData() to avoid stale closure race condition)
|
|
250
250
|
setAuthData(authData)
|
|
251
251
|
|
|
252
|
-
//
|
|
253
|
-
//
|
|
252
|
+
// mutators are stable — auth is read dynamically via getAuthData() at mutation
|
|
253
|
+
// time, so we don't need to recreate them (or the Zero instance) on auth change.
|
|
254
|
+
// setAuthData() above already ensures getAuthData() returns current auth.
|
|
254
255
|
const mutators = useMemo(() => {
|
|
255
256
|
return createMutators({
|
|
256
257
|
models,
|
|
257
258
|
environment: 'client',
|
|
258
|
-
authData,
|
|
259
|
+
authData: null,
|
|
259
260
|
can: permissionsHelpers.can,
|
|
260
261
|
})
|
|
261
262
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
262
|
-
}, [
|
|
263
|
+
}, [])
|
|
263
264
|
|
|
264
265
|
// for now we re-parent
|
|
265
266
|
if (disable) {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const ZERO_DB_PATTERNS = ['zero', 'replicache', 'roc']
|
|
2
|
+
const ZERO_DB_PREFIXES = ['rep:']
|
|
3
|
+
|
|
4
|
+
function matchesZeroDB(name: string): boolean {
|
|
5
|
+
const lower = name.toLowerCase()
|
|
6
|
+
return (
|
|
7
|
+
ZERO_DB_PATTERNS.some((p) => lower.includes(p)) ||
|
|
8
|
+
ZERO_DB_PREFIXES.some((p) => lower.startsWith(p))
|
|
9
|
+
)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function deleteIndexedDB(name: string): Promise<void> {
|
|
13
|
+
return new Promise<void>((resolve, reject) => {
|
|
14
|
+
const req = indexedDB.deleteDatabase(name)
|
|
15
|
+
req.onsuccess = () => resolve()
|
|
16
|
+
req.onerror = () => reject(req.error ?? new Error('failed to delete database'))
|
|
17
|
+
req.onblocked = () => reject(new Error('database deletion blocked'))
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type ClearZeroClientDataOptions = {
|
|
22
|
+
/** close the zero instance before clearing */
|
|
23
|
+
closeZero?: () => Promise<void>
|
|
24
|
+
/** called with info about what was cleared */
|
|
25
|
+
onCleared?: (info: { count: number; names: string[] }) => void
|
|
26
|
+
/** called on error */
|
|
27
|
+
onError?: (error: unknown) => void
|
|
28
|
+
/** reload the page after clearing (default: true) */
|
|
29
|
+
reload?: boolean
|
|
30
|
+
/** delay before reload in ms (default: 1000) */
|
|
31
|
+
reloadDelay?: number
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function clearZeroClientData(options: ClearZeroClientDataOptions = {}) {
|
|
35
|
+
const { closeZero, onCleared, onError, reload = true, reloadDelay = 1000 } = options
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
if (closeZero) {
|
|
39
|
+
await closeZero().catch(() => {})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const databases = await indexedDB.databases()
|
|
43
|
+
|
|
44
|
+
const zeroDbs = databases.filter((db) => db.name && matchesZeroDB(db.name))
|
|
45
|
+
|
|
46
|
+
if (zeroDbs.length > 0) {
|
|
47
|
+
await Promise.all(zeroDbs.map((db) => deleteIndexedDB(db.name!)))
|
|
48
|
+
const names = zeroDbs.map((db) => db.name!)
|
|
49
|
+
onCleared?.({ count: zeroDbs.length, names })
|
|
50
|
+
} else {
|
|
51
|
+
// fallback: clear all IndexedDB
|
|
52
|
+
const allWithNames = databases.filter((db) => db.name)
|
|
53
|
+
await Promise.all(allWithNames.map((db) => deleteIndexedDB(db.name!)))
|
|
54
|
+
const names = allWithNames.map((db) => db.name!)
|
|
55
|
+
onCleared?.({ count: allWithNames.length, names })
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (reload) {
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
window.location.reload()
|
|
61
|
+
}, reloadDelay)
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.error('[on-zero] error clearing client data:', error)
|
|
65
|
+
onError?.(error)
|
|
66
|
+
}
|
|
67
|
+
}
|