@multiplatform.one/frappe 6.6.0 → 7.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/README.md +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/common/types.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +45 -1
- package/dist/cjs/core/http.native.js +72 -1
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/core/types.native.js.map +1 -1
- package/dist/cjs/core/wire.native.js.map +1 -1
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/cjs/devtools/index.native.js.map +1 -1
- package/dist/cjs/devtools/plugin.native.js.map +1 -1
- package/dist/cjs/devtools/theme.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +15 -2
- package/dist/cjs/doctype.native.js +22 -5
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/fixtures.native.js.map +1 -1
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +55 -1
- package/dist/cjs/frappeReact.native.js +67 -2
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +8 -0
- package/dist/cjs/index.native.js +10 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/optimistic.cjs +32 -2
- package/dist/cjs/optimistic.native.js +34 -1
- package/dist/cjs/optimistic.native.js.map +1 -1
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/plugin/index.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +234 -11
- package/dist/cjs/realtime.native.js +368 -18
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/filters.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +45 -1
- package/dist/cjs/sync/index.native.js +71 -1
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +51 -15
- package/dist/cjs/sync/mutationEngine.native.js +69 -16
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +8 -0
- package/dist/cjs/sync/mutationJournal.native.js +10 -0
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.native.js.map +1 -1
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.native.js +1 -1
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/common/types.native.js.map +1 -1
- package/dist/esm/core/http.mjs +45 -2
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +74 -4
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/core/types.native.js.map +1 -1
- package/dist/esm/core/wire.native.js.map +1 -1
- package/dist/esm/db.native.js +1 -1
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/esm/devtools/index.native.js +2 -2
- package/dist/esm/devtools/index.native.js.map +1 -1
- package/dist/esm/devtools/plugin.native.js +1 -1
- package/dist/esm/devtools/plugin.native.js.map +1 -1
- package/dist/esm/devtools/theme.native.js.map +1 -1
- package/dist/esm/doctype.mjs +15 -2
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +23 -6
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.native.js +1 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/fixtures.native.js.map +1 -1
- package/dist/esm/frappeApp.native.js +7 -7
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +55 -3
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +73 -10
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +22 -22
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/optimistic.mjs +27 -1
- package/dist/esm/optimistic.mjs.map +1 -1
- package/dist/esm/optimistic.native.js +30 -1
- package/dist/esm/optimistic.native.js.map +1 -1
- package/dist/esm/pacer.mjs.map +1 -1
- package/dist/esm/pacer.native.js +4 -4
- package/dist/esm/pacer.native.js.map +1 -1
- package/dist/esm/plugin/index.native.js.map +1 -1
- package/dist/esm/realtime.mjs +234 -11
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +369 -19
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.native.js +1 -1
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/filters.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +45 -1
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +79 -9
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +51 -15
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +73 -20
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +8 -0
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +11 -1
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.native.js +2 -2
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.native.js +1 -1
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.native.js +1 -1
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +4 -4
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +1 -1
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.native.js.map +1 -1
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +45 -2
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +72 -1
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +15 -2
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +22 -5
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +55 -3
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +66 -1
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -5
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -5
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +8 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/optimistic.mjs +27 -1
- package/dist/jsx/optimistic.mjs.map +1 -1
- package/dist/jsx/optimistic.native.js +34 -1
- package/dist/jsx/optimistic.native.js.map +1 -1
- package/dist/jsx/pacer.mjs.map +1 -1
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +234 -11
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +368 -18
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +45 -1
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +71 -1
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +51 -15
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +69 -16
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +8 -0
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +10 -0
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/package.json +8 -8
- package/src/core/http.spec.ts +81 -0
- package/src/core/http.ts +80 -3
- package/src/doctype.spec.ts +82 -3
- package/src/doctype.ts +51 -7
- package/src/frappeReact.ts +126 -4
- package/src/index.ts +28 -3
- package/src/optimistic.spec.ts +113 -2
- package/src/optimistic.ts +95 -0
- package/src/pacer.ts +8 -0
- package/src/realtime.spec.ts +62 -0
- package/src/realtime.ts +440 -14
- package/src/realtimeSse.spec.ts +547 -0
- package/src/sync/index.ts +44 -1
- package/src/sync/mutationEngine.spec.ts +7 -2
- package/src/sync/mutationEngine.ts +83 -27
- package/src/sync/mutationJournal.ts +9 -0
- package/src/sync/mutations.spec.ts +1 -1
- package/src/sync/syncModule.spec.ts +255 -1
- package/src/sync/types.ts +20 -0
- package/types/core/http.d.ts +11 -0
- package/types/core/http.d.ts.map +1 -1
- package/types/doctype.d.ts +7 -0
- package/types/doctype.d.ts.map +1 -1
- package/types/frappeReact.d.ts +50 -2
- package/types/frappeReact.d.ts.map +1 -1
- package/types/index.d.ts +8 -6
- package/types/index.d.ts.map +1 -1
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -1
- package/types/pacer.d.ts +8 -0
- package/types/pacer.d.ts.map +1 -1
- package/types/realtime.d.ts +183 -1
- package/types/realtime.d.ts.map +1 -1
- package/types/sync/index.d.ts +16 -1
- package/types/sync/index.d.ts.map +1 -1
- package/types/sync/mutationEngine.d.ts +7 -0
- package/types/sync/mutationEngine.d.ts.map +1 -1
- package/types/sync/mutationJournal.d.ts +6 -0
- package/types/sync/mutationJournal.d.ts.map +1 -1
- package/types/sync/types.d.ts +20 -0
- package/types/sync/types.d.ts.map +1 -1
|
@@ -1,3 +1,32 @@
|
|
|
1
1
|
import { createOptimisticAction as tanstackCreateOptimisticAction } from "@tanstack/db";
|
|
2
|
-
|
|
2
|
+
var OPTIMISTIC_TEMP_PREFIX = "tmp_";
|
|
3
|
+
function newOptimisticTempId() {
|
|
4
|
+
var id = typeof crypto !== "undefined" && "randomUUID" in crypto ? crypto.randomUUID() : Math.random().toString(36).slice(2);
|
|
5
|
+
return `${OPTIMISTIC_TEMP_PREFIX}${id}`;
|
|
6
|
+
}
|
|
7
|
+
function isOptimisticTempId(name) {
|
|
8
|
+
return typeof name === "string" && name.startsWith(OPTIMISTIC_TEMP_PREFIX);
|
|
9
|
+
}
|
|
10
|
+
async function runOptimisticRpc(options) {
|
|
11
|
+
var _options_apply;
|
|
12
|
+
var ctx = {
|
|
13
|
+
tempId: newOptimisticTempId()
|
|
14
|
+
};
|
|
15
|
+
var undo = (_options_apply = options.apply(ctx)) !== null && _options_apply !== void 0 ? _options_apply : void 0;
|
|
16
|
+
try {
|
|
17
|
+
var _options_reconcile;
|
|
18
|
+
var ack = await options.send(ctx);
|
|
19
|
+
(_options_reconcile = options.reconcile) === null || _options_reconcile === void 0 ? void 0 : _options_reconcile.call(options, ack, ctx);
|
|
20
|
+
return ack;
|
|
21
|
+
} catch (error) {
|
|
22
|
+
try {
|
|
23
|
+
undo === null || undo === void 0 ? void 0 : undo();
|
|
24
|
+
} finally {
|
|
25
|
+
var _options_onError;
|
|
26
|
+
(_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error, ctx);
|
|
27
|
+
}
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export { OPTIMISTIC_TEMP_PREFIX, tanstackCreateOptimisticAction as createOptimisticAction, isOptimisticTempId, newOptimisticTempId, runOptimisticRpc };
|
|
3
32
|
//# sourceMappingURL=optimistic.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createOptimisticAction","tanstackCreateOptimisticAction"],"sources":["optimistic.
|
|
1
|
+
{"version":3,"names":["createOptimisticAction","tanstackCreateOptimisticAction","OPTIMISTIC_TEMP_PREFIX","newOptimisticTempId","id","crypto","randomUUID","Math","random","toString","slice","isOptimisticTempId","name","startsWith","runOptimisticRpc","options","_options_apply","ctx","tempId","undo","apply","_options_reconcile","ack","send","reconcile","call","error","_options_onError"],"sources":["../../src/optimistic.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,sBAAA,IAA0BC,8BAAA,QAAsC;AAqElE,IAAAC,sBAAM,SAAyB;AAG/B,SAASC,oBAAA,EAA8B;EAC5C,IAAAC,EAAM,UACJC,MAAO,gBAAW,gBAAe,IAAAA,MAAgB,GAAAA,MAC7C,CAAAC,UAAO,KAAWC,IAClB,CAAAC,MAAK,GAAOC,QAAE,GAAS,EAAEC,KAAE,GAAM;EACvC,OAAO,GAAGR,sBAAsB,GAAGE,EAAE;AACvC;AAGO,SAASO,mBAAmBC,IAAA,EAA+B;EAChE,OAAO,OAAOA,IAAA,KAAS,YAAYA,IAAA,CAAKC,UAAA,CAAWX,sBAAsB;AAC3E;AAmCA,eAAsBY,iBAAuBC,OAAA,EAAoD;EAC/F,IAAAC,cAAoC;EACpC,IAAAC,GAAM;IACNC,MAAI,EAAAf,mBAAA;EACF;EACA,IAAAgB,IAAA,GAAQ,CAAAH,cAAY,GAAKD,OAAG,CAAAK,KAAA,CAAAH,GAAA,eAAAD,cAAA,cAAAA,cAAA;EAC5B;IACF,IAAAK,kBAAgB;IACd,IAAIC,GAAA,SAAAP,OAAA,CAAAQ,IAAA,CAAAN,GAAA;IACF,CAAAI,kBAAO,GAAAN,OAAA,CAAAS,SAAA,cAAAH,kBAAA,uBAAAA,kBAAA,CAAAI,IAAA,CAAAV,OAAA,EAAAO,GAAA,EAAAL,GAAA;IACT,OAAAK,GAAE;EACA,SAAAI,KAAQ;IACV;MACAP,IAAM,aAAAA,IAAA,uBAAAA,IAAA;IACR;MACF,IAAAQ,gBAAA","ignoreList":[]}
|
package/dist/esm/pacer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AsyncRateLimiter","useLiveQuery","useAsyncDebouncer","useThrottledCallback","useCallback","useMemo","useRef","useState","DbModule","HttpClient","Operation","createDbModule","config","authConfig","auth","useToken","token","type","baseURL","useDebouncedSearch","doctype","options","wait","fields","limit","minLength","additionalFilters","filters","searchField","query","setQueryState","results","setResults","isSearching","setIsSearching","dbRef","configKeyRef","configKey","current","debouncer","searchQuery","db","length","searchFilters","Array","isArray","push","key","value","Object","entries","docs","getDocList","error","console","setQuery","newQuery","cancel","maybeExecute","useThrottledPagination","collection","pageSize","throttleMs","visibleCount","setVisibleCount","liveResult","q","from","_items","allItems","data","items","slice","hasMore","isLoading","throttledLoadMore","prev","loadMore","createRateLimitedBatch","operation","maxPerSecond","batchSize","syncModule","queue","operationMap","create","Create","update","Update","delete","Delete","add","name","execute","callbacks","total","completed","batches","i","rateLimiter","batch","mutations","map","item","mutationId","crypto","randomUUID","Math","random","toString","substring","doc","mutation","mutate","onProgress","window"],"sources":["../../src/pacer.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,gBAAA,QAAwB;AACjC,SAASC,YAAA,QAAoB;AAC7B,SAASC,iBAAA,EAAmBC,oBAAA,QAA4B;AACxD,SAASC,WAAA,EAAaC,OAAA,EAASC,MAAA,EAAQC,QAAA,QAAgB;AAGvD,SAASC,QAAA,QAAgB;
|
|
1
|
+
{"version":3,"names":["AsyncRateLimiter","useLiveQuery","useAsyncDebouncer","useThrottledCallback","useCallback","useMemo","useRef","useState","DbModule","HttpClient","Operation","createDbModule","config","authConfig","auth","useToken","token","type","baseURL","useDebouncedSearch","doctype","options","wait","fields","limit","minLength","additionalFilters","filters","searchField","query","setQueryState","results","setResults","isSearching","setIsSearching","dbRef","configKeyRef","configKey","current","debouncer","searchQuery","db","length","searchFilters","Array","isArray","push","key","value","Object","entries","docs","getDocList","error","console","setQuery","newQuery","cancel","maybeExecute","useThrottledPagination","collection","pageSize","throttleMs","visibleCount","setVisibleCount","liveResult","q","from","_items","allItems","data","items","slice","hasMore","isLoading","throttledLoadMore","prev","loadMore","createRateLimitedBatch","operation","maxPerSecond","batchSize","syncModule","queue","operationMap","create","Create","update","Update","delete","Delete","add","name","execute","callbacks","total","completed","batches","i","rateLimiter","batch","mutations","map","item","mutationId","crypto","randomUUID","Math","random","toString","substring","doc","mutation","mutate","onProgress","window"],"sources":["../../src/pacer.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,gBAAA,QAAwB;AACjC,SAASC,YAAA,QAAoB;AAC7B,SAASC,iBAAA,EAAmBC,oBAAA,QAA4B;AACxD,SAASC,WAAA,EAAaC,OAAA,EAASC,MAAA,EAAQC,QAAA,QAAgB;AAGvD,SAASC,QAAA,QAAgB;AAEzB,SAASC,UAAA,QAAkB;AAE3B,SAASC,SAAA,QAAiB;AA+D1B,SAASC,eAAeC,MAAA,EAA0C;EAChE,MAAMC,UAAA,GAAqCD,MAAA,CAAOE,IAAA,GAC9C;IACEC,QAAA,EAAUH,MAAA,CAAOE,IAAA,CAAKC,QAAA;IACtBC,KAAA,EAAOJ,MAAA,CAAOE,IAAA,CAAKE,KAAA;IACnBC,IAAA,EAAML,MAAA,CAAOE,IAAA,CAAKG;EACpB,IACA;EACJ,OAAO,IAAIT,QAAA,CAAS,IAAIC,UAAA,CAAWG,MAAA,CAAOM,OAAA,EAASL,UAAU,CAAC;AAChE;AAgCO,SAASM,mBACdP,MAAA,EACAQ,OAAA,EACAC,OAAA,EAC6B;EAC7B,MAAMC,IAAA,GAAOD,OAAA,EAASC,IAAA,IAAQ;EAC9B,MAAMC,MAAA,GAASF,OAAA,EAASE,MAAA;EACxB,MAAMC,KAAA,GAAQH,OAAA,EAASG,KAAA,IAAS;EAChC,MAAMC,SAAA,GAAYJ,OAAA,EAASI,SAAA,IAAa;EACxC,MAAMC,iBAAA,GAAoBL,OAAA,EAASM,OAAA;EACnC,MAAMC,WAAA,GAAcP,OAAA,EAASO,WAAA,IAAe;EAE5C,MAAM,CAACC,KAAA,EAAOC,aAAa,IAAIvB,QAAA,CAAS,EAAE;EAC1C,MAAM,CAACwB,OAAA,EAASC,UAAU,IAAIzB,QAAA,CAA4B,EAAE;EAC5D,MAAM,CAAC0B,WAAA,EAAaC,cAAc,IAAI3B,QAAA,CAAS,KAAK;EAGpD,MAAM4B,KAAA,GAAQ7B,MAAA,CAA6B,MAAS;EACpD,MAAM8B,YAAA,GAAe9B,MAAA,CAAO,EAAE;EAC9B,MAAM+B,SAAA,GAAYzB,MAAA,GAAS,GAAGA,MAAA,CAAOM,OAAO,IAAIN,MAAA,CAAOE,IAAA,EAAME,KAAA,IAAS,EAAE,KAAK;EAC7E,IAAIJ,MAAA,IAAUyB,SAAA,KAAcD,YAAA,CAAaE,OAAA,EAAS;IAChDH,KAAA,CAAMG,OAAA,GAAU3B,cAAA,CAAeC,MAAM;IACrCwB,YAAA,CAAaE,OAAA,GAAUD,SAAA;EACzB;EACA,IAAI,CAACzB,MAAA,EAAQ;IACXuB,KAAA,CAAMG,OAAA,GAAU;IAChBF,YAAA,CAAaE,OAAA,GAAU;EACzB;EAEA,MAAMC,SAAA,GAAYrC,iBAAA,CAChB,MAAOsC,WAAA,IAAwB;IAC7B,MAAMC,EAAA,GAAKN,KAAA,CAAMG,OAAA;IACjB,IAAI,CAACG,EAAA,IAAMD,WAAA,CAAYE,MAAA,GAASjB,SAAA,EAAW;MACzCO,UAAA,CAAW,EAAE;MACbE,cAAA,CAAe,KAAK;MACpB;IACF;IAEAA,cAAA,CAAe,IAAI;IACnB,IAAI;MACF,MAAMS,aAAA,GAAkD,CACtD,CAACf,WAAA,EAAa,QAAQ,IAAIY,WAAW,GAAG,EAC1C;MAGA,IAAId,iBAAA,EAAmB;QACrB,IAAIkB,KAAA,CAAMC,OAAA,CAAQnB,iBAAiB,GAAG;UACpCiB,aAAA,CAAcG,IAAA,CAAK,GAAGpB,iBAAiB;QACzC,OAAO;UACL,WAAW,CAACqB,GAAA,EAAKC,KAAK,KAAKC,MAAA,CAAOC,OAAA,CAAQxB,iBAAiB,GAAG;YAC5DiB,aAAA,CAAcG,IAAA,CAAK,CAACC,GAAA,EAAK,KAAKC,KAAK,CAAC;UACtC;QACF;MACF;MAEA,MAAMG,IAAA,GAAO,MAAMV,EAAA,CAAGW,UAAA,CAAiBhC,OAAA,EAAS;QAC9CG,MAAA;QACAI,OAAA,EAASgB,aAAA;QACTnB;MACF,CAAC;MACDQ,UAAA,CAAWmB,IAAI;IACjB,SAASE,KAAA,EAAO;MACdC,OAAA,CAAQD,KAAA,CAAM,0CAA0CjC,OAAO,KAAKiC,KAAK;MACzErB,UAAA,CAAW,EAAE;IACf,UAAE;MACAE,cAAA,CAAe,KAAK;IACtB;EACF,GACA;IAAEZ;EAAK,CACT;EAEA,MAAMiC,QAAA,GAAWnD,WAAA,CACdoD,QAAA,IAAqB;IACpB1B,aAAA,CAAc0B,QAAQ;IACtB,IAAIA,QAAA,CAASd,MAAA,GAASjB,SAAA,EAAW;MAC/BO,UAAA,CAAW,EAAE;MACbO,SAAA,CAAUkB,MAAA,CAAO;MACjB;IACF;IACAlB,SAAA,CAAUmB,YAAA,CAAaF,QAAQ;EACjC,GACA,CAACjB,SAAA,EAAWd,SAAS,CACvB;EAEA,MAAMgC,MAAA,GAASrD,WAAA,CAAY,MAAM;IAC/BmC,SAAA,CAAUkB,MAAA,CAAO;IACjBvB,cAAA,CAAe,KAAK;EACtB,GAAG,CAACK,SAAS,CAAC;EAEd,OAAO;IAAEV,KAAA;IAAO0B,QAAA;IAAUxB,OAAA;IAASE,WAAA;IAAawB;EAAO;AACzD;AA6DO,SAASE,uBACdC,UAAA,EACAvC,OAAA,EACiC;EACjC,MAAMwC,QAAA,GAAWxC,OAAA,EAASwC,QAAA,IAAY;EACtC,MAAMC,UAAA,GAAazC,OAAA,EAASyC,UAAA,IAAc;EAE1C,MAAM,CAACC,YAAA,EAAcC,eAAe,IAAIzD,QAAA,CAASsD,QAAQ;EAGzD,MAAMI,UAAA,GAAahE,YAAA,CAChBiE,CAAA,IAAON,UAAA,GAAaM,CAAA,CAAEC,IAAA,CAAK;IAAEC,MAAA,EAAQR;EAAW,CAAC,IAAI,MACtD,CAACA,UAAU,CACb;EAEA,MAAMS,QAAA,GAAYJ,UAAA,EAAYK,IAAA,IAAQ,EAAC;EAEvC,MAAMC,KAAA,GAAQlE,OAAA,CAAQ,MAAMgE,QAAA,CAASG,KAAA,CAAM,GAAGT,YAAY,GAAG,CAACM,QAAA,EAAUN,YAAY,CAAC;EAErF,MAAMU,OAAA,GAAUJ,QAAA,CAAS3B,MAAA,GAASqB,YAAA;EAClC,MAAMW,SAAA,GAAYT,UAAA,EAAYS,SAAA,IAAa,CAACd,UAAA;EAE5C,MAAMe,iBAAA,GAAoBxE,oBAAA,CACxB,MAAM;IACJ6D,eAAA,CAAiBY,IAAA,IAASA,IAAA,GAAOf,QAAQ;EAC3C,GACA;IAAEvC,IAAA,EAAMwC;EAAW,CACrB;EAEA,OAAO;IAAES,KAAA;IAAOM,QAAA,EAAUF,iBAAA;IAAmBF,OAAA;IAASC;EAAU;AAClE;AAwEO,SAASI,uBACdzD,OAAA,EAC8B;EAC9B,MAAM;IAAED,OAAA;IAAS2D,SAAA;IAAWC,YAAA,GAAe;IAAGC,SAAA,GAAY;IAAIC;EAAW,IAAI7D,OAAA;EAE7E,MAAM8D,KAAA,GAA2B,EAAC;EAElC,MAAMC,YAAA,GAA0C;IAC9CC,MAAA,EAAQ3E,SAAA,CAAU4E,MAAA;IAClBC,MAAA,EAAQ7E,SAAA,CAAU8E,MAAA;IAClBC,MAAA,EAAQ/E,SAAA,CAAUgF;EACpB;EAEA,SAASC,IAAIC,IAAA,EAActB,IAAA,EAAsB;IAC/Ca,KAAA,CAAMrC,IAAA,CAAK;MAAE8C,IAAA;MAAMtB;IAAK,CAAC;EAC3B;EAEA,eAAeuB,QAAQC,SAAA,EAAyE;IAC9F,MAAMC,KAAA,GAAQZ,KAAA,CAAMzC,MAAA;IACpB,IAAIqD,KAAA,KAAU,GAAG;IAEjB,IAAIC,SAAA,GAAY;IAGhB,MAAMC,OAAA,GAA+B,EAAC;IACtC,SAASC,CAAA,GAAI,GAAGA,CAAA,GAAIf,KAAA,CAAMzC,MAAA,EAAQwD,CAAA,IAAKjB,SAAA,EAAW;MAChDgB,OAAA,CAAQnD,IAAA,CAAKqC,KAAA,CAAMX,KAAA,CAAM0B,CAAA,EAAGA,CAAA,GAAIjB,SAAS,CAAC;IAC5C;IAGA,MAAMkB,WAAA,GAAc,IAAInG,gBAAA,CACtB,MAAOoG,KAAA,IAA6B;MAClC,MAAMC,SAAA,GAAYD,KAAA,CAAME,GAAA,CAAKC,IAAA,KAAU;QACrCC,UAAA,EAAYC,MAAA,CAAOC,UAAA,GAAa,KAAKC,IAAA,CAAKC,MAAA,CAAO,EAAEC,QAAA,CAAS,EAAE,EAAEC,SAAA,CAAU,CAAC;QAC3E/B,SAAA,EAAWK,YAAA,CAAaL,SAAS;QACjCgC,GAAA,EAAK;UACH3F,OAAA;UACAwE,IAAA,EAAMW,IAAA,CAAKX,IAAA;UACX,GAAGW,IAAA,CAAKjC;QACV;MACF,EAAE;MAGF,WAAW0C,QAAA,IAAYX,SAAA,EAAW;QAChC,MAAMnB,UAAA,CAAW+B,MAAA,CAAOD,QAAQ;QAChChB,SAAA;QACAF,SAAA,EAAWoB,UAAA,GAAalB,SAAA,EAAWD,KAAK;MAC1C;IACF,GACA;MACEvE,KAAA,EAAOwD,YAAA;MACPmC,MAAA,EAAQ;IACV,CACF;IAGA,WAAWf,KAAA,IAASH,OAAA,EAAS;MAC3B,MAAME,WAAA,CAAYzC,YAAA,CAAa0C,KAAK;IACtC;IAGAjB,KAAA,CAAMzC,MAAA,GAAS;EACjB;EAEA,OAAO;IAAEiD,GAAA;IAAKE;EAAQ;AACxB","ignoreList":[]}
|
package/dist/esm/pacer.native.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AsyncRateLimiter } from "@tanstack/pacer";
|
|
2
|
-
import { useLiveQuery } from "./useLiveQuery";
|
|
2
|
+
import { useLiveQuery } from "./useLiveQuery.native.js";
|
|
3
3
|
import { useAsyncDebouncer, useThrottledCallback } from "@tanstack/react-pacer";
|
|
4
4
|
import { useCallback, useMemo, useRef, useState } from "react";
|
|
5
|
-
import { DbModule } from "./db";
|
|
6
|
-
import { HttpClient } from "./core/http";
|
|
7
|
-
import { Operation } from "./sync/types";
|
|
5
|
+
import { DbModule } from "./db.native.js";
|
|
6
|
+
import { HttpClient } from "./core/http.native.js";
|
|
7
|
+
import { Operation } from "./sync/types.native.js";
|
|
8
8
|
function createDbModule(config) {
|
|
9
9
|
var authConfig = config.auth ? {
|
|
10
10
|
useToken: config.auth.useToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AsyncRateLimiter","useLiveQuery","useAsyncDebouncer","useThrottledCallback","useCallback","useMemo","useRef","useState","DbModule","HttpClient","Operation","createDbModule","config","authConfig","auth","useToken","token","type","baseURL","useDebouncedSearch","doctype","options","_ref","_ref1","_ref2","_ref3","_ref4","_config_auth","wait","fields","limit","minLength","additionalFilters","filters","searchField","query","setQueryState","results","setResults","isSearching","setIsSearching","dbRef","configKeyRef","configKey","current","debouncer","searchQuery","db","length","searchFilters","Array","isArray","push","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","key","value","err","return","docs","getDocList","error","console","setQuery","newQuery","cancel","maybeExecute","useThrottledPagination","collection","pageSize","throttleMs","visibleCount","setVisibleCount","liveResult","q","from","_items","allItems","data","items","slice","hasMore","isLoading","throttledLoadMore","prev","loadMore","createRateLimitedBatch","operation","maxPerSecond","batchSize","syncModule","queue","operationMap","create","Create","update","Update","delete","Delete","add","name","execute","callbacks","total","completed","batches","i","rateLimiter","batch2","mutations","map","item","_crypto_randomUUID","_crypto","mutationId","crypto","randomUUID","call","Math","random","toString","substring","doc","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","mutation","_callbacks_onProgress","mutate","onProgress","window","batch"],"sources":["pacer.native.js"],"sourcesContent":["import { AsyncRateLimiter } from \"@tanstack/pacer\";\nimport { useLiveQuery } from \"./useLiveQuery\";\nimport { useAsyncDebouncer, useThrottledCallback } from \"@tanstack/react-pacer\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { DbModule } from \"./db\";\nimport { HttpClient } from \"./core/http\";\nimport { Operation } from \"./sync/types\";\nfunction createDbModule(config) {\n var authConfig = config.auth ? {\n useToken: config.auth.useToken,\n token: config.auth.token,\n type: config.auth.type\n } : void 0;\n return new DbModule(new HttpClient(config.baseURL, authConfig));\n}\nfunction useDebouncedSearch(config, doctype, options) {\n var _ref, _ref1, _ref2, _ref3, _ref4;\n var _config_auth;\n var wait = (_ref = options === null || options === void 0 ? void 0 : options.wait) !== null && _ref !== void 0 ? _ref : 300;\n var fields = options === null || options === void 0 ? void 0 : options.fields;\n var limit = (_ref1 = options === null || options === void 0 ? void 0 : options.limit) !== null && _ref1 !== void 0 ? _ref1 : 20;\n var minLength = (_ref2 = options === null || options === void 0 ? void 0 : options.minLength) !== null && _ref2 !== void 0 ? _ref2 : 1;\n var additionalFilters = options === null || options === void 0 ? void 0 : options.filters;\n var searchField = (_ref3 = options === null || options === void 0 ? void 0 : options.searchField) !== null && _ref3 !== void 0 ? _ref3 : \"name\";\n var [query, setQueryState] = useState(\"\");\n var [results, setResults] = useState([]);\n var [isSearching, setIsSearching] = useState(false);\n var dbRef = useRef(void 0);\n var configKeyRef = useRef(\"\");\n var configKey = config ? `${config.baseURL}:${(_ref4 = (_config_auth = config.auth) === null || _config_auth === void 0 ? void 0 : _config_auth.token) !== null && _ref4 !== void 0 ? _ref4 : \"\"}` : \"\";\n if (config && configKey !== configKeyRef.current) {\n dbRef.current = createDbModule(config);\n configKeyRef.current = configKey;\n }\n if (!config) {\n dbRef.current = void 0;\n configKeyRef.current = \"\";\n }\n var debouncer = useAsyncDebouncer(async function(searchQuery) {\n var db = dbRef.current;\n if (!db || searchQuery.length < minLength) {\n setResults([]);\n setIsSearching(false);\n return;\n }\n setIsSearching(true);\n try {\n var searchFilters = [\n [\n searchField,\n \"like\",\n `%${searchQuery}%`\n ]\n ];\n if (additionalFilters) {\n if (Array.isArray(additionalFilters)) {\n searchFilters.push(...additionalFilters);\n } else {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(additionalFilters)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [key, value] = _step.value;\n searchFilters.push([\n key,\n \"=\",\n value\n ]);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n var docs = await db.getDocList(doctype, {\n fields,\n filters: searchFilters,\n limit\n });\n setResults(docs);\n } catch (error) {\n console.error(`[useDebouncedSearch] Search failed for ${doctype}:`, error);\n setResults([]);\n } finally {\n setIsSearching(false);\n }\n }, {\n wait\n });\n var setQuery = useCallback(function(newQuery) {\n setQueryState(newQuery);\n if (newQuery.length < minLength) {\n setResults([]);\n debouncer.cancel();\n return;\n }\n debouncer.maybeExecute(newQuery);\n }, [\n debouncer,\n minLength\n ]);\n var cancel = useCallback(function() {\n debouncer.cancel();\n setIsSearching(false);\n }, [\n debouncer\n ]);\n return {\n query,\n setQuery,\n results,\n isSearching,\n cancel\n };\n}\nfunction useThrottledPagination(collection, options) {\n var _ref, _ref1, _ref2, _ref3;\n var pageSize = (_ref = options === null || options === void 0 ? void 0 : options.pageSize) !== null && _ref !== void 0 ? _ref : 20;\n var throttleMs = (_ref1 = options === null || options === void 0 ? void 0 : options.throttleMs) !== null && _ref1 !== void 0 ? _ref1 : 200;\n var [visibleCount, setVisibleCount] = useState(pageSize);\n var liveResult = useLiveQuery(function(q) {\n return collection ? q.from({\n _items: collection\n }) : null;\n }, [\n collection\n ]);\n var allItems = (_ref2 = liveResult === null || liveResult === void 0 ? void 0 : liveResult.data) !== null && _ref2 !== void 0 ? _ref2 : [];\n var items = useMemo(function() {\n return allItems.slice(0, visibleCount);\n }, [\n allItems,\n visibleCount\n ]);\n var hasMore = allItems.length > visibleCount;\n var isLoading = (_ref3 = liveResult === null || liveResult === void 0 ? void 0 : liveResult.isLoading) !== null && _ref3 !== void 0 ? _ref3 : !collection;\n var throttledLoadMore = useThrottledCallback(function() {\n setVisibleCount(function(prev) {\n return prev + pageSize;\n });\n }, {\n wait: throttleMs\n });\n return {\n items,\n loadMore: throttledLoadMore,\n hasMore,\n isLoading\n };\n}\nfunction createRateLimitedBatch(options) {\n var { doctype, operation, maxPerSecond = 5, batchSize = 10, syncModule } = options;\n var queue = [];\n var operationMap = {\n create: Operation.Create,\n update: Operation.Update,\n delete: Operation.Delete\n };\n function add(name, data) {\n queue.push({\n name,\n data\n });\n }\n async function execute(callbacks) {\n var total = queue.length;\n if (total === 0) return;\n var completed = 0;\n var batches = [];\n for (var i = 0; i < queue.length; i += batchSize) {\n batches.push(queue.slice(i, i + batchSize));\n }\n var rateLimiter = new AsyncRateLimiter(async function(batch2) {\n var mutations = batch2.map(function(item) {\n var _ref;\n var _crypto_randomUUID, _crypto;\n return {\n mutationId: (_ref = (_crypto_randomUUID = (_crypto = crypto).randomUUID) === null || _crypto_randomUUID === void 0 ? void 0 : _crypto_randomUUID.call(_crypto)) !== null && _ref !== void 0 ? _ref : Math.random().toString(36).substring(2),\n operation: operationMap[operation],\n doc: {\n doctype,\n name: item.name,\n ...item.data\n }\n };\n });\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = mutations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var mutation = _step2.value;\n var _callbacks_onProgress;\n await syncModule.mutate(mutation);\n completed++;\n callbacks === null || callbacks === void 0 ? void 0 : (_callbacks_onProgress = callbacks.onProgress) === null || _callbacks_onProgress === void 0 ? void 0 : _callbacks_onProgress.call(callbacks, completed, total);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }, {\n limit: maxPerSecond,\n window: 1e3\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = batches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var batch = _step.value;\n await rateLimiter.maybeExecute(batch);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n queue.length = 0;\n }\n return {\n add,\n execute\n };\n}\nexport {\n createRateLimitedBatch,\n useDebouncedSearch,\n useThrottledPagination\n};\n//# sourceMappingURL=pacer.js.map\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["AsyncRateLimiter","useLiveQuery","useAsyncDebouncer","useThrottledCallback","useCallback","useMemo","useRef","useState","DbModule","HttpClient","Operation","createDbModule","config","authConfig","auth","useToken","token","type","baseURL","useDebouncedSearch","doctype","options","_ref","_ref1","_ref2","_ref3","_ref4","_config_auth","wait","fields","limit","minLength","additionalFilters","filters","searchField","query","setQueryState","results","setResults","isSearching","setIsSearching","dbRef","configKeyRef","configKey","current","debouncer","searchQuery","db","length","searchFilters","Array","isArray","push","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","key","value","err","return","docs","getDocList","error","console","setQuery","newQuery","cancel","maybeExecute","useThrottledPagination","collection","pageSize","throttleMs","visibleCount","setVisibleCount","liveResult","q","from","_items","allItems","data","items","slice","hasMore","isLoading","throttledLoadMore","prev","loadMore"],"sources":["../../src/pacer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["init","modules","ts","typescript","openapi","ns","lastFetch","ttl","create","info","config","url","openapiUrl","toString","namespace","Number","cacheTTL","ensureOpenAPI","now","Date","res","fetch","json","unused","proxy","Proxy","languageService","get","target","prop","_len","arguments","length","args","Array","_key","getSemanticDiagnostics","apply","getExternalFiles","getSourceFile","fileName","languageVersion","_onError","_shouldCreateNewSourceFile","_length","content","emitDTS","createSourceFile","spec","ns2","_spec_components","lines","push","schemas","components","paths","doctypes","Set","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","keys","Symbol","iterator","_step","next","done","p","value","parts","split","filter","Boolean","idx","indexOf","add","err","return","map","d","join","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","entries","_step1","name","schema","enum","members","x","JSON","stringify","safe","type","properties","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","k","v","t","mapType","rq","isArray","required","optional","s","replace","_v_schema","$ref","pop","items","plugin_default","default"],"sources":["index.native.js"],"sourcesContent":["function init(modules) {\n var ts = modules.typescript;\n var openapi = null;\n var ns = \"@frappe/types\";\n var lastFetch = 0;\n var ttl = 6e4;\n function create(info) {\n var config = info.config || {};\n var url = (config.openapiUrl || \"\").toString();\n ns = (config.namespace || ns).toString();\n ttl = Number(config.cacheTTL || ttl);\n async function ensureOpenAPI() {\n var now = Date.now();\n if (openapi && now - lastFetch < ttl) return;\n if (!url) return;\n try {\n var res = await fetch(url);\n openapi = await res.json();\n lastFetch = now;\n } catch (unused) {\n }\n }\n var proxy = new Proxy(info.languageService, {\n get(target, prop) {\n if (prop !== \"getSemanticDiagnostics\") return target[prop];\n return async function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n await ensureOpenAPI();\n return target.getSemanticDiagnostics.apply(this, args);\n };\n }\n });\n function getExternalFiles() {\n return openapi ? [\n \"frappe-virtual-types.d.ts\"\n ] : [];\n }\n function getSourceFile(fileName, languageVersion, _onError, _shouldCreateNewSourceFile, _length) {\n if (fileName === \"frappe-virtual-types.d.ts\" && openapi) {\n var content = emitDTS(openapi, ns);\n return ts.createSourceFile(fileName, content, languageVersion);\n }\n return void 0;\n }\n return {\n ...proxy,\n getExternalFiles,\n getSourceFile\n };\n }\n function emitDTS(spec, ns2) {\n var _spec_components;\n var lines = [];\n lines.push(`declare module \"${ns2}\" {`);\n var schemas = (spec === null || spec === void 0 ? void 0 : (_spec_components = spec.components) === null || _spec_components === void 0 ? void 0 : _spec_components.schemas) || {};\n var paths = spec.paths || {};\n var doctypes = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.keys(paths)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var p = _step.value;\n var parts = p.split(\"/\").filter(Boolean);\n var idx = parts.indexOf(\"resource\");\n if (idx >= 0 && parts[idx + 1]) doctypes.add(parts[idx + 1]);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n lines.push(` export type Doctype = ${[\n ...doctypes\n ].map(function(d) {\n return `'${d}'`;\n }).join(\" | \") || \"string\"}`);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = Object.entries(schemas)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var [name, schema] = _step1.value;\n if (schema === null || schema === void 0 ? void 0 : schema.enum) {\n var members = schema.enum.map(function(x) {\n return JSON.stringify(x);\n }).join(\" | \");\n lines.push(` export type ${safe(name)} = ${members}`);\n continue;\n }\n if ((schema === null || schema === void 0 ? void 0 : schema.type) === \"object\" && (schema === null || schema === void 0 ? void 0 : schema.properties)) {\n lines.push(` export interface ${safe(name)} {`);\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = Object.entries((schema === null || schema === void 0 ? void 0 : schema.properties) || {})[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [k, v] = _step2.value;\n var t = mapType(v);\n var rq = Array.isArray(schema === null || schema === void 0 ? void 0 : schema.required) ? schema.required : [];\n var optional = rq.indexOf(k) === -1;\n lines.push(` ${safe(k)}${optional ? \"?\" : \"\"}: ${t}`);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n lines.push(\" }\");\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n lines.push(\"}\");\n return lines.join(\"\\n\");\n }\n function safe(s) {\n return s.replace(/[^a-zA-Z0-9_]/g, \"_\");\n }\n function mapType(v) {\n var _v_schema;\n if (!v) return \"any\";\n if (v.$ref) return safe(v.$ref.split(\"/\").pop() || \"any\");\n var t = v.type || ((_v_schema = v.schema) === null || _v_schema === void 0 ? void 0 : _v_schema.type);\n if (t === \"string\") return \"string\";\n if (t === \"integer\" || t === \"number\") return \"number\";\n if (t === \"boolean\") return \"boolean\";\n if (t === \"array\") return `${mapType(v.items)}[]`;\n if (t === \"object\") return \"Record<string, any>\";\n return \"any\";\n }\n return {\n create\n };\n}\nvar plugin_default = init;\nexport {\n plugin_default as default\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["init","modules","ts","typescript","openapi","ns","lastFetch","ttl","create","info","config","url","openapiUrl","toString","namespace","Number","cacheTTL","ensureOpenAPI","now","Date","res","fetch","json","unused","proxy","Proxy","languageService","get","target","prop","_len","arguments","length","args","Array","_key","getSemanticDiagnostics","apply","getExternalFiles","getSourceFile","fileName","languageVersion","_onError","_shouldCreateNewSourceFile","_length","content","emitDTS","createSourceFile","spec","ns2","_spec_components","lines","push","schemas","components","paths","doctypes","Set","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","keys","Symbol","iterator","_step","next","done","p","value","parts","split","filter","Boolean","idx","indexOf","add","err","return","map","d","join","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","entries","_step1","name","schema","enum","members","x","JSON","stringify","safe","type","properties"],"sources":["../../../src/plugin/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/realtime.mjs
CHANGED
|
@@ -12,11 +12,20 @@ function docRoomKey(doctype, name) {
|
|
|
12
12
|
}
|
|
13
13
|
class RealtimeModule {
|
|
14
14
|
socket;
|
|
15
|
+
/** Live EventSource when the `"sse"` transport is active. */
|
|
16
|
+
eventSource;
|
|
15
17
|
handlerMap = /* @__PURE__ */new Map();
|
|
16
18
|
/** Tracks events with socket listeners attached to prevent duplicates. */
|
|
17
19
|
attachedSocketEvents = /* @__PURE__ */new Set();
|
|
18
20
|
/** Stored socket event handler references for proper cleanup. */
|
|
19
21
|
socketEventHandlers = /* @__PURE__ */new Map();
|
|
22
|
+
/** Tracks SSE event types with listeners attached to prevent duplicates. */
|
|
23
|
+
attachedSseEvents = /* @__PURE__ */new Set();
|
|
24
|
+
/** Stored SSE listener references for proper cleanup. */
|
|
25
|
+
sseListeners = /* @__PURE__ */new Map();
|
|
26
|
+
/** One-shot debug notices for SSE's one-way limitations. */
|
|
27
|
+
sseRoomNoticeLogged = false;
|
|
28
|
+
sseEmitNoticeLogged = false;
|
|
20
29
|
/** Active doc rooms — re-emitted on every (re)connect. */
|
|
21
30
|
docRooms = /* @__PURE__ */new Map();
|
|
22
31
|
/** Active list rooms — re-emitted on every (re)connect. */
|
|
@@ -43,6 +52,18 @@ class RealtimeModule {
|
|
|
43
52
|
}
|
|
44
53
|
getSocketURL() {
|
|
45
54
|
const base = this.config.baseURL.replace(/\/$/, "");
|
|
55
|
+
if (this.config.socketBaseURL) {
|
|
56
|
+
const socketBase = this.config.socketBaseURL.replace(/\/$/, "");
|
|
57
|
+
let siteName = this.config.siteName;
|
|
58
|
+
if (!siteName) {
|
|
59
|
+
try {
|
|
60
|
+
siteName = new URL(base).hostname;
|
|
61
|
+
} catch {
|
|
62
|
+
siteName = base.replace(/^https?:\/\//, "").split(/[/:]/)[0];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return `${socketBase}/${siteName}`;
|
|
66
|
+
}
|
|
46
67
|
try {
|
|
47
68
|
const url = new URL(base);
|
|
48
69
|
const port = this.config.socketPort ? String(this.config.socketPort) : url.port;
|
|
@@ -131,8 +152,11 @@ class RealtimeModule {
|
|
|
131
152
|
for (const resolve of this.healthyWaiters) resolve(ok);
|
|
132
153
|
this.healthyWaiters.clear();
|
|
133
154
|
}
|
|
155
|
+
isSSE() {
|
|
156
|
+
return this.config.transport === "sse";
|
|
157
|
+
}
|
|
134
158
|
waitUntilHealthy(timeoutMs = 2e4) {
|
|
135
|
-
if (this.
|
|
159
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
136
160
|
return new Promise(resolve => {
|
|
137
161
|
const timer = setTimeout(() => {
|
|
138
162
|
this.healthyWaiters.delete(onReady);
|
|
@@ -146,8 +170,8 @@ class RealtimeModule {
|
|
|
146
170
|
});
|
|
147
171
|
}
|
|
148
172
|
async ensureConnected() {
|
|
149
|
-
if (this.
|
|
150
|
-
if (!this.socket && !this.isConnecting) {
|
|
173
|
+
if (this.isHealthy()) return;
|
|
174
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
151
175
|
await this.connect();
|
|
152
176
|
}
|
|
153
177
|
await this.waitUntilHealthy();
|
|
@@ -161,7 +185,16 @@ class RealtimeModule {
|
|
|
161
185
|
this.socket.emit("doctype_subscribe", room.doctype);
|
|
162
186
|
}
|
|
163
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
190
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
191
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
192
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
193
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
194
|
+
* connect is in flight.
|
|
195
|
+
*/
|
|
164
196
|
async connect() {
|
|
197
|
+
if (this.isSSE()) return this.connectSSE();
|
|
165
198
|
if (this.socket || this.isConnecting) return;
|
|
166
199
|
this.isConnecting = true;
|
|
167
200
|
try {
|
|
@@ -190,6 +223,153 @@ class RealtimeModule {
|
|
|
190
223
|
throw err;
|
|
191
224
|
}
|
|
192
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
228
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
229
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
230
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
231
|
+
* reimplemented here.
|
|
232
|
+
*/
|
|
233
|
+
async connectSSE() {
|
|
234
|
+
if (this.eventSource || this.isConnecting) return;
|
|
235
|
+
this.isConnecting = true;
|
|
236
|
+
try {
|
|
237
|
+
const sse = this.config.sse;
|
|
238
|
+
const EventSourceCtor = sse?.EventSource ?? globalThis.EventSource;
|
|
239
|
+
if (!EventSourceCtor) {
|
|
240
|
+
throw new Error('[RealtimeModule] transport "sse" needs an EventSource implementation, and this runtime has no global EventSource (React Native and Node < 22 ship none). Pass a constructor via config.sse.EventSource \u2014 e.g. the "eventsource" npm package on Node or "react-native-sse" on React Native.');
|
|
241
|
+
}
|
|
242
|
+
const url = await this.buildSSEURL();
|
|
243
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
244
|
+
withCredentials: sse?.withCredentials
|
|
245
|
+
});
|
|
246
|
+
this.initSSEHandlers();
|
|
247
|
+
} catch (err) {
|
|
248
|
+
this.isConnecting = false;
|
|
249
|
+
this.resolveHealthyWaiters(false);
|
|
250
|
+
throw err;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async buildSSEURL() {
|
|
254
|
+
const sse = this.config.sse;
|
|
255
|
+
let url;
|
|
256
|
+
if (sse?.url) {
|
|
257
|
+
url = sse.url;
|
|
258
|
+
} else if (sse?.path) {
|
|
259
|
+
const base = this.config.baseURL.replace(/\/$/, "");
|
|
260
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
261
|
+
} else {
|
|
262
|
+
throw new Error('[RealtimeModule] transport "sse" requires config.sse.url or config.sse.path. There is no default stream path: SSE endpoints are server-specific (the SHC daemon serves "/api/method/shc.events.stream"; a real Frappe bench has no SSE endpoint at all), so a framework default would only ever 404.');
|
|
263
|
+
}
|
|
264
|
+
const params = Object.entries(this.config.sse?.queryParams ?? {});
|
|
265
|
+
if (params.length === 0) return url;
|
|
266
|
+
const parts = [];
|
|
267
|
+
for (const [key, value] of params) {
|
|
268
|
+
const resolved = typeof value === "function" ? await value() : value;
|
|
269
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
270
|
+
}
|
|
271
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
272
|
+
}
|
|
273
|
+
initSSEHandlers() {
|
|
274
|
+
this.attachedSseEvents.clear();
|
|
275
|
+
this.sseListeners.clear();
|
|
276
|
+
this.attachSSEListener("open");
|
|
277
|
+
this.attachSSEListener("error");
|
|
278
|
+
this.attachSSEListener("message");
|
|
279
|
+
for (const type of this.config.sse?.events ?? []) {
|
|
280
|
+
this.attachSSEListener(type);
|
|
281
|
+
}
|
|
282
|
+
for (const event of this.handlerMap.keys()) {
|
|
283
|
+
this.attachSSEListener(event);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
attachSSEListener(type) {
|
|
287
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
288
|
+
const listener = event => {
|
|
289
|
+
this.handleSSEEvent(type, event);
|
|
290
|
+
};
|
|
291
|
+
this.sseListeners.set(type, listener);
|
|
292
|
+
this.attachedSseEvents.add(type);
|
|
293
|
+
this.eventSource.addEventListener(type, listener);
|
|
294
|
+
}
|
|
295
|
+
detachSSEListener(type) {
|
|
296
|
+
if (this.isCoreSSEType(type)) return;
|
|
297
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
298
|
+
const listener = this.sseListeners.get(type);
|
|
299
|
+
if (listener) {
|
|
300
|
+
this.eventSource.removeEventListener(type, listener);
|
|
301
|
+
this.sseListeners.delete(type);
|
|
302
|
+
}
|
|
303
|
+
this.attachedSseEvents.delete(type);
|
|
304
|
+
}
|
|
305
|
+
isCoreSSEType(type) {
|
|
306
|
+
return type === "open" || type === "error" || type === "message" || (this.config.sse?.events ?? []).includes(type);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
310
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
311
|
+
* carrying `data` is a server frame — including frames the server
|
|
312
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
313
|
+
* must not be mistaken for connection errors.
|
|
314
|
+
*/
|
|
315
|
+
handleSSEEvent(type, event) {
|
|
316
|
+
if (event?.data === void 0) {
|
|
317
|
+
if (type === "open") {
|
|
318
|
+
this.isConnecting = false;
|
|
319
|
+
this.socketHealthy = true;
|
|
320
|
+
this.emitToHandlers("connected", {
|
|
321
|
+
transport: "sse"
|
|
322
|
+
});
|
|
323
|
+
this.resolveHealthyWaiters(true);
|
|
324
|
+
} else if (type === "error") {
|
|
325
|
+
this.isConnecting = false;
|
|
326
|
+
this.socketHealthy = false;
|
|
327
|
+
this.emitToHandlers("disconnect", {
|
|
328
|
+
reason: "sse-error"
|
|
329
|
+
});
|
|
330
|
+
this.resolveHealthyWaiters(false);
|
|
331
|
+
}
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const frame = {
|
|
335
|
+
type,
|
|
336
|
+
data: String(event.data),
|
|
337
|
+
lastEventId: event.lastEventId ?? ""
|
|
338
|
+
};
|
|
339
|
+
const mapFrame = this.config.sse?.mapFrame;
|
|
340
|
+
if (mapFrame) {
|
|
341
|
+
let mapped;
|
|
342
|
+
try {
|
|
343
|
+
mapped = mapFrame(frame);
|
|
344
|
+
} catch (err) {
|
|
345
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (!mapped) return;
|
|
349
|
+
for (const {
|
|
350
|
+
event: mappedEvent,
|
|
351
|
+
payload: payload2
|
|
352
|
+
} of mapped) {
|
|
353
|
+
this.emitToHandlers(mappedEvent, payload2);
|
|
354
|
+
}
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
let payload = frame.data;
|
|
358
|
+
try {
|
|
359
|
+
payload = JSON.parse(frame.data);
|
|
360
|
+
} catch {}
|
|
361
|
+
this.emitToHandlers(frame.type, payload);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
365
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
366
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
367
|
+
*/
|
|
368
|
+
logSSERoomNoticeOnce() {
|
|
369
|
+
if (this.sseRoomNoticeLogged) return;
|
|
370
|
+
this.sseRoomNoticeLogged = true;
|
|
371
|
+
console.debug("[RealtimeModule] SSE transport is one-way: doc/list room subscriptions are recorded client-side only (getDocRooms()/getListRooms()) and nothing is sent to the server \u2014 filter server-side via sse.queryParams or route frames with sse.mapFrame.");
|
|
372
|
+
}
|
|
193
373
|
/**
|
|
194
374
|
* Tear down the socket without clearing app handlers or room subscriptions.
|
|
195
375
|
* Used by auth refresh so listeners/rooms survive credential rotation.
|
|
@@ -202,8 +382,17 @@ class RealtimeModule {
|
|
|
202
382
|
this.socket.disconnect();
|
|
203
383
|
this.socket = void 0;
|
|
204
384
|
}
|
|
385
|
+
if (this.eventSource) {
|
|
386
|
+
for (const [type, listener] of this.sseListeners) {
|
|
387
|
+
this.eventSource.removeEventListener(type, listener);
|
|
388
|
+
}
|
|
389
|
+
this.eventSource.close();
|
|
390
|
+
this.eventSource = void 0;
|
|
391
|
+
}
|
|
205
392
|
this.attachedSocketEvents.clear();
|
|
206
393
|
this.socketEventHandlers.clear();
|
|
394
|
+
this.attachedSseEvents.clear();
|
|
395
|
+
this.sseListeners.clear();
|
|
207
396
|
this.socketHealthy = false;
|
|
208
397
|
this.isConnecting = false;
|
|
209
398
|
this.resolveHealthyWaiters(false);
|
|
@@ -280,7 +469,11 @@ class RealtimeModule {
|
|
|
280
469
|
this.handlerMap.set(event, handlerSet);
|
|
281
470
|
}
|
|
282
471
|
handlerSet.add(handler);
|
|
283
|
-
this.
|
|
472
|
+
if (this.isSSE()) {
|
|
473
|
+
this.attachSSEListener(event);
|
|
474
|
+
} else {
|
|
475
|
+
this.attachSocketListener(event);
|
|
476
|
+
}
|
|
284
477
|
}
|
|
285
478
|
off(event, handler) {
|
|
286
479
|
const handlerSet = this.handlerMap.get(event);
|
|
@@ -288,7 +481,11 @@ class RealtimeModule {
|
|
|
288
481
|
handlerSet.delete(handler);
|
|
289
482
|
if (handlerSet.size === 0) {
|
|
290
483
|
this.handlerMap.delete(event);
|
|
291
|
-
this.
|
|
484
|
+
if (this.isSSE()) {
|
|
485
|
+
this.detachSSEListener(event);
|
|
486
|
+
} else {
|
|
487
|
+
this.detachSocketListener(event);
|
|
488
|
+
}
|
|
292
489
|
}
|
|
293
490
|
}
|
|
294
491
|
async subscribeDoc(doctype, name) {
|
|
@@ -296,14 +493,15 @@ class RealtimeModule {
|
|
|
296
493
|
doctype,
|
|
297
494
|
name
|
|
298
495
|
});
|
|
496
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
299
497
|
await this.ensureConnected();
|
|
300
|
-
if (this.socket && this.socketHealthy) {
|
|
498
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
301
499
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
302
500
|
}
|
|
303
501
|
}
|
|
304
502
|
unsubscribeDoc(doctype, name) {
|
|
305
503
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
306
|
-
if (this.socket && this.socketHealthy) {
|
|
504
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
307
505
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
308
506
|
}
|
|
309
507
|
this.teardownWhenIdle();
|
|
@@ -320,14 +518,15 @@ class RealtimeModule {
|
|
|
320
518
|
doctype,
|
|
321
519
|
filters
|
|
322
520
|
});
|
|
521
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
323
522
|
await this.ensureConnected();
|
|
324
|
-
if (this.socket && this.socketHealthy) {
|
|
523
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
325
524
|
this.socket.emit("doctype_subscribe", doctype);
|
|
326
525
|
}
|
|
327
526
|
}
|
|
328
527
|
unsubscribeList(doctype) {
|
|
329
528
|
this.listRooms.delete(doctype);
|
|
330
|
-
if (this.socket && this.socketHealthy) {
|
|
529
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
331
530
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
332
531
|
}
|
|
333
532
|
this.teardownWhenIdle();
|
|
@@ -343,13 +542,14 @@ class RealtimeModule {
|
|
|
343
542
|
*/
|
|
344
543
|
teardownWhenIdle() {
|
|
345
544
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
346
|
-
if (!this.socket && !this.isConnecting) return;
|
|
545
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
347
546
|
this.emitToHandlers("disconnect", {
|
|
348
547
|
reason: "idle-teardown"
|
|
349
548
|
});
|
|
350
549
|
this.softDisconnect();
|
|
351
550
|
}
|
|
352
551
|
isHealthy() {
|
|
552
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
353
553
|
return this.socketHealthy && this.socket?.connected === true;
|
|
354
554
|
}
|
|
355
555
|
disconnect() {
|
|
@@ -360,13 +560,20 @@ class RealtimeModule {
|
|
|
360
560
|
}
|
|
361
561
|
async updateAuth(auth) {
|
|
362
562
|
this.config.auth = auth;
|
|
363
|
-
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
563
|
+
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
364
564
|
this.softDisconnect();
|
|
365
565
|
if (shouldReconnect) {
|
|
366
566
|
await this.connect();
|
|
367
567
|
}
|
|
368
568
|
}
|
|
369
569
|
emit(event, data) {
|
|
570
|
+
if (this.isSSE()) {
|
|
571
|
+
if (!this.sseEmitNoticeLogged) {
|
|
572
|
+
this.sseEmitNoticeLogged = true;
|
|
573
|
+
console.debug("[RealtimeModule] emit() is a no-op under the SSE transport \u2014 SSE is one-way (server \u2192 client). Use HTTP calls for client \u2192 server communication.");
|
|
574
|
+
}
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
370
577
|
if (this.socket && this.socketHealthy) {
|
|
371
578
|
this.socket.emit(event, data);
|
|
372
579
|
}
|
|
@@ -374,6 +581,22 @@ class RealtimeModule {
|
|
|
374
581
|
getSocket() {
|
|
375
582
|
return this.socket;
|
|
376
583
|
}
|
|
584
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
585
|
+
getEventSource() {
|
|
586
|
+
return this.eventSource;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
590
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
591
|
+
* consult them to filter or route frames.
|
|
592
|
+
*/
|
|
593
|
+
getDocRooms() {
|
|
594
|
+
return [...this.docRooms.values()];
|
|
595
|
+
}
|
|
596
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
597
|
+
getListRooms() {
|
|
598
|
+
return [...this.listRooms.values()];
|
|
599
|
+
}
|
|
377
600
|
}
|
|
378
601
|
export { RealtimeModule, RealtimePlatform };
|
|
379
602
|
//# sourceMappingURL=realtime.mjs.map
|