@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.
Files changed (239) hide show
  1. package/README.md +59 -1
  2. package/dist/cjs/auth.native.js.map +1 -1
  3. package/dist/cjs/call.native.js.map +1 -1
  4. package/dist/cjs/collection.native.js.map +1 -1
  5. package/dist/cjs/common/types.native.js.map +1 -1
  6. package/dist/cjs/core/http.native.js.map +1 -1
  7. package/dist/cjs/core/types.native.js.map +1 -1
  8. package/dist/cjs/core/wire.native.js.map +1 -1
  9. package/dist/cjs/db.native.js.map +1 -1
  10. package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  11. package/dist/cjs/devtools/index.native.js.map +1 -1
  12. package/dist/cjs/devtools/plugin.native.js.map +1 -1
  13. package/dist/cjs/devtools/theme.native.js.map +1 -1
  14. package/dist/cjs/doctype.cjs +25 -43
  15. package/dist/cjs/doctype.native.js +27 -43
  16. package/dist/cjs/doctype.native.js.map +1 -1
  17. package/dist/cjs/file.native.js.map +1 -1
  18. package/dist/cjs/fixtureDb.native.js.map +1 -1
  19. package/dist/cjs/fixtures.cjs +3 -0
  20. package/dist/cjs/fixtures.native.js +3 -0
  21. package/dist/cjs/fixtures.native.js.map +1 -1
  22. package/dist/cjs/frappeApp.native.js.map +1 -1
  23. package/dist/cjs/frappeReact.cjs +67 -31
  24. package/dist/cjs/frappeReact.native.js +87 -34
  25. package/dist/cjs/frappeReact.native.js.map +1 -1
  26. package/dist/cjs/index.cjs +7 -0
  27. package/dist/cjs/index.native.js +9 -2
  28. package/dist/cjs/index.native.js.map +1 -1
  29. package/dist/cjs/optimistic.native.js.map +1 -1
  30. package/dist/cjs/pacer.native.js.map +1 -1
  31. package/dist/cjs/plugin/index.native.js.map +1 -1
  32. package/dist/cjs/realtime.native.js.map +1 -1
  33. package/dist/cjs/serverLoaders.cjs +74 -0
  34. package/dist/cjs/serverLoaders.native.js +88 -0
  35. package/dist/cjs/serverLoaders.native.js.map +1 -0
  36. package/dist/cjs/sync/backfill.native.js.map +1 -1
  37. package/dist/cjs/sync/filters.native.js.map +1 -1
  38. package/dist/cjs/sync/index.cjs +99 -14
  39. package/dist/cjs/sync/index.native.js +129 -14
  40. package/dist/cjs/sync/index.native.js.map +1 -1
  41. package/dist/cjs/sync/merge.native.js.map +1 -1
  42. package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
  43. package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
  44. package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
  45. package/dist/cjs/sync/persistence.native.js.map +1 -1
  46. package/dist/cjs/sync/realtime.native.js.map +1 -1
  47. package/dist/cjs/sync/rehydration.cjs +4 -0
  48. package/dist/cjs/sync/rehydration.native.js +6 -0
  49. package/dist/cjs/sync/rehydration.native.js.map +1 -1
  50. package/dist/cjs/sync/storage.native.js.map +1 -1
  51. package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
  52. package/dist/cjs/sync/types.native.js.map +1 -1
  53. package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
  54. package/dist/cjs/syncOptionsKey.cjs +59 -0
  55. package/dist/cjs/syncOptionsKey.native.js +82 -0
  56. package/dist/cjs/syncOptionsKey.native.js.map +1 -0
  57. package/dist/cjs/useLiveQuery.cjs +2 -20
  58. package/dist/cjs/useLiveQuery.native.js +1 -22
  59. package/dist/cjs/useLiveQuery.native.js.map +1 -1
  60. package/dist/cjs/util.native.js.map +1 -1
  61. package/dist/esm/auth.native.js.map +1 -1
  62. package/dist/esm/call.native.js.map +1 -1
  63. package/dist/esm/collection.native.js.map +1 -1
  64. package/dist/esm/common/types.native.js.map +1 -1
  65. package/dist/esm/core/http.native.js.map +1 -1
  66. package/dist/esm/core/types.native.js.map +1 -1
  67. package/dist/esm/core/wire.native.js.map +1 -1
  68. package/dist/esm/db.native.js.map +1 -1
  69. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  70. package/dist/esm/devtools/index.native.js.map +1 -1
  71. package/dist/esm/devtools/plugin.native.js.map +1 -1
  72. package/dist/esm/devtools/theme.native.js.map +1 -1
  73. package/dist/esm/doctype.mjs +23 -44
  74. package/dist/esm/doctype.mjs.map +1 -1
  75. package/dist/esm/doctype.native.js +25 -44
  76. package/dist/esm/doctype.native.js.map +1 -1
  77. package/dist/esm/file.native.js.map +1 -1
  78. package/dist/esm/fixtureDb.native.js.map +1 -1
  79. package/dist/esm/fixtures.mjs +3 -0
  80. package/dist/esm/fixtures.mjs.map +1 -1
  81. package/dist/esm/fixtures.native.js +3 -0
  82. package/dist/esm/fixtures.native.js.map +1 -1
  83. package/dist/esm/frappeApp.native.js.map +1 -1
  84. package/dist/esm/frappeReact.mjs +68 -33
  85. package/dist/esm/frappeReact.mjs.map +1 -1
  86. package/dist/esm/frappeReact.native.js +87 -35
  87. package/dist/esm/frappeReact.native.js.map +1 -1
  88. package/dist/esm/index.mjs +4 -3
  89. package/dist/esm/index.mjs.map +1 -1
  90. package/dist/esm/index.native.js +4 -3
  91. package/dist/esm/index.native.js.map +1 -1
  92. package/dist/esm/optimistic.native.js.map +1 -1
  93. package/dist/esm/pacer.native.js.map +1 -1
  94. package/dist/esm/plugin/index.native.js.map +1 -1
  95. package/dist/esm/realtime.native.js.map +1 -1
  96. package/dist/esm/serverLoaders.mjs +48 -0
  97. package/dist/esm/serverLoaders.mjs.map +1 -0
  98. package/dist/esm/serverLoaders.native.js +59 -0
  99. package/dist/esm/serverLoaders.native.js.map +1 -0
  100. package/dist/esm/sync/backfill.native.js.map +1 -1
  101. package/dist/esm/sync/filters.native.js.map +1 -1
  102. package/dist/esm/sync/index.mjs +99 -14
  103. package/dist/esm/sync/index.mjs.map +1 -1
  104. package/dist/esm/sync/index.native.js +129 -14
  105. package/dist/esm/sync/index.native.js.map +1 -1
  106. package/dist/esm/sync/merge.native.js.map +1 -1
  107. package/dist/esm/sync/mutationEngine.native.js.map +1 -1
  108. package/dist/esm/sync/mutationJournal.native.js.map +1 -1
  109. package/dist/esm/sync/normalizedCache.native.js.map +1 -1
  110. package/dist/esm/sync/persistence.native.js.map +1 -1
  111. package/dist/esm/sync/realtime.native.js.map +1 -1
  112. package/dist/esm/sync/rehydration.mjs +4 -0
  113. package/dist/esm/sync/rehydration.mjs.map +1 -1
  114. package/dist/esm/sync/rehydration.native.js +6 -0
  115. package/dist/esm/sync/rehydration.native.js.map +1 -1
  116. package/dist/esm/sync/storage.native.js.map +1 -1
  117. package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
  118. package/dist/esm/sync/types.mjs.map +1 -1
  119. package/dist/esm/sync/types.native.js.map +1 -1
  120. package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
  121. package/dist/esm/syncOptionsKey.mjs +34 -0
  122. package/dist/esm/syncOptionsKey.mjs.map +1 -0
  123. package/dist/esm/syncOptionsKey.native.js +54 -0
  124. package/dist/esm/syncOptionsKey.native.js.map +1 -0
  125. package/dist/esm/useLiveQuery.mjs +1 -19
  126. package/dist/esm/useLiveQuery.mjs.map +1 -1
  127. package/dist/esm/useLiveQuery.native.js +1 -22
  128. package/dist/esm/useLiveQuery.native.js.map +1 -1
  129. package/dist/esm/util.native.js.map +1 -1
  130. package/dist/jsx/auth.native.js.map +1 -1
  131. package/dist/jsx/call.native.js.map +1 -1
  132. package/dist/jsx/collection.native.js.map +1 -1
  133. package/dist/jsx/common/types.native.js.map +1 -1
  134. package/dist/jsx/core/http.native.js.map +1 -1
  135. package/dist/jsx/core/types.native.js.map +1 -1
  136. package/dist/jsx/core/wire.native.js.map +1 -1
  137. package/dist/jsx/db.native.js.map +1 -1
  138. package/dist/jsx/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  139. package/dist/jsx/devtools/index.native.js.map +1 -1
  140. package/dist/jsx/devtools/plugin.native.js.map +1 -1
  141. package/dist/jsx/devtools/theme.native.js.map +1 -1
  142. package/dist/jsx/doctype.mjs +23 -44
  143. package/dist/jsx/doctype.mjs.map +1 -1
  144. package/dist/jsx/doctype.native.js +27 -43
  145. package/dist/jsx/doctype.native.js.map +1 -1
  146. package/dist/jsx/file.native.js.map +1 -1
  147. package/dist/jsx/fixtureDb.native.js.map +1 -1
  148. package/dist/jsx/fixtures.mjs +3 -0
  149. package/dist/jsx/fixtures.mjs.map +1 -1
  150. package/dist/jsx/fixtures.native.js +3 -0
  151. package/dist/jsx/fixtures.native.js.map +1 -1
  152. package/dist/jsx/frappeApp.native.js.map +1 -1
  153. package/dist/jsx/frappeReact.mjs +68 -33
  154. package/dist/jsx/frappeReact.mjs.map +1 -1
  155. package/dist/jsx/frappeReact.native.js +87 -34
  156. package/dist/jsx/frappeReact.native.js.map +1 -1
  157. package/dist/jsx/index.js +4 -3
  158. package/dist/jsx/index.js.map +1 -1
  159. package/dist/jsx/index.mjs +4 -3
  160. package/dist/jsx/index.mjs.map +1 -1
  161. package/dist/jsx/index.native.js +9 -2
  162. package/dist/jsx/index.native.js.map +1 -1
  163. package/dist/jsx/optimistic.native.js.map +1 -1
  164. package/dist/jsx/pacer.native.js.map +1 -1
  165. package/dist/jsx/plugin/index.native.js.map +1 -1
  166. package/dist/jsx/realtime.native.js.map +1 -1
  167. package/dist/jsx/serverLoaders.mjs +48 -0
  168. package/dist/jsx/serverLoaders.mjs.map +1 -0
  169. package/dist/jsx/serverLoaders.native.js +88 -0
  170. package/dist/jsx/serverLoaders.native.js.map +1 -0
  171. package/dist/jsx/sync/backfill.native.js.map +1 -1
  172. package/dist/jsx/sync/filters.native.js.map +1 -1
  173. package/dist/jsx/sync/index.mjs +99 -14
  174. package/dist/jsx/sync/index.mjs.map +1 -1
  175. package/dist/jsx/sync/index.native.js +129 -14
  176. package/dist/jsx/sync/index.native.js.map +1 -1
  177. package/dist/jsx/sync/merge.native.js.map +1 -1
  178. package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
  179. package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
  180. package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
  181. package/dist/jsx/sync/persistence.native.js.map +1 -1
  182. package/dist/jsx/sync/realtime.native.js.map +1 -1
  183. package/dist/jsx/sync/rehydration.mjs +4 -0
  184. package/dist/jsx/sync/rehydration.mjs.map +1 -1
  185. package/dist/jsx/sync/rehydration.native.js +6 -0
  186. package/dist/jsx/sync/rehydration.native.js.map +1 -1
  187. package/dist/jsx/sync/storage.native.js.map +1 -1
  188. package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
  189. package/dist/jsx/sync/types.mjs.map +1 -1
  190. package/dist/jsx/sync/types.native.js.map +1 -1
  191. package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
  192. package/dist/jsx/syncOptionsKey.mjs +34 -0
  193. package/dist/jsx/syncOptionsKey.mjs.map +1 -0
  194. package/dist/jsx/syncOptionsKey.native.js +82 -0
  195. package/dist/jsx/syncOptionsKey.native.js.map +1 -0
  196. package/dist/jsx/useLiveQuery.mjs +1 -19
  197. package/dist/jsx/useLiveQuery.mjs.map +1 -1
  198. package/dist/jsx/useLiveQuery.native.js +1 -22
  199. package/dist/jsx/useLiveQuery.native.js.map +1 -1
  200. package/dist/jsx/util.native.js.map +1 -1
  201. package/package.json +12 -12
  202. package/src/doctype.spec.ts +148 -5
  203. package/src/doctype.ts +202 -173
  204. package/src/fixtures.ts +1 -0
  205. package/src/frappeReact.catchUp.spec.tsx +105 -0
  206. package/src/frappeReact.hydration.spec.tsx +164 -0
  207. package/src/frappeReact.spec.ts +56 -0
  208. package/src/frappeReact.ts +93 -43
  209. package/src/index.ts +14 -0
  210. package/src/serverLoaders.ts +77 -0
  211. package/src/sync/catchUp.spec.ts +142 -0
  212. package/src/sync/index.ts +106 -9
  213. package/src/sync/rehydration.ts +5 -0
  214. package/src/sync/syncModule.spec.ts +20 -0
  215. package/src/sync/types.ts +9 -1
  216. package/src/syncOptionsKey.spec.ts +46 -0
  217. package/src/syncOptionsKey.ts +45 -0
  218. package/src/useLiveQuery.hydration.spec.tsx +129 -0
  219. package/src/useLiveQuery.spec.ts +3 -11
  220. package/src/useLiveQuery.ts +3 -57
  221. package/types/doctype.d.ts +117 -33
  222. package/types/doctype.d.ts.map +1 -1
  223. package/types/fixtures.d.ts.map +1 -1
  224. package/types/frappeReact.d.ts +9 -3
  225. package/types/frappeReact.d.ts.map +1 -1
  226. package/types/index.d.ts +6 -5
  227. package/types/index.d.ts.map +1 -1
  228. package/types/serverLoaders.d.ts +40 -0
  229. package/types/serverLoaders.d.ts.map +1 -0
  230. package/types/sync/index.d.ts +15 -1
  231. package/types/sync/index.d.ts.map +1 -1
  232. package/types/sync/rehydration.d.ts +2 -0
  233. package/types/sync/rehydration.d.ts.map +1 -1
  234. package/types/sync/types.d.ts +8 -1
  235. package/types/sync/types.d.ts.map +1 -1
  236. package/types/syncOptionsKey.d.ts +3 -0
  237. package/types/syncOptionsKey.d.ts.map +1 -0
  238. package/types/useLiveQuery.d.ts +3 -13
  239. 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":[]}
@@ -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: () => this.backfill({
97
- scope: import_types.BackfillScope.All
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)(() => this.backfill({
117
- scope: import_types.BackfillScope.All
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)(() => this.backfill({
123
- scope: import_types.BackfillScope.All
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(() => this.backfill({
128
- scope: import_types.BackfillScope.All
129
- }), this.options.cdcInterval);
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
- return _this.backfill({
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
- return _this.backfill({
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
- return _this.backfill({
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
- return _this.backfill({
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();