on-zero 0.6.1 → 0.6.3
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/helpers/recoverZeroClient.cjs +64 -7
- package/dist/cjs/helpers/recoverZeroClient.native.js +72 -9
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +60 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +60 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/httpPull/transport.test.cjs +17 -0
- package/dist/cjs/httpPull/transport.test.native.js +21 -0
- package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
- package/dist/cjs/httpPullTransport.cjs +19 -3
- package/dist/cjs/httpPullTransport.native.js +19 -3
- package/dist/cjs/httpPullTransport.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +64 -8
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +72 -10
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +61 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +61 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/httpPull/transport.test.mjs +17 -0
- package/dist/esm/httpPull/transport.test.mjs.map +1 -1
- package/dist/esm/httpPull/transport.test.native.js +21 -0
- package/dist/esm/httpPull/transport.test.native.js.map +1 -1
- package/dist/esm/httpPullTransport.mjs +19 -3
- package/dist/esm/httpPullTransport.mjs.map +1 -1
- package/dist/esm/httpPullTransport.native.js +19 -3
- package/dist/esm/httpPullTransport.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +2 -2
- package/src/helpers/recoverZeroClient.test.ts +66 -0
- package/src/helpers/recoverZeroClient.ts +91 -15
- package/src/httpPull/transport.test.ts +19 -0
- package/src/httpPullTransport.ts +30 -2
- package/src/index.ts +3 -0
- package/types/helpers/recoverZeroClient.d.ts +9 -1
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/httpPullTransport.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
|
@@ -137,6 +137,8 @@ function _is_native_reflect_construct() {
|
|
|
137
137
|
})();
|
|
138
138
|
}
|
|
139
139
|
var COOKIE_WIDTH = 20;
|
|
140
|
+
var TRANSIENT_RECONNECT_BACKOFF_BASE_MS = 1e3;
|
|
141
|
+
var TRANSIENT_RECONNECT_BACKOFF_MAX_MS = 3e4;
|
|
140
142
|
function installHttpPullTransport(opts) {
|
|
141
143
|
var _class;
|
|
142
144
|
var previousWebSocket = globalThis.WebSocket;
|
|
@@ -155,7 +157,8 @@ function installHttpPullTransport(opts) {
|
|
|
155
157
|
nativeWebSocket: previousWebSocket,
|
|
156
158
|
sockets: /* @__PURE__ */new Set(),
|
|
157
159
|
pullIntervalMs: opts.pullIntervalMs,
|
|
158
|
-
nextPokeID: 0
|
|
160
|
+
nextPokeID: 0,
|
|
161
|
+
transientFailureCount: 0
|
|
159
162
|
};
|
|
160
163
|
var Shim = (_class = function _class2(url, protocols) {
|
|
161
164
|
"use strict";
|
|
@@ -256,7 +259,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
|
|
|
256
259
|
this.state.sockets.add(this);
|
|
257
260
|
this.openTimer = setTimeout(function () {
|
|
258
261
|
return _this.open();
|
|
259
|
-
},
|
|
262
|
+
}, reconnectDelayMs(this.state));
|
|
260
263
|
}
|
|
261
264
|
_create_class(ZeroHttpSocket2, [{
|
|
262
265
|
key: "addEventListener",
|
|
@@ -328,7 +331,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
|
|
|
328
331
|
key: "pull",
|
|
329
332
|
value: function pull() {
|
|
330
333
|
var _this = this;
|
|
331
|
-
if (this.readyState
|
|
334
|
+
if (this.readyState !== this.OPEN) return Promise.resolve();
|
|
332
335
|
if (this.pullInFlight) return this.pullInFlight;
|
|
333
336
|
this.pullInFlight = this.fetchPull(this.clientGroupID, this.cookie).then(function (response) {
|
|
334
337
|
if (response.unchanged) {
|
|
@@ -436,6 +439,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
|
|
|
436
439
|
if (!response.ok) {
|
|
437
440
|
throw new ZeroHttpResponseError(path, response.status);
|
|
438
441
|
}
|
|
442
|
+
resetTransientFailures(this.state);
|
|
439
443
|
return response.json();
|
|
440
444
|
}
|
|
441
445
|
}, {
|
|
@@ -468,6 +472,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
|
|
|
468
472
|
if (this.readyState !== this.CLOSED) this.close(1e3, error.message);
|
|
469
473
|
return;
|
|
470
474
|
}
|
|
475
|
+
recordTransientFailure(this.state);
|
|
471
476
|
this.emit("error", {
|
|
472
477
|
error
|
|
473
478
|
});
|
|
@@ -690,5 +695,16 @@ function filterMutationResultsToClient(pushResponse, clientID) {
|
|
|
690
695
|
function isStaleClientCookieError(error) {
|
|
691
696
|
return _instanceof(error, ZeroHttpResponseError) && error.path === "/pull" && error.status === 409;
|
|
692
697
|
}
|
|
698
|
+
function reconnectDelayMs(state) {
|
|
699
|
+
if (state.transientFailureCount === 0) return 0;
|
|
700
|
+
return Math.min(TRANSIENT_RECONNECT_BACKOFF_BASE_MS * Math.pow(2, state.transientFailureCount - 1), TRANSIENT_RECONNECT_BACKOFF_MAX_MS);
|
|
701
|
+
}
|
|
702
|
+
function recordTransientFailure(state) {
|
|
703
|
+
var maxExponent = Math.log2(TRANSIENT_RECONNECT_BACKOFF_MAX_MS / TRANSIENT_RECONNECT_BACKOFF_BASE_MS);
|
|
704
|
+
state.transientFailureCount = Math.min(state.transientFailureCount + 1, Math.ceil(maxExponent) + 1);
|
|
705
|
+
}
|
|
706
|
+
function resetTransientFailures(state) {
|
|
707
|
+
state.transientFailureCount = 0;
|
|
708
|
+
}
|
|
693
709
|
export { ensureHttpPullTransport, installHttpPullTransport };
|
|
694
710
|
//# sourceMappingURL=httpPullTransport.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","_define_property","obj","value","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper","result","Boolean","valueOf","_","COOKIE_WIDTH","installHttpPullTransport","opts","_class","previousWebSocket","globalThis","WebSocket","_opts_fetch","fetchImpl","fetch","Error","state","origin","URL","originString","trimTrailingSlash","nativeWebSocket","sockets","Set","pullIntervalMs","nextPokeID","Shim","_class2","url","protocols","shouldIntercept","ZeroHttpSocket","String","pull","Promise","all","map","socket","connections","size","uninstall","transportsByOrigin","ensureHttpPullTransport","existing","transport","ZeroHttpSocket2","_this_cookie","_decoded_initConnectionMessage","CONNECTING","OPEN","CLOSING","CLOSED","readyState","listeners","open","message","close","error","pendingGotQueriesPatch","pullAfterCurrent","pushChain","resolve","connectURL","toHttpURL","_this_connectURL_searchParams_get","clientID","searchParams","_this_connectURL_searchParams_get1","clientGroupID","_this_connectURL_searchParams_get2","wsid","Date","now","baseCookie","cookie","suffixMatch","match","nextLocalCookieID","Number","decoded","decodeSecProtocol","authToken","queueDesiredQueries","initConnectionMessage","add","openTimer","setTimeout","addEventListener","type","listener","_this_listeners_type","removeEventListener","delete","dispatchEvent","event","emit","send","data","JSON","parse","requestPullAfterCurrent","auth","enqueuePush","emitMessage","run","answerMutationRecoveryPull","code","reason","clearTimeout","pullTimer","clearInterval","wasClean","pullInFlight","fetchPull","then","response","unchanged","emitGotQueriesPatch","emitPoke","catch","fail","finally","pullAgain","timestamp","setInterval","body","desiredQueriesPatch","Array","isArray","gotQueriesPatch","postJSON","filterMutationResultsToClient","pushResponse","nextPush","toWebSocketCookie","_ref","requestID","lastMutationIDChanges"],"sources":["../../src/httpPullTransport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","_define_property","obj","value","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper","result","Boolean","valueOf","_","COOKIE_WIDTH","TRANSIENT_RECONNECT_BACKOFF_BASE_MS","TRANSIENT_RECONNECT_BACKOFF_MAX_MS","installHttpPullTransport","opts","_class","previousWebSocket","globalThis","WebSocket","_opts_fetch","fetchImpl","fetch","Error","state","origin","URL","originString","trimTrailingSlash","nativeWebSocket","sockets","Set","pullIntervalMs","nextPokeID","transientFailureCount","Shim","_class2","url","protocols","shouldIntercept","ZeroHttpSocket","String","pull","Promise","all","map","socket","connections","size","uninstall","transportsByOrigin","ensureHttpPullTransport","existing","transport","ZeroHttpSocket2","_this_cookie","_decoded_initConnectionMessage","CONNECTING","OPEN","CLOSING","CLOSED","readyState","listeners","open","message","close","error","pendingGotQueriesPatch","pullAfterCurrent","pushChain","resolve","connectURL","toHttpURL","_this_connectURL_searchParams_get","clientID","searchParams","_this_connectURL_searchParams_get1","clientGroupID","_this_connectURL_searchParams_get2","wsid","Date","now","baseCookie","cookie","suffixMatch","match","nextLocalCookieID","Number","decoded","decodeSecProtocol","authToken","queueDesiredQueries","initConnectionMessage","add","openTimer","setTimeout","reconnectDelayMs","addEventListener","type","listener","_this_listeners_type","removeEventListener","delete","dispatchEvent","event","emit","send","data","JSON","parse","requestPullAfterCurrent","auth","enqueuePush","emitMessage","run","answerMutationRecoveryPull","code","reason","clearTimeout","pullTimer","clearInterval","wasClean","pullInFlight","fetchPull","then","response","unchanged","emitGotQueriesPatch","emitPoke","catch","fail","finally","pullAgain","timestamp","setInterval","body","desiredQueriesPatch","Array","isArray","gotQueriesPatch","postJSON","filterMutationResultsToClient","pushResponse","nextPush","toWebSocketCookie","_ref","requestID","lastMutationIDChanges","toHttpCookie","path","method","headers","authorization","stringify","ok","ZeroHttpResponseError","status","resetTransientFailures"],"sources":["../../src/httpPullTransport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -20,6 +20,6 @@ export * from "./zql.mjs";
|
|
|
20
20
|
import { defineQuery, defineQueries } from "@rocicorp/zero";
|
|
21
21
|
import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
|
|
22
22
|
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
|
|
23
|
-
import { makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.mjs";
|
|
24
|
-
export { clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
23
|
+
import { classifyZeroRecoveryLog, makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.mjs";
|
|
24
|
+
export { classifyZeroRecoveryLog, clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAIK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,gBAAA,EACAC,sBAAA,
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAIK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,QAIK","ignoreList":[]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -20,6 +20,6 @@ export * from "./zql.mjs";
|
|
|
20
20
|
import { defineQuery, defineQueries } from "@rocicorp/zero";
|
|
21
21
|
import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
|
|
22
22
|
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
|
|
23
|
-
import { makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.mjs";
|
|
24
|
-
export { clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
23
|
+
import { classifyZeroRecoveryLog, makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.mjs";
|
|
24
|
+
export { classifyZeroRecoveryLog, clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
25
25
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAIK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,gBAAA,EACAC,sBAAA,
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAIK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,QAIK","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -20,6 +20,6 @@ export * from "./zql.native.js";
|
|
|
20
20
|
import { defineQuery, defineQueries } from "@rocicorp/zero";
|
|
21
21
|
import { clearZeroClientData } from "./helpers/clearZeroClientData.native.js";
|
|
22
22
|
import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.native.js";
|
|
23
|
-
import { makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.native.js";
|
|
24
|
-
export { clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
23
|
+
import { classifyZeroRecoveryLog, makeZeroRecovery, composeRecoveryLogSink } from "./helpers/recoverZeroClient.native.js";
|
|
24
|
+
export { classifyZeroRecoveryLog, clearZeroClientData, composeRecoveryLogSink, createZeroClient, defineQueries, defineQuery, ensureAuth, getAuth, makeZeroRecovery, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
|
|
25
25
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SAAAC,gBAAA;AAAA,cACE;AAAA,cAIK;AACP,cAAc;AACd,cAAc;AACd,SAAAC,SAAc;AACd,cAAc;AACd,cAAS;AACT,cAAc;AACd,cAAc;AACd,SAAAC,WAAc,EAAAC,aAAA;AACd,SAAAC,mBAAc;AACd,SAASC,uBAAa,EAAAC,yBAAqB;AAQ3C,SAAAC,gBAAA,EAAAC,sBAAA;AAAA,
|
|
1
|
+
{"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SAAAC,gBAAA;AAAA,cACE;AAAA,cAIK;AACP,cAAc;AACd,cAAc;AACd,SAAAC,SAAc;AACd,cAAc;AACd,cAAS;AACT,cAAc;AACd,cAAc;AACd,SAAAC,WAAc,EAAAC,aAAA;AACd,SAAAC,mBAAc;AACd,SAASC,uBAAa,EAAAC,yBAAqB;AAQ3C,SAAAC,uBAAA,EAAAC,gBAAA,EAAAC,sBAAA;AAAA,SACEF,uBAEK,EACPH,mBAAA,EACEK,sBAAA,EACAT,gBAAA,EAAAG,aAGK,EACPD,WAAA,EACEN,UAAA,EACAC,OAAA,EACAW,gBAAA,EAAAF,yBAIK,E","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@take-out/helpers": "0.6.
|
|
86
|
+
"@take-out/helpers": "0.6.3",
|
|
87
87
|
"chokidar": "^4.0.3",
|
|
88
88
|
"citty": "^0.1.6",
|
|
89
89
|
"valibot": "^1.1.0"
|
|
@@ -4,6 +4,7 @@ import { UpdateNeededReasonType } from '@rocicorp/zero'
|
|
|
4
4
|
import { beforeEach, describe, expect, test, vi } from 'vitest'
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
+
classifyZeroRecoveryLog,
|
|
7
8
|
composeRecoveryLogSink,
|
|
8
9
|
makeZeroRecovery,
|
|
9
10
|
resetRecoveryStateForTests,
|
|
@@ -131,6 +132,38 @@ describe('zero recovery', () => {
|
|
|
131
132
|
expect(reload).toHaveBeenCalledTimes(1)
|
|
132
133
|
})
|
|
133
134
|
|
|
135
|
+
test('logSink recovers on native sqlite finalized-statement local-store loss', async () => {
|
|
136
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
137
|
+
const sqliteError = new Error('This statement has been finalized')
|
|
138
|
+
sqliteError.name = 'SqliteError'
|
|
139
|
+
const sink = composeRecoveryLogSink(deps)
|
|
140
|
+
sink.log('error', { bgIntervalProcess: 'Heartbeat' }, 'Error running.', sqliteError)
|
|
141
|
+
await flush()
|
|
142
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
143
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
test('logSink recovers on repeated store-closed local-store loss', async () => {
|
|
147
|
+
const nowSpy = vi.spyOn(Date, 'now')
|
|
148
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
149
|
+
try {
|
|
150
|
+
const sink = composeRecoveryLogSink(deps)
|
|
151
|
+
nowSpy.mockReturnValue(10_000)
|
|
152
|
+
sink.log('error', undefined, 'Failed to connect.', new Error('Store is closed'))
|
|
153
|
+
await flush()
|
|
154
|
+
expect(deleteLocalState).not.toHaveBeenCalled()
|
|
155
|
+
expect(reload).not.toHaveBeenCalled()
|
|
156
|
+
|
|
157
|
+
nowSpy.mockReturnValue(13_000)
|
|
158
|
+
sink.log('error', undefined, 'Failed to connect.', new Error('Store is closed'))
|
|
159
|
+
await flush()
|
|
160
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
161
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
162
|
+
} finally {
|
|
163
|
+
nowSpy.mockRestore()
|
|
164
|
+
}
|
|
165
|
+
})
|
|
166
|
+
|
|
134
167
|
test('logSink with no consumer preserves console output and still watches', async () => {
|
|
135
168
|
const { deps, deleteLocalState, reload } = setup()
|
|
136
169
|
const infoSpy = vi.spyOn(console, 'info').mockImplementation(() => {})
|
|
@@ -170,6 +203,39 @@ describe('zero recovery', () => {
|
|
|
170
203
|
expect(reload).not.toHaveBeenCalled()
|
|
171
204
|
})
|
|
172
205
|
|
|
206
|
+
test('recovery log classification is narrow', () => {
|
|
207
|
+
const sqliteError = new Error('This statement has been finalized')
|
|
208
|
+
sqliteError.name = 'SqliteError'
|
|
209
|
+
expect(
|
|
210
|
+
classifyZeroRecoveryLog('error', ['Error running.', sqliteError]),
|
|
211
|
+
).toMatchObject({
|
|
212
|
+
reason: 'sqlite-statement-finalized',
|
|
213
|
+
dropLocalState: true,
|
|
214
|
+
})
|
|
215
|
+
expect(
|
|
216
|
+
classifyZeroRecoveryLog('error', [
|
|
217
|
+
{ name: 'SqliteError', message: 'database is locked' },
|
|
218
|
+
]),
|
|
219
|
+
).toBeUndefined()
|
|
220
|
+
expect(
|
|
221
|
+
classifyZeroRecoveryLog('warn', ['Expected IndexedDB not found']),
|
|
222
|
+
).toBeUndefined()
|
|
223
|
+
expect(classifyZeroRecoveryLog('error', ['Store is closed'], 10_000)).toBeUndefined()
|
|
224
|
+
expect(classifyZeroRecoveryLog('error', ['Store is closed'], 11_000)).toBeUndefined()
|
|
225
|
+
expect(classifyZeroRecoveryLog('error', ['Store is closed'], 14_000)).toMatchObject({
|
|
226
|
+
reason: 'store-closed-repeat',
|
|
227
|
+
dropLocalState: true,
|
|
228
|
+
})
|
|
229
|
+
resetRecoveryStateForTests()
|
|
230
|
+
expect(
|
|
231
|
+
classifyZeroRecoveryLog(
|
|
232
|
+
'error',
|
|
233
|
+
['Mutator "send" error on server', 'Store is closed'],
|
|
234
|
+
20_000,
|
|
235
|
+
),
|
|
236
|
+
).toBeUndefined()
|
|
237
|
+
})
|
|
238
|
+
|
|
173
239
|
// a host with a `window` shim but no real `location` — the sootsim tenant
|
|
174
240
|
// render-worker, which hides `location` for isolation. the DEFAULT reload
|
|
175
241
|
// path (no injected `deps.reload`) must still drop stale IDB and not throw
|
|
@@ -10,6 +10,23 @@ const RECOVER_GUARD_MS = 60_000
|
|
|
10
10
|
// the fatal local-store-loss signature Zero logs when the IndexedDB it expects
|
|
11
11
|
// is gone (evicted, or deleted by another tab).
|
|
12
12
|
const LOCAL_STORE_LOST = 'Expected IndexedDB not found'
|
|
13
|
+
const SQLITE_ERROR_NAME = 'SqliteError'
|
|
14
|
+
const SQLITE_STATEMENT_FINALIZED = 'This statement has been finalized'
|
|
15
|
+
const STORE_CLOSED = 'Store is closed'
|
|
16
|
+
const STORE_CLOSED_REPEAT_MIN_MS = 2_000
|
|
17
|
+
const STORE_CLOSED_REPEAT_MAX_MS = 60_000
|
|
18
|
+
|
|
19
|
+
export type ZeroRecoveryLogReason =
|
|
20
|
+
| 'indexeddb-not-found'
|
|
21
|
+
| 'sqlite-statement-finalized'
|
|
22
|
+
| 'store-closed-repeat'
|
|
23
|
+
|
|
24
|
+
export type ZeroRecoveryLogClassification = {
|
|
25
|
+
reason: ZeroRecoveryLogReason
|
|
26
|
+
reasonKey: string
|
|
27
|
+
message: string
|
|
28
|
+
dropLocalState: boolean
|
|
29
|
+
}
|
|
13
30
|
|
|
14
31
|
export type ZeroRecoveryDeps = {
|
|
15
32
|
// delete THIS client's local persistent state (its own scoped IDB). pass the
|
|
@@ -38,15 +55,22 @@ const pendingDeletes: Array<Promise<unknown>> = []
|
|
|
38
55
|
function recoveryGuardOpen(reasonKey: string): boolean {
|
|
39
56
|
try {
|
|
40
57
|
const key = `on-zero-recover-${reasonKey}`
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
58
|
+
const rawLast = window.sessionStorage.getItem(key)
|
|
59
|
+
const now = Date.now()
|
|
60
|
+
const last = rawLast ? Number(rawLast) : 0
|
|
61
|
+
if (last > 0 && now - last < RECOVER_GUARD_MS) return false
|
|
62
|
+
window.sessionStorage.setItem(key, String(now))
|
|
44
63
|
} catch {
|
|
45
64
|
// no sessionStorage (private mode) — fall back to the in-memory latch.
|
|
46
65
|
}
|
|
47
66
|
return true
|
|
48
67
|
}
|
|
49
68
|
|
|
69
|
+
// "Store is closed" is noisy during intentional instance replacement. One log is
|
|
70
|
+
// teardown noise; repeated logs seconds apart mean a live client is stuck using a
|
|
71
|
+
// closed local store and needs fresh local state.
|
|
72
|
+
let lastStoreClosedAtMs = 0
|
|
73
|
+
|
|
50
74
|
function recover(
|
|
51
75
|
deps: ZeroRecoveryDeps,
|
|
52
76
|
reasonKey: string,
|
|
@@ -137,6 +161,66 @@ function logToConsole(
|
|
|
137
161
|
console[method](...(prefix ? [prefix] : []), ...args)
|
|
138
162
|
}
|
|
139
163
|
|
|
164
|
+
function logArgText(arg: unknown): string {
|
|
165
|
+
if (typeof arg === 'string') return arg
|
|
166
|
+
if (arg instanceof Error) return `${arg.name} ${arg.message} ${arg.stack || ''}`
|
|
167
|
+
if (arg && typeof arg === 'object') {
|
|
168
|
+
const message = 'message' in arg ? (arg as { message?: unknown }).message : undefined
|
|
169
|
+
const name = 'name' in arg ? (arg as { name?: unknown }).name : undefined
|
|
170
|
+
if (typeof message === 'string')
|
|
171
|
+
return `${typeof name === 'string' ? name : ''} ${message}`
|
|
172
|
+
}
|
|
173
|
+
return ''
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function isBenignStoreClosedLog(text: string): boolean {
|
|
177
|
+
if (/Mutator\s+".*"\s+error on server/i.test(text)) return true
|
|
178
|
+
if (/Mutator\s+".*"\s+app error on client/i.test(text)) return true
|
|
179
|
+
return false
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export function classifyZeroRecoveryLog(
|
|
183
|
+
level: LogLevel | string,
|
|
184
|
+
args: readonly unknown[],
|
|
185
|
+
nowMs = Date.now(),
|
|
186
|
+
): ZeroRecoveryLogClassification | undefined {
|
|
187
|
+
if (level !== 'error') return undefined
|
|
188
|
+
const text = args.map(logArgText).join(' ')
|
|
189
|
+
if (text.includes(LOCAL_STORE_LOST)) {
|
|
190
|
+
return {
|
|
191
|
+
reason: 'indexeddb-not-found',
|
|
192
|
+
reasonKey: 'local-store',
|
|
193
|
+
message: 'local store lost',
|
|
194
|
+
dropLocalState: true,
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (text.includes(SQLITE_ERROR_NAME) && text.includes(SQLITE_STATEMENT_FINALIZED)) {
|
|
198
|
+
return {
|
|
199
|
+
reason: 'sqlite-statement-finalized',
|
|
200
|
+
reasonKey: 'sqlite-statement-finalized',
|
|
201
|
+
message: 'sqlite statement finalized',
|
|
202
|
+
dropLocalState: true,
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (text.includes(STORE_CLOSED) && !isBenignStoreClosedLog(text)) {
|
|
206
|
+
const prevMs = lastStoreClosedAtMs
|
|
207
|
+
lastStoreClosedAtMs = nowMs
|
|
208
|
+
if (
|
|
209
|
+
prevMs > 0 &&
|
|
210
|
+
nowMs - prevMs >= STORE_CLOSED_REPEAT_MIN_MS &&
|
|
211
|
+
nowMs - prevMs <= STORE_CLOSED_REPEAT_MAX_MS
|
|
212
|
+
) {
|
|
213
|
+
return {
|
|
214
|
+
reason: 'store-closed-repeat',
|
|
215
|
+
reasonKey: 'store-closed-repeat',
|
|
216
|
+
message: 'local store closed repeatedly',
|
|
217
|
+
dropLocalState: true,
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return undefined
|
|
222
|
+
}
|
|
223
|
+
|
|
140
224
|
// watch error-level logs for the local-store-lost signature (the one fatal Zero
|
|
141
225
|
// surfaces only through the log, not the structured callbacks) and trigger the
|
|
142
226
|
// same recovery. forwards to the consumer sink, or to the console when there is
|
|
@@ -151,18 +235,9 @@ export function composeRecoveryLogSink(
|
|
|
151
235
|
log(level: LogLevel, context: Context | undefined, ...args: unknown[]): void {
|
|
152
236
|
if (consumerLogSink) consumerLogSink.log(level, context, ...args)
|
|
153
237
|
else logToConsole(level, context, ...args)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
.
|
|
157
|
-
typeof arg === 'string'
|
|
158
|
-
? arg
|
|
159
|
-
: arg && typeof arg === 'object' && 'message' in arg
|
|
160
|
-
? String((arg as { message: unknown }).message)
|
|
161
|
-
: '',
|
|
162
|
-
)
|
|
163
|
-
.join(' ')
|
|
164
|
-
if (text.includes(LOCAL_STORE_LOST)) {
|
|
165
|
-
recover(deps, 'local-store', 'local store lost', true)
|
|
238
|
+
const recovery = classifyZeroRecoveryLog(level, args)
|
|
239
|
+
if (recovery) {
|
|
240
|
+
recover(deps, recovery.reasonKey, recovery.message, recovery.dropLocalState)
|
|
166
241
|
}
|
|
167
242
|
},
|
|
168
243
|
// call through the consumer sink so a class-based sink keeps its `this`,
|
|
@@ -176,4 +251,5 @@ export function composeRecoveryLogSink(
|
|
|
176
251
|
export function resetRecoveryStateForTests() {
|
|
177
252
|
reloadScheduled = false
|
|
178
253
|
pendingDeletes.length = 0
|
|
254
|
+
lastStoreClosedAtMs = 0
|
|
179
255
|
}
|
|
@@ -382,6 +382,25 @@ describe('zero-http transport', () => {
|
|
|
382
382
|
view.destroy()
|
|
383
383
|
})
|
|
384
384
|
|
|
385
|
+
test('transient pull failures back off reconnect attempts', async () => {
|
|
386
|
+
const requests: RequestRecord[] = []
|
|
387
|
+
const fetch = vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => {
|
|
388
|
+
const request = recordRequest(input, init)
|
|
389
|
+
requests.push(request)
|
|
390
|
+
expect(request.path).toBe('/pull')
|
|
391
|
+
throw new TypeError('Failed to fetch')
|
|
392
|
+
})
|
|
393
|
+
install(fetch)
|
|
394
|
+
createZero()
|
|
395
|
+
|
|
396
|
+
await eventually(() => expect(requests.length).toBe(1))
|
|
397
|
+
await sleep(150)
|
|
398
|
+
expect(requests.length).toBe(1)
|
|
399
|
+
await eventually(() => expect(requests.length).toBe(2), 1_500)
|
|
400
|
+
await sleep(150)
|
|
401
|
+
expect(requests.length).toBe(2)
|
|
402
|
+
})
|
|
403
|
+
|
|
385
404
|
test('non-origin WebSockets pass through to the native implementation', () => {
|
|
386
405
|
const previous = globalThis.WebSocket
|
|
387
406
|
class NativeWebSocket {
|
package/src/httpPullTransport.ts
CHANGED
|
@@ -45,9 +45,12 @@ type TransportState = {
|
|
|
45
45
|
readonly sockets: Set<ZeroHttpSocket>
|
|
46
46
|
readonly pullIntervalMs: number | undefined
|
|
47
47
|
nextPokeID: number
|
|
48
|
+
transientFailureCount: number
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
const COOKIE_WIDTH = 20
|
|
52
|
+
const TRANSIENT_RECONNECT_BACKOFF_BASE_MS = 1_000
|
|
53
|
+
const TRANSIENT_RECONNECT_BACKOFF_MAX_MS = 30_000
|
|
51
54
|
|
|
52
55
|
export type HttpPullTransport = {
|
|
53
56
|
pull(): Promise<void>
|
|
@@ -83,6 +86,7 @@ export function installHttpPullTransport(
|
|
|
83
86
|
sockets: new Set(),
|
|
84
87
|
pullIntervalMs: opts.pullIntervalMs,
|
|
85
88
|
nextPokeID: 0,
|
|
89
|
+
transientFailureCount: 0,
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
const Shim = class {
|
|
@@ -190,7 +194,7 @@ class ZeroHttpSocket {
|
|
|
190
194
|
this.queueDesiredQueries(decoded.initConnectionMessage?.[1])
|
|
191
195
|
|
|
192
196
|
this.state.sockets.add(this)
|
|
193
|
-
this.openTimer = setTimeout(() => this.open(),
|
|
197
|
+
this.openTimer = setTimeout(() => this.open(), reconnectDelayMs(this.state))
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
addEventListener(type: SocketEventType, listener: SocketListener | null) {
|
|
@@ -247,7 +251,7 @@ class ZeroHttpSocket {
|
|
|
247
251
|
}
|
|
248
252
|
|
|
249
253
|
pull(): Promise<void> {
|
|
250
|
-
if (this.readyState
|
|
254
|
+
if (this.readyState !== this.OPEN) return Promise.resolve()
|
|
251
255
|
if (this.pullInFlight) return this.pullInFlight
|
|
252
256
|
this.pullInFlight = this.fetchPull(this.clientGroupID, this.cookie)
|
|
253
257
|
.then((response) => {
|
|
@@ -361,6 +365,7 @@ class ZeroHttpSocket {
|
|
|
361
365
|
if (!response.ok) {
|
|
362
366
|
throw new ZeroHttpResponseError(path, response.status)
|
|
363
367
|
}
|
|
368
|
+
resetTransientFailures(this.state)
|
|
364
369
|
return response.json()
|
|
365
370
|
}
|
|
366
371
|
|
|
@@ -399,6 +404,7 @@ class ZeroHttpSocket {
|
|
|
399
404
|
if (this.readyState !== this.CLOSED) this.close(1000, error.message)
|
|
400
405
|
return
|
|
401
406
|
}
|
|
407
|
+
recordTransientFailure(this.state)
|
|
402
408
|
this.emit('error', { error })
|
|
403
409
|
this.close(1011, errorMessage(error))
|
|
404
410
|
}
|
|
@@ -618,3 +624,25 @@ function isStaleClientCookieError(error: unknown): error is ZeroHttpResponseErro
|
|
|
618
624
|
error.status === 409
|
|
619
625
|
)
|
|
620
626
|
}
|
|
627
|
+
|
|
628
|
+
function reconnectDelayMs(state: TransportState) {
|
|
629
|
+
if (state.transientFailureCount === 0) return 0
|
|
630
|
+
return Math.min(
|
|
631
|
+
TRANSIENT_RECONNECT_BACKOFF_BASE_MS * 2 ** (state.transientFailureCount - 1),
|
|
632
|
+
TRANSIENT_RECONNECT_BACKOFF_MAX_MS,
|
|
633
|
+
)
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
function recordTransientFailure(state: TransportState) {
|
|
637
|
+
const maxExponent = Math.log2(
|
|
638
|
+
TRANSIENT_RECONNECT_BACKOFF_MAX_MS / TRANSIENT_RECONNECT_BACKOFF_BASE_MS,
|
|
639
|
+
)
|
|
640
|
+
state.transientFailureCount = Math.min(
|
|
641
|
+
state.transientFailureCount + 1,
|
|
642
|
+
Math.ceil(maxExponent) + 1,
|
|
643
|
+
)
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
function resetTransientFailures(state: TransportState) {
|
|
647
|
+
state.transientFailureCount = 0
|
|
648
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -42,7 +42,10 @@ export {
|
|
|
42
42
|
type ZeroClientErrorInfo,
|
|
43
43
|
} from './helpers/showZeroClientError'
|
|
44
44
|
export {
|
|
45
|
+
classifyZeroRecoveryLog,
|
|
45
46
|
makeZeroRecovery,
|
|
46
47
|
composeRecoveryLogSink,
|
|
48
|
+
type ZeroRecoveryLogClassification,
|
|
49
|
+
type ZeroRecoveryLogReason,
|
|
47
50
|
type ZeroRecoveryDeps,
|
|
48
51
|
} from './helpers/recoverZeroClient'
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { Emitter } from '@take-out/helpers';
|
|
2
2
|
import type { ZeroEvent } from '../types';
|
|
3
3
|
import type { UpdateNeededReason } from '@rocicorp/zero';
|
|
4
|
-
import type { LogSink } from '@rocicorp/logger';
|
|
4
|
+
import type { LogLevel, LogSink } from '@rocicorp/logger';
|
|
5
|
+
export type ZeroRecoveryLogReason = 'indexeddb-not-found' | 'sqlite-statement-finalized' | 'store-closed-repeat';
|
|
6
|
+
export type ZeroRecoveryLogClassification = {
|
|
7
|
+
reason: ZeroRecoveryLogReason;
|
|
8
|
+
reasonKey: string;
|
|
9
|
+
message: string;
|
|
10
|
+
dropLocalState: boolean;
|
|
11
|
+
};
|
|
5
12
|
export type ZeroRecoveryDeps = {
|
|
6
13
|
deleteLocalState: () => Promise<unknown>;
|
|
7
14
|
zeroEvents: Emitter<ZeroEvent | null>;
|
|
@@ -12,6 +19,7 @@ export declare function makeZeroRecovery(deps: ZeroRecoveryDeps): {
|
|
|
12
19
|
onUpdateNeeded(reason: UpdateNeededReason): void;
|
|
13
20
|
onClientStateNotFound(): void;
|
|
14
21
|
};
|
|
22
|
+
export declare function classifyZeroRecoveryLog(level: LogLevel | string, args: readonly unknown[], nowMs?: number): ZeroRecoveryLogClassification | undefined;
|
|
15
23
|
export declare function composeRecoveryLogSink(deps: ZeroRecoveryDeps, consumerLogSink?: LogSink): LogSink;
|
|
16
24
|
export declare function resetRecoveryStateForTests(): void;
|
|
17
25
|
//# sourceMappingURL=recoverZeroClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAW,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAelE,MAAM,MAAM,qBAAqB,GAC7B,qBAAqB,GACrB,4BAA4B,GAC5B,qBAAqB,CAAA;AAEzB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,qBAAqB,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAI7B,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,UAAU,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAGrC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AA6ED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB;2BAE5B,kBAAkB;;EAsB5C;AAsCD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,KAAK,SAAa,GACjB,6BAA6B,GAAG,SAAS,CAoC3C;AAOD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAeT;AAID,wBAAgB,0BAA0B,SAIzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpPullTransport.d.ts","sourceRoot":"","sources":["../src/httpPullTransport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"httpPullTransport.d.ts","sourceRoot":"","sources":["../src/httpPullTransport.ts"],"names":[],"mappings":"AAsDA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,SAAS,IAAI,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAGpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,wBAAwB,GAC7B,iBAAiB,CAqDnB;AAOD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,iBAAiB,CAOnB"}
|
package/types/index.d.ts
CHANGED
|
@@ -21,5 +21,5 @@ export { defineQuery, defineQueries } from '@rocicorp/zero';
|
|
|
21
21
|
export type * from './types';
|
|
22
22
|
export { clearZeroClientData, type ClearZeroClientDataOptions, } from './helpers/clearZeroClientData';
|
|
23
23
|
export { showZeroClientErrorOnce, resetShownZeroClientError, type ShowZeroClientErrorOptions, type ZeroClientErrorInfo, } from './helpers/showZeroClientError';
|
|
24
|
-
export { makeZeroRecovery, composeRecoveryLogSink, type ZeroRecoveryDeps, } from './helpers/recoverZeroClient';
|
|
24
|
+
export { classifyZeroRecoveryLog, makeZeroRecovery, composeRecoveryLogSink, type ZeroRecoveryLogClassification, type ZeroRecoveryLogReason, type ZeroRecoveryDeps, } from './helpers/recoverZeroClient';
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAA"}
|