@multiplatform.one/frappe 7.10.0 → 7.15.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 +59 -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.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 +25 -43
- package/dist/cjs/doctype.native.js +27 -43
- 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.cjs +3 -0
- package/dist/cjs/fixtures.native.js +3 -0
- package/dist/cjs/fixtures.native.js.map +1 -1
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +67 -31
- package/dist/cjs/frappeReact.native.js +87 -34
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.native.js +9 -2
- package/dist/cjs/index.native.js.map +1 -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.native.js.map +1 -1
- package/dist/cjs/serverLoaders.cjs +74 -0
- package/dist/cjs/serverLoaders.native.js +88 -0
- package/dist/cjs/serverLoaders.native.js.map +1 -0
- 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 +99 -14
- package/dist/cjs/sync/index.native.js +129 -14
- 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.native.js.map +1 -1
- 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.cjs +4 -0
- package/dist/cjs/sync/rehydration.native.js +6 -0
- 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/syncOptionsKey.cjs +59 -0
- package/dist/cjs/syncOptionsKey.native.js +82 -0
- package/dist/cjs/syncOptionsKey.native.js.map +1 -0
- package/dist/cjs/useLiveQuery.cjs +2 -20
- package/dist/cjs/useLiveQuery.native.js +1 -22
- 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.map +1 -1
- package/dist/esm/common/types.native.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/esm/devtools/index.native.js.map +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 +23 -44
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +25 -44
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/fixtures.mjs +3 -0
- package/dist/esm/fixtures.mjs.map +1 -1
- package/dist/esm/fixtures.native.js +3 -0
- package/dist/esm/fixtures.native.js.map +1 -1
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +68 -33
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +87 -35
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +4 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +4 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/optimistic.native.js.map +1 -1
- package/dist/esm/pacer.native.js.map +1 -1
- package/dist/esm/plugin/index.native.js.map +1 -1
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/serverLoaders.mjs +48 -0
- package/dist/esm/serverLoaders.mjs.map +1 -0
- package/dist/esm/serverLoaders.native.js +59 -0
- package/dist/esm/serverLoaders.native.js.map +1 -0
- 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 +99 -14
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +129 -14
- 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.native.js.map +1 -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.map +1 -1
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.mjs +4 -0
- package/dist/esm/sync/rehydration.mjs.map +1 -1
- package/dist/esm/sync/rehydration.native.js +6 -0
- 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.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.map +1 -1
- package/dist/esm/syncOptionsKey.mjs +34 -0
- package/dist/esm/syncOptionsKey.mjs.map +1 -0
- package/dist/esm/syncOptionsKey.native.js +54 -0
- package/dist/esm/syncOptionsKey.native.js.map +1 -0
- package/dist/esm/useLiveQuery.mjs +1 -19
- package/dist/esm/useLiveQuery.mjs.map +1 -1
- package/dist/esm/useLiveQuery.native.js +1 -22
- package/dist/esm/useLiveQuery.native.js.map +1 -1
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/auth.native.js.map +1 -1
- package/dist/jsx/call.native.js.map +1 -1
- package/dist/jsx/collection.native.js.map +1 -1
- package/dist/jsx/common/types.native.js.map +1 -1
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/core/types.native.js.map +1 -1
- package/dist/jsx/core/wire.native.js.map +1 -1
- package/dist/jsx/db.native.js.map +1 -1
- package/dist/jsx/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/jsx/devtools/index.native.js.map +1 -1
- package/dist/jsx/devtools/plugin.native.js.map +1 -1
- package/dist/jsx/devtools/theme.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +23 -44
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +27 -43
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/file.native.js.map +1 -1
- package/dist/jsx/fixtureDb.native.js.map +1 -1
- package/dist/jsx/fixtures.mjs +3 -0
- package/dist/jsx/fixtures.mjs.map +1 -1
- package/dist/jsx/fixtures.native.js +3 -0
- package/dist/jsx/fixtures.native.js.map +1 -1
- package/dist/jsx/frappeApp.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +68 -33
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +87 -34
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +4 -3
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +4 -3
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -2
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/optimistic.native.js.map +1 -1
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/plugin/index.native.js.map +1 -1
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/serverLoaders.mjs +48 -0
- package/dist/jsx/serverLoaders.mjs.map +1 -0
- package/dist/jsx/serverLoaders.native.js +88 -0
- package/dist/jsx/serverLoaders.native.js.map +1 -0
- package/dist/jsx/sync/backfill.native.js.map +1 -1
- package/dist/jsx/sync/filters.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +99 -14
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +129 -14
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/merge.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
- package/dist/jsx/sync/persistence.native.js.map +1 -1
- package/dist/jsx/sync/realtime.native.js.map +1 -1
- package/dist/jsx/sync/rehydration.mjs +4 -0
- package/dist/jsx/sync/rehydration.mjs.map +1 -1
- package/dist/jsx/sync/rehydration.native.js +6 -0
- package/dist/jsx/sync/rehydration.native.js.map +1 -1
- package/dist/jsx/sync/storage.native.js.map +1 -1
- package/dist/jsx/sync/subscriptionManager.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/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
- package/dist/jsx/syncOptionsKey.mjs +34 -0
- package/dist/jsx/syncOptionsKey.mjs.map +1 -0
- package/dist/jsx/syncOptionsKey.native.js +82 -0
- package/dist/jsx/syncOptionsKey.native.js.map +1 -0
- package/dist/jsx/useLiveQuery.mjs +1 -19
- package/dist/jsx/useLiveQuery.mjs.map +1 -1
- package/dist/jsx/useLiveQuery.native.js +1 -22
- package/dist/jsx/useLiveQuery.native.js.map +1 -1
- package/dist/jsx/util.native.js.map +1 -1
- package/package.json +12 -12
- package/src/doctype.spec.ts +148 -5
- package/src/doctype.ts +202 -173
- package/src/fixtures.ts +1 -0
- package/src/frappeReact.catchUp.spec.tsx +105 -0
- package/src/frappeReact.hydration.spec.tsx +164 -0
- package/src/frappeReact.spec.ts +56 -0
- package/src/frappeReact.ts +93 -43
- package/src/index.ts +14 -0
- package/src/serverLoaders.ts +77 -0
- package/src/sync/catchUp.spec.ts +142 -0
- package/src/sync/index.ts +106 -9
- package/src/sync/rehydration.ts +5 -0
- package/src/sync/syncModule.spec.ts +20 -0
- package/src/sync/types.ts +9 -1
- package/src/syncOptionsKey.spec.ts +46 -0
- package/src/syncOptionsKey.ts +45 -0
- package/src/useLiveQuery.hydration.spec.tsx +129 -0
- package/src/useLiveQuery.spec.ts +3 -11
- package/src/useLiveQuery.ts +3 -57
- package/types/doctype.d.ts +117 -33
- package/types/doctype.d.ts.map +1 -1
- package/types/fixtures.d.ts.map +1 -1
- package/types/frappeReact.d.ts +9 -3
- package/types/frappeReact.d.ts.map +1 -1
- package/types/index.d.ts +6 -5
- package/types/index.d.ts.map +1 -1
- package/types/serverLoaders.d.ts +40 -0
- package/types/serverLoaders.d.ts.map +1 -0
- package/types/sync/index.d.ts +15 -1
- package/types/sync/index.d.ts.map +1 -1
- package/types/sync/rehydration.d.ts +2 -0
- package/types/sync/rehydration.d.ts.map +1 -1
- package/types/sync/types.d.ts +8 -1
- package/types/sync/types.d.ts.map +1 -1
- package/types/syncOptionsKey.d.ts +3 -0
- package/types/syncOptionsKey.d.ts.map +1 -0
- package/types/useLiveQuery.d.ts +3 -13
- package/types/useLiveQuery.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","filters_exports","__export","FilterOperator","canEvaluateClientSide","extractFilterFields","extractSingleName","formatFilter","getClientEvaluationBlockers","hasServerOnlyOperators","isTreeOperator","matchesFilters","normalizeFilters","validateFilters","module","exports","_type_of","obj","Symbol","constructor","FilterOperator2","normalizeOperator","operator","String","toLowerCase","doc","filters","Array","isArray","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","filterTuple","fieldName","operatorRaw","expectedValue","documentValue","evaluateFilterCondition","err","return","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","Object","entries","_step1","fieldName1","expectedValue1","isOperator","_len","arguments","length","enumValues","_key","some","enumValue","areComparableValues","a","b","compareAsNumbers","comparison","numberA","Number","numberB","isNaN","includes","evaluateLikePattern","min","max","pattern","negate","patternStr","valueStr","matches","startsWith","endsWith","slice","normalizedOperator","name","STANDARD_FIELDS","Set","TEXT_FIELD_TYPES","COMPARABLE_FIELD_TYPES","VALID_OPERATORS","values","map","v","schema","options","errors","warnings","strict","valid","fieldMap","Map","f","fieldname","schemaField","get","has","push","field","message","code","fieldType","fieldtype","keys","schemaField1"],"sources":["../../../src/sync/filters.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
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","filters_exports","FilterOperator","canEvaluateClientSide","extractFilterFields","extractSingleName","formatFilter","getClientEvaluationBlockers","hasServerOnlyOperators","isTreeOperator","matchesFilters","normalizeFilters","validateFilters","module","exports","_type_of","obj","Symbol","constructor","FilterOperator2","normalizeOperator","operator","String","toLowerCase","doc","filters","Array","isArray","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","filterTuple","fieldName","operatorRaw","expectedValue","documentValue","evaluateFilterCondition","err","return","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","entries","_step1","fieldName1","expectedValue1","isOperator","_len","arguments","length","enumValues","_key","some","enumValue","areComparableValues","a","b","compareAsNumbers","comparison","numberA","Number","numberB","isNaN","includes","evaluateLikePattern","min","max","pattern","negate","patternStr","valueStr","matches","startsWith","endsWith","slice","normalizedOperator","STANDARD_FIELDS","Set","TEXT_FIELD_TYPES","COMPARABLE_FIELD_TYPES","VALID_OPERATORS","values","map","v","schema","options","errors","warnings","strict","valid","fieldMap","Map","f","fieldname","schemaField","has","push","field","message","code","fieldType","fieldtype","keys","schemaField1","param","normalized","c","condition","displayValue","JSON","stringify","join","SERVER_ONLY_OPERATORS","blockers","normalizedOp"],"sources":["filters.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 filters_exports = {};\n__export(filters_exports, {\n FilterOperator: () => FilterOperator,\n canEvaluateClientSide: () => canEvaluateClientSide,\n extractFilterFields: () => extractFilterFields,\n extractSingleName: () => extractSingleName,\n formatFilter: () => formatFilter,\n getClientEvaluationBlockers: () => getClientEvaluationBlockers,\n hasServerOnlyOperators: () => hasServerOnlyOperators,\n isTreeOperator: () => isTreeOperator,\n matchesFilters: () => matchesFilters,\n normalizeFilters: () => normalizeFilters,\n validateFilters: () => validateFilters\n});\nmodule.exports = __toCommonJS(filters_exports);\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nvar FilterOperator = /* @__PURE__ */ (function(FilterOperator2) {\n FilterOperator2[\"AncestorsOf\"] = \"ancestors of\";\n FilterOperator2[\"Between\"] = \"between\";\n FilterOperator2[\"DescendantsOf\"] = \"descendants of\";\n FilterOperator2[\"DoubleEquals\"] = \"==\";\n FilterOperator2[\"Equals\"] = \"=\";\n FilterOperator2[\"GreaterThan\"] = \">\";\n FilterOperator2[\"GreaterThanOrEqual\"] = \">=\";\n FilterOperator2[\"In\"] = \"in\";\n FilterOperator2[\"Is\"] = \"is\";\n FilterOperator2[\"IsNot\"] = \"is not\";\n FilterOperator2[\"LessThan\"] = \"<\";\n FilterOperator2[\"LessThanOrEqual\"] = \"<=\";\n FilterOperator2[\"Like\"] = \"like\";\n FilterOperator2[\"NotAncestorsOf\"] = \"not ancestors of\";\n FilterOperator2[\"NotDescendantsOf\"] = \"not descendants of\";\n FilterOperator2[\"NotEquals\"] = \"!=\";\n FilterOperator2[\"NotEqualsAngle\"] = \"<>\";\n FilterOperator2[\"NotIn\"] = \"not in\";\n FilterOperator2[\"NotLike\"] = \"not like\";\n return FilterOperator2;\n})({});\nfunction normalizeOperator(operator) {\n return String(operator).toLowerCase();\n}\nfunction matchesFilters(doc, filters) {\n if (!filters) return true;\n if (Array.isArray(filters)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = filters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var filterTuple = _step.value;\n var [fieldName, operatorRaw, expectedValue] = filterTuple;\n var documentValue = doc === null || doc === void 0 ? void 0 : doc[fieldName];\n var operator = normalizeOperator(operatorRaw);\n if (!evaluateFilterCondition(documentValue, operator, expectedValue)) {\n return false;\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 return true;\n }\n if ((typeof filters === \"undefined\" ? \"undefined\" : _type_of(filters)) === \"object\") {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = Object.entries(filters)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var [fieldName1, expectedValue1] = _step1.value;\n if ((doc === null || doc === void 0 ? void 0 : doc[fieldName1]) !== expectedValue1) return false;\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 return true;\n }\n return true;\n}\nfunction isOperator(operator) {\n for (var _len = arguments.length, enumValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n enumValues[_key - 1] = arguments[_key];\n }\n return enumValues.some(function(enumValue) {\n return enumValue.toLowerCase() === operator.toLowerCase();\n });\n}\nfunction areComparableValues(a, b) {\n return a != null && b != null && (typeof a === \"number\" || typeof a === \"string\") && (typeof b === \"number\" || typeof b === \"string\");\n}\nfunction compareAsNumbers(a, b, comparison) {\n if (!areComparableValues(a, b)) return false;\n var numberA = Number(a);\n var numberB = Number(b);\n if (Number.isNaN(numberA) || Number.isNaN(numberB)) return false;\n return comparison(numberA, numberB);\n}\nfunction evaluateFilterCondition(documentValue, operator, expectedValue) {\n if (isOperator(operator, \"=\", \"==\")) {\n return documentValue === expectedValue;\n }\n if (isOperator(operator, \"!=\", \"<>\")) {\n return documentValue !== expectedValue;\n }\n if (isOperator(operator, \"<\")) {\n return compareAsNumbers(documentValue, expectedValue, function(a, b) {\n return a < b;\n });\n }\n if (isOperator(operator, \"<=\")) {\n return compareAsNumbers(documentValue, expectedValue, function(a, b) {\n return a <= b;\n });\n }\n if (isOperator(operator, \">\")) {\n return compareAsNumbers(documentValue, expectedValue, function(a, b) {\n return a > b;\n });\n }\n if (isOperator(operator, \">=\")) {\n return compareAsNumbers(documentValue, expectedValue, function(a, b) {\n return a >= b;\n });\n }\n if (isOperator(operator, \"in\")) {\n return Array.isArray(expectedValue) && expectedValue.includes(documentValue);\n }\n if (isOperator(operator, \"not in\")) {\n return !Array.isArray(expectedValue) || !expectedValue.includes(documentValue);\n }\n if (isOperator(operator, \"like\")) {\n return evaluateLikePattern(documentValue, expectedValue, false);\n }\n if (isOperator(operator, \"not like\")) {\n return !evaluateLikePattern(documentValue, expectedValue, false);\n }\n if (isOperator(operator, \"is\") && (expectedValue === null || expectedValue === \"null\")) {\n return documentValue === null || documentValue === void 0;\n }\n if (isOperator(operator, \"is not\") && (expectedValue === null || expectedValue === \"null\")) {\n return documentValue !== null && documentValue !== void 0;\n }\n if (isOperator(operator, \"between\") && Array.isArray(expectedValue) && expectedValue.length === 2) {\n var [min, max] = expectedValue;\n return compareAsNumbers(documentValue, min, function(a, b) {\n return a >= b;\n }) && compareAsNumbers(documentValue, max, function(a, b) {\n return a <= b;\n });\n }\n return false;\n}\nfunction evaluateLikePattern(documentValue, pattern, negate) {\n var patternStr = String(pattern || \"\").toLowerCase();\n var valueStr = String(documentValue || \"\").toLowerCase();\n var matches = false;\n if (patternStr.startsWith(\"%\") && patternStr.endsWith(\"%\")) {\n matches = valueStr.includes(patternStr.slice(1, -1));\n } else if (patternStr.startsWith(\"%\")) {\n matches = valueStr.endsWith(patternStr.slice(1));\n } else if (patternStr.endsWith(\"%\")) {\n matches = valueStr.startsWith(patternStr.slice(0, -1));\n } else {\n matches = valueStr.includes(patternStr);\n }\n return negate ? !matches : matches;\n}\nfunction extractSingleName(filters) {\n if (!filters) return void 0;\n if (Array.isArray(filters)) {\n if (filters.length === 1) {\n var [fieldName, operatorRaw, value] = filters[0];\n var normalizedOperator = normalizeOperator(operatorRaw);\n if (fieldName === \"name\" && isOperator(normalizedOperator, \"=\", \"==\")) {\n return typeof value === \"string\" ? value : void 0;\n }\n }\n return;\n }\n if ((typeof filters === \"undefined\" ? \"undefined\" : _type_of(filters)) === \"object\" && filters.name && typeof filters.name === \"string\") {\n return filters.name;\n }\n}\nvar STANDARD_FIELDS = /* @__PURE__ */ new Set([\n \"name\",\n \"creation\",\n \"modified\",\n \"modified_by\",\n \"owner\",\n \"docstatus\",\n \"idx\",\n \"doctype\",\n \"_user_tags\",\n \"_comments\",\n \"_assign\",\n \"_liked_by\"\n]);\nvar TEXT_FIELD_TYPES = /* @__PURE__ */ new Set([\n \"Data\",\n \"Text\",\n \"Small Text\",\n \"Long Text\",\n \"Link\",\n \"Select\",\n \"Dynamic Link\",\n \"Text Editor\",\n \"Code\",\n \"HTML Editor\",\n \"Markdown Editor\",\n \"Password\",\n \"Read Only\"\n]);\nvar COMPARABLE_FIELD_TYPES = /* @__PURE__ */ new Set([\n \"Int\",\n \"Float\",\n \"Currency\",\n \"Percent\",\n \"Date\",\n \"Datetime\",\n \"Time\",\n \"Duration\",\n \"Rating\"\n]);\nvar VALID_OPERATORS = new Set(Object.values(FilterOperator).map(function(v) {\n return v.toLowerCase();\n}));\nfunction validateFilters(filters, schema) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var errors = [];\n var warnings = [];\n var { strict = false } = options;\n if (!filters) {\n return {\n valid: true,\n errors,\n warnings\n };\n }\n var fieldMap = new Map(schema.map(function(f) {\n return [\n f.fieldname,\n f\n ];\n }));\n if (Array.isArray(filters)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = filters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var filterTuple = _step.value;\n var [fieldName, operatorRaw, value] = filterTuple;\n var schemaField = fieldMap.get(fieldName);\n var operator = normalizeOperator(operatorRaw);\n if (!schemaField && !STANDARD_FIELDS.has(fieldName)) {\n if (strict) {\n errors.push({\n field: fieldName,\n message: `Unknown field \"${fieldName}\" in doctype schema`,\n code: \"unknown_field\"\n });\n } else {\n warnings.push(`Field \"${fieldName}\" not found in schema - may be a virtual or custom field`);\n }\n continue;\n }\n if (!VALID_OPERATORS.has(operator)) {\n errors.push({\n field: fieldName,\n message: `Invalid operator \"${operatorRaw}\" for field \"${fieldName}\"`,\n code: \"invalid_operator\"\n });\n continue;\n }\n if (schemaField) {\n var fieldType = schemaField.fieldtype;\n if (isOperator(operator, \"like\", \"not like\") && !TEXT_FIELD_TYPES.has(fieldType)) {\n warnings.push(`LIKE operator on non-text field \"${fieldName}\" (${fieldType}) may not work as expected`);\n }\n if (isOperator(operator, \">\", \"<\", \">=\", \"<=\", \"between\") && !COMPARABLE_FIELD_TYPES.has(fieldType)) {\n warnings.push(`Comparison operator on non-numeric/date field \"${fieldName}\" (${fieldType}) may not work as expected`);\n }\n if (isOperator(operator, \"in\", \"not in\") && !Array.isArray(value)) {\n errors.push({\n field: fieldName,\n message: `IN/NOT IN operator requires an array value for field \"${fieldName}\"`,\n code: \"invalid_value\"\n });\n }\n if (isOperator(operator, \"between\")) {\n if (!Array.isArray(value) || value.length !== 2) {\n errors.push({\n field: fieldName,\n message: `BETWEEN operator requires an array of exactly 2 values for field \"${fieldName}\"`,\n code: \"invalid_value\"\n });\n }\n }\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 } else if ((typeof filters === \"undefined\" ? \"undefined\" : _type_of(filters)) === \"object\") {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = Object.keys(filters)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var fieldName1 = _step1.value;\n var schemaField1 = fieldMap.get(fieldName1);\n if (!schemaField1 && !STANDARD_FIELDS.has(fieldName1)) {\n if (strict) {\n errors.push({\n field: fieldName1,\n message: `Unknown field \"${fieldName1}\" in doctype schema`,\n code: \"unknown_field\"\n });\n } else {\n warnings.push(`Field \"${fieldName1}\" not found in schema - may be a virtual or custom field`);\n }\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 }\n return {\n valid: errors.length === 0,\n errors,\n warnings\n };\n}\nfunction normalizeFilters(filters) {\n if (!filters) return [];\n if (Array.isArray(filters)) {\n return filters;\n }\n return Object.entries(filters).map(function(param) {\n var [field, value] = param;\n return [\n field,\n \"=\",\n value\n ];\n });\n}\nfunction extractFilterFields(filters) {\n if (!filters) return [];\n var normalized = normalizeFilters(filters);\n return [\n ...new Set(normalized.map(function(c) {\n return c[0];\n }))\n ];\n}\nfunction formatFilter(condition) {\n var [field, operator, value] = condition;\n var displayValue;\n if (value === null || value === void 0) {\n displayValue = \"null\";\n } else if (Array.isArray(value)) {\n displayValue = \"[\" + value.map(function(v) {\n return JSON.stringify(v);\n }).join(\", \") + \"]\";\n } else if (typeof value === \"string\") {\n displayValue = JSON.stringify(value);\n } else {\n displayValue = String(value);\n }\n return `${field} ${operator} ${displayValue}`;\n}\nvar SERVER_ONLY_OPERATORS = /* @__PURE__ */ new Set([\n \"ancestors of\".toLowerCase(),\n \"descendants of\".toLowerCase(),\n \"not ancestors of\".toLowerCase(),\n \"not descendants of\".toLowerCase()\n]);\nfunction hasServerOnlyOperators(filters) {\n if (!filters) return false;\n var normalized = normalizeFilters(filters);\n return normalized.some(function(param) {\n var [, operator] = param;\n return SERVER_ONLY_OPERATORS.has(normalizeOperator(operator));\n });\n}\nfunction canEvaluateClientSide(filters) {\n return !hasServerOnlyOperators(filters);\n}\nfunction isTreeOperator(operator) {\n return SERVER_ONLY_OPERATORS.has(normalizeOperator(operator));\n}\nfunction getClientEvaluationBlockers(filters) {\n if (!filters) return [];\n var blockers = [];\n var normalized = normalizeFilters(filters);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = normalized[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [field, operator] = _step.value;\n var normalizedOp = normalizeOperator(operator);\n if (SERVER_ONLY_OPERATORS.has(normalizedOp)) {\n blockers.push(`Field \"${field}\" uses tree operator \"${operator}\" which requires server-side evaluation`);\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 return blockers;\n}\n//# sourceMappingURL=filters.js.map\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/sync/index.cjs
CHANGED
|
@@ -43,6 +43,11 @@ function getBrowserJournalStorage() {
|
|
|
43
43
|
return void 0;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
const idleCatchUpState = Object.freeze({
|
|
47
|
+
refreshing: false,
|
|
48
|
+
stale: false,
|
|
49
|
+
error: null
|
|
50
|
+
});
|
|
46
51
|
class SyncModule {
|
|
47
52
|
normalizedCache;
|
|
48
53
|
mutationJournal;
|
|
@@ -68,6 +73,10 @@ class SyncModule {
|
|
|
68
73
|
db;
|
|
69
74
|
realtime;
|
|
70
75
|
options;
|
|
76
|
+
catchUpState = idleCatchUpState;
|
|
77
|
+
catchUpEpoch = 0;
|
|
78
|
+
disposed = false;
|
|
79
|
+
catchUpRun;
|
|
71
80
|
constructor(db, realtime, options = {}) {
|
|
72
81
|
this.db = db;
|
|
73
82
|
this.realtime = realtime;
|
|
@@ -93,9 +102,9 @@ class SyncModule {
|
|
|
93
102
|
const realtimeOptions = {
|
|
94
103
|
...this.options,
|
|
95
104
|
onResetCache: () => this.resetCache(),
|
|
96
|
-
onBackfillAll: () =>
|
|
97
|
-
|
|
98
|
-
}
|
|
105
|
+
onBackfillAll: () => {
|
|
106
|
+
void this.catchUp();
|
|
107
|
+
},
|
|
99
108
|
// Realtime reconciliation mutates cache/membership outside the public
|
|
100
109
|
// mutate/backfill entry points — bridge those changes to store listeners.
|
|
101
110
|
onStoreChange: () => this.emit(),
|
|
@@ -113,20 +122,20 @@ class SyncModule {
|
|
|
113
122
|
* Stores cleanup functions returned by each subscription.
|
|
114
123
|
*/
|
|
115
124
|
setupWindowEvents() {
|
|
116
|
-
this.cleanupFocus = (0, import_platform.onAppFocus)(() =>
|
|
117
|
-
|
|
118
|
-
})
|
|
125
|
+
this.cleanupFocus = (0, import_platform.onAppFocus)(() => {
|
|
126
|
+
void this.catchUp();
|
|
127
|
+
});
|
|
119
128
|
this.cleanupFocusReplay = (0, import_platform.onAppFocus)(() => {
|
|
120
129
|
if (this.mutationJournal.listPending().length > 0) void this.replayPending();
|
|
121
130
|
});
|
|
122
|
-
this.cleanupOnlineBackfill = (0, import_platform.onOnline)(() =>
|
|
123
|
-
|
|
124
|
-
})
|
|
131
|
+
this.cleanupOnlineBackfill = (0, import_platform.onOnline)(() => {
|
|
132
|
+
void this.catchUp();
|
|
133
|
+
});
|
|
125
134
|
this.cleanupOnlineReplay = (0, import_platform.onOnline)(() => this.replayPending());
|
|
126
135
|
if (this.options.cdcInterval && this.options.cdcInterval > 0) {
|
|
127
|
-
this.cdcIntervalHandle = setInterval(() =>
|
|
128
|
-
|
|
129
|
-
}
|
|
136
|
+
this.cdcIntervalHandle = setInterval(() => {
|
|
137
|
+
void this.catchUp();
|
|
138
|
+
}, this.options.cdcInterval);
|
|
130
139
|
}
|
|
131
140
|
}
|
|
132
141
|
/**
|
|
@@ -139,6 +148,9 @@ class SyncModule {
|
|
|
139
148
|
* the subscription is marked stale until the next successful backfill.
|
|
140
149
|
*/
|
|
141
150
|
async subscribe(query) {
|
|
151
|
+
if (this.options.catchUpStrategy === "snapshot" && query.progressive) {
|
|
152
|
+
throw new Error("Snapshot catch-up does not support progressive subscriptions");
|
|
153
|
+
}
|
|
142
154
|
await this.persistenceManager.whenReady();
|
|
143
155
|
const result = await this.subscriptionManager.subscribe(query);
|
|
144
156
|
this.realtimeHandler.watchDoctype(query.doctype);
|
|
@@ -165,19 +177,88 @@ class SyncModule {
|
|
|
165
177
|
this.persistenceManager.broadcastMutation(mutation);
|
|
166
178
|
this.emit();
|
|
167
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* The name the server assigned a document this module created under
|
|
182
|
+
* `temporaryName`, once the create is acknowledged. Undefined while it is
|
|
183
|
+
* pending, or when the server kept the name it was given.
|
|
184
|
+
*/
|
|
185
|
+
createdName(temporaryName) {
|
|
186
|
+
return this.rehydrationManager.resolveTempId(temporaryName);
|
|
187
|
+
}
|
|
168
188
|
/** Refresh active query snapshots in place. Failures retain the last committed data. */
|
|
169
189
|
async refreshSubscriptions(options) {
|
|
190
|
+
const epoch = this.catchUpEpoch;
|
|
170
191
|
await this.persistenceManager.whenReady();
|
|
192
|
+
if (this.disposed || epoch !== this.catchUpEpoch) return [];
|
|
171
193
|
const results = await this.subscriptionManager.refreshSubscriptions(options);
|
|
172
|
-
this.emit();
|
|
194
|
+
if (!this.disposed && epoch === this.catchUpEpoch) this.emit();
|
|
173
195
|
return results;
|
|
174
196
|
}
|
|
197
|
+
getCatchUpState() {
|
|
198
|
+
return this.catchUpState;
|
|
199
|
+
}
|
|
200
|
+
publishCatchUp(state) {
|
|
201
|
+
this.catchUpState = Object.freeze(state);
|
|
202
|
+
for (const listener of this.storeListeners) listener();
|
|
203
|
+
}
|
|
204
|
+
/** Observes lifecycle/retry failures in state; explicit backfill still rejects. */
|
|
205
|
+
catchUp() {
|
|
206
|
+
if (this.disposed) return Promise.resolve(this.catchUpState);
|
|
207
|
+
if (this.catchUpRun) {
|
|
208
|
+
if (this.catchUpRun.attempt === 0) this.catchUpRun.trailing = true;
|
|
209
|
+
return this.catchUpRun.promise;
|
|
210
|
+
}
|
|
211
|
+
const epoch = this.catchUpEpoch;
|
|
212
|
+
const run = {
|
|
213
|
+
trailing: false,
|
|
214
|
+
attempt: 0,
|
|
215
|
+
promise: Promise.resolve(this.catchUpState)
|
|
216
|
+
};
|
|
217
|
+
this.catchUpRun = run;
|
|
218
|
+
run.promise = Promise.resolve().then(async () => {
|
|
219
|
+
let error = null;
|
|
220
|
+
const active = () => !this.disposed && this.catchUpEpoch === epoch;
|
|
221
|
+
do {
|
|
222
|
+
if (!active()) return this.catchUpState;
|
|
223
|
+
run.trailing = false;
|
|
224
|
+
error = null;
|
|
225
|
+
try {
|
|
226
|
+
if (this.options.catchUpStrategy === "snapshot") {
|
|
227
|
+
const results = await this.refreshSubscriptions();
|
|
228
|
+
const failures = results.filter(result => !result.ok && this.subscriptionManager.getSubscription(result.subscriptionId) && !this.subscriptionManager.isRestoredSubscription(result.subscriptionId));
|
|
229
|
+
if (failures.length) error = new AggregateError(failures.map(failure => failure.error), "Some subscriptions could not refresh. Showing previous data.");
|
|
230
|
+
} else {
|
|
231
|
+
await this.backfill({
|
|
232
|
+
scope: import_types.BackfillScope.All
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
} catch (caught) {
|
|
236
|
+
error = caught;
|
|
237
|
+
}
|
|
238
|
+
} while (active() && run.trailing && run.attempt++ === 0);
|
|
239
|
+
if (active()) {
|
|
240
|
+
this.catchUpRun = void 0;
|
|
241
|
+
this.publishCatchUp({
|
|
242
|
+
refreshing: false,
|
|
243
|
+
stale: error !== null,
|
|
244
|
+
error
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
return this.catchUpState;
|
|
248
|
+
});
|
|
249
|
+
this.publishCatchUp({
|
|
250
|
+
...this.catchUpState,
|
|
251
|
+
refreshing: true
|
|
252
|
+
});
|
|
253
|
+
return run.promise;
|
|
254
|
+
}
|
|
175
255
|
/**
|
|
176
256
|
* Reconciles local state by fetching changes since stored cursors.
|
|
177
257
|
*/
|
|
178
258
|
async backfill(args) {
|
|
259
|
+
const epoch = this.catchUpEpoch;
|
|
179
260
|
await this.subscriptionManager.backfill(args);
|
|
180
|
-
this.emit();
|
|
261
|
+
if (!this.disposed && epoch === this.catchUpEpoch) this.emit();
|
|
181
262
|
}
|
|
182
263
|
/**
|
|
183
264
|
* Replays pending mutations with error handling.
|
|
@@ -321,6 +402,9 @@ class SyncModule {
|
|
|
321
402
|
}
|
|
322
403
|
/** Clears subscriptions, cache, journal, and temp id mappings. */
|
|
323
404
|
resetCache() {
|
|
405
|
+
this.catchUpEpoch++;
|
|
406
|
+
this.catchUpRun = void 0;
|
|
407
|
+
this.catchUpState = idleCatchUpState;
|
|
324
408
|
this.realtimeHandler.unwatchAll();
|
|
325
409
|
this.subscriptionManager.clear();
|
|
326
410
|
this.normalizedCache.clear();
|
|
@@ -330,6 +414,7 @@ class SyncModule {
|
|
|
330
414
|
}
|
|
331
415
|
/** Cleanup and dispose of resources */
|
|
332
416
|
async dispose() {
|
|
417
|
+
this.disposed = true;
|
|
333
418
|
this.storeListeners.clear();
|
|
334
419
|
this.realtimeEventListeners.clear();
|
|
335
420
|
this.resetCache();
|
|
@@ -77,6 +77,11 @@ function getBrowserJournalStorage() {
|
|
|
77
77
|
return void 0;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
var idleCatchUpState = Object.freeze({
|
|
81
|
+
refreshing: false,
|
|
82
|
+
stale: false,
|
|
83
|
+
error: null
|
|
84
|
+
});
|
|
80
85
|
var SyncModule = /* @__PURE__ */function () {
|
|
81
86
|
"use strict";
|
|
82
87
|
|
|
@@ -101,6 +106,10 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
101
106
|
_define_property(this, "db", void 0);
|
|
102
107
|
_define_property(this, "realtime", void 0);
|
|
103
108
|
_define_property(this, "options", void 0);
|
|
109
|
+
_define_property(this, "catchUpState", idleCatchUpState);
|
|
110
|
+
_define_property(this, "catchUpEpoch", 0);
|
|
111
|
+
_define_property(this, "disposed", false);
|
|
112
|
+
_define_property(this, "catchUpRun", void 0);
|
|
104
113
|
this.db = db;
|
|
105
114
|
this.realtime = realtime;
|
|
106
115
|
this.options = options;
|
|
@@ -132,9 +141,7 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
132
141
|
return _this.resetCache();
|
|
133
142
|
},
|
|
134
143
|
onBackfillAll: function onBackfillAll() {
|
|
135
|
-
|
|
136
|
-
scope: import_types.BackfillScope.All
|
|
137
|
-
});
|
|
144
|
+
void _this.catchUp();
|
|
138
145
|
},
|
|
139
146
|
// Realtime reconciliation mutates cache/membership outside the public
|
|
140
147
|
// mutate/backfill entry points — bridge those changes to store listeners.
|
|
@@ -182,26 +189,20 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
182
189
|
function setupWindowEvents() {
|
|
183
190
|
var _this = this;
|
|
184
191
|
this.cleanupFocus = (0, import_platform.onAppFocus)(function () {
|
|
185
|
-
|
|
186
|
-
scope: import_types.BackfillScope.All
|
|
187
|
-
});
|
|
192
|
+
void _this.catchUp();
|
|
188
193
|
});
|
|
189
194
|
this.cleanupFocusReplay = (0, import_platform.onAppFocus)(function () {
|
|
190
195
|
if (_this.mutationJournal.listPending().length > 0) void _this.replayPending();
|
|
191
196
|
});
|
|
192
197
|
this.cleanupOnlineBackfill = (0, import_platform.onOnline)(function () {
|
|
193
|
-
|
|
194
|
-
scope: import_types.BackfillScope.All
|
|
195
|
-
});
|
|
198
|
+
void _this.catchUp();
|
|
196
199
|
});
|
|
197
200
|
this.cleanupOnlineReplay = (0, import_platform.onOnline)(function () {
|
|
198
201
|
return _this.replayPending();
|
|
199
202
|
});
|
|
200
203
|
if (this.options.cdcInterval && this.options.cdcInterval > 0) {
|
|
201
204
|
this.cdcIntervalHandle = setInterval(function () {
|
|
202
|
-
|
|
203
|
-
scope: import_types.BackfillScope.All
|
|
204
|
-
});
|
|
205
|
+
void _this.catchUp();
|
|
205
206
|
}, this.options.cdcInterval);
|
|
206
207
|
}
|
|
207
208
|
})
|
|
@@ -219,6 +220,9 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
219
220
|
*/
|
|
220
221
|
async function subscribe(query) {
|
|
221
222
|
var _this = this;
|
|
223
|
+
if (this.options.catchUpStrategy === "snapshot" && query.progressive) {
|
|
224
|
+
throw new Error("Snapshot catch-up does not support progressive subscriptions");
|
|
225
|
+
}
|
|
222
226
|
await this.persistenceManager.whenReady();
|
|
223
227
|
var result = await this.subscriptionManager.subscribe(query);
|
|
224
228
|
this.realtimeHandler.watchDoctype(query.doctype);
|
|
@@ -251,15 +255,121 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
251
255
|
this.persistenceManager.broadcastMutation(mutation);
|
|
252
256
|
this.emit();
|
|
253
257
|
}
|
|
258
|
+
}, {
|
|
259
|
+
/**
|
|
260
|
+
* The name the server assigned a document this module created under
|
|
261
|
+
* `temporaryName`, once the create is acknowledged. Undefined while it is
|
|
262
|
+
* pending, or when the server kept the name it was given.
|
|
263
|
+
*/
|
|
264
|
+
key: "createdName",
|
|
265
|
+
value: function createdName(temporaryName) {
|
|
266
|
+
return this.rehydrationManager.resolveTempId(temporaryName);
|
|
267
|
+
}
|
|
254
268
|
}, {
|
|
255
269
|
key: "refreshSubscriptions",
|
|
256
270
|
value: (/** Refresh active query snapshots in place. Failures retain the last committed data. */
|
|
257
271
|
async function refreshSubscriptions(options) {
|
|
272
|
+
var epoch = this.catchUpEpoch;
|
|
258
273
|
await this.persistenceManager.whenReady();
|
|
274
|
+
if (this.disposed || epoch !== this.catchUpEpoch) return [];
|
|
259
275
|
var results = await this.subscriptionManager.refreshSubscriptions(options);
|
|
260
|
-
this.emit();
|
|
276
|
+
if (!this.disposed && epoch === this.catchUpEpoch) this.emit();
|
|
261
277
|
return results;
|
|
262
278
|
})
|
|
279
|
+
}, {
|
|
280
|
+
key: "getCatchUpState",
|
|
281
|
+
value: function getCatchUpState() {
|
|
282
|
+
return this.catchUpState;
|
|
283
|
+
}
|
|
284
|
+
}, {
|
|
285
|
+
key: "publishCatchUp",
|
|
286
|
+
value: function publishCatchUp(state) {
|
|
287
|
+
this.catchUpState = Object.freeze(state);
|
|
288
|
+
var _iteratorNormalCompletion = true,
|
|
289
|
+
_didIteratorError = false,
|
|
290
|
+
_iteratorError = void 0;
|
|
291
|
+
try {
|
|
292
|
+
for (var _iterator = this.storeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
293
|
+
var listener = _step.value;
|
|
294
|
+
listener();
|
|
295
|
+
}
|
|
296
|
+
} catch (err) {
|
|
297
|
+
_didIteratorError = true;
|
|
298
|
+
_iteratorError = err;
|
|
299
|
+
} finally {
|
|
300
|
+
try {
|
|
301
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
302
|
+
_iterator.return();
|
|
303
|
+
}
|
|
304
|
+
} finally {
|
|
305
|
+
if (_didIteratorError) {
|
|
306
|
+
throw _iteratorError;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}, {
|
|
312
|
+
/** Observes lifecycle/retry failures in state; explicit backfill still rejects. */
|
|
313
|
+
key: "catchUp",
|
|
314
|
+
value: function catchUp() {
|
|
315
|
+
var _this = this;
|
|
316
|
+
if (this.disposed) return Promise.resolve(this.catchUpState);
|
|
317
|
+
if (this.catchUpRun) {
|
|
318
|
+
if (this.catchUpRun.attempt === 0) this.catchUpRun.trailing = true;
|
|
319
|
+
return this.catchUpRun.promise;
|
|
320
|
+
}
|
|
321
|
+
var epoch = this.catchUpEpoch;
|
|
322
|
+
var run = {
|
|
323
|
+
trailing: false,
|
|
324
|
+
attempt: 0,
|
|
325
|
+
promise: Promise.resolve(this.catchUpState)
|
|
326
|
+
};
|
|
327
|
+
this.catchUpRun = run;
|
|
328
|
+
run.promise = Promise.resolve().then(async function () {
|
|
329
|
+
var error = null;
|
|
330
|
+
var active = function active2() {
|
|
331
|
+
return !_this.disposed && _this.catchUpEpoch === epoch;
|
|
332
|
+
};
|
|
333
|
+
do {
|
|
334
|
+
if (!active()) return _this.catchUpState;
|
|
335
|
+
run.trailing = false;
|
|
336
|
+
error = null;
|
|
337
|
+
try {
|
|
338
|
+
if (_this.options.catchUpStrategy === "snapshot") {
|
|
339
|
+
var results = await _this.refreshSubscriptions();
|
|
340
|
+
var failures = results.filter(function (result) {
|
|
341
|
+
return !result.ok && _this.subscriptionManager.getSubscription(result.subscriptionId) && !_this.subscriptionManager.isRestoredSubscription(result.subscriptionId);
|
|
342
|
+
});
|
|
343
|
+
if (failures.length) error = new AggregateError(failures.map(function (failure) {
|
|
344
|
+
return failure.error;
|
|
345
|
+
}), "Some subscriptions could not refresh. Showing previous data.");
|
|
346
|
+
} else {
|
|
347
|
+
await _this.backfill({
|
|
348
|
+
scope: import_types.BackfillScope.All
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
} catch (caught) {
|
|
352
|
+
error = caught;
|
|
353
|
+
}
|
|
354
|
+
} while (
|
|
355
|
+
// Bound a burst to one trailing read, including triggers during that read.
|
|
356
|
+
active() && run.trailing && run.attempt++ === 0);
|
|
357
|
+
if (active()) {
|
|
358
|
+
_this.catchUpRun = void 0;
|
|
359
|
+
_this.publishCatchUp({
|
|
360
|
+
refreshing: false,
|
|
361
|
+
stale: error !== null,
|
|
362
|
+
error
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
return _this.catchUpState;
|
|
366
|
+
});
|
|
367
|
+
this.publishCatchUp({
|
|
368
|
+
...this.catchUpState,
|
|
369
|
+
refreshing: true
|
|
370
|
+
});
|
|
371
|
+
return run.promise;
|
|
372
|
+
}
|
|
263
373
|
}, {
|
|
264
374
|
key: "backfill",
|
|
265
375
|
value: (
|
|
@@ -267,8 +377,9 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
267
377
|
* Reconciles local state by fetching changes since stored cursors.
|
|
268
378
|
*/
|
|
269
379
|
async function backfill(args) {
|
|
380
|
+
var epoch = this.catchUpEpoch;
|
|
270
381
|
await this.subscriptionManager.backfill(args);
|
|
271
|
-
this.emit();
|
|
382
|
+
if (!this.disposed && epoch === this.catchUpEpoch) this.emit();
|
|
272
383
|
})
|
|
273
384
|
}, {
|
|
274
385
|
key: "replayPending",
|
|
@@ -492,6 +603,9 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
492
603
|
/** Clears subscriptions, cache, journal, and temp id mappings. */
|
|
493
604
|
key: "resetCache",
|
|
494
605
|
value: function resetCache() {
|
|
606
|
+
this.catchUpEpoch++;
|
|
607
|
+
this.catchUpRun = void 0;
|
|
608
|
+
this.catchUpState = idleCatchUpState;
|
|
495
609
|
this.realtimeHandler.unwatchAll();
|
|
496
610
|
this.subscriptionManager.clear();
|
|
497
611
|
this.normalizedCache.clear();
|
|
@@ -504,6 +618,7 @@ var SyncModule = /* @__PURE__ */function () {
|
|
|
504
618
|
value: (/** Cleanup and dispose of resources */
|
|
505
619
|
async function dispose() {
|
|
506
620
|
var _this_cleanupFocus, _this, _this_cleanupFocusReplay, _this1, _this_cleanupOnlineBackfill, _this2, _this_cleanupOnlineReplay, _this3;
|
|
621
|
+
this.disposed = true;
|
|
507
622
|
this.storeListeners.clear();
|
|
508
623
|
this.realtimeEventListeners.clear();
|
|
509
624
|
this.resetCache();
|