@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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","plugin_exports","default","plugin_default","module","exports","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","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","keys","Symbol","iterator","_step","next","done","p","parts","split","filter","Boolean","idx","indexOf","add","err","return","map","d","join","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","entries","_step1","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"],"sources":["index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar plugin_exports = {};\n__export(plugin_exports, {\n default: () => plugin_default\n});\nmodule.exports = __toCommonJS(plugin_exports);\nfunction 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;\n//# sourceMappingURL=index.js.map\n"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,SAAS,GAAGC,MAAM,CAACC,cAAc;AACrC,IAAIC,gBAAgB,GAAGF,MAAM,CAACG,wBAAwB;AACtD,IAAIC,iBAAiB,GAAGJ,MAAM,CAACK,mBAAmB;AAClD,IAAIC,YAAY,GAAGN,MAAM,CAACO,SAAS,CAACC,cAAc;AAClD,IAAIC,QAAQ,GAAGA,CAACC,MAAM,EAAEC,GAAG,KAAK;EAC9B,KAAK,IAAIC,IAAI,IAAID,GAAG,EAClBZ,SAAS,CAACW,MAAM,EAAEE,IAAI,EAAE;IAAEC,GAAG,EAAEF,GAAG,CAACC,IAAI,CAAC;IAAEE,UAAU,EAAE;EAAK,CAAC,CAAC;AACjE,CAAC;AACD,IAAIC,WAAW,GAAGA,CAACC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,KAAK;EAC5C,IAAIF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;IAClE,KAAK,IAAIG,GAAG,IAAIhB,iBAAiB,CAACa,IAAI,CAAC,EACrC,IAAI,CAACX,YAAY,CAACe,IAAI,CAACL,EAAE,EAAEI,GAAG,CAAC,IAAIA,GAAG,KAAKF,MAAM,EAC/CnB,SAAS,CAACiB,EAAE,EAAEI,GAAG,EAAE;MAAEP,GAAG,EAAEA,CAAA,KAAMI,IAAI,CAACG,GAAG,CAAC;MAAEN,UAAU,EAAE,EAAEK,IAAI,GAAGjB,gBAAgB,CAACe,IAAI,EAAEG,GAAG,CAAC,CAAC,IAAID,IAAI,CAACL;IAAW,CAAC,CAAC;EACxH;EACA,OAAOE,EAAE;AACX,CAAC;AACD,IAAIM,YAAY,GAAIC,GAAG,IAAKR,WAAW,CAAChB,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE;EAAEyB,KAAK,EAAE;AAAK,CAAC,CAAC,EAAED,GAAG,CAAC;AAC1F,IAAIE,cAAc,GAAG,CAAC,CAAC;AACvBhB,QAAQ,CAACgB,cAAc,EAAE;EACvBC,OAAO,EAAEA,CAAA,KAAMC;AACjB,CAAC,CAAC;AACFC,MAAM,CAACC,OAAO,GAAGP,YAAY,CAACG,cAAc,CAAC;AAC7C,SAASK,IAAIA,CAACC,OAAO,EAAE;EACrB,IAAIC,EAAE,GAAGD,OAAO,CAACE,UAAU;EAC3B,IAAIC,OAAO,GAAG,IAAI;EAClB,IAAIC,EAAE,GAAG,eAAe;EACxB,IAAIC,SAAS,GAAG,CAAC;EACjB,IAAIC,GAAG,GAAG,GAAG;EACb,SAASC,MAAMA,CAACC,IAAI,EAAE;IACpB,IAAIC,MAAM,GAAGD,IAAI,CAACC,MAAM,IAAI,CAAC,CAAC;IAC9B,IAAIC,GAAG,GAAG,CAACD,MAAM,CAACE,UAAU,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAC;IAC9CR,EAAE,GAAG,CAACK,MAAM,CAACI,SAAS,IAAIT,EAAE,EAAEQ,QAAQ,CAAC,CAAC;IACxCN,GAAG,GAAGQ,MAAM,CAACL,MAAM,CAACM,QAAQ,IAAIT,GAAG,CAAC;IACpC,eAAeU,aAAaA,CAAA,EAAG;MAC7B,IAAIC,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;MACpB,IAAId,OAAO,IAAIc,GAAG,GAAGZ,SAAS,GAAGC,GAAG,EAAE;MACtC,IAAI,CAACI,GAAG,EAAE;MACV,IAAI;QACF,IAAIS,GAAG,GAAG,MAAMC,KAAK,CAACV,GAAG,CAAC;QAC1BP,OAAO,GAAG,MAAMgB,GAAG,CAACE,IAAI,CAAC,CAAC;QAC1BhB,SAAS,GAAGY,GAAG;MACjB,CAAC,CAAC,OAAOK,MAAM,EAAE,CACjB;IACF;IACA,IAAIC,KAAK,GAAG,IAAIC,KAAK,CAAChB,IAAI,CAACiB,eAAe,EAAE;MAC1C3C,GAAGA,CAACH,MAAM,EAAE+C,IAAI,EAAE;QAChB,IAAIA,IAAI,KAAK,wBAAwB,EAAE,OAAO/C,MAAM,CAAC+C,IAAI,CAAC;QAC1D,OAAO,kBAAiB;UACtB,KAAK,IAAIC,IAAI,GAAGC,SAAS,CAACC,MAAM,EAAEC,IAAI,GAAG,IAAIC,KAAK,CAACJ,IAAI,CAAC,EAAEK,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGL,IAAI,EAAEK,IAAI,EAAE,EAAE;YACvFF,IAAI,CAACE,IAAI,CAAC,GAAGJ,SAAS,CAACI,IAAI,CAAC;UAC9B;UACA,MAAMhB,aAAa,CAAC,CAAC;UACrB,OAAOrC,MAAM,CAACsD,sBAAsB,CAACC,KAAK,CAAC,IAAI,EAAEJ,IAAI,CAAC;QACxD,CAAC;MACH;IACF,CAAC,CAAC;IACF,SAASK,gBAAgBA,CAAA,EAAG;MAC1B,OAAOhC,OAAO,GAAG,CACf,2BAA2B,CAC5B,GAAG,EAAE;IACR;IACA,SAASiC,aAAaA,CAACC,QAAQ,EAAEC,eAAe,EAAEC,QAAQ,EAAEC,0BAA0B,EAAEC,OAAO,EAAE;MAC/F,IAAIJ,QAAQ,KAAK,2BAA2B,IAAIlC,OAAO,EAAE;QACvD,IAAIuC,OAAO,GAAGC,OAAO,CAACxC,OAAO,EAAEC,EAAE,CAAC;QAClC,OAAOH,EAAE,CAAC2C,gBAAgB,CAACP,QAAQ,EAAEK,OAAO,EAAEJ,eAAe,CAAC;MAChE;MACA,OAAO,KAAK,CAAC;IACf;IACA,OAAO;MACL,GAAGf,KAAK;MACRY,gBAAgB;MAChBC;IACF,CAAC;EACH;EACA,SAASO,OAAOA,CAACE,IAAI,EAAEC,GAAG,EAAE;IAC1B,IAAIC,gBAAgB;IACpB,IAAIC,KAAK,GAAG,EAAE;IACdA,KAAK,CAACC,IAAI,CAAC,mBAAmBH,GAAG,KAAK,CAAC;IACvC,IAAII,OAAO,GAAG,CAACL,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAACE,gBAAgB,GAAGF,IAAI,CAACM,UAAU,MAAM,IAAI,IAAIJ,gBAAgB,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,gBAAgB,CAACG,OAAO,KAAK,CAAC,CAAC;IAClL,IAAIE,KAAK,GAAGP,IAAI,CAACO,KAAK,IAAI,CAAC,CAAC;IAC5B,IAAIC,QAAQ,GAAG,eAAgB,IAAIC,GAAG,CAAC,CAAC;IACxC,IAAIC,yBAAyB,GAAG,IAAI;MAAEC,iBAAiB,GAAG,KAAK;MAAEC,cAAc,GAAG,KAAK,CAAC;IACxF,IAAI;MACF,KAAK,IAAIC,SAAS,GAAGzF,MAAM,CAAC0F,IAAI,CAACP,KAAK,CAAC,CAACQ,MAAM,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAEC,KAAK,EAAE,EAAEP,yBAAyB,GAAG,CAACO,KAAK,GAAGJ,SAAS,CAACK,IAAI,CAAC,CAAC,EAAEC,IAAI,CAAC,EAAET,yBAAyB,GAAG,IAAI,EAAE;QACnK,IAAIU,CAAC,GAAGH,KAAK,CAACrE,KAAK;QACnB,IAAIyE,KAAK,GAAGD,CAAC,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC;QACxC,IAAIC,GAAG,GAAGJ,KAAK,CAACK,OAAO,CAAC,UAAU,CAAC;QACnC,IAAID,GAAG,IAAI,CAAC,IAAIJ,KAAK,CAACI,GAAG,GAAG,CAAC,CAAC,EAAEjB,QAAQ,CAACmB,GAAG,CAACN,KAAK,CAACI,GAAG,GAAG,CAAC,CAAC,CAAC;MAC9D;IACF,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZjB,iBAAiB,GAAG,IAAI;MACxBC,cAAc,GAAGgB,GAAG;IACtB,CAAC,SAAS;MACR,IAAI;QACF,IAAI,CAAClB,yBAAyB,IAAIG,SAAS,CAACgB,MAAM,IAAI,IAAI,EAAE;UAC1DhB,SAAS,CAACgB,MAAM,CAAC,CAAC;QACpB;MACF,CAAC,SAAS;QACR,IAAIlB,iBAAiB,EAAE;UACrB,MAAMC,cAAc;QACtB;MACF;IACF;IACAT,KAAK,CAACC,IAAI,CAAC,2BAA2B,CACpC,GAAGI,QAAQ,CACZ,CAACsB,GAAG,CAAC,UAASC,CAAC,EAAE;MAChB,OAAO,IAAIA,CAAC,GAAG;IACjB,CAAC,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;IAC7B,IAAIC,0BAA0B,GAAG,IAAI;MAAEC,kBAAkB,GAAG,KAAK;MAAEC,eAAe,GAAG,KAAK,CAAC;IAC3F,IAAI;MACF,KAAK,IAAIC,UAAU,GAAGhH,MAAM,CAACiH,OAAO,CAAChC,OAAO,CAAC,CAACU,MAAM,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAEsB,MAAM,EAAE,EAAEL,0BAA0B,GAAG,CAACK,MAAM,GAAGF,UAAU,CAAClB,IAAI,CAAC,CAAC,EAAEC,IAAI,CAAC,EAAEc,0BAA0B,GAAG,IAAI,EAAE;QAC9K,IAAI,CAACjG,IAAI,EAAEuG,MAAM,CAAC,GAAGD,MAAM,CAAC1F,KAAK;QACjC,IAAI2F,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,MAAM,CAACC,IAAI,EAAE;UAC/D,IAAIC,OAAO,GAAGF,MAAM,CAACC,IAAI,CAACV,GAAG,CAAC,UAASY,CAAC,EAAE;YACxC,OAAOC,IAAI,CAACC,SAAS,CAACF,CAAC,CAAC;UAC1B,CAAC,CAAC,CAACV,IAAI,CAAC,KAAK,CAAC;UACd7B,KAAK,CAACC,IAAI,CAAC,iBAAiByC,IAAI,CAAC7G,IAAI,CAAC,MAAMyG,OAAO,EAAE,CAAC;UACtD;QACF;QACA,IAAI,CAACF,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,MAAM,CAACO,IAAI,MAAM,QAAQ,KAAKP,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,MAAM,CAACQ,UAAU,CAAC,EAAE;UACrJ5C,KAAK,CAACC,IAAI,CAAC,sBAAsByC,IAAI,CAAC7G,IAAI,CAAC,IAAI,CAAC;UAChD,IAAIgH,0BAA0B,GAAG,IAAI;YAAEC,kBAAkB,GAAG,KAAK;YAAEC,eAAe,GAAG,KAAK,CAAC;UAC3F,IAAI;YACF,KAAK,IAAIC,UAAU,GAAG/H,MAAM,CAACiH,OAAO,CAAC,CAACE,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,MAAM,CAACQ,UAAU,KAAK,CAAC,CAAC,CAAC,CAAChC,MAAM,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAEoC,MAAM,EAAE,EAAEJ,0BAA0B,GAAG,CAACI,MAAM,GAAGD,UAAU,CAACjC,IAAI,CAAC,CAAC,EAAEC,IAAI,CAAC,EAAE6B,0BAA0B,GAAG,IAAI,EAAE;cAChP,IAAI,CAACK,CAAC,EAAEC,CAAC,CAAC,GAAGF,MAAM,CAACxG,KAAK;cACzB,IAAI2G,CAAC,GAAGC,OAAO,CAACF,CAAC,CAAC;cAClB,IAAIG,EAAE,GAAGvE,KAAK,CAACwE,OAAO,CAACnB,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,MAAM,CAACoB,QAAQ,CAAC,GAAGpB,MAAM,CAACoB,QAAQ,GAAG,EAAE;cAC9G,IAAIC,QAAQ,GAAGH,EAAE,CAAC/B,OAAO,CAAC2B,CAAC,CAAC,KAAK,CAAC,CAAC;cACnClD,KAAK,CAACC,IAAI,CAAC,OAAOyC,IAAI,CAACQ,CAAC,CAAC,GAAGO,QAAQ,GAAG,GAAG,GAAG,EAAE,KAAKL,CAAC,EAAE,CAAC;YAC1D;UACF,CAAC,CAAC,OAAO3B,GAAG,EAAE;YACZqB,kBAAkB,GAAG,IAAI;YACzBC,eAAe,GAAGtB,GAAG;UACvB,CAAC,SAAS;YACR,IAAI;cACF,IAAI,CAACoB,0BAA0B,IAAIG,UAAU,CAACtB,MAAM,IAAI,IAAI,EAAE;gBAC5DsB,UAAU,CAACtB,MAAM,CAAC,CAAC;cACrB;YACF,CAAC,SAAS;cACR,IAAIoB,kBAAkB,EAAE;gBACtB,MAAMC,eAAe;cACvB;YACF;UACF;UACA/C,KAAK,CAACC,IAAI,CAAC,KAAK,CAAC;QACnB;MACF;IACF,CAAC,CAAC,OAAOwB,GAAG,EAAE;MACZM,kBAAkB,GAAG,IAAI;MACzBC,eAAe,GAAGP,GAAG;IACvB,CAAC,SAAS;MACR,IAAI;QACF,IAAI,CAACK,0BAA0B,IAAIG,UAAU,CAACP,MAAM,IAAI,IAAI,EAAE;UAC5DO,UAAU,CAACP,MAAM,CAAC,CAAC;QACrB;MACF,CAAC,SAAS;QACR,IAAIK,kBAAkB,EAAE;UACtB,MAAMC,eAAe;QACvB;MACF;IACF;IACAhC,KAAK,CAACC,IAAI,CAAC,GAAG,CAAC;IACf,OAAOD,KAAK,CAAC6B,IAAI,CAAC,IAAI,CAAC;EACzB;EACA,SAASa,IAAIA,CAACgB,CAAC,EAAE;IACf,OAAOA,CAAC,CAACC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;EACzC;EACA,SAASN,OAAOA,CAACF,CAAC,EAAE;IAClB,IAAIS,SAAS;IACb,IAAI,CAACT,CAAC,EAAE,OAAO,KAAK;IACpB,IAAIA,CAAC,CAACU,IAAI,EAAE,OAAOnB,IAAI,CAACS,CAAC,CAACU,IAAI,CAAC1C,KAAK,CAAC,GAAG,CAAC,CAAC2C,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;IACzD,IAAIV,CAAC,GAAGD,CAAC,CAACR,IAAI,KAAK,CAACiB,SAAS,GAAGT,CAAC,CAACf,MAAM,MAAM,IAAI,IAAIwB,SAAS,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,SAAS,CAACjB,IAAI,CAAC;IACrG,IAAIS,CAAC,KAAK,QAAQ,EAAE,OAAO,QAAQ;IACnC,IAAIA,CAAC,KAAK,SAAS,IAAIA,CAAC,KAAK,QAAQ,EAAE,OAAO,QAAQ;IACtD,IAAIA,CAAC,KAAK,SAAS,EAAE,OAAO,SAAS;IACrC,IAAIA,CAAC,KAAK,OAAO,EAAE,OAAO,GAAGC,OAAO,CAACF,CAAC,CAACY,KAAK,CAAC,IAAI;IACjD,IAAIX,CAAC,KAAK,QAAQ,EAAE,OAAO,qBAAqB;IAChD,OAAO,KAAK;EACd;EACA,OAAO;IACL7F;EACF,CAAC;AACH;AACA,IAAIX,cAAc,GAAGG,IAAI","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","plugin_exports","__export","default","plugin_default","module","exports","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","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"],"sources":["../../../src/plugin/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/realtime.cjs
CHANGED
|
@@ -40,11 +40,20 @@ function docRoomKey(doctype, name) {
|
|
|
40
40
|
}
|
|
41
41
|
class RealtimeModule {
|
|
42
42
|
socket;
|
|
43
|
+
/** Live EventSource when the `"sse"` transport is active. */
|
|
44
|
+
eventSource;
|
|
43
45
|
handlerMap = /* @__PURE__ */new Map();
|
|
44
46
|
/** Tracks events with socket listeners attached to prevent duplicates. */
|
|
45
47
|
attachedSocketEvents = /* @__PURE__ */new Set();
|
|
46
48
|
/** Stored socket event handler references for proper cleanup. */
|
|
47
49
|
socketEventHandlers = /* @__PURE__ */new Map();
|
|
50
|
+
/** Tracks SSE event types with listeners attached to prevent duplicates. */
|
|
51
|
+
attachedSseEvents = /* @__PURE__ */new Set();
|
|
52
|
+
/** Stored SSE listener references for proper cleanup. */
|
|
53
|
+
sseListeners = /* @__PURE__ */new Map();
|
|
54
|
+
/** One-shot debug notices for SSE's one-way limitations. */
|
|
55
|
+
sseRoomNoticeLogged = false;
|
|
56
|
+
sseEmitNoticeLogged = false;
|
|
48
57
|
/** Active doc rooms — re-emitted on every (re)connect. */
|
|
49
58
|
docRooms = /* @__PURE__ */new Map();
|
|
50
59
|
/** Active list rooms — re-emitted on every (re)connect. */
|
|
@@ -71,6 +80,18 @@ class RealtimeModule {
|
|
|
71
80
|
}
|
|
72
81
|
getSocketURL() {
|
|
73
82
|
const base = this.config.baseURL.replace(/\/$/, "");
|
|
83
|
+
if (this.config.socketBaseURL) {
|
|
84
|
+
const socketBase = this.config.socketBaseURL.replace(/\/$/, "");
|
|
85
|
+
let siteName = this.config.siteName;
|
|
86
|
+
if (!siteName) {
|
|
87
|
+
try {
|
|
88
|
+
siteName = new URL(base).hostname;
|
|
89
|
+
} catch {
|
|
90
|
+
siteName = base.replace(/^https?:\/\//, "").split(/[/:]/)[0];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return `${socketBase}/${siteName}`;
|
|
94
|
+
}
|
|
74
95
|
try {
|
|
75
96
|
const url = new URL(base);
|
|
76
97
|
const port = this.config.socketPort ? String(this.config.socketPort) : url.port;
|
|
@@ -159,8 +180,11 @@ class RealtimeModule {
|
|
|
159
180
|
for (const resolve of this.healthyWaiters) resolve(ok);
|
|
160
181
|
this.healthyWaiters.clear();
|
|
161
182
|
}
|
|
183
|
+
isSSE() {
|
|
184
|
+
return this.config.transport === "sse";
|
|
185
|
+
}
|
|
162
186
|
waitUntilHealthy(timeoutMs = 2e4) {
|
|
163
|
-
if (this.
|
|
187
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
164
188
|
return new Promise(resolve => {
|
|
165
189
|
const timer = setTimeout(() => {
|
|
166
190
|
this.healthyWaiters.delete(onReady);
|
|
@@ -174,8 +198,8 @@ class RealtimeModule {
|
|
|
174
198
|
});
|
|
175
199
|
}
|
|
176
200
|
async ensureConnected() {
|
|
177
|
-
if (this.
|
|
178
|
-
if (!this.socket && !this.isConnecting) {
|
|
201
|
+
if (this.isHealthy()) return;
|
|
202
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
179
203
|
await this.connect();
|
|
180
204
|
}
|
|
181
205
|
await this.waitUntilHealthy();
|
|
@@ -189,7 +213,16 @@ class RealtimeModule {
|
|
|
189
213
|
this.socket.emit("doctype_subscribe", room.doctype);
|
|
190
214
|
}
|
|
191
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
218
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
219
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
220
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
221
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
222
|
+
* connect is in flight.
|
|
223
|
+
*/
|
|
192
224
|
async connect() {
|
|
225
|
+
if (this.isSSE()) return this.connectSSE();
|
|
193
226
|
if (this.socket || this.isConnecting) return;
|
|
194
227
|
this.isConnecting = true;
|
|
195
228
|
try {
|
|
@@ -218,6 +251,153 @@ class RealtimeModule {
|
|
|
218
251
|
throw err;
|
|
219
252
|
}
|
|
220
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
256
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
257
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
258
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
259
|
+
* reimplemented here.
|
|
260
|
+
*/
|
|
261
|
+
async connectSSE() {
|
|
262
|
+
if (this.eventSource || this.isConnecting) return;
|
|
263
|
+
this.isConnecting = true;
|
|
264
|
+
try {
|
|
265
|
+
const sse = this.config.sse;
|
|
266
|
+
const EventSourceCtor = sse?.EventSource ?? globalThis.EventSource;
|
|
267
|
+
if (!EventSourceCtor) {
|
|
268
|
+
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.');
|
|
269
|
+
}
|
|
270
|
+
const url = await this.buildSSEURL();
|
|
271
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
272
|
+
withCredentials: sse?.withCredentials
|
|
273
|
+
});
|
|
274
|
+
this.initSSEHandlers();
|
|
275
|
+
} catch (err) {
|
|
276
|
+
this.isConnecting = false;
|
|
277
|
+
this.resolveHealthyWaiters(false);
|
|
278
|
+
throw err;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
async buildSSEURL() {
|
|
282
|
+
const sse = this.config.sse;
|
|
283
|
+
let url;
|
|
284
|
+
if (sse?.url) {
|
|
285
|
+
url = sse.url;
|
|
286
|
+
} else if (sse?.path) {
|
|
287
|
+
const base = this.config.baseURL.replace(/\/$/, "");
|
|
288
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
289
|
+
} else {
|
|
290
|
+
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.');
|
|
291
|
+
}
|
|
292
|
+
const params = Object.entries(this.config.sse?.queryParams ?? {});
|
|
293
|
+
if (params.length === 0) return url;
|
|
294
|
+
const parts = [];
|
|
295
|
+
for (const [key, value] of params) {
|
|
296
|
+
const resolved = typeof value === "function" ? await value() : value;
|
|
297
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
298
|
+
}
|
|
299
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
300
|
+
}
|
|
301
|
+
initSSEHandlers() {
|
|
302
|
+
this.attachedSseEvents.clear();
|
|
303
|
+
this.sseListeners.clear();
|
|
304
|
+
this.attachSSEListener("open");
|
|
305
|
+
this.attachSSEListener("error");
|
|
306
|
+
this.attachSSEListener("message");
|
|
307
|
+
for (const type of this.config.sse?.events ?? []) {
|
|
308
|
+
this.attachSSEListener(type);
|
|
309
|
+
}
|
|
310
|
+
for (const event of this.handlerMap.keys()) {
|
|
311
|
+
this.attachSSEListener(event);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
attachSSEListener(type) {
|
|
315
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
316
|
+
const listener = event => {
|
|
317
|
+
this.handleSSEEvent(type, event);
|
|
318
|
+
};
|
|
319
|
+
this.sseListeners.set(type, listener);
|
|
320
|
+
this.attachedSseEvents.add(type);
|
|
321
|
+
this.eventSource.addEventListener(type, listener);
|
|
322
|
+
}
|
|
323
|
+
detachSSEListener(type) {
|
|
324
|
+
if (this.isCoreSSEType(type)) return;
|
|
325
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
326
|
+
const listener = this.sseListeners.get(type);
|
|
327
|
+
if (listener) {
|
|
328
|
+
this.eventSource.removeEventListener(type, listener);
|
|
329
|
+
this.sseListeners.delete(type);
|
|
330
|
+
}
|
|
331
|
+
this.attachedSseEvents.delete(type);
|
|
332
|
+
}
|
|
333
|
+
isCoreSSEType(type) {
|
|
334
|
+
return type === "open" || type === "error" || type === "message" || (this.config.sse?.events ?? []).includes(type);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
338
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
339
|
+
* carrying `data` is a server frame — including frames the server
|
|
340
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
341
|
+
* must not be mistaken for connection errors.
|
|
342
|
+
*/
|
|
343
|
+
handleSSEEvent(type, event) {
|
|
344
|
+
if (event?.data === void 0) {
|
|
345
|
+
if (type === "open") {
|
|
346
|
+
this.isConnecting = false;
|
|
347
|
+
this.socketHealthy = true;
|
|
348
|
+
this.emitToHandlers("connected", {
|
|
349
|
+
transport: "sse"
|
|
350
|
+
});
|
|
351
|
+
this.resolveHealthyWaiters(true);
|
|
352
|
+
} else if (type === "error") {
|
|
353
|
+
this.isConnecting = false;
|
|
354
|
+
this.socketHealthy = false;
|
|
355
|
+
this.emitToHandlers("disconnect", {
|
|
356
|
+
reason: "sse-error"
|
|
357
|
+
});
|
|
358
|
+
this.resolveHealthyWaiters(false);
|
|
359
|
+
}
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
const frame = {
|
|
363
|
+
type,
|
|
364
|
+
data: String(event.data),
|
|
365
|
+
lastEventId: event.lastEventId ?? ""
|
|
366
|
+
};
|
|
367
|
+
const mapFrame = this.config.sse?.mapFrame;
|
|
368
|
+
if (mapFrame) {
|
|
369
|
+
let mapped;
|
|
370
|
+
try {
|
|
371
|
+
mapped = mapFrame(frame);
|
|
372
|
+
} catch (err) {
|
|
373
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if (!mapped) return;
|
|
377
|
+
for (const {
|
|
378
|
+
event: mappedEvent,
|
|
379
|
+
payload: payload2
|
|
380
|
+
} of mapped) {
|
|
381
|
+
this.emitToHandlers(mappedEvent, payload2);
|
|
382
|
+
}
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
let payload = frame.data;
|
|
386
|
+
try {
|
|
387
|
+
payload = JSON.parse(frame.data);
|
|
388
|
+
} catch {}
|
|
389
|
+
this.emitToHandlers(frame.type, payload);
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
393
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
394
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
395
|
+
*/
|
|
396
|
+
logSSERoomNoticeOnce() {
|
|
397
|
+
if (this.sseRoomNoticeLogged) return;
|
|
398
|
+
this.sseRoomNoticeLogged = true;
|
|
399
|
+
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.");
|
|
400
|
+
}
|
|
221
401
|
/**
|
|
222
402
|
* Tear down the socket without clearing app handlers or room subscriptions.
|
|
223
403
|
* Used by auth refresh so listeners/rooms survive credential rotation.
|
|
@@ -230,8 +410,17 @@ class RealtimeModule {
|
|
|
230
410
|
this.socket.disconnect();
|
|
231
411
|
this.socket = void 0;
|
|
232
412
|
}
|
|
413
|
+
if (this.eventSource) {
|
|
414
|
+
for (const [type, listener] of this.sseListeners) {
|
|
415
|
+
this.eventSource.removeEventListener(type, listener);
|
|
416
|
+
}
|
|
417
|
+
this.eventSource.close();
|
|
418
|
+
this.eventSource = void 0;
|
|
419
|
+
}
|
|
233
420
|
this.attachedSocketEvents.clear();
|
|
234
421
|
this.socketEventHandlers.clear();
|
|
422
|
+
this.attachedSseEvents.clear();
|
|
423
|
+
this.sseListeners.clear();
|
|
235
424
|
this.socketHealthy = false;
|
|
236
425
|
this.isConnecting = false;
|
|
237
426
|
this.resolveHealthyWaiters(false);
|
|
@@ -308,7 +497,11 @@ class RealtimeModule {
|
|
|
308
497
|
this.handlerMap.set(event, handlerSet);
|
|
309
498
|
}
|
|
310
499
|
handlerSet.add(handler);
|
|
311
|
-
this.
|
|
500
|
+
if (this.isSSE()) {
|
|
501
|
+
this.attachSSEListener(event);
|
|
502
|
+
} else {
|
|
503
|
+
this.attachSocketListener(event);
|
|
504
|
+
}
|
|
312
505
|
}
|
|
313
506
|
off(event, handler) {
|
|
314
507
|
const handlerSet = this.handlerMap.get(event);
|
|
@@ -316,7 +509,11 @@ class RealtimeModule {
|
|
|
316
509
|
handlerSet.delete(handler);
|
|
317
510
|
if (handlerSet.size === 0) {
|
|
318
511
|
this.handlerMap.delete(event);
|
|
319
|
-
this.
|
|
512
|
+
if (this.isSSE()) {
|
|
513
|
+
this.detachSSEListener(event);
|
|
514
|
+
} else {
|
|
515
|
+
this.detachSocketListener(event);
|
|
516
|
+
}
|
|
320
517
|
}
|
|
321
518
|
}
|
|
322
519
|
async subscribeDoc(doctype, name) {
|
|
@@ -324,14 +521,15 @@ class RealtimeModule {
|
|
|
324
521
|
doctype,
|
|
325
522
|
name
|
|
326
523
|
});
|
|
524
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
327
525
|
await this.ensureConnected();
|
|
328
|
-
if (this.socket && this.socketHealthy) {
|
|
526
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
329
527
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
330
528
|
}
|
|
331
529
|
}
|
|
332
530
|
unsubscribeDoc(doctype, name) {
|
|
333
531
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
334
|
-
if (this.socket && this.socketHealthy) {
|
|
532
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
335
533
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
336
534
|
}
|
|
337
535
|
this.teardownWhenIdle();
|
|
@@ -348,14 +546,15 @@ class RealtimeModule {
|
|
|
348
546
|
doctype,
|
|
349
547
|
filters
|
|
350
548
|
});
|
|
549
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
351
550
|
await this.ensureConnected();
|
|
352
|
-
if (this.socket && this.socketHealthy) {
|
|
551
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
353
552
|
this.socket.emit("doctype_subscribe", doctype);
|
|
354
553
|
}
|
|
355
554
|
}
|
|
356
555
|
unsubscribeList(doctype) {
|
|
357
556
|
this.listRooms.delete(doctype);
|
|
358
|
-
if (this.socket && this.socketHealthy) {
|
|
557
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
359
558
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
360
559
|
}
|
|
361
560
|
this.teardownWhenIdle();
|
|
@@ -371,13 +570,14 @@ class RealtimeModule {
|
|
|
371
570
|
*/
|
|
372
571
|
teardownWhenIdle() {
|
|
373
572
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
374
|
-
if (!this.socket && !this.isConnecting) return;
|
|
573
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
375
574
|
this.emitToHandlers("disconnect", {
|
|
376
575
|
reason: "idle-teardown"
|
|
377
576
|
});
|
|
378
577
|
this.softDisconnect();
|
|
379
578
|
}
|
|
380
579
|
isHealthy() {
|
|
580
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
381
581
|
return this.socketHealthy && this.socket?.connected === true;
|
|
382
582
|
}
|
|
383
583
|
disconnect() {
|
|
@@ -388,13 +588,20 @@ class RealtimeModule {
|
|
|
388
588
|
}
|
|
389
589
|
async updateAuth(auth) {
|
|
390
590
|
this.config.auth = auth;
|
|
391
|
-
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
591
|
+
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
392
592
|
this.softDisconnect();
|
|
393
593
|
if (shouldReconnect) {
|
|
394
594
|
await this.connect();
|
|
395
595
|
}
|
|
396
596
|
}
|
|
397
597
|
emit(event, data) {
|
|
598
|
+
if (this.isSSE()) {
|
|
599
|
+
if (!this.sseEmitNoticeLogged) {
|
|
600
|
+
this.sseEmitNoticeLogged = true;
|
|
601
|
+
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.");
|
|
602
|
+
}
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
398
605
|
if (this.socket && this.socketHealthy) {
|
|
399
606
|
this.socket.emit(event, data);
|
|
400
607
|
}
|
|
@@ -402,4 +609,20 @@ class RealtimeModule {
|
|
|
402
609
|
getSocket() {
|
|
403
610
|
return this.socket;
|
|
404
611
|
}
|
|
612
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
613
|
+
getEventSource() {
|
|
614
|
+
return this.eventSource;
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
618
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
619
|
+
* consult them to filter or route frames.
|
|
620
|
+
*/
|
|
621
|
+
getDocRooms() {
|
|
622
|
+
return [...this.docRooms.values()];
|
|
623
|
+
}
|
|
624
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
625
|
+
getListRooms() {
|
|
626
|
+
return [...this.listRooms.values()];
|
|
627
|
+
}
|
|
405
628
|
}
|