@absolutejs/absolute 0.20.0-beta.15 → 0.20.0-beta.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/build.js +8 -1
- package/dist/build.js.map +4 -4
- package/dist/cli/index.js +8 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +4 -4
- package/dist/mobile/index.js +8 -1
- package/dist/mobile/index.js.map +4 -4
- package/package.json +10 -10
package/dist/mobile/index.js.map
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"import {\n\tMILLISECONDS_IN_A_SECOND,\n\tTIME_PRECISION,\n\tMILLISECONDS_IN_A_MINUTE\n} from '../constants';\n\nexport const getDurationString = (duration: number) => {\n\tlet durationString;\n\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\n\t} else {\n\t\tconst totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);\n\t\tconst minutes = Math.floor(totalSeconds / 60);\n\t\tconst seconds = totalSeconds % 60;\n\t\tdurationString =\n\t\t\tseconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;\n\t}\n\n\treturn durationString;\n};\n",
|
|
7
7
|
"import { HOURS_IN_HALF_DAY } from '../constants';\nimport { getDurationString } from './getDurationString';\n\nconst colors = {\n\tbold: '\\x1b[1m',\n\tcyan: '\\x1b[36m',\n\tdim: '\\x1b[2m',\n\tgreen: '\\x1b[32m',\n\treset: '\\x1b[0m'\n} as const;\n\nconst MONTHS = [\n\t'Jan',\n\t'Feb',\n\t'Mar',\n\t'Apr',\n\t'May',\n\t'Jun',\n\t'Jul',\n\t'Aug',\n\t'Sep',\n\t'Oct',\n\t'Nov',\n\t'Dec'\n] as const;\n\nexport const formatTimestamp = () => {\n\tconst now = new Date();\n\tconst month = MONTHS[now.getMonth()];\n\tconst day = now.getDate().toString().padStart(2, '0');\n\tlet hours = now.getHours();\n\tconst minutes = now.getMinutes().toString().padStart(2, '0');\n\tconst seconds = now.getSeconds().toString().padStart(2, '0');\n\tconst ampm = hours >= HOURS_IN_HALF_DAY ? 'PM' : 'AM';\n\thours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;\n\n\treturn `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;\n};\n\nexport const startupBanner = (options: {\n\tversion: string;\n\treadyDuration: number;\n\tbuildDuration?: number;\n\tport: string | number;\n\thost: string;\n\tnetworkUrl?: string;\n\tprotocol?: string;\n}) => {\n\tconst {\n\t\tversion,\n\t\treadyDuration,\n\t\tbuildDuration,\n\t\tport,\n\t\thost,\n\t\tnetworkUrl,\n\t\tprotocol = 'http'\n\t} = options;\n\tconst name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;\n\tconst ver = `${colors.dim}v${version}${colors.reset}`;\n\tconst time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;\n\tconst build =\n\t\ttypeof buildDuration === 'number' && Number.isFinite(buildDuration)\n\t\t\t? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}`\n\t\t\t: '';\n\tconsole.log('');\n\tconsole.log(` ${name} ${ver} ${time}${build}`);\n\tconsole.log('');\n\tconsole.log(\n\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === '0.0.0.0' ? 'localhost' : host}:${port}/`\n\t);\n\tif (networkUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`\n\t\t);\n\t}\n\tconsole.log('');\n};\n",
|
|
8
8
|
"const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\nexport const toScreamingSnake = (str: string) =>\n\tstr.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n",
|
|
9
|
-
"var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/crdt/orSet.ts\nvar newTag = () => globalThis.crypto.randomUUID();\nvar defaultEquals = (a, b) => Object.is(a, b);\nvar orSet = {\n create: () => ({ adds: [], removed: [] }),\n add: (state, value, tag = newTag()) => ({\n adds: [...state.adds, { value, tag }],\n removed: state.removed\n }),\n remove: (state, value, equals = defaultEquals) => {\n const tags = state.adds.filter((entry) => equals(entry.value, value)).map((entry) => entry.tag);\n return {\n adds: state.adds,\n removed: [...new Set([...state.removed, ...tags])]\n };\n },\n has: (state, value, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n return state.adds.some((entry) => equals(entry.value, value) && !removed.has(entry.tag));\n },\n values: (state, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n const out = [];\n for (const entry of state.adds) {\n if (!removed.has(entry.tag) && !out.some((value) => equals(value, entry.value))) {\n out.push(entry.value);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const byTag = new Map;\n for (const entry of [...a.adds, ...b.adds]) {\n byTag.set(entry.tag, entry);\n }\n return {\n adds: [...byTag.values()],\n removed: [...new Set([...a.removed, ...b.removed])]\n };\n }\n};\n// src/crdt/lwwMap.ts\nvar pick = (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n};\nvar lwwMap = {\n create: () => ({}),\n set: (state, key, value, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value, deleted: false, timestamp, replica }\n }),\n delete: (state, key, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value: state[key]?.value, deleted: true, timestamp, replica }\n }),\n get: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted ? entry.value : undefined;\n },\n has: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted;\n },\n keys: (state) => Object.keys(state).filter((key) => !state[key]?.deleted),\n entries: (state) => {\n const out = [];\n for (const [key, entry] of Object.entries(state)) {\n if (!entry.deleted && entry.value !== undefined) {\n out.push([key, entry.value]);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const out = { ...a };\n for (const [key, entry] of Object.entries(b)) {\n const existing = out[key];\n out[key] = existing === undefined ? entry : pick(existing, entry);\n }\n return out;\n }\n};\n// src/crdt/list.ts\nvar order = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(order);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar listOf = (state) => linearize(state.elements).filter((element) => !element.deleted).map((element) => element.value);\nvar mergeListState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar createList = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize([...elements.values()]).filter((element) => !element.deleted);\n return {\n list: () => listOf({ elements: [...elements.values()] }),\n insert: (index, items) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const value of items) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n },\n delete: (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n },\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n }\n };\n};\n\n// src/crdt/index.ts\nvar sumValues = (counts) => Object.values(counts).reduce((total, value) => total + value, 0);\nvar mergeMax = (a, b) => {\n const merged = { ...a };\n for (const [replica, value] of Object.entries(b)) {\n merged[replica] = Math.max(merged[replica] ?? 0, value);\n }\n return merged;\n};\nvar counter = {\n create: () => ({ increments: {}, decrements: {} }),\n value: (state) => sumValues(state.increments) - sumValues(state.decrements),\n increment: (state, replica, by = 1) => ({\n increments: {\n ...state.increments,\n [replica]: (state.increments[replica] ?? 0) + by\n },\n decrements: state.decrements\n }),\n decrement: (state, replica, by = 1) => ({\n increments: state.increments,\n decrements: {\n ...state.decrements,\n [replica]: (state.decrements[replica] ?? 0) + by\n }\n }),\n merge: (a, b) => ({\n increments: mergeMax(a.increments, b.increments),\n decrements: mergeMax(a.decrements, b.decrements)\n })\n};\nvar lww = {\n create: (value, replica, timestamp = Date.now()) => ({ value, timestamp, replica }),\n set: (value, replica, timestamp = Date.now()) => ({\n value,\n timestamp,\n replica\n }),\n merge: (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n }\n};\nvar compare = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize2 = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(compare);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar textOf = (state) => linearize2(state.elements).filter((element) => !element.deleted).map((element) => element.value).join(\"\");\nvar mergeTextState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar tombstoneCount = (state) => state.elements.reduce((total, element) => element.deleted ? total + 1 : total, 0);\nvar compact = (state) => {\n const byId = new Map(state.elements.map((element) => [element.id, element]));\n const keep = new Set;\n for (const element of state.elements) {\n if (element.deleted) {\n continue;\n }\n let anchor = element.after;\n while (anchor !== null && !keep.has(anchor)) {\n const target = byId.get(anchor);\n if (target === undefined || !target.deleted) {\n break;\n }\n keep.add(anchor);\n anchor = target.after;\n }\n }\n return {\n elements: state.elements.filter((element) => !element.deleted || keep.has(element.id))\n };\n};\nvar createTextCrdt = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize2([...elements.values()]).filter((element) => !element.deleted);\n const insert = (index, value) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const char of [...value]) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value: char,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n };\n const remove = (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n };\n return {\n text: () => textOf({ elements: [...elements.values()] }),\n insert,\n delete: remove,\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n setText: (next) => {\n const current = textOf({ elements: [...elements.values()] });\n if (current === next) {\n return;\n }\n let prefix = 0;\n const maxPrefix = Math.min(current.length, next.length);\n while (prefix < maxPrefix && current[prefix] === next[prefix]) {\n prefix += 1;\n }\n let suffix = 0;\n while (suffix < maxPrefix - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix]) {\n suffix += 1;\n }\n const removed = current.length - prefix - suffix;\n if (removed > 0) {\n remove(prefix, removed);\n }\n const inserted = next.slice(prefix, next.length - suffix);\n if (inserted.length > 0) {\n insert(prefix, inserted);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n },\n anchorAt: (index) => {\n if (index <= 0) {\n return null;\n }\n const seen = visible();\n return seen[Math.min(index, seen.length) - 1]?.id ?? null;\n },\n indexOfAnchor: (anchor) => {\n if (anchor === null) {\n return 0;\n }\n let visibleCount = 0;\n for (const element of linearize2([...elements.values()])) {\n if (!element.deleted) {\n visibleCount += 1;\n }\n if (element.id === anchor) {\n return visibleCount;\n }\n }\n return visibleCount;\n }\n };\n};\nvar rgaText = {\n compact,\n create: createTextCrdt,\n empty: () => ({ elements: [] }),\n merge: mergeTextState,\n textOf\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n const created = { installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\n\n// src/client/headlessSync.ts\nvar defaultKey = (row) => {\n if (typeof row !== \"object\" || row === null)\n throw new TypeError(\"Headless Sync rows require an object key.\");\n const key = Reflect.get(row, \"id\");\n if (typeof key !== \"string\" && typeof key !== \"number\")\n throw new TypeError(\"Headless Sync rows require an id key or an explicit key function.\");\n return key;\n};\nvar requireInteger = (value, fallback) => {\n const result = value ?? fallback;\n if (!Number.isSafeInteger(result) || result < 0)\n throw new TypeError(\"Headless Sync limits must be non-negative integers.\");\n return result;\n};\nvar retryDelay = (attempt) => Math.min(30000, 500 * 2 ** Math.max(0, attempt - 1));\nvar parseResponse = (value) => {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"version\") !== 1 || !Array.isArray(Reflect.get(value, \"mutations\")) || !Array.isArray(Reflect.get(value, \"pulls\")))\n throw new Error(\"The Headless Sync response is malformed.\");\n return value;\n};\nvar sameBaseline = (current, baseline) => current?.cursor === baseline?.cursor && (current?.version ?? 0) === (baseline?.version ?? 0);\nvar applyPull = (current, pull, collection, key) => {\n const descriptor = {\n ...current,\n collection: collection.collection,\n params: collection.params\n };\n if (collection.key === undefined)\n descriptor.headlessKey = \"id\";\n else\n delete descriptor.headlessKey;\n if (pull.type === \"snapshot\")\n return {\n ...descriptor,\n rows: pull.rows,\n version: pull.version,\n cursor: pull.cursor\n };\n const rows = new Map;\n for (const row of current?.rows ?? [])\n rows.set(key(row), row);\n for (const row of pull.removed)\n rows.delete(key(row));\n for (const row of pull.changed)\n rows.set(key(row), row);\n for (const row of pull.added)\n rows.set(key(row), row);\n return {\n ...descriptor,\n rows: [...rows.values()],\n version: pull.version,\n cursor: pull.cursor\n };\n};\nvar runHeadlessSync = async ({\n endpoint,\n store,\n namespace,\n collections,\n maxMutations: configuredMaxMutations,\n maxPulls: configuredMaxPulls,\n maxAttempts: configuredMaxAttempts,\n retryBackoff = retryDelay,\n headers,\n fetch: fetchOverride,\n now = Date.now\n}) => {\n if (endpoint.length === 0 || namespace.length === 0)\n throw new TypeError(\"Headless Sync endpoint and namespace are required.\");\n const maxMutations = requireInteger(configuredMaxMutations, 50);\n const maxPulls = requireInteger(configuredMaxPulls, 50);\n const maxAttempts = requireInteger(configuredMaxAttempts, 5);\n const startedAt = now();\n const snapshot = await store.transaction(namespace, \"readwrite\", async (tx) => {\n const due = (await tx.listMutations()).filter((record) => record.state !== \"dead-letter\" && (record.nextAttemptAt ?? 0) <= startedAt).slice(0, maxMutations);\n const mutations = [];\n for (const record of due) {\n const next = { ...record, attempts: record.attempts + 1 };\n delete next.nextAttemptAt;\n await tx.putMutation(next);\n mutations.push(next);\n }\n const discoveredCollections = collections ?? (await tx.listCollections()).filter(({ record }) => record.headlessKey === \"id\" && typeof record.collection === \"string\" && record.collection.length > 0).map(({ key, record }) => ({\n collection: record.collection,\n localKey: key,\n params: record.params\n }));\n const pulls = await Promise.all(discoveredCollections.slice(0, maxPulls).map(async (collection) => ({\n collection,\n record: await tx.getCollection(collection.localKey)\n })));\n return { mutations, pulls };\n });\n const request = {\n version: 1,\n mutations: snapshot.mutations.map(({ operationId, name, args }) => ({\n operationId,\n name,\n args\n })),\n pulls: snapshot.pulls.map(({ collection, record }, index) => ({\n id: String(index),\n collection: collection.collection,\n params: collection.params,\n ...record?.cursor !== undefined ? { since: record.cursor } : (record?.version ?? 0) > 0 ? { since: record.version } : {}\n }))\n };\n const fetchImpl = fetchOverride ?? ((url, init) => globalThis.fetch(url, init));\n let response;\n try {\n const fetched = await fetchImpl(endpoint, {\n body: JSON.stringify(request),\n credentials: \"include\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n ...await headers?.()\n },\n method: \"POST\",\n redirect: \"error\"\n });\n if (!fetched.ok)\n throw new Error(`Headless Sync failed with HTTP ${fetched.status}.`);\n response = parseResponse(await fetched.json());\n } catch (error) {\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n await tx.putMutation({\n ...current,\n lastError: error instanceof Error ? error.message : String(error),\n nextAttemptAt: now() + Math.max(0, retryBackoff(current.attempts))\n });\n }\n });\n throw error;\n }\n const mutationResults = new Map(response.mutations.map((result2) => [result2.operationId, result2]));\n const pullResults = new Map(response.pulls.map((result2) => [result2.id, result2]));\n const result = {\n acknowledged: 0,\n deadLettered: 0,\n pulled: 0,\n retryScheduled: 0\n };\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n const outcome = mutationResults.get(sent.operationId);\n if (outcome?.status === \"ack\") {\n await tx.deleteMutation(sent.operationId);\n result.acknowledged += 1;\n continue;\n }\n const rejection = outcome?.status === \"reject\" ? outcome.rejection : {\n kind: \"retryable\",\n message: \"Missing mutation response.\"\n };\n if (rejection.kind !== \"retryable\" || current.attempts >= maxAttempts) {\n const deadLetter = {\n ...current,\n deadLetteredAt: now(),\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete deadLetter.nextAttemptAt;\n await tx.putMutation(deadLetter);\n result.deadLettered += 1;\n } else {\n await tx.putMutation({\n ...current,\n lastError: rejection.message,\n nextAttemptAt: now() + Math.max(0, rejection.retryAfterMs ?? retryBackoff(current.attempts)),\n rejection,\n state: \"pending\"\n });\n result.retryScheduled += 1;\n }\n }\n for (let index = 0;index < snapshot.pulls.length; index += 1) {\n const baseline = snapshot.pulls[index];\n const pull = pullResults.get(String(index));\n if (pull === undefined || pull.type === \"error\")\n continue;\n const current = await tx.getCollection(baseline.collection.localKey);\n if (!sameBaseline(current, baseline.record))\n continue;\n await tx.putCollection(baseline.collection.localKey, applyPull(current, pull, baseline.collection, baseline.collection.key ?? defaultKey));\n result.pulled += 1;\n }\n });\n return result;\n};\n\n// src/client/subscriber.ts\nvar createSyncSubscriber = ({\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n}) => {\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = url.includes(\"?\") ? \"&\" : \"?\";\n const source = new Impl(`${url}${separator}${params.toString()}`, {\n withCredentials: withCredentials ?? false\n });\n source.onmessage = (event) => {\n try {\n onEvent(JSON.parse(event.data));\n } catch {}\n };\n if (onOpen) {\n source.onopen = () => onOpen();\n }\n if (onError) {\n source.onerror = (event) => onError(event);\n }\n return {\n close: () => source.close(),\n source\n };\n};\n// src/reactiveHub.ts\nvar SYNC_OPEN_TOPIC = \"@absolutejs/sync:open\";\n\n// src/client/liveQuery.ts\nvar createLiveQuery = (options) => {\n const hasSeed = options.initialData !== undefined;\n let state = {\n data: options.initialData,\n error: undefined,\n loading: !options.manual && !hasSeed,\n fetching: false\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n let requestSeq = 0;\n let inFlight;\n let closed = false;\n const refetch = async () => {\n if (closed) {\n return;\n }\n const seq = requestSeq += 1;\n inFlight?.abort();\n const controller = new AbortController;\n inFlight = controller;\n setState({ fetching: true });\n try {\n const data = await options.fetcher(controller.signal);\n if (seq !== requestSeq) {\n return;\n }\n setState({\n data,\n error: undefined,\n loading: false,\n fetching: false\n });\n } catch (error) {\n if (controller.signal.aborted || seq !== requestSeq) {\n return;\n }\n setState({ error, loading: false, fetching: false });\n options.onError?.(error);\n } finally {\n if (inFlight === controller) {\n inFlight = undefined;\n }\n }\n };\n let debounceTimer;\n const scheduleRefetch = () => {\n if (closed) {\n return;\n }\n if (!options.debounceMs) {\n refetch();\n return;\n }\n if (debounceTimer !== undefined) {\n return;\n }\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n refetch();\n }, options.debounceMs);\n };\n let opened = false;\n const onEvent = (event) => {\n if (event.topic === SYNC_OPEN_TOPIC) {\n if (opened) {\n scheduleRefetch();\n }\n opened = true;\n return;\n }\n scheduleRefetch();\n };\n const subscriber = createSyncSubscriber({\n topics: options.topics,\n onEvent,\n url: options.url,\n withCredentials: options.withCredentials,\n eventSourceImpl: options.eventSourceImpl\n });\n if (!options.manual && !hasSeed) {\n refetch();\n }\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n subscriber.close();\n inFlight?.abort();\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n listeners.clear();\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n refetch,\n close\n };\n};\nvar jsonFetcher = (url, init) => async (signal) => {\n const response = await fetch(url, { ...init, signal });\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n return await response.json();\n};\n// src/serializer.ts\nvar jsonSerializer = {\n decode: (raw) => {\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n }\n if (raw instanceof Uint8Array) {\n try {\n return JSON.parse(new TextDecoder().decode(raw));\n } catch {\n return null;\n }\n }\n if (raw instanceof ArrayBuffer) {\n try {\n return JSON.parse(new TextDecoder().decode(new Uint8Array(raw)));\n } catch {\n return null;\n }\n }\n return raw;\n },\n encodeClient: (frame) => JSON.stringify(frame),\n encodeServer: (frame) => JSON.stringify(frame)\n};\n\n// src/client/reconnectBackoff.ts\nvar createReconnectBackoff = (initialMs, maximumMs) => {\n let attempt = 0;\n return {\n markHealthy() {\n attempt = 0;\n },\n nextDelay() {\n const delay = Math.min(initialMs * 2 ** attempt, maximumMs);\n attempt += 1;\n return delay;\n }\n };\n};\nvar hasReconnectHealthyFrameType = (frame, types) => typeof frame === \"object\" && frame !== null && (\"type\" in frame) && typeof frame.type === \"string\" && types.includes(frame.type);\n\n// src/client/syncCollection.ts\nvar serverFrameTypes = [\n \"snapshot\",\n \"diff\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar localStorageMutationStorage = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : [];\n },\n save: (records) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(records));\n }\n});\nvar localStorageCollectionCache = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : undefined;\n },\n save: (snapshot) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(snapshot));\n },\n clear: () => {\n globalThis.localStorage?.removeItem(key);\n }\n});\nvar openIndexedDb = (databaseName, storeName) => new Promise((resolve, reject) => {\n const request = globalThis.indexedDB.open(databaseName, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(storeName);\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar indexedDbCollectionCache = ({\n key,\n databaseName = \"absolutejs-sync\",\n storeName = \"collections\"\n}) => {\n let handle;\n const database = () => {\n handle ??= openIndexedDb(databaseName, storeName);\n return handle;\n };\n const withStore = async (mode, run) => {\n if (globalThis.indexedDB === undefined) {\n return;\n }\n const db = await database();\n return new Promise((resolve, reject) => {\n const request = run(db.transaction(storeName, mode).objectStore(storeName));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n return {\n load: () => withStore(\"readonly\", (store) => store.get(key)),\n save: async (snapshot) => {\n await withStore(\"readwrite\", (store) => store.put(snapshot, key));\n },\n clear: async () => {\n await withStore(\"readwrite\", (store) => store.delete(key));\n }\n };\n};\nvar SUBSCRIPTION_ID = \"s\";\nvar createSyncCollection = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncCollection requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: [],\n status: \"connecting\",\n error: undefined\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n })));\n };\n let cacheScheduled = false;\n const persistCache = () => {\n if (options.cache === undefined || cacheScheduled) {\n return;\n }\n cacheScheduled = true;\n queueMicrotask(() => {\n cacheScheduled = false;\n options.cache?.save({\n rows: [...confirmed.values()],\n version: appliedVersion\n });\n });\n };\n const settlePending = (mutationId) => {\n const index = pending.findIndex((mutation2) => mutation2.mutationId === mutationId);\n if (index === -1) {\n return;\n }\n const [mutation] = pending.splice(index, 1);\n persist();\n return mutation;\n };\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n } else if (frame.type === \"ack\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.resolve(frame.result);\n }\n } else if (frame.type === \"reject\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.reject(new Error(String(frame.message)));\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendMutate = (mutation) => {\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n }));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.mutationId === record.mutationId)) {\n continue;\n }\n pending.push({\n mutationId: record.mutationId,\n name: record.name,\n args: record.args,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n }\n };\n const hydrateCache = async () => {\n if (options.cache === undefined) {\n return;\n }\n let snapshot;\n try {\n snapshot = await options.cache.load();\n } catch {\n return;\n }\n if (snapshot === undefined || appliedVersion > 0) {\n return;\n }\n for (const row of snapshot.rows) {\n confirmed.set(key(row), row);\n }\n appliedVersion = snapshot.version;\n recompute();\n };\n if (options.cache === undefined) {\n connect();\n hydratePersisted();\n } else {\n (async () => {\n await hydrateCache();\n await hydratePersisted();\n connect();\n })();\n }\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n mutationId: mutationSeq += 1,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n sendMutate(mutation);\n }),\n disconnect: () => {\n if (closed || socket === undefined) {\n return;\n }\n try {\n socket.close();\n } catch {}\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n mutation.reject(new Error(\"sync collection closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\n// src/client/collaborativeText.ts\nvar createCollaborativeText = (options) => {\n const keyField = options.keyField ?? \"id\";\n const mutation = options.mutation ?? `${options.collection}:merge`;\n const replica = options.replica ?? globalThis.crypto.randomUUID();\n const make = options.create ?? ((id) => createTextCrdt(id));\n const crdt = make(replica);\n let current = {\n ready: false,\n status: \"connecting\",\n text: \"\"\n };\n let pendingText = null;\n const subscribers = new Set;\n const emit = () => {\n for (const run of subscribers) {\n run(current);\n }\n };\n const collection = createSyncCollection({\n collection: options.collection,\n key: (row) => row[keyField],\n params: options.params,\n url: options.url\n });\n const broadcast = (next) => {\n crdt.setText(next);\n current = { ...current, text: next };\n emit();\n const payload = crdt.takeDelta ? crdt.takeDelta() : crdt.state();\n collection.mutate({\n args: { [keyField]: options.id, [options.field]: payload },\n name: mutation\n });\n };\n const apply = (state) => {\n let { text } = current;\n const row = state.data.find((candidate) => candidate[keyField] === options.id);\n const fieldState = row?.[options.field];\n if (fieldState !== undefined) {\n crdt.merge(fieldState);\n text = crdt.text();\n }\n const ready = current.ready || fieldState !== undefined;\n current = { ready, status: state.status, text };\n emit();\n if (ready && pendingText !== null) {\n const buffered = pendingText;\n pendingText = null;\n broadcast(buffered);\n }\n };\n apply(collection.get());\n const unsubscribe = collection.subscribe(apply);\n return {\n get: () => current,\n subscribe(run) {\n subscribers.add(run);\n run(current);\n return () => {\n subscribers.delete(run);\n };\n },\n setText(next) {\n if (!current.ready) {\n pendingText = next;\n current = { ...current, text: next };\n emit();\n return;\n }\n broadcast(next);\n },\n anchorAt: (index) => crdt.anchorAt?.(index) ?? null,\n indexOfAnchor: (anchor) => crdt.indexOfAnchor?.(anchor) ?? 0,\n close() {\n unsubscribe();\n collection.close();\n subscribers.clear();\n }\n };\n};\n// src/client/presence.ts\nvar createPresence = (options) => {\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createPresence requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const id = options.memberId ?? globalThis.crypto?.randomUUID?.() ?? `m${Math.random()}`;\n const members = new Map;\n let state = options.state;\n let snapshot = [];\n const listeners = new Set;\n const emit = () => {\n snapshot = [...members].map(([memberId, memberState]) => ({\n id: memberId,\n state: memberState\n }));\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n const send = (frame) => {\n if (connected) {\n socket?.send(serializer.encodeClient(frame));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"presence-join\",\n room: options.room,\n memberId: id,\n state\n }));\n };\n ws.onmessage = (event) => {\n let frame;\n const decoded = serializer.decode(event.data);\n if (decoded === null || typeof decoded !== \"object\") {\n return;\n }\n frame = decoded;\n if (frame.type !== \"presence\" || frame.room !== options.room) {\n return;\n }\n reconnectBackoff.markHealthy();\n for (const member of frame.joined ?? []) {\n members.set(member.id, member.state);\n }\n for (const member of frame.updated ?? []) {\n members.set(member.id, member.state);\n }\n for (const memberId of frame.left ?? []) {\n members.delete(memberId);\n }\n emit();\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n connect();\n return {\n id,\n get: () => snapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n set: (next) => {\n state = next;\n send({ type: \"presence-set\", room: options.room, state: next });\n },\n close: () => {\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n send({ type: \"presence-leave\", room: options.room });\n socket?.close();\n members.clear();\n }\n };\n};\n// src/client/localStore.ts\nclass SyncLocalDataPolicyError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"SyncLocalDataPolicyError\";\n this.code = code;\n }\n}\n\nclass SyncLocalStoreSchemaError extends Error {\n code;\n storedVersion;\n targetVersion;\n constructor(code, message, versions = {}) {\n super(message);\n this.name = \"SyncLocalStoreSchemaError\";\n this.code = code;\n this.storedVersion = versions.storedVersion;\n this.targetVersion = versions.targetVersion;\n }\n}\nvar positiveVersion = (value, label) => {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `${label} must be a positive safe integer`);\n return value;\n};\nvar isSchemaBundle = (schema) => (\"components\" in schema);\nvar validatePolicyMatch = (match, label) => {\n if (match.length === 0 || match.trim() !== match || /^\\*+$/.test(match) || match.includes(\"**\"))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.match must be an exact name or a non-empty glob without adjacent wildcards.`);\n};\nvar validateSyncLocalDataPolicy = (policy, label = \"localData\") => {\n if (policy.maxBytesPerNamespace !== undefined && (!Number.isSafeInteger(policy.maxBytesPerNamespace) || policy.maxBytesPerNamespace < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.maxBytesPerNamespace must be a positive safe integer.`);\n for (const [index, rule] of (policy.collections ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.collections[${index}]`);\n if (rule.maxAgeMs !== undefined && (!Number.isSafeInteger(rule.maxAgeMs) || rule.maxAgeMs < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}].maxAgeMs must be a positive safe integer.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] declares ${rule.sensitivity} data without required protection or memory-only persistence.`);\n }\n for (const [index, rule] of (policy.mutations ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.mutations[${index}]`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] declares ${rule.sensitivity} arguments without required protection.`);\n }\n return policy;\n};\nvar resolveSyncLocalDataPolicy = (schema = { version: 1 }) => {\n const policies = normalizeSyncLocalSchemaComponents(schema).map((component) => component.localData ? validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`) : undefined).filter((policy) => policy !== undefined);\n const quotas = policies.map((policy) => policy.maxBytesPerNamespace).filter((value) => value !== undefined);\n return {\n ...quotas.length > 0 ? { maxBytesPerNamespace: Math.min(...quotas) } : {},\n collections: policies.flatMap((policy) => policy.collections ?? []),\n mutations: policies.flatMap((policy) => policy.mutations ?? [])\n };\n};\nvar policyMatches = (pattern, name) => pattern === name || (() => {\n const pieces = pattern.split(\"*\");\n if (pieces.length === 1)\n return false;\n let offset = 0;\n for (const [index, piece] of pieces.entries()) {\n if (piece.length === 0)\n continue;\n const found = name.indexOf(piece, offset);\n if (found < 0 || index === 0 && found !== 0)\n return false;\n offset = found + piece.length;\n }\n const last = pieces.at(-1);\n return last.length === 0 || name.endsWith(last);\n})();\nvar matchingPolicy = (rules, name) => {\n const matches = rules.filter((rule) => policyMatches(rule.match, name));\n if (matches.length === 0)\n return;\n const specificity = (rule) => rule.match.replaceAll(\"*\", \"\").length;\n matches.sort((left, right) => specificity(right) - specificity(left));\n if (matches[1] !== undefined && specificity(matches[0]) === specificity(matches[1]))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `Local-data policy has equally specific rules for \"${name}\".`);\n return matches[0];\n};\nvar resolveSyncLocalCollectionPolicy = (policy, name) => matchingPolicy(policy.collections, name) ?? { match: name };\nvar resolveSyncLocalMutationPolicy = (policy, name) => matchingPolicy(policy.mutations, name) ?? { match: name };\nvar normalizeSyncLocalSchemaComponents = (schema = { version: 1 }) => {\n const components = isSchemaBundle(schema) ? [...schema.components] : [{ ...schema, id: \"@absolutejs/app\" }];\n const ids = new Set;\n for (const component of components) {\n if (typeof component.id !== \"string\" || component.id.trim() !== component.id || component.id.length === 0)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync schema component id must be non-empty and trimmed\");\n if (ids.has(component.id))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync schema component \"${component.id}\" is declared more than once`);\n ids.add(component.id);\n if (component.localData)\n validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`);\n }\n return components.sort((a, b) => a.id.localeCompare(b.id));\n};\nvar createSyncLocalSchemaStatus = (components, orphanedComponents = [], includeComponents = true) => {\n const app = components.find((component) => component.id === \"@absolutejs/app\");\n return {\n ...includeComponents ? {\n components: components.map((component) => ({\n id: component.id,\n minimumCompatibleVersion: component.minimumCompatibleVersion,\n storedVersion: component.targetVersion,\n targetVersion: component.targetVersion\n }))\n } : {},\n minimumCompatibleVersion: app?.minimumCompatibleVersion ?? 1,\n ...orphanedComponents.length > 0 ? { orphanedComponents: [...orphanedComponents] } : {},\n state: \"ready\",\n storedVersion: app?.targetVersion ?? 1,\n targetVersion: app?.targetVersion ?? 1\n };\n};\nvar resolveSyncLocalSchemaComponents = (storedVersions, schema = { version: 1 }) => {\n const components = normalizeSyncLocalSchemaComponents(schema).map((component) => {\n const current = resolveSyncLocalMigrations(component.version, component);\n return {\n id: component.id,\n ...resolveSyncLocalMigrations(storedVersions[component.id] ?? current.minimumCompatibleVersion, component)\n };\n });\n const active = new Set(components.map((component) => component.id));\n const orphanedComponents = Object.keys(storedVersions).filter((id) => !active.has(id)).sort();\n return { components, orphanedComponents };\n};\nvar migrationCollectionName = (record, context) => record.collection ?? context.key;\nvar migrateRow = (row, operation) => {\n if (typeof row !== \"object\" || row === null || Array.isArray(row))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync ${operation.type} requires object rows`);\n const next = { ...row };\n if (operation.type === \"set-default\") {\n if (!Object.hasOwn(next, operation.field))\n next[operation.field] = structuredClone(operation.value);\n } else if (operation.type === \"remove-field\") {\n delete next[operation.field];\n } else if (Object.hasOwn(next, operation.from)) {\n if (Object.hasOwn(next, operation.to))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync rename-field cannot overwrite existing field \"${operation.to}\"`);\n next[operation.to] = next[operation.from];\n delete next[operation.from];\n }\n return next;\n};\nvar applyDeclarativeCollectionOperations = (record, context, operations) => {\n let current = structuredClone(record);\n for (const operation of operations) {\n if (operation.collection !== migrationCollectionName(current, context))\n continue;\n if (operation.type === \"delete-collection\")\n return null;\n current = {\n ...current,\n rows: current.rows.map((row) => migrateRow(row, operation))\n };\n }\n return current;\n};\nvar resolveSyncLocalMigrations = (storedVersion, schema = { version: 1 }) => {\n positiveVersion(storedVersion, \"Stored Sync schema version\");\n const targetVersion = positiveVersion(schema.version, \"Target Sync schema version\");\n const migrations = [...schema.migrations ?? []].sort((a, b) => a.toVersion - b.toVersion);\n const versions = new Set;\n for (const migration of migrations) {\n positiveVersion(migration.toVersion, \"Sync migration toVersion\");\n if (versions.has(migration.toVersion))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync migration ${migration.toVersion} is declared more than once`);\n versions.add(migration.toVersion);\n }\n const inferredMinimum = migrations[0] ? migrations[0].toVersion - 1 : targetVersion;\n const minimumCompatibleVersion = positiveVersion(schema.minimumCompatibleVersion ?? inferredMinimum, \"Minimum compatible Sync schema version\");\n if (minimumCompatibleVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Minimum compatible Sync schema version cannot exceed its target\");\n if (storedVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_NEW\", `Stored Sync schema ${storedVersion} is newer than this runtime's schema ${targetVersion}`, { storedVersion, targetVersion });\n if (storedVersion < minimumCompatibleVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_OLD\", `Stored Sync schema ${storedVersion} is older than the minimum compatible schema ${minimumCompatibleVersion}`, { storedVersion, targetVersion });\n const steps = [];\n for (let version = storedVersion + 1;version <= targetVersion; version++) {\n const migration = migrations.find((candidate) => candidate.toVersion === version);\n if (migration === undefined)\n throw new SyncLocalStoreSchemaError(\"MIGRATION_MISSING\", `Sync migration ${version - 1} -> ${version} is missing`, { storedVersion, targetVersion });\n steps.push(migration);\n }\n return { minimumCompatibleVersion, steps, targetVersion };\n};\nvar migrateSyncLocalCollectionRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n current = applyDeclarativeCollectionOperations(current, context, step.operations ?? []);\n if (current === null)\n break;\n const next = step.migrateCollection?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined)\n current = structuredClone(next);\n }\n return current;\n};\nvar migrateSyncLocalMutationRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n const next = step.migrateMutation?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined) {\n if (next.operationId !== context.key)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync migrations cannot change a mutation operationId\");\n current = structuredClone(next);\n }\n }\n return current;\n};\nvar jsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\nvar evictionRank = {\n disposable: 0,\n normal: 1,\n critical: 2\n};\nvar runSyncLocalPolicyTransaction = async (options) => {\n const { mode, now, policy, raw } = options;\n const requireProtection = (kind, name) => {\n if (!options.protected)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync ${kind} \"${name}\" requires encrypted persistence, but this runtime has no audited protection provider.`);\n };\n const collectionPolicy = (record, key) => resolveSyncLocalCollectionPolicy(policy, record.collection ?? key);\n const unavailableMemoryOnly = (rule) => rule.protection === \"required\" && !options.protected && rule.onProtectionUnavailable === \"memory-only\";\n const expired = (record, key) => {\n const rule = collectionPolicy(record, key);\n return rule.maxAgeMs !== undefined && record.storedAt !== undefined && now - record.storedAt >= rule.maxAgeMs;\n };\n const tx = {\n ...raw,\n getCollection: async (key) => {\n const record = await raw.getCollection(key);\n if (record === undefined)\n return;\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(record, key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n return record;\n },\n listCollections: async () => {\n const kept = [];\n for (const entry of await raw.listCollections()) {\n const rule = collectionPolicy(entry.record, entry.key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(entry.record, entry.key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(entry.key);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", entry.record.collection ?? entry.key);\n kept.push(entry);\n }\n return kept;\n },\n putCollection: async (key, record) => {\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n await raw.putCollection(key, rule.maxAgeMs !== undefined || policy.maxBytesPerNamespace !== undefined ? { ...record, storedAt: now } : record);\n },\n getMutation: async (operationId) => {\n const record = await raw.getMutation(operationId);\n if (record && resolveSyncLocalMutationPolicy(policy, record.name).persistence === \"memory-only\") {\n if (mode === \"readwrite\")\n await raw.deleteMutation(operationId);\n return;\n }\n if (record && resolveSyncLocalMutationPolicy(policy, record.name).protection === \"required\")\n requireProtection(\"mutation\", record.name);\n return record;\n },\n listMutations: async () => {\n const records = [];\n for (const record of await raw.listMutations()) {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\") {\n if (mode === \"readwrite\")\n await raw.deleteMutation(record.operationId);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n records.push(record);\n }\n return records;\n },\n putMutation: async (record) => {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\") {\n await raw.deleteMutation(record.operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n await raw.putMutation(record);\n }\n };\n const result = await options.run(tx);\n if (mode === \"readwrite\" && policy.maxBytesPerNamespace !== undefined) {\n const mutations = await raw.listMutations();\n let collections = await raw.listCollections();\n let bytes = mutations.reduce((total, value) => total + jsonBytes(value), 0) + collections.reduce((total, entry) => total + jsonBytes(entry.record), 0);\n const candidates = [...collections].sort((left, right) => {\n const leftRule = collectionPolicy(left.record, left.key);\n const rightRule = collectionPolicy(right.record, right.key);\n return evictionRank[leftRule.evictionPriority ?? \"normal\"] - evictionRank[rightRule.evictionPriority ?? \"normal\"] || (left.record.storedAt ?? 0) - (right.record.storedAt ?? 0) || left.key.localeCompare(right.key);\n });\n for (const candidate of candidates) {\n if (bytes <= policy.maxBytesPerNamespace)\n break;\n await raw.deleteCollection(candidate.key);\n bytes -= jsonBytes(candidate.record);\n }\n if (bytes > policy.maxBytesPerNamespace)\n throw new SyncLocalDataPolicyError(\"QUOTA_EXCEEDED\", `Sync pending operations require ${bytes} logical bytes, exceeding the protected ${policy.maxBytesPerNamespace}-byte namespace quota; pending mutations were retained.`);\n }\n return result;\n};\nvar clone = (value) => structuredClone(value);\nvar emptyNamespace = () => ({\n collections: new Map,\n mutations: new Map\n});\nvar cloneNamespace = (source) => ({\n installationId: source.installationId,\n collections: new Map([...source.collections].map(([key, value]) => [key, clone(value)])),\n mutations: new Map([...source.mutations].map(([key, value]) => [key, clone(value)]))\n});\nvar createMemorySyncLocalStore = ({\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n const targetComponents = normalizeSyncLocalSchemaComponents(storageSchema);\n const resolvedSchema = resolveSyncLocalSchemaComponents(Object.fromEntries(targetComponents.map((component) => [\n component.id,\n component.version\n ])), storageSchema);\n const schemaStatus = createSyncLocalSchemaStatus(resolvedSchema.components, [], isSchemaBundle(storageSchema));\n const namespaces = new Map;\n let tail = Promise.resolve();\n const withLock = async (run) => {\n let release;\n const previous = tail;\n tail = new Promise((resolve) => {\n release = resolve;\n });\n await previous;\n try {\n return await run();\n } finally {\n release();\n }\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n const protector = await prepareProtector();\n return withLock(async () => {\n const current = namespaces.get(namespace) ?? emptyNamespace();\n const working = cloneNamespace(current);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const tx = {\n getInstallationId: async () => working.installationId,\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n working.installationId = installationId;\n },\n getCollection: async (key) => {\n const record = working.collections.get(key);\n return record === undefined ? undefined : clone(record);\n },\n listCollections: async () => [...working.collections.entries()].map(([key, record]) => ({\n key,\n record: clone(record)\n })),\n putCollection: async (key, record) => {\n writable();\n working.collections.set(key, clone(record));\n },\n deleteCollection: async (key) => {\n writable();\n working.collections.delete(key);\n },\n listMutations: async () => [...working.mutations.values()].sort((a, b) => a.createdAt - b.createdAt).map(clone),\n getMutation: async (operationId) => {\n const record = working.mutations.get(operationId);\n return record === undefined ? undefined : clone(record);\n },\n putMutation: async (record) => {\n writable();\n working.mutations.set(record.operationId, clone(record));\n },\n deleteMutation: async (operationId) => {\n writable();\n working.mutations.delete(operationId);\n }\n };\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n if (mode === \"readwrite\")\n namespaces.set(namespace, working);\n return result;\n });\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...schemaStatus }),\n deleteNamespace: async (namespace) => {\n await withLock(async () => {\n namespaces.delete(namespace);\n return;\n });\n }\n };\n};\nvar openProtectedRecord = (value, protector, context) => {\n if (protector === undefined || protector.id !== value.protector)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync data is protected by \"${value.protector}\", which is unavailable in this runtime.`);\n return JSON.parse(protector.open(value.value, { ...context, name: value.name }));\n};\nvar requestResult = (request) => new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar transactionComplete = (transaction) => new Promise((resolve, reject) => {\n transaction.oncomplete = () => resolve();\n transaction.onabort = () => reject(transaction.error ?? new Error(\"IndexedDB transaction aborted\"));\n transaction.onerror = () => reject(transaction.error ?? new Error(\"IndexedDB transaction failed\"));\n});\nvar deleteIndexRows = (index, namespace) => new Promise((resolve, reject) => {\n const request = index.openCursor(namespace);\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n cursor.delete();\n cursor.continue();\n };\n});\nvar migrateIndexedRows = (request, migrate) => new Promise((resolve, reject) => {\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n let next;\n try {\n next = migrate(cursor.value);\n } catch (error) {\n reject(error);\n return;\n }\n const write = next === null ? cursor.delete() : cursor.update(next);\n write.onerror = () => reject(write.error);\n write.onsuccess = () => cursor.continue();\n };\n});\nvar createIndexedDbSyncLocalStore = ({\n databaseName = \"absolutejs-sync-local-v1\",\n indexedDB: factory = globalThis.indexedDB,\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n if (factory === undefined) {\n throw new Error(\"createIndexedDbSyncLocalStore requires IndexedDB in this runtime\");\n }\n let databasePromise;\n const database = () => {\n databasePromise ??= new Promise((resolve, reject) => {\n const request = factory.open(databaseName, 2);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"metadata\"))\n db.createObjectStore(\"metadata\");\n if (!db.objectStoreNames.contains(\"collections\")) {\n const collections = db.createObjectStore(\"collections\", {\n keyPath: [\"namespace\", \"key\"]\n });\n collections.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"mutations\")) {\n const mutations = db.createObjectStore(\"mutations\", {\n keyPath: [\"namespace\", \"operationId\"]\n });\n mutations.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"schema\"))\n db.createObjectStore(\"schema\");\n };\n request.onsuccess = () => {\n request.result.onversionchange = () => request.result.close();\n resolve(request.result);\n };\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error(`IndexedDB upgrade blocked for \"${databaseName}\"`));\n });\n return databasePromise;\n };\n let schemaPromise;\n const prepareSchema = () => {\n schemaPromise ??= Promise.all([database(), prepareProtector()]).then(async ([db, preparedProtector]) => {\n const native = db.transaction([\"schema\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n try {\n const schemaStore = native.objectStore(\"schema\");\n const savedVersion = await requestResult(schemaStore.get(\"logicalVersion\"));\n const savedComponents = await requestResult(schemaStore.get(\"componentVersions\"));\n const storedVersions = {};\n if (typeof savedComponents === \"object\" && savedComponents !== null && !Array.isArray(savedComponents))\n for (const [id, version] of Object.entries(savedComponents)) {\n if (!Number.isSafeInteger(version) || version < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Stored Sync component \"${id}\" has an invalid version`);\n storedVersions[id] = version;\n }\n if (storedVersions[\"@absolutejs/app\"] === undefined && typeof savedVersion === \"number\")\n storedVersions[\"@absolutejs/app\"] = savedVersion;\n const resolved = resolveSyncLocalSchemaComponents(storedVersions, storageSchema);\n const steps = resolved.components.flatMap((component) => component.steps);\n if (steps.length > 0) {\n await migrateIndexedRows(native.objectStore(\"collections\").openCursor(), (row) => {\n const {\n namespace,\n key,\n protectedRecord,\n ...plain\n } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"collection\", namespace }) : plain;\n const migrated = migrateSyncLocalCollectionRecord(record, { key, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n key,\n namespace,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"collection\",\n name: migrated.collection ?? key,\n namespace\n })\n }\n } : { ...migrated, key, namespace };\n });\n await migrateIndexedRows(native.objectStore(\"mutations\").openCursor(), (row) => {\n const { namespace, protectedRecord, ...plain } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"mutation\", namespace }) : plain;\n const migrated = migrateSyncLocalMutationRecord(record, { key: record.operationId, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n createdAt: migrated.createdAt,\n namespace,\n operationId: migrated.operationId,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"mutation\",\n name: migrated.name,\n namespace\n })\n }\n } : { ...migrated, namespace };\n });\n }\n const nextVersions = { ...storedVersions };\n for (const component of resolved.components)\n nextVersions[component.id] = component.targetVersion;\n await requestResult(schemaStore.put(nextVersions, \"componentVersions\"));\n const app = resolved.components.find((component) => component.id === \"@absolutejs/app\");\n if (app)\n await requestResult(schemaStore.put(app.targetVersion, \"logicalVersion\"));\n await completed;\n return createSyncLocalSchemaStatus(resolved.components, resolved.orphanedComponents, isSchemaBundle(storageSchema));\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n });\n return schemaPromise;\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n await prepareSchema();\n const protector = await prepareProtector();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], mode);\n const completed = transactionComplete(native);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const metadata = native.objectStore(\"metadata\");\n const collections = native.objectStore(\"collections\");\n const mutations = native.objectStore(\"mutations\");\n const tx = {\n getInstallationId: () => requestResult(metadata.get(namespace)),\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n await requestResult(metadata.put(installationId, namespace));\n },\n getCollection: async (key) => {\n const row = await requestResult(collections.get([namespace, key]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace });\n const {\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n listCollections: async () => {\n const rows = await requestResult(collections.index(\"namespace\").getAll(namespace));\n return rows.map((row) => ({\n key: row.key,\n record: row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace }) : (({\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n }) => record)(row)\n }));\n },\n putCollection: async (key, record) => {\n writable();\n await requestResult(collections.put(protector ? {\n key,\n namespace,\n protectedRecord: {\n name: record.collection ?? key,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"collection\",\n name: record.collection ?? key,\n namespace\n })\n }\n } : { ...record, key, namespace }));\n },\n deleteCollection: async (key) => {\n writable();\n await requestResult(collections.delete([namespace, key]));\n },\n listMutations: async () => {\n const rows = await requestResult(mutations.index(\"namespace\").getAll(namespace));\n return rows.map((row) => row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace }) : (({\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n }) => record)(row)).sort((a, b) => a.createdAt - b.createdAt);\n },\n getMutation: async (operationId) => {\n const row = await requestResult(mutations.get([namespace, operationId]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace });\n const {\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n putMutation: async (record) => {\n writable();\n await requestResult(mutations.put(protector ? {\n createdAt: record.createdAt,\n namespace,\n operationId: record.operationId,\n protectedRecord: {\n name: record.name,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"mutation\",\n name: record.name,\n namespace\n })\n }\n } : { ...record, namespace }));\n },\n deleteMutation: async (operationId) => {\n writable();\n await requestResult(mutations.delete([namespace, operationId]));\n }\n };\n try {\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n await completed;\n return result;\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...await prepareSchema() }),\n deleteNamespace: async (namespace) => {\n await prepareSchema();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n await requestResult(native.objectStore(\"metadata\").delete(namespace));\n await deleteIndexRows(native.objectStore(\"collections\").index(\"namespace\"), namespace);\n await deleteIndexRows(native.objectStore(\"mutations\").index(\"namespace\"), namespace);\n await completed;\n }\n };\n};\nvar randomId = () => {\n const id = globalThis.crypto?.randomUUID?.();\n if (id === undefined) {\n throw new Error(\"Sync operation ids require crypto.randomUUID or a createId callback\");\n }\n return id;\n};\nvar ensureSyncInstallationId = (store, namespace, createId = randomId) => store.transaction(namespace, \"readwrite\", async (tx) => {\n const existing = await tx.getInstallationId();\n if (existing !== undefined)\n return existing;\n const installationId = createId();\n await tx.setInstallationId(installationId);\n return installationId;\n});\nvar createSyncOperationId = (installationId, createId = randomId) => `${installationId}:${createId()}`;\n\n// src/reconciliation.ts\nclass SyncMutationRejectedError extends Error {\n operationId;\n rejection;\n constructor(rejection, operationId) {\n super(rejection.message);\n this.name = \"SyncMutationRejectedError\";\n this.operationId = operationId;\n this.rejection = rejection;\n }\n}\n\n// src/client/syncClient.ts\nvar serverFrameTypes2 = [\n \"snapshot\",\n \"diff\",\n \"frame\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar canonicalJson = (value) => {\n const seen = new Set;\n const normalize = (input) => {\n if (input === undefined)\n return null;\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") {\n return input;\n }\n if (typeof input === \"number\") {\n if (!Number.isFinite(input)) {\n throw new Error(\"Sync collection params must contain finite numbers; provide an explicit localKey\");\n }\n return input;\n }\n if (typeof input !== \"object\") {\n throw new Error(\"Sync collection params must be JSON-serializable; provide an explicit localKey\");\n }\n if (seen.has(input)) {\n throw new Error(\"Sync collection params contain a cycle; provide an explicit localKey\");\n }\n seen.add(input);\n try {\n if (Array.isArray(input))\n return input.map(normalize);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Sync collection params must use plain objects; provide an explicit localKey\");\n }\n return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));\n } finally {\n seen.delete(input);\n }\n };\n return JSON.stringify(normalize(value));\n};\nvar defaultLocalKey = (collection, params) => params === undefined ? collection : `${collection}:${canonicalJson(params)}`;\nvar ticketAuthenticatedSocketUrl = (url) => {\n if (/(?:\\?|&)__absolute_auth=/u.test(url))\n return url;\n const hashAt = url.indexOf(\"#\");\n const beforeHash = hashAt === -1 ? url : url.slice(0, hashAt);\n const hash = hashAt === -1 ? \"\" : url.slice(hashAt);\n const separator = beforeHash.includes(\"?\") ? \"&\" : \"?\";\n return `${beforeHash}${separator}__absolute_auth=ticket${hash}`;\n};\nvar createSyncClient = (options) => {\n const runtime = getSyncClientRuntimeTransport();\n const socketTicket = options.socketTicket ?? runtime?.socketTicket;\n const durable = options.durable ?? runtime?.durable;\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const maxAttempts = durable?.maxAttempts ?? 5;\n if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {\n throw new TypeError(\"durable.maxAttempts must be a positive integer\");\n }\n const retryBackoff = durable?.retryBackoff ?? ((attempt) => Math.min(30000, 500 * 2 ** (attempt - 1)));\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncClient requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const entries = new Map;\n const pending = [];\n const mutationOwner = new Map;\n const deadLetters = new Map;\n const retryTimers = new Map;\n const statusListeners = new Set;\n let nextEntryId = 0;\n let mutationSeq = 0;\n let installationId;\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let immediateReconnect = false;\n let clientStatus = {\n connection: \"connecting\",\n deadLetters: 0,\n pending: 0\n };\n const snapshotStatus = () => ({ ...clientStatus });\n const updateStatus = (patch = {}) => {\n const oldestPendingAt = pending.reduce((oldest, mutation) => oldest === undefined ? mutation.createdAt : Math.min(oldest, mutation.createdAt), undefined);\n clientStatus = {\n ...clientStatus,\n ...patch,\n pending: pending.length,\n deadLetters: deadLetters.size,\n ...oldestPendingAt === undefined ? {} : { oldestPendingAt }\n };\n if (oldestPendingAt === undefined)\n delete clientStatus.oldestPendingAt;\n for (const listener of statusListeners)\n listener(snapshotStatus());\n };\n const notify = (entry) => {\n for (const listener of entry.listeners) {\n listener(entry.state);\n }\n };\n const rebuild = (entry, patch = {}) => {\n const working = new Map(entry.confirmed);\n const draft = {\n set: (row) => working.set(entry.key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n if (mutation.ownerKey === entry.localKey) {\n mutation.optimistic?.(draft);\n }\n for (const operation of mutation.optimisticOperations) {\n if (operation.collection !== entry.localKey)\n continue;\n if (operation.type === \"delete\")\n draft.delete(operation.key);\n else\n draft.set(operation.row);\n }\n }\n entry.state = {\n ...entry.state,\n ...patch,\n data: [...working.values()]\n };\n };\n const recompute = (entry, patch = {}) => {\n rebuild(entry, patch);\n notify(entry);\n };\n const applyDiffToConfirmed = (entry, diff) => {\n for (const row of diff.removed) {\n entry.confirmed.delete(entry.key(row));\n }\n for (const row of diff.added) {\n entry.confirmed.set(entry.key(row), row);\n }\n for (const row of diff.changed) {\n entry.confirmed.set(entry.key(row), row);\n }\n };\n const settlePending = (mutationId) => {\n const mutation = mutationOwner.get(mutationId);\n mutationOwner.delete(mutationId);\n if (mutation === undefined) {\n return;\n }\n const index = pending.findIndex((item) => item === mutation);\n if (index === -1) {\n return;\n }\n pending.splice(index, 1);\n if (mutation.operationId !== undefined) {\n const timer = retryTimers.get(mutation.operationId);\n if (timer !== undefined)\n clearTimeout(timer);\n retryTimers.delete(mutation.operationId);\n }\n updateStatus();\n return mutation;\n };\n const reportStorageError = (error) => {\n durable?.onError?.(error);\n options.onError?.(error);\n };\n let localWriteTail = Promise.resolve();\n const queueLocalWrite = (run) => {\n const next = localWriteTail.then(run);\n localWriteTail = next.then(() => {\n return;\n }, (error) => reportStorageError(error));\n return next;\n };\n const persistEntries = (affected) => {\n if (durable === undefined)\n return;\n const snapshots = new Map;\n for (const entry of affected) {\n snapshots.set(entry.localKey, {\n rows: [...entry.confirmed.values()],\n version: entry.appliedVersion,\n cursor: entry.cursor,\n collection: entry.collection,\n params: entry.params,\n ...entry.headlessKey ? { headlessKey: entry.headlessKey } : {}\n });\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n for (const [key, record] of snapshots) {\n await tx.putCollection(key, record);\n }\n })).catch(() => {});\n };\n const recomputeMutationEntries = (mutation) => {\n const keys = new Set([\n mutation.ownerKey,\n ...mutation.optimisticOperations.map((operation) => operation.collection)\n ]);\n for (const entry of entries.values()) {\n if (keys.has(entry.localKey))\n recompute(entry);\n }\n };\n let sendMutate;\n const finishPending = (mutationId, result, error) => {\n const mutation = settlePending(mutationId);\n if (mutation === undefined)\n return;\n recomputeMutationEntries(mutation);\n if (error === undefined)\n mutation.resolve?.(result);\n else\n mutation.reject?.(error);\n };\n const finishDurablePending = (mutationId, echoedOperationId, result, error) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, result, error);\n return;\n }\n if (echoedOperationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation acknowledgment identity mismatch for ${mutation.operationId}`));\n return;\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => finishPending(mutationId, result, error)).catch(() => {});\n };\n const deadLetterPending = (mutationId, rejection) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation?.operationId));\n return;\n }\n const deadLetteredAt = Date.now();\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(mutation.operationId);\n if (current === undefined)\n return;\n const record = {\n ...current,\n attempts: mutation.attempts,\n deadLetteredAt,\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete record.nextAttemptAt;\n await tx.putMutation(record);\n deadLetters.set(record.operationId, record);\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n };\n const retryRejectedPending = (mutation, rejection) => {\n if (mutation.operationId === undefined || durable === undefined) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n if (mutation.attempts >= maxAttempts) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n const delay = Math.max(0, rejection.retryAfterMs ?? retryBackoff(mutation.attempts));\n mutation.nextAttemptAt = Date.now() + delay;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n lastError: rejection.message,\n nextAttemptAt: mutation.nextAttemptAt,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n sendMutate(mutation);\n }).catch(() => {});\n };\n const applyFrame = (frame) => {\n updateStatus({ connection: \"online\" });\n if (frame.type === \"snapshot\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n entry.confirmed.clear();\n for (const row of frame.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n if (frame.version !== undefined) {\n entry.appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry, { status: \"ready\", error: undefined });\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"diff\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n applyDiffToConfirmed(entry, frame);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry);\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"frame\") {\n const affected = new Set;\n for (const diff of frame.diffs) {\n const entry = entries.get(diff.id);\n if (entry === undefined) {\n continue;\n }\n applyDiffToConfirmed(entry, diff);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n rebuild(entry);\n affected.add(entry);\n }\n persistEntries(affected);\n for (const entry of affected) {\n notify(entry);\n }\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"error\") {\n if (frame.id !== undefined) {\n const entry = entries.get(frame.id);\n if (entry !== undefined) {\n recompute(entry, { error: frame.message });\n }\n }\n options.onError?.(frame.message);\n updateStatus({ lastError: String(frame.message) });\n } else if (frame.type === \"ack\") {\n updateStatus({ lastSuccessfulPushAt: Date.now() });\n finishDurablePending(frame.mutationId, frame.operationId, frame.result);\n } else if (frame.type === \"reject\") {\n const mutation = mutationOwner.get(frame.mutationId);\n if (mutation?.operationId !== undefined && frame.operationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation rejection identity mismatch for ${mutation.operationId}`));\n return;\n }\n const rejection = frame.rejection ?? {\n kind: \"permanent\",\n message: String(frame.message)\n };\n if (rejection.kind === \"retryable\" && mutation !== undefined) {\n retryRejectedPending(mutation, rejection);\n } else {\n deadLetterPending(frame.mutationId, rejection);\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendSubscribe = (entry) => {\n const since = entry.cursor ?? (entry.appliedVersion > 0 ? entry.appliedVersion : undefined);\n wsSend(serializer.encodeClient({\n type: \"subscribe\",\n id: entry.id,\n collection: entry.collection,\n params: entry.params,\n since\n }));\n };\n sendMutate = (mutation) => {\n if (mutation.nextAttemptAt !== undefined) {\n const delay = mutation.nextAttemptAt - Date.now();\n if (delay > 0 && mutation.operationId !== undefined) {\n if (!retryTimers.has(mutation.operationId)) {\n const timer = setTimeout(() => {\n retryTimers.delete(mutation.operationId);\n mutation.nextAttemptAt = undefined;\n sendMutate(mutation);\n }, delay);\n retryTimers.set(mutation.operationId, timer);\n }\n return;\n }\n mutation.nextAttemptAt = undefined;\n }\n if (!connected)\n return;\n const payload = serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n operationId: mutation.operationId,\n name: mutation.name,\n args: mutation.args\n });\n if (durable === undefined || mutation.operationId === undefined) {\n wsSend(payload);\n return;\n }\n if (mutation.sending)\n return;\n mutation.sending = true;\n mutation.attempts += 1;\n const targetSocket = socket;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record !== undefined) {\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n state: \"pending\",\n nextAttemptAt: undefined\n });\n }\n })).catch(() => {}).finally(() => {\n mutation.sending = false;\n if (connected && socket === targetSocket && pending.includes(mutation)) {\n targetSocket?.send(payload);\n }\n });\n };\n const initializeDurable = async () => {\n if (durable === undefined)\n return;\n installationId = await ensureSyncInstallationId(durable.store, durable.namespace, durable.createId);\n const records = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.listMutations());\n for (const record of records) {\n if (record.state === \"dead-letter\") {\n deadLetters.set(record.operationId, record);\n continue;\n }\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId: record.operationId,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n name: record.name,\n args: record.args,\n optimisticOperations: record.optimistic,\n inverse: record.inverse,\n attempts: record.attempts,\n createdAt: record.createdAt,\n nextAttemptAt: record.nextAttemptAt\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n }\n updateStatus();\n };\n const durableReady = durable === undefined ? Promise.resolve() : initializeDurable().catch((error) => {\n reportStorageError(error);\n throw error;\n });\n const hydrateEntry = async (entry) => {\n if (durable === undefined)\n return;\n await durableReady;\n const record = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.getCollection(entry.localKey));\n if (entry.closed || record === undefined) {\n if (!entry.closed)\n recompute(entry);\n return;\n }\n entry.confirmed.clear();\n for (const row of record.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n entry.appliedVersion = record.version;\n entry.cursor = record.cursor;\n recompute(entry);\n };\n const connect = () => {\n if (closed) {\n return;\n }\n reconnectTimer = undefined;\n updateStatus({ connection: \"connecting\" });\n const ws = new Impl(socketTicket ? ticketAuthenticatedSocketUrl(options.url) : options.url);\n socket = ws;\n const sendInitialFrames = () => {\n if (socket !== ws || closed)\n return;\n if (socketTicket) {\n socketTicket().then((ticket) => {\n if (socket !== ws || closed)\n return;\n wsSend(serializer.encodeClient({\n type: \"authenticate\",\n ticket\n }));\n connected = true;\n for (const entry of entries.values())\n sendSubscribe(entry);\n for (const mutation of pending)\n sendMutate(mutation);\n }).catch((error) => {\n options.onError?.(error);\n updateStatus({ lastError: String(error) });\n ws.close();\n });\n return;\n }\n connected = true;\n for (const entry of entries.values()) {\n sendSubscribe(entry);\n }\n for (const mutation of pending)\n sendMutate(mutation);\n };\n ws.onopen = () => {\n if (durable === undefined) {\n sendInitialFrames();\n return;\n }\n Promise.all([...entries.values()].map((entry) => entry.hydrated)).then(sendInitialFrames).catch((error) => {\n reportStorageError(error);\n ws.close();\n });\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes2)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n if (socket === ws)\n socket = undefined;\n connected = false;\n if (closed) {\n return;\n }\n updateStatus({ connection: \"offline\" });\n if (immediateReconnect) {\n immediateReconnect = false;\n connect();\n return;\n }\n if (reconnectMs <= 0)\n return;\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n if (durable === undefined)\n connect();\n else\n durableReady.then(connect).catch(() => {});\n const normalizeOptimisticOperations = (ownerKey, operations) => (operations ?? []).map((operation) => operation.type === \"delete\" ? {\n type: \"delete\",\n collection: operation.collection ?? ownerKey,\n key: operation.key\n } : {\n type: operation.type,\n collection: operation.collection ?? ownerKey,\n row: operation.row\n });\n const captureInverse = (operations) => {\n const working = new Map;\n const entryFor = (localKey) => {\n const entry = [...entries.values()].find((item) => item.localKey === localKey);\n if (entry === undefined) {\n throw new Error(`Durable optimistic operation targets unopened collection \"${localKey}\"`);\n }\n let rows = working.get(localKey);\n if (rows === undefined) {\n rows = new Map(entry.state.data.map((row) => [entry.key(row), row]));\n working.set(localKey, rows);\n }\n return { entry, rows };\n };\n const inverse = [];\n for (const operation of operations) {\n const { entry, rows } = entryFor(operation.collection);\n if (operation.type === \"delete\") {\n const existing2 = rows.get(operation.key);\n if (existing2 !== undefined) {\n inverse.unshift({\n type: \"insert\",\n collection: operation.collection,\n row: existing2\n });\n }\n rows.delete(operation.key);\n continue;\n }\n const rowKey = entry.key(operation.row);\n const existing = rows.get(rowKey);\n inverse.unshift(existing === undefined ? {\n type: \"delete\",\n collection: operation.collection,\n key: rowKey\n } : {\n type: \"update\",\n collection: operation.collection,\n row: existing\n });\n rows.set(rowKey, operation.row);\n }\n return inverse;\n };\n const collection = (handleOptions) => {\n const entryId = `c${nextEntryId}`;\n nextEntryId += 1;\n const localKey = handleOptions.localKey ?? defaultLocalKey(handleOptions.collection, handleOptions.params);\n if (localKey.length === 0) {\n throw new Error(\"Sync collection localKey must not be empty\");\n }\n const entry = {\n id: entryId,\n localKey,\n collection: handleOptions.collection,\n params: handleOptions.params,\n key: handleOptions.key ?? ((row) => row.id),\n headlessKey: handleOptions.key === undefined ? \"id\" : undefined,\n confirmed: new Map,\n state: { data: [], status: \"connecting\", error: undefined },\n listeners: new Set,\n appliedVersion: 0,\n cursor: undefined,\n closed: false,\n hydrated: Promise.resolve()\n };\n entries.set(entryId, entry);\n entry.hydrated = hydrateEntry(entry);\n if (connected)\n entry.hydrated.then(() => sendSubscribe(entry)).catch(reportStorageError);\n return {\n get: () => entry.state,\n subscribe: (listener) => {\n const typed = listener;\n entry.listeners.add(typed);\n listener(entry.state);\n return () => {\n entry.listeners.delete(typed);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const addPending = (operationId, optimisticOperations, inverse, createdAt = Date.now()) => {\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId,\n ownerKey: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n optimisticOperations,\n inverse,\n attempts: 0,\n createdAt,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n updateStatus();\n recomputeMutationEntries(mutation);\n sendMutate(mutation);\n };\n if (durable === undefined) {\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n addPending(undefined, optimisticOperations, inverse);\n return;\n }\n (async () => {\n await entry.hydrated;\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n await durableReady;\n const operationId = createSyncOperationId(installationId, durable.createId);\n const createdAt = Date.now();\n const record = {\n operationId,\n owner: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: optimisticOperations,\n inverse,\n createdAt,\n attempts: 0,\n state: \"pending\"\n };\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.putMutation(record)));\n addPending(operationId, optimisticOperations, inverse, createdAt);\n })().catch(reject);\n }),\n close: () => {\n if (entry.closed) {\n return;\n }\n entry.closed = true;\n entries.delete(entryId);\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: entryId\n }));\n }\n }\n };\n };\n const listDeadLetters = async () => {\n if (durable === undefined)\n return [];\n await durableReady;\n return [...deadLetters.values()].sort((a, b) => a.createdAt - b.createdAt).map((record) => structuredClone(record));\n };\n const retryDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter retry requires a durable Sync client\");\n }\n await durableReady;\n if (closed)\n throw new Error(\"Cannot retry a dead letter on a closed client\");\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\") {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n const next = {\n ...current,\n attempts: 0,\n state: \"pending\"\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n createdAt: record.createdAt,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\"\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n };\n const discardDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter discard requires a durable Sync client\");\n }\n await durableReady;\n if (!deadLetters.has(operationId)) {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(operationId)));\n deadLetters.delete(operationId);\n updateStatus();\n };\n const subscribeStatus = (listener) => {\n statusListeners.add(listener);\n listener(snapshotStatus());\n return () => {\n statusListeners.delete(listener);\n };\n };\n const flush = async ({ timeoutMs = 1e4 } = {}) => {\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"Sync flush timeoutMs must be a non-negative number\");\n }\n await durableReady;\n if (pending.length === 0) {\n return {\n deadLetters: deadLetters.size,\n pending: 0,\n timedOut: false\n };\n }\n if (!connected)\n reconnect();\n const timedOut = await new Promise((resolve) => {\n let settled = false;\n let remove = () => {\n return;\n };\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n remove();\n resolve(true);\n }, timeoutMs);\n remove = subscribeStatus((current) => {\n if (settled || current.pending > 0)\n return;\n settled = true;\n clearTimeout(timer);\n remove();\n resolve(false);\n });\n });\n return {\n deadLetters: deadLetters.size,\n pending: pending.length,\n timedOut\n };\n };\n let removeRuntimeClient;\n const close = () => {\n if (closed)\n return;\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n socket?.close();\n for (const timer of retryTimers.values())\n clearTimeout(timer);\n retryTimers.clear();\n entries.clear();\n mutationOwner.clear();\n pending.length = 0;\n updateStatus({ connection: \"closed\" });\n statusListeners.clear();\n removeRuntimeClient?.();\n removeRuntimeClient = undefined;\n };\n const disconnect = () => {\n if (closed || socket === undefined) {\n return;\n }\n socket.close();\n };\n const reconnect = () => {\n if (closed)\n return;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\n const current = socket;\n if (current && current.readyState !== current.CLOSED) {\n immediateReconnect = true;\n current.close();\n return;\n }\n socket = undefined;\n connect();\n };\n const client = {\n close,\n collection,\n discardDeadLetter,\n disconnect,\n flush,\n listDeadLetters,\n reconnect,\n retryDeadLetter,\n status: snapshotStatus,\n subscribeStatus\n };\n removeRuntimeClient = runtime?.registerClient?.(client) ?? undefined;\n return client;\n};\n// src/client/syncStore.ts\nvar serverFrameTypes3 = [\"snapshot\", \"diff\", \"error\"];\nvar SUBSCRIPTION_ID2 = \"s\";\nvar syncStore = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const reconcileGraceMs = options.reconcileGraceMs ?? 3000;\n const mutations = options.mutations ?? {};\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"syncStore requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: options.initialData ? [...options.initialData] : [],\n status: \"connecting\",\n error: undefined\n };\n if (options.initialData) {\n for (const row of options.initialData) {\n confirmed.set(key(row), row);\n }\n }\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.id,\n name: mutation.name,\n args: mutation.args\n })));\n };\n const dropPending = (mutation) => {\n const index = pending.indexOf(mutation);\n if (index !== -1) {\n pending.splice(index, 1);\n }\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n };\n const reconcileSettled = () => {\n let changed = false;\n for (const mutation of [...pending]) {\n if (!mutation.settled) {\n continue;\n }\n let reflected = true;\n for (const [rowKey, kind] of mutation.touched) {\n const present = confirmed.has(rowKey);\n if (kind === \"set\" ? !present : present) {\n reflected = false;\n break;\n }\n }\n if (reflected) {\n dropPending(mutation);\n changed = true;\n }\n }\n if (changed) {\n recompute();\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute({ status: \"ready\", error: undefined });\n reconcileSettled();\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute();\n reconcileSettled();\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n }\n };\n const runMutation = async (mutation) => {\n if (mutation.inFlight || mutation.settled) {\n return;\n }\n const run = mutations[mutation.name];\n if (run === undefined) {\n dropPending(mutation);\n recompute();\n mutation.reject(new Error(`Unknown mutation \"${mutation.name}\"`));\n return;\n }\n mutation.inFlight = true;\n try {\n const result = await run(mutation.args);\n mutation.inFlight = false;\n mutation.settled = true;\n mutation.resolve(result);\n persist();\n reconcileSettled();\n if (pending.includes(mutation)) {\n mutation.graceTimer = setTimeout(() => {\n dropPending(mutation);\n recompute();\n }, reconcileGraceMs);\n }\n } catch (error) {\n mutation.inFlight = false;\n if (connected) {\n dropPending(mutation);\n recompute();\n persist();\n mutation.reject(error);\n } else {\n options.onError?.(error);\n }\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID2,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n if (!mutation.settled && !mutation.inFlight) {\n runMutation(mutation);\n }\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes3)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const eagerHydrate = async () => {\n if (options.hydrate === undefined || options.initialData !== undefined) {\n return;\n }\n try {\n const rows = await options.hydrate();\n if (state.status !== \"ready\") {\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n }\n } catch (error) {\n options.onError?.(error);\n }\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.id === record.mutationId)) {\n continue;\n }\n pending.push({\n id: record.mutationId,\n name: record.name,\n args: record.args,\n touched: new Map,\n settled: false,\n inFlight: false,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n runMutation(mutation);\n }\n }\n };\n connect();\n eagerHydrate();\n hydratePersisted();\n const collectTouched = (optimistic) => {\n const touched = new Map;\n optimistic?.({\n set: (row) => touched.set(key(row), \"set\"),\n delete: (rowKey) => touched.set(rowKey, \"delete\")\n });\n return touched;\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (name, args, mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n id: mutationSeq += 1,\n name,\n args,\n touched: collectTouched(mutateOptions?.optimistic),\n optimistic: mutateOptions?.optimistic,\n settled: false,\n inFlight: false,\n resolve,\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n runMutation(mutation);\n }),\n refetch: async () => {\n if (options.hydrate === undefined) {\n return;\n }\n const rows = await options.hydrate();\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n socket?.send(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID2\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n mutation.reject(new Error(\"sync store closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\nvar unwrapEden = async (response) => {\n const { data, error } = await response;\n if (error !== null && error !== undefined) {\n throw error;\n }\n return data;\n};\nexport {\n validateSyncLocalDataPolicy,\n unwrapEden,\n syncStore,\n runSyncLocalPolicyTransaction,\n runHeadlessSync,\n resolveSyncLocalSchemaComponents,\n resolveSyncLocalMutationPolicy,\n resolveSyncLocalMigrations,\n resolveSyncLocalDataPolicy,\n resolveSyncLocalCollectionPolicy,\n normalizeSyncLocalSchemaComponents,\n migrateSyncLocalMutationRecord,\n migrateSyncLocalCollectionRecord,\n localStorageMutationStorage,\n localStorageCollectionCache,\n jsonFetcher,\n installSyncClientRuntimeTransport,\n indexedDbCollectionCache,\n getSyncClientRuntimeTransport,\n ensureSyncInstallationId,\n createSyncSubscriber,\n createSyncOperationId,\n createSyncLocalSchemaStatus,\n createSyncCollection,\n createSyncClient,\n createPresence,\n createMemorySyncLocalStore,\n createLiveQuery,\n createIndexedDbSyncLocalStore,\n createCollaborativeText,\n SyncMutationRejectedError,\n SyncLocalStoreSchemaError,\n SyncLocalDataPolicyError\n};\n\n//# debugId=8CB268A56D8C04D164756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
10
|
-
"import { readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport {\n\tresolveSyncLocalSchemaComponents,\n\ttype SyncLocalCollectionMigrationOperation,\n\ttype SyncLocalCollectionPolicy,\n\ttype SyncLocalDataPolicy,\n\ttype SyncLocalJsonValue,\n\ttype SyncLocalMutationPolicy,\n\ttype SyncLocalStoreMigration,\n\ttype SyncLocalStoreSchemaBundle,\n\ttype SyncLocalStoreSchemaComponent\n} from '@absolutejs/sync/client';\n\nexport type AbsoluteSyncSchemaDiscovery = {\n\tcomponents: SyncLocalStoreSchemaBundle['components'];\n\tsources: { id: string; manifestPath: string }[];\n};\n\n// A predicate annotation is required so parsed package JSON remains `unknown`\n// until every object boundary has been checked.\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst manifestAt = (path: string) => {\n\ttry {\n\t\tconst value: unknown = JSON.parse(readFileSync(path, 'utf8'));\n\n\t\treturn object(value) ? value : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst localSchemaMetadata = (manifest: object) => {\n\tconst absolutejs = Reflect.get(manifest, 'absolutejs');\n\tif (!object(absolutejs)) return undefined;\n\tconst sync = Reflect.get(absolutejs, 'sync');\n\tif (!object(sync)) return undefined;\n\n\treturn Reflect.get(sync, 'localSchema');\n};\n\nconst packageManifestPath = (projectRoot: string, packageName: string) => {\n\tlet directory = resolve(projectRoot);\n\twhile (true) {\n\t\tconst candidate = join(\n\t\t\tdirectory,\n\t\t\t'node_modules',\n\t\t\tpackageName,\n\t\t\t'package.json'\n\t\t);\n\t\tconst manifest = manifestAt(candidate);\n\t\tif (manifest && Reflect.get(manifest, 'name') === packageName)\n\t\t\treturn candidate;\n\t\tconst parent = dirname(directory);\n\t\tif (parent === directory) return undefined;\n\t\tdirectory = parent;\n\t}\n};\n\nconst metadataError = (id: string, detail: string) =>\n\tnew TypeError(\n\t\t`Invalid AbsoluteJS Sync schema metadata for ${id}: ${detail}`\n\t);\n\nconst positiveVersion = (value: unknown, id: string, field: string) => {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1)\n\t\tthrow metadataError(id, `${field} must be a positive safe integer.`);\n\n\treturn value;\n};\n\nconst nonEmpty = (value: unknown, id: string, field: string) => {\n\tif (\n\t\ttypeof value !== 'string' ||\n\t\tvalue.trim() !== value ||\n\t\tvalue.length === 0\n\t)\n\t\tthrow metadataError(id, `${field} must be a non-empty trimmed string.`);\n\n\treturn value;\n};\n\nconst requireObject = (value: unknown, id: string, detail: string) => {\n\tif (!object(value)) throw metadataError(id, detail);\n\n\treturn value;\n};\n\nconst unknownField = (record: Record<string, unknown>, key: string) =>\n\trecord[key];\n\nconst normalizeJsonValue: (\n\tvalue: unknown,\n\tid: string,\n\tfield: string\n) => SyncLocalJsonValue = (value, id, field) => {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === 'string' ||\n\t\ttypeof value === 'boolean'\n\t)\n\t\treturn value;\n\tif (typeof value === 'number' && Number.isFinite(value)) return value;\n\tif (Array.isArray(value))\n\t\treturn value.map((entry) => normalizeJsonValue(entry, id, field));\n\tif (object(value))\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value).map(([key, entry]) => [\n\t\t\t\tkey,\n\t\t\t\tnormalizeJsonValue(entry, id, field)\n\t\t\t])\n\t\t);\n\n\tthrow metadataError(id, `${field} must be JSON-safe.`);\n};\n\nconst operation: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalCollectionMigrationOperation = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration operation ${index} must be an object.`\n\t);\n\tconst type = Reflect.get(record, 'type');\n\tconst collection = nonEmpty(\n\t\tReflect.get(record, 'collection'),\n\t\tid,\n\t\t`operation ${index}.collection`\n\t);\n\tif (type === 'delete-collection') return { collection, type };\n\tif (type === 'rename-field')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfrom: nonEmpty(\n\t\t\t\tReflect.get(record, 'from'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.from`\n\t\t\t),\n\t\t\tto: nonEmpty(\n\t\t\t\tReflect.get(record, 'to'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.to`\n\t\t\t),\n\t\t\ttype\n\t\t};\n\tconst field = nonEmpty(\n\t\tReflect.get(record, 'field'),\n\t\tid,\n\t\t`operation ${index}.field`\n\t);\n\tif (type === 'remove-field') return { collection, field, type };\n\tif (type === 'set-default')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfield,\n\t\t\ttype,\n\t\t\tvalue: normalizeJsonValue(\n\t\t\t\tReflect.get(record, 'value'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.value`\n\t\t\t)\n\t\t};\n\n\tthrow metadataError(id, `operation ${index}.type is not supported.`);\n};\n\nconst migration: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalStoreMigration = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration ${index} must be an object.`\n\t);\n\tconst allowed = new Set(['operations', 'toVersion']);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.${unsupported} is not declarative metadata.`\n\t\t);\n\tconst declaredOperations = Reflect.get(record, 'operations');\n\tif (declaredOperations !== undefined && !Array.isArray(declaredOperations))\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.operations must be an array.`\n\t\t);\n\tconst operations = Array.isArray(declaredOperations)\n\t\t? declaredOperations\n\t\t: [];\n\n\treturn {\n\t\toperations: operations.map((entry, operationIndex) =>\n\t\t\toperation(entry, id, operationIndex)\n\t\t),\n\t\ttoVersion: positiveVersion(\n\t\t\tReflect.get(record, 'toVersion'),\n\t\t\tid,\n\t\t\t`migration ${index}.toVersion`\n\t\t)\n\t};\n};\n\nconst localDataPolicy = (value: unknown, id: string): SyncLocalDataPolicy => {\n\tconst record = requireObject(value, id, 'localData must be an object.');\n\tconst allowed = new Set([\n\t\t'collections',\n\t\t'maxBytesPerNamespace',\n\t\t'mutations'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `localData.${unsupported} is not supported.`);\n\tconst collectionRules = Reflect.get(record, 'collections');\n\tconst mutationRules = Reflect.get(record, 'mutations');\n\tif (collectionRules !== undefined && !Array.isArray(collectionRules))\n\t\tthrow metadataError(id, 'localData.collections must be an array.');\n\tif (mutationRules !== undefined && !Array.isArray(mutationRules))\n\t\tthrow metadataError(id, 'localData.mutations must be an array.');\n\tconst collections: SyncLocalCollectionPolicy[] | undefined = Array.isArray(\n\t\tcollectionRules\n\t)\n\t\t? collectionRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'evictionPriority',\n\t\t\t\t\t'match',\n\t\t\t\t\t'maxAgeMs',\n\t\t\t\t\t'onProtectionUnavailable',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst match = nonEmpty(\n\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}].match`\n\t\t\t\t);\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst onProtectionUnavailable = unknownField(\n\t\t\t\t\trule,\n\t\t\t\t\t'onProtectionUnavailable'\n\t\t\t\t);\n\t\t\t\tconst evictionPriority = unknownField(rule, 'evictionPriority');\n\t\t\t\tconst maxAge = unknownField(rule, 'maxAgeMs');\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tonProtectionUnavailable !== undefined &&\n\t\t\t\t\tonProtectionUnavailable !== 'error' &&\n\t\t\t\t\tonProtectionUnavailable !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].onProtectionUnavailable is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tevictionPriority !== undefined &&\n\t\t\t\t\tevictionPriority !== 'critical' &&\n\t\t\t\t\tevictionPriority !== 'normal' &&\n\t\t\t\t\tevictionPriority !== 'disposable'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].evictionPriority is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch,\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(persistence ? { persistence } : {}),\n\t\t\t\t\t...(protection ? { protection } : {}),\n\t\t\t\t\t...(onProtectionUnavailable\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tonProtectionUnavailable: onProtectionUnavailable\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(evictionPriority ? { evictionPriority } : {}),\n\t\t\t\t\t...(maxAge === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tmaxAgeMs: positiveVersion(\n\t\t\t\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t`localData.collections[${index}].maxAgeMs`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst mutations: SyncLocalMutationPolicy[] | undefined = Array.isArray(\n\t\tmutationRules\n\t)\n\t\t? mutationRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.mutations[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'match',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch: nonEmpty(\n\t\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].match`\n\t\t\t\t\t),\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(persistence\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpersistence: persistence\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(protection ? { protection: protection } : {})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst quota = Reflect.get(record, 'maxBytesPerNamespace');\n\n\treturn {\n\t\t...(collections ? { collections } : {}),\n\t\t...(mutations ? { mutations } : {}),\n\t\t...(quota === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmaxBytesPerNamespace: positiveVersion(\n\t\t\t\t\t\tquota,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t'localData.maxBytesPerNamespace'\n\t\t\t\t\t)\n\t\t\t\t})\n\t};\n};\n\nconst component: (\n\tid: string,\n\tvalue: unknown\n) => SyncLocalStoreSchemaComponent = (id, value) => {\n\tconst record = requireObject(value, id, 'localSchema must be an object.');\n\tconst allowed = new Set([\n\t\t'localData',\n\t\t'migrations',\n\t\t'minimumCompatibleVersion',\n\t\t'version'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `${unsupported} is not supported.`);\n\tconst version = positiveVersion(\n\t\tReflect.get(record, 'version'),\n\t\tid,\n\t\t'version'\n\t);\n\tconst declaredMinimum = Reflect.get(record, 'minimumCompatibleVersion');\n\tconst minimumCompatibleVersion =\n\t\tdeclaredMinimum === undefined\n\t\t\t? Math.max(1, version - 2)\n\t\t\t: positiveVersion(declaredMinimum, id, 'minimumCompatibleVersion');\n\tconst declaredMigrations = Reflect.get(record, 'migrations');\n\tconst declaredLocalData = Reflect.get(record, 'localData');\n\tif (declaredMigrations !== undefined && !Array.isArray(declaredMigrations))\n\t\tthrow metadataError(id, 'migrations must be an array.');\n\tconst migrations = Array.isArray(declaredMigrations)\n\t\t? declaredMigrations\n\t\t: undefined;\n\n\treturn {\n\t\tid,\n\t\t...(declaredLocalData === undefined\n\t\t\t? {}\n\t\t\t: { localData: localDataPolicy(declaredLocalData, id) }),\n\t\tminimumCompatibleVersion,\n\t\t...(Array.isArray(migrations)\n\t\t\t? {\n\t\t\t\t\tmigrations: migrations.map((entry, index) =>\n\t\t\t\t\t\tmigration(entry, id, index)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t: {}),\n\t\tversion\n\t};\n};\n\nconst dependencyNames = (manifest: object) =>\n\t[\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t]\n\t\t.flatMap((dependencies) =>\n\t\t\tobject(dependencies) ? Object.keys(dependencies) : []\n\t\t)\n\t\t.filter((name, index, names) => names.indexOf(name) === index)\n\t\t.sort();\n\nexport const discoverAbsoluteSyncSchema = (\n\tprojectRoot: string\n): AbsoluteSyncSchemaDiscovery => {\n\tconst appManifestPath = join(resolve(projectRoot), 'package.json');\n\tconst appManifest = manifestAt(appManifestPath);\n\tif (!appManifest)\n\t\treturn {\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tid: '@absolutejs/app',\n\t\t\t\t\tminimumCompatibleVersion: 1,\n\t\t\t\t\tversion: 1\n\t\t\t\t}\n\t\t\t],\n\t\t\tsources: []\n\t\t};\n\tconst appMetadata = localSchemaMetadata(appManifest);\n\tconst components: SyncLocalStoreSchemaComponent[] = [\n\t\tappMetadata === undefined\n\t\t\t? { id: '@absolutejs/app', minimumCompatibleVersion: 1, version: 1 }\n\t\t\t: component('@absolutejs/app', appMetadata)\n\t];\n\tconst sources: AbsoluteSyncSchemaDiscovery['sources'] = [\n\t\t{ id: '@absolutejs/app', manifestPath: appManifestPath }\n\t];\n\tfor (const name of dependencyNames(appManifest)) {\n\t\tconst manifestPath = packageManifestPath(projectRoot, name);\n\t\tif (!manifestPath) continue;\n\t\tconst manifest = manifestAt(manifestPath);\n\t\tif (!manifest) continue;\n\t\tconst metadata = localSchemaMetadata(manifest);\n\t\tif (metadata === undefined) continue;\n\t\tcomponents.push(component(name, metadata));\n\t\tsources.push({ id: name, manifestPath });\n\t}\n\tcomponents.sort((left, right) => left.id.localeCompare(right.id));\n\tsources.sort((left, right) => left.id.localeCompare(right.id));\n\tresolveSyncLocalSchemaComponents({}, { components });\n\n\treturn { components, sources };\n};\n",
|
|
9
|
+
"var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/crdt/orSet.ts\nvar newTag = () => globalThis.crypto.randomUUID();\nvar defaultEquals = (a, b) => Object.is(a, b);\nvar orSet = {\n create: () => ({ adds: [], removed: [] }),\n add: (state, value, tag = newTag()) => ({\n adds: [...state.adds, { value, tag }],\n removed: state.removed\n }),\n remove: (state, value, equals = defaultEquals) => {\n const tags = state.adds.filter((entry) => equals(entry.value, value)).map((entry) => entry.tag);\n return {\n adds: state.adds,\n removed: [...new Set([...state.removed, ...tags])]\n };\n },\n has: (state, value, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n return state.adds.some((entry) => equals(entry.value, value) && !removed.has(entry.tag));\n },\n values: (state, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n const out = [];\n for (const entry of state.adds) {\n if (!removed.has(entry.tag) && !out.some((value) => equals(value, entry.value))) {\n out.push(entry.value);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const byTag = new Map;\n for (const entry of [...a.adds, ...b.adds]) {\n byTag.set(entry.tag, entry);\n }\n return {\n adds: [...byTag.values()],\n removed: [...new Set([...a.removed, ...b.removed])]\n };\n }\n};\n// src/crdt/lwwMap.ts\nvar pick = (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n};\nvar lwwMap = {\n create: () => ({}),\n set: (state, key, value, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value, deleted: false, timestamp, replica }\n }),\n delete: (state, key, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value: state[key]?.value, deleted: true, timestamp, replica }\n }),\n get: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted ? entry.value : undefined;\n },\n has: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted;\n },\n keys: (state) => Object.keys(state).filter((key) => !state[key]?.deleted),\n entries: (state) => {\n const out = [];\n for (const [key, entry] of Object.entries(state)) {\n if (!entry.deleted && entry.value !== undefined) {\n out.push([key, entry.value]);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const out = { ...a };\n for (const [key, entry] of Object.entries(b)) {\n const existing = out[key];\n out[key] = existing === undefined ? entry : pick(existing, entry);\n }\n return out;\n }\n};\n// src/crdt/list.ts\nvar order = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(order);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar listOf = (state) => linearize(state.elements).filter((element) => !element.deleted).map((element) => element.value);\nvar mergeListState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar createList = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize([...elements.values()]).filter((element) => !element.deleted);\n return {\n list: () => listOf({ elements: [...elements.values()] }),\n insert: (index, items) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const value of items) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n },\n delete: (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n },\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n }\n };\n};\n\n// src/crdt/index.ts\nvar sumValues = (counts) => Object.values(counts).reduce((total, value) => total + value, 0);\nvar mergeMax = (a, b) => {\n const merged = { ...a };\n for (const [replica, value] of Object.entries(b)) {\n merged[replica] = Math.max(merged[replica] ?? 0, value);\n }\n return merged;\n};\nvar counter = {\n create: () => ({ increments: {}, decrements: {} }),\n value: (state) => sumValues(state.increments) - sumValues(state.decrements),\n increment: (state, replica, by = 1) => ({\n increments: {\n ...state.increments,\n [replica]: (state.increments[replica] ?? 0) + by\n },\n decrements: state.decrements\n }),\n decrement: (state, replica, by = 1) => ({\n increments: state.increments,\n decrements: {\n ...state.decrements,\n [replica]: (state.decrements[replica] ?? 0) + by\n }\n }),\n merge: (a, b) => ({\n increments: mergeMax(a.increments, b.increments),\n decrements: mergeMax(a.decrements, b.decrements)\n })\n};\nvar lww = {\n create: (value, replica, timestamp = Date.now()) => ({ value, timestamp, replica }),\n set: (value, replica, timestamp = Date.now()) => ({\n value,\n timestamp,\n replica\n }),\n merge: (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n }\n};\nvar compare = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize2 = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(compare);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar textOf = (state) => linearize2(state.elements).filter((element) => !element.deleted).map((element) => element.value).join(\"\");\nvar mergeTextState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar tombstoneCount = (state) => state.elements.reduce((total, element) => element.deleted ? total + 1 : total, 0);\nvar compact = (state) => {\n const byId = new Map(state.elements.map((element) => [element.id, element]));\n const keep = new Set;\n for (const element of state.elements) {\n if (element.deleted) {\n continue;\n }\n let anchor = element.after;\n while (anchor !== null && !keep.has(anchor)) {\n const target = byId.get(anchor);\n if (target === undefined || !target.deleted) {\n break;\n }\n keep.add(anchor);\n anchor = target.after;\n }\n }\n return {\n elements: state.elements.filter((element) => !element.deleted || keep.has(element.id))\n };\n};\nvar createTextCrdt = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize2([...elements.values()]).filter((element) => !element.deleted);\n const insert = (index, value) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const char of [...value]) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value: char,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n };\n const remove = (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n };\n return {\n text: () => textOf({ elements: [...elements.values()] }),\n insert,\n delete: remove,\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n setText: (next) => {\n const current = textOf({ elements: [...elements.values()] });\n if (current === next) {\n return;\n }\n let prefix = 0;\n const maxPrefix = Math.min(current.length, next.length);\n while (prefix < maxPrefix && current[prefix] === next[prefix]) {\n prefix += 1;\n }\n let suffix = 0;\n while (suffix < maxPrefix - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix]) {\n suffix += 1;\n }\n const removed = current.length - prefix - suffix;\n if (removed > 0) {\n remove(prefix, removed);\n }\n const inserted = next.slice(prefix, next.length - suffix);\n if (inserted.length > 0) {\n insert(prefix, inserted);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n },\n anchorAt: (index) => {\n if (index <= 0) {\n return null;\n }\n const seen = visible();\n return seen[Math.min(index, seen.length) - 1]?.id ?? null;\n },\n indexOfAnchor: (anchor) => {\n if (anchor === null) {\n return 0;\n }\n let visibleCount = 0;\n for (const element of linearize2([...elements.values()])) {\n if (!element.deleted) {\n visibleCount += 1;\n }\n if (element.id === anchor) {\n return visibleCount;\n }\n }\n return visibleCount;\n }\n };\n};\nvar rgaText = {\n compact,\n create: createTextCrdt,\n empty: () => ({ elements: [] }),\n merge: mergeTextState,\n textOf\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n const created = { installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\n\n// src/client/headlessSync.ts\nvar defaultKey = (row) => {\n if (typeof row !== \"object\" || row === null)\n throw new TypeError(\"Headless Sync rows require an object key.\");\n const key = Reflect.get(row, \"id\");\n if (typeof key !== \"string\" && typeof key !== \"number\")\n throw new TypeError(\"Headless Sync rows require an id key or an explicit key function.\");\n return key;\n};\nvar requireInteger = (value, fallback) => {\n const result = value ?? fallback;\n if (!Number.isSafeInteger(result) || result < 0)\n throw new TypeError(\"Headless Sync limits must be non-negative integers.\");\n return result;\n};\nvar retryDelay = (attempt) => Math.min(30000, 500 * 2 ** Math.max(0, attempt - 1));\nvar parseResponse = (value) => {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"version\") !== 1 || !Array.isArray(Reflect.get(value, \"mutations\")) || !Array.isArray(Reflect.get(value, \"pulls\")))\n throw new Error(\"The Headless Sync response is malformed.\");\n return value;\n};\nvar sameBaseline = (current, baseline) => current?.cursor === baseline?.cursor && (current?.version ?? 0) === (baseline?.version ?? 0);\nvar applyPull = (current, pull, collection, key) => {\n const descriptor = {\n ...current,\n collection: collection.collection,\n params: collection.params\n };\n if (collection.key === undefined)\n descriptor.headlessKey = \"id\";\n else\n delete descriptor.headlessKey;\n if (pull.type === \"snapshot\")\n return {\n ...descriptor,\n rows: pull.rows,\n version: pull.version,\n cursor: pull.cursor\n };\n const rows = new Map;\n for (const row of current?.rows ?? [])\n rows.set(key(row), row);\n for (const row of pull.removed)\n rows.delete(key(row));\n for (const row of pull.changed)\n rows.set(key(row), row);\n for (const row of pull.added)\n rows.set(key(row), row);\n return {\n ...descriptor,\n rows: [...rows.values()],\n version: pull.version,\n cursor: pull.cursor\n };\n};\nvar runHeadlessSync = async ({\n endpoint,\n store,\n namespace,\n collections,\n maxMutations: configuredMaxMutations,\n maxPulls: configuredMaxPulls,\n maxAttempts: configuredMaxAttempts,\n retryBackoff = retryDelay,\n headers,\n fetch: fetchOverride,\n now = Date.now\n}) => {\n if (endpoint.length === 0 || namespace.length === 0)\n throw new TypeError(\"Headless Sync endpoint and namespace are required.\");\n const maxMutations = requireInteger(configuredMaxMutations, 50);\n const maxPulls = requireInteger(configuredMaxPulls, 50);\n const maxAttempts = requireInteger(configuredMaxAttempts, 5);\n const startedAt = now();\n const snapshot = await store.transaction(namespace, \"readwrite\", async (tx) => {\n const due = (await tx.listMutations()).filter((record) => record.state !== \"dead-letter\" && (record.nextAttemptAt ?? 0) <= startedAt).slice(0, maxMutations);\n const mutations = [];\n for (const record of due) {\n const next = { ...record, attempts: record.attempts + 1 };\n delete next.nextAttemptAt;\n await tx.putMutation(next);\n mutations.push(next);\n }\n const discoveredCollections = collections ?? (await tx.listCollections()).filter(({ record }) => record.headlessKey === \"id\" && typeof record.collection === \"string\" && record.collection.length > 0).map(({ key, record }) => ({\n collection: record.collection,\n localKey: key,\n params: record.params\n }));\n const pulls = await Promise.all(discoveredCollections.slice(0, maxPulls).map(async (collection) => ({\n collection,\n record: await tx.getCollection(collection.localKey)\n })));\n return { mutations, pulls };\n });\n const request = {\n version: 1,\n mutations: snapshot.mutations.map(({ operationId, name, args }) => ({\n operationId,\n name,\n args\n })),\n pulls: snapshot.pulls.map(({ collection, record }, index) => ({\n id: String(index),\n collection: collection.collection,\n params: collection.params,\n ...record?.cursor !== undefined ? { since: record.cursor } : (record?.version ?? 0) > 0 ? { since: record.version } : {}\n }))\n };\n const fetchImpl = fetchOverride ?? ((url, init) => globalThis.fetch(url, init));\n let response;\n try {\n const fetched = await fetchImpl(endpoint, {\n body: JSON.stringify(request),\n credentials: \"include\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n ...await headers?.()\n },\n method: \"POST\",\n redirect: \"error\"\n });\n if (!fetched.ok)\n throw new Error(`Headless Sync failed with HTTP ${fetched.status}.`);\n response = parseResponse(await fetched.json());\n } catch (error) {\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n await tx.putMutation({\n ...current,\n lastError: error instanceof Error ? error.message : String(error),\n nextAttemptAt: now() + Math.max(0, retryBackoff(current.attempts))\n });\n }\n });\n throw error;\n }\n const mutationResults = new Map(response.mutations.map((result2) => [result2.operationId, result2]));\n const pullResults = new Map(response.pulls.map((result2) => [result2.id, result2]));\n const result = {\n acknowledged: 0,\n deadLettered: 0,\n pulled: 0,\n retryScheduled: 0\n };\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n const outcome = mutationResults.get(sent.operationId);\n if (outcome?.status === \"ack\") {\n await tx.deleteMutation(sent.operationId);\n result.acknowledged += 1;\n continue;\n }\n const rejection = outcome?.status === \"reject\" ? outcome.rejection : {\n kind: \"retryable\",\n message: \"Missing mutation response.\"\n };\n if (rejection.kind !== \"retryable\" || current.attempts >= maxAttempts) {\n const deadLetter = {\n ...current,\n deadLetteredAt: now(),\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete deadLetter.nextAttemptAt;\n await tx.putMutation(deadLetter);\n result.deadLettered += 1;\n } else {\n await tx.putMutation({\n ...current,\n lastError: rejection.message,\n nextAttemptAt: now() + Math.max(0, rejection.retryAfterMs ?? retryBackoff(current.attempts)),\n rejection,\n state: \"pending\"\n });\n result.retryScheduled += 1;\n }\n }\n for (let index = 0;index < snapshot.pulls.length; index += 1) {\n const baseline = snapshot.pulls[index];\n const pull = pullResults.get(String(index));\n if (pull === undefined || pull.type === \"error\")\n continue;\n const current = await tx.getCollection(baseline.collection.localKey);\n if (!sameBaseline(current, baseline.record))\n continue;\n await tx.putCollection(baseline.collection.localKey, applyPull(current, pull, baseline.collection, baseline.collection.key ?? defaultKey));\n result.pulled += 1;\n }\n });\n return result;\n};\n\n// src/client/subscriber.ts\nvar createSyncSubscriber = ({\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n}) => {\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = url.includes(\"?\") ? \"&\" : \"?\";\n const source = new Impl(`${url}${separator}${params.toString()}`, {\n withCredentials: withCredentials ?? false\n });\n source.onmessage = (event) => {\n try {\n onEvent(JSON.parse(event.data));\n } catch {}\n };\n if (onOpen) {\n source.onopen = () => onOpen();\n }\n if (onError) {\n source.onerror = (event) => onError(event);\n }\n return {\n close: () => source.close(),\n source\n };\n};\n// src/reactiveHub.ts\nvar SYNC_OPEN_TOPIC = \"@absolutejs/sync:open\";\n\n// src/client/liveQuery.ts\nvar createLiveQuery = (options) => {\n const hasSeed = options.initialData !== undefined;\n let state = {\n data: options.initialData,\n error: undefined,\n loading: !options.manual && !hasSeed,\n fetching: false\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n let requestSeq = 0;\n let inFlight;\n let closed = false;\n const refetch = async () => {\n if (closed) {\n return;\n }\n const seq = requestSeq += 1;\n inFlight?.abort();\n const controller = new AbortController;\n inFlight = controller;\n setState({ fetching: true });\n try {\n const data = await options.fetcher(controller.signal);\n if (seq !== requestSeq) {\n return;\n }\n setState({\n data,\n error: undefined,\n loading: false,\n fetching: false\n });\n } catch (error) {\n if (controller.signal.aborted || seq !== requestSeq) {\n return;\n }\n setState({ error, loading: false, fetching: false });\n options.onError?.(error);\n } finally {\n if (inFlight === controller) {\n inFlight = undefined;\n }\n }\n };\n let debounceTimer;\n const scheduleRefetch = () => {\n if (closed) {\n return;\n }\n if (!options.debounceMs) {\n refetch();\n return;\n }\n if (debounceTimer !== undefined) {\n return;\n }\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n refetch();\n }, options.debounceMs);\n };\n let opened = false;\n const onEvent = (event) => {\n if (event.topic === SYNC_OPEN_TOPIC) {\n if (opened) {\n scheduleRefetch();\n }\n opened = true;\n return;\n }\n scheduleRefetch();\n };\n const subscriber = createSyncSubscriber({\n topics: options.topics,\n onEvent,\n url: options.url,\n withCredentials: options.withCredentials,\n eventSourceImpl: options.eventSourceImpl\n });\n if (!options.manual && !hasSeed) {\n refetch();\n }\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n subscriber.close();\n inFlight?.abort();\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n listeners.clear();\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n refetch,\n close\n };\n};\nvar jsonFetcher = (url, init) => async (signal) => {\n const response = await fetch(url, { ...init, signal });\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n return await response.json();\n};\n// src/serializer.ts\nvar jsonSerializer = {\n decode: (raw) => {\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n }\n if (raw instanceof Uint8Array) {\n try {\n return JSON.parse(new TextDecoder().decode(raw));\n } catch {\n return null;\n }\n }\n if (raw instanceof ArrayBuffer) {\n try {\n return JSON.parse(new TextDecoder().decode(new Uint8Array(raw)));\n } catch {\n return null;\n }\n }\n return raw;\n },\n encodeClient: (frame) => JSON.stringify(frame),\n encodeServer: (frame) => JSON.stringify(frame)\n};\n\n// src/client/reconnectBackoff.ts\nvar createReconnectBackoff = (initialMs, maximumMs) => {\n let attempt = 0;\n return {\n markHealthy() {\n attempt = 0;\n },\n nextDelay() {\n const delay = Math.min(initialMs * 2 ** attempt, maximumMs);\n attempt += 1;\n return delay;\n }\n };\n};\nvar hasReconnectHealthyFrameType = (frame, types) => typeof frame === \"object\" && frame !== null && (\"type\" in frame) && typeof frame.type === \"string\" && types.includes(frame.type);\n\n// src/client/syncCollection.ts\nvar serverFrameTypes = [\n \"snapshot\",\n \"diff\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar localStorageMutationStorage = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : [];\n },\n save: (records) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(records));\n }\n});\nvar localStorageCollectionCache = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : undefined;\n },\n save: (snapshot) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(snapshot));\n },\n clear: () => {\n globalThis.localStorage?.removeItem(key);\n }\n});\nvar openIndexedDb = (databaseName, storeName) => new Promise((resolve, reject) => {\n const request = globalThis.indexedDB.open(databaseName, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(storeName);\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar indexedDbCollectionCache = ({\n key,\n databaseName = \"absolutejs-sync\",\n storeName = \"collections\"\n}) => {\n let handle;\n const database = () => {\n handle ??= openIndexedDb(databaseName, storeName);\n return handle;\n };\n const withStore = async (mode, run) => {\n if (globalThis.indexedDB === undefined) {\n return;\n }\n const db = await database();\n return new Promise((resolve, reject) => {\n const request = run(db.transaction(storeName, mode).objectStore(storeName));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n return {\n load: () => withStore(\"readonly\", (store) => store.get(key)),\n save: async (snapshot) => {\n await withStore(\"readwrite\", (store) => store.put(snapshot, key));\n },\n clear: async () => {\n await withStore(\"readwrite\", (store) => store.delete(key));\n }\n };\n};\nvar SUBSCRIPTION_ID = \"s\";\nvar createSyncCollection = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncCollection requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: [],\n status: \"connecting\",\n error: undefined\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n })));\n };\n let cacheScheduled = false;\n const persistCache = () => {\n if (options.cache === undefined || cacheScheduled) {\n return;\n }\n cacheScheduled = true;\n queueMicrotask(() => {\n cacheScheduled = false;\n options.cache?.save({\n rows: [...confirmed.values()],\n version: appliedVersion\n });\n });\n };\n const settlePending = (mutationId) => {\n const index = pending.findIndex((mutation2) => mutation2.mutationId === mutationId);\n if (index === -1) {\n return;\n }\n const [mutation] = pending.splice(index, 1);\n persist();\n return mutation;\n };\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n } else if (frame.type === \"ack\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.resolve(frame.result);\n }\n } else if (frame.type === \"reject\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.reject(new Error(String(frame.message)));\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendMutate = (mutation) => {\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n }));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.mutationId === record.mutationId)) {\n continue;\n }\n pending.push({\n mutationId: record.mutationId,\n name: record.name,\n args: record.args,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n }\n };\n const hydrateCache = async () => {\n if (options.cache === undefined) {\n return;\n }\n let snapshot;\n try {\n snapshot = await options.cache.load();\n } catch {\n return;\n }\n if (snapshot === undefined || appliedVersion > 0) {\n return;\n }\n for (const row of snapshot.rows) {\n confirmed.set(key(row), row);\n }\n appliedVersion = snapshot.version;\n recompute();\n };\n if (options.cache === undefined) {\n connect();\n hydratePersisted();\n } else {\n (async () => {\n await hydrateCache();\n await hydratePersisted();\n connect();\n })();\n }\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n mutationId: mutationSeq += 1,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n sendMutate(mutation);\n }),\n disconnect: () => {\n if (closed || socket === undefined) {\n return;\n }\n try {\n socket.close();\n } catch {}\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n mutation.reject(new Error(\"sync collection closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\n// src/client/collaborativeText.ts\nvar createCollaborativeText = (options) => {\n const keyField = options.keyField ?? \"id\";\n const mutation = options.mutation ?? `${options.collection}:merge`;\n const replica = options.replica ?? globalThis.crypto.randomUUID();\n const make = options.create ?? ((id) => createTextCrdt(id));\n const crdt = make(replica);\n let current = {\n ready: false,\n status: \"connecting\",\n text: \"\"\n };\n let pendingText = null;\n const subscribers = new Set;\n const emit = () => {\n for (const run of subscribers) {\n run(current);\n }\n };\n const collection = createSyncCollection({\n collection: options.collection,\n key: (row) => row[keyField],\n params: options.params,\n url: options.url\n });\n const broadcast = (next) => {\n crdt.setText(next);\n current = { ...current, text: next };\n emit();\n const payload = crdt.takeDelta ? crdt.takeDelta() : crdt.state();\n collection.mutate({\n args: { [keyField]: options.id, [options.field]: payload },\n name: mutation\n });\n };\n const apply = (state) => {\n let { text } = current;\n const row = state.data.find((candidate) => candidate[keyField] === options.id);\n const fieldState = row?.[options.field];\n if (fieldState !== undefined) {\n crdt.merge(fieldState);\n text = crdt.text();\n }\n const ready = current.ready || fieldState !== undefined;\n current = { ready, status: state.status, text };\n emit();\n if (ready && pendingText !== null) {\n const buffered = pendingText;\n pendingText = null;\n broadcast(buffered);\n }\n };\n apply(collection.get());\n const unsubscribe = collection.subscribe(apply);\n return {\n get: () => current,\n subscribe(run) {\n subscribers.add(run);\n run(current);\n return () => {\n subscribers.delete(run);\n };\n },\n setText(next) {\n if (!current.ready) {\n pendingText = next;\n current = { ...current, text: next };\n emit();\n return;\n }\n broadcast(next);\n },\n anchorAt: (index) => crdt.anchorAt?.(index) ?? null,\n indexOfAnchor: (anchor) => crdt.indexOfAnchor?.(anchor) ?? 0,\n close() {\n unsubscribe();\n collection.close();\n subscribers.clear();\n }\n };\n};\n// src/client/presence.ts\nvar createPresence = (options) => {\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createPresence requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const id = options.memberId ?? globalThis.crypto?.randomUUID?.() ?? `m${Math.random()}`;\n const members = new Map;\n let state = options.state;\n let snapshot = [];\n const listeners = new Set;\n const emit = () => {\n snapshot = [...members].map(([memberId, memberState]) => ({\n id: memberId,\n state: memberState\n }));\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n const send = (frame) => {\n if (connected) {\n socket?.send(serializer.encodeClient(frame));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"presence-join\",\n room: options.room,\n memberId: id,\n state\n }));\n };\n ws.onmessage = (event) => {\n let frame;\n const decoded = serializer.decode(event.data);\n if (decoded === null || typeof decoded !== \"object\") {\n return;\n }\n frame = decoded;\n if (frame.type !== \"presence\" || frame.room !== options.room) {\n return;\n }\n reconnectBackoff.markHealthy();\n for (const member of frame.joined ?? []) {\n members.set(member.id, member.state);\n }\n for (const member of frame.updated ?? []) {\n members.set(member.id, member.state);\n }\n for (const memberId of frame.left ?? []) {\n members.delete(memberId);\n }\n emit();\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n connect();\n return {\n id,\n get: () => snapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n set: (next) => {\n state = next;\n send({ type: \"presence-set\", room: options.room, state: next });\n },\n close: () => {\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n send({ type: \"presence-leave\", room: options.room });\n socket?.close();\n members.clear();\n }\n };\n};\n// src/client/localStore.ts\nclass SyncLocalDataPolicyError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"SyncLocalDataPolicyError\";\n this.code = code;\n }\n}\n\nclass SyncLocalStoreSchemaError extends Error {\n code;\n storedVersion;\n targetVersion;\n constructor(code, message, versions = {}) {\n super(message);\n this.name = \"SyncLocalStoreSchemaError\";\n this.code = code;\n this.storedVersion = versions.storedVersion;\n this.targetVersion = versions.targetVersion;\n }\n}\nvar positiveVersion = (value, label) => {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `${label} must be a positive safe integer`);\n return value;\n};\nvar isSchemaBundle = (schema) => (\"components\" in schema);\nvar validatePolicyMatch = (match, label) => {\n if (match.length === 0 || match.trim() !== match || /^\\*+$/.test(match) || match.includes(\"**\"))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.match must be an exact name or a non-empty glob without adjacent wildcards.`);\n};\nvar validateSyncLocalDataPolicy = (policy, label = \"localData\") => {\n if (policy.maxBytesPerNamespace !== undefined && (!Number.isSafeInteger(policy.maxBytesPerNamespace) || policy.maxBytesPerNamespace < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.maxBytesPerNamespace must be a positive safe integer.`);\n for (const [index, rule] of (policy.collections ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.collections[${index}]`);\n if (rule.maxAgeMs !== undefined && (!Number.isSafeInteger(rule.maxAgeMs) || rule.maxAgeMs < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}].maxAgeMs must be a positive safe integer.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] declares ${rule.sensitivity} data without required protection or memory-only persistence.`);\n }\n for (const [index, rule] of (policy.mutations ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.mutations[${index}]`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] declares ${rule.sensitivity} arguments without required protection.`);\n }\n return policy;\n};\nvar resolveSyncLocalDataPolicy = (schema = { version: 1 }) => {\n const policies = normalizeSyncLocalSchemaComponents(schema).map((component) => component.localData ? validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`) : undefined).filter((policy) => policy !== undefined);\n const quotas = policies.map((policy) => policy.maxBytesPerNamespace).filter((value) => value !== undefined);\n return {\n ...quotas.length > 0 ? { maxBytesPerNamespace: Math.min(...quotas) } : {},\n collections: policies.flatMap((policy) => policy.collections ?? []),\n mutations: policies.flatMap((policy) => policy.mutations ?? [])\n };\n};\nvar policyMatches = (pattern, name) => pattern === name || (() => {\n const pieces = pattern.split(\"*\");\n if (pieces.length === 1)\n return false;\n let offset = 0;\n for (const [index, piece] of pieces.entries()) {\n if (piece.length === 0)\n continue;\n const found = name.indexOf(piece, offset);\n if (found < 0 || index === 0 && found !== 0)\n return false;\n offset = found + piece.length;\n }\n const last = pieces.at(-1);\n return last.length === 0 || name.endsWith(last);\n})();\nvar matchingPolicy = (rules, name) => {\n const matches = rules.filter((rule) => policyMatches(rule.match, name));\n if (matches.length === 0)\n return;\n const specificity = (rule) => rule.match.replaceAll(\"*\", \"\").length;\n matches.sort((left, right) => specificity(right) - specificity(left));\n if (matches[1] !== undefined && specificity(matches[0]) === specificity(matches[1]))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `Local-data policy has equally specific rules for \"${name}\".`);\n return matches[0];\n};\nvar resolveSyncLocalCollectionPolicy = (policy, name) => matchingPolicy(policy.collections, name) ?? { match: name };\nvar resolveSyncLocalMutationPolicy = (policy, name) => matchingPolicy(policy.mutations, name) ?? { match: name };\nvar normalizeSyncLocalSchemaComponents = (schema = { version: 1 }) => {\n const components = isSchemaBundle(schema) ? [...schema.components] : [{ ...schema, id: \"@absolutejs/app\" }];\n const ids = new Set;\n for (const component of components) {\n if (typeof component.id !== \"string\" || component.id.trim() !== component.id || component.id.length === 0)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync schema component id must be non-empty and trimmed\");\n if (ids.has(component.id))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync schema component \"${component.id}\" is declared more than once`);\n ids.add(component.id);\n if (component.localData)\n validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`);\n }\n return components.sort((a, b) => a.id.localeCompare(b.id));\n};\nvar createSyncLocalSchemaStatus = (components, orphanedComponents = [], includeComponents = true) => {\n const app = components.find((component) => component.id === \"@absolutejs/app\");\n return {\n ...includeComponents ? {\n components: components.map((component) => ({\n id: component.id,\n minimumCompatibleVersion: component.minimumCompatibleVersion,\n storedVersion: component.targetVersion,\n targetVersion: component.targetVersion\n }))\n } : {},\n minimumCompatibleVersion: app?.minimumCompatibleVersion ?? 1,\n ...orphanedComponents.length > 0 ? { orphanedComponents: [...orphanedComponents] } : {},\n state: \"ready\",\n storedVersion: app?.targetVersion ?? 1,\n targetVersion: app?.targetVersion ?? 1\n };\n};\nvar resolveSyncLocalSchemaComponents = (storedVersions, schema = { version: 1 }) => {\n const components = normalizeSyncLocalSchemaComponents(schema).map((component) => {\n const current = resolveSyncLocalMigrations(component.version, component);\n return {\n id: component.id,\n ...resolveSyncLocalMigrations(storedVersions[component.id] ?? current.minimumCompatibleVersion, component)\n };\n });\n const active = new Set(components.map((component) => component.id));\n const orphanedComponents = Object.keys(storedVersions).filter((id) => !active.has(id)).sort();\n return { components, orphanedComponents };\n};\nvar migrationCollectionName = (record, context) => record.collection ?? context.key;\nvar migrateRow = (row, operation) => {\n if (typeof row !== \"object\" || row === null || Array.isArray(row))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync ${operation.type} requires object rows`);\n const next = { ...row };\n if (operation.type === \"set-default\") {\n if (!Object.hasOwn(next, operation.field))\n next[operation.field] = structuredClone(operation.value);\n } else if (operation.type === \"remove-field\") {\n delete next[operation.field];\n } else if (Object.hasOwn(next, operation.from)) {\n if (Object.hasOwn(next, operation.to))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync rename-field cannot overwrite existing field \"${operation.to}\"`);\n next[operation.to] = next[operation.from];\n delete next[operation.from];\n }\n return next;\n};\nvar applyDeclarativeCollectionOperations = (record, context, operations) => {\n let current = structuredClone(record);\n for (const operation of operations) {\n if (operation.collection !== migrationCollectionName(current, context))\n continue;\n if (operation.type === \"delete-collection\")\n return null;\n current = {\n ...current,\n rows: current.rows.map((row) => migrateRow(row, operation))\n };\n }\n return current;\n};\nvar resolveSyncLocalMigrations = (storedVersion, schema = { version: 1 }) => {\n positiveVersion(storedVersion, \"Stored Sync schema version\");\n const targetVersion = positiveVersion(schema.version, \"Target Sync schema version\");\n const migrations = [...schema.migrations ?? []].sort((a, b) => a.toVersion - b.toVersion);\n const versions = new Set;\n for (const migration of migrations) {\n positiveVersion(migration.toVersion, \"Sync migration toVersion\");\n if (versions.has(migration.toVersion))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync migration ${migration.toVersion} is declared more than once`);\n versions.add(migration.toVersion);\n }\n const inferredMinimum = migrations[0] ? migrations[0].toVersion - 1 : targetVersion;\n const minimumCompatibleVersion = positiveVersion(schema.minimumCompatibleVersion ?? inferredMinimum, \"Minimum compatible Sync schema version\");\n if (minimumCompatibleVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Minimum compatible Sync schema version cannot exceed its target\");\n if (storedVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_NEW\", `Stored Sync schema ${storedVersion} is newer than this runtime's schema ${targetVersion}`, { storedVersion, targetVersion });\n if (storedVersion < minimumCompatibleVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_OLD\", `Stored Sync schema ${storedVersion} is older than the minimum compatible schema ${minimumCompatibleVersion}`, { storedVersion, targetVersion });\n const steps = [];\n for (let version = storedVersion + 1;version <= targetVersion; version++) {\n const migration = migrations.find((candidate) => candidate.toVersion === version);\n if (migration === undefined)\n throw new SyncLocalStoreSchemaError(\"MIGRATION_MISSING\", `Sync migration ${version - 1} -> ${version} is missing`, { storedVersion, targetVersion });\n steps.push(migration);\n }\n return { minimumCompatibleVersion, steps, targetVersion };\n};\nvar migrateSyncLocalCollectionRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n current = applyDeclarativeCollectionOperations(current, context, step.operations ?? []);\n if (current === null)\n break;\n const next = step.migrateCollection?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined)\n current = structuredClone(next);\n }\n return current;\n};\nvar migrateSyncLocalMutationRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n const next = step.migrateMutation?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined) {\n if (next.operationId !== context.key)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync migrations cannot change a mutation operationId\");\n current = structuredClone(next);\n }\n }\n return current;\n};\nvar jsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\nvar evictionRank = {\n disposable: 0,\n normal: 1,\n critical: 2\n};\nvar runSyncLocalPolicyTransaction = async (options) => {\n const { mode, now, policy, raw } = options;\n const requireProtection = (kind, name) => {\n if (!options.protected)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync ${kind} \"${name}\" requires encrypted persistence, but this runtime has no audited protection provider.`);\n };\n const collectionPolicy = (record, key) => resolveSyncLocalCollectionPolicy(policy, record.collection ?? key);\n const unavailableMemoryOnly = (rule) => rule.protection === \"required\" && !options.protected && rule.onProtectionUnavailable === \"memory-only\";\n const expired = (record, key) => {\n const rule = collectionPolicy(record, key);\n return rule.maxAgeMs !== undefined && record.storedAt !== undefined && now - record.storedAt >= rule.maxAgeMs;\n };\n const tx = {\n ...raw,\n getCollection: async (key) => {\n const record = await raw.getCollection(key);\n if (record === undefined)\n return;\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(record, key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n return record;\n },\n listCollections: async () => {\n const kept = [];\n for (const entry of await raw.listCollections()) {\n const rule = collectionPolicy(entry.record, entry.key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(entry.record, entry.key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(entry.key);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", entry.record.collection ?? entry.key);\n kept.push(entry);\n }\n return kept;\n },\n putCollection: async (key, record) => {\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n await raw.putCollection(key, rule.maxAgeMs !== undefined || policy.maxBytesPerNamespace !== undefined ? { ...record, storedAt: now } : record);\n },\n getMutation: async (operationId) => {\n const record = await raw.getMutation(operationId);\n if (!record)\n return;\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n return record;\n },\n listMutations: async () => {\n const records = [];\n for (const record of await raw.listMutations()) {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(record.operationId);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n records.push(record);\n }\n return records;\n },\n putMutation: async (record) => {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteMutation(record.operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n await raw.putMutation(record);\n }\n };\n const result = await options.run(tx);\n if (mode === \"readwrite\" && policy.maxBytesPerNamespace !== undefined) {\n const mutations = await raw.listMutations();\n let collections = await raw.listCollections();\n let bytes = mutations.reduce((total, value) => total + jsonBytes(value), 0) + collections.reduce((total, entry) => total + jsonBytes(entry.record), 0);\n const candidates = [...collections].sort((left, right) => {\n const leftRule = collectionPolicy(left.record, left.key);\n const rightRule = collectionPolicy(right.record, right.key);\n return evictionRank[leftRule.evictionPriority ?? \"normal\"] - evictionRank[rightRule.evictionPriority ?? \"normal\"] || (left.record.storedAt ?? 0) - (right.record.storedAt ?? 0) || left.key.localeCompare(right.key);\n });\n for (const candidate of candidates) {\n if (bytes <= policy.maxBytesPerNamespace)\n break;\n await raw.deleteCollection(candidate.key);\n bytes -= jsonBytes(candidate.record);\n }\n if (bytes > policy.maxBytesPerNamespace)\n throw new SyncLocalDataPolicyError(\"QUOTA_EXCEEDED\", `Sync pending operations require ${bytes} logical bytes, exceeding the protected ${policy.maxBytesPerNamespace}-byte namespace quota; pending mutations were retained.`);\n }\n return result;\n};\nvar clone = (value) => structuredClone(value);\nvar emptyNamespace = () => ({\n collections: new Map,\n mutations: new Map\n});\nvar cloneNamespace = (source) => ({\n installationId: source.installationId,\n collections: new Map([...source.collections].map(([key, value]) => [key, clone(value)])),\n mutations: new Map([...source.mutations].map(([key, value]) => [key, clone(value)]))\n});\nvar createMemorySyncLocalStore = ({\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n const targetComponents = normalizeSyncLocalSchemaComponents(storageSchema);\n const resolvedSchema = resolveSyncLocalSchemaComponents(Object.fromEntries(targetComponents.map((component) => [\n component.id,\n component.version\n ])), storageSchema);\n const schemaStatus = createSyncLocalSchemaStatus(resolvedSchema.components, [], isSchemaBundle(storageSchema));\n const namespaces = new Map;\n let tail = Promise.resolve();\n const withLock = async (run) => {\n let release;\n const previous = tail;\n tail = new Promise((resolve) => {\n release = resolve;\n });\n await previous;\n try {\n return await run();\n } finally {\n release();\n }\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n const protector = await prepareProtector();\n return withLock(async () => {\n const current = namespaces.get(namespace) ?? emptyNamespace();\n const working = cloneNamespace(current);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const tx = {\n getInstallationId: async () => working.installationId,\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n working.installationId = installationId;\n },\n getCollection: async (key) => {\n const record = working.collections.get(key);\n return record === undefined ? undefined : clone(record);\n },\n listCollections: async () => [...working.collections.entries()].map(([key, record]) => ({\n key,\n record: clone(record)\n })),\n putCollection: async (key, record) => {\n writable();\n working.collections.set(key, clone(record));\n },\n deleteCollection: async (key) => {\n writable();\n working.collections.delete(key);\n },\n listMutations: async () => [...working.mutations.values()].sort((a, b) => a.createdAt - b.createdAt).map(clone),\n getMutation: async (operationId) => {\n const record = working.mutations.get(operationId);\n return record === undefined ? undefined : clone(record);\n },\n putMutation: async (record) => {\n writable();\n working.mutations.set(record.operationId, clone(record));\n },\n deleteMutation: async (operationId) => {\n writable();\n working.mutations.delete(operationId);\n }\n };\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n if (mode === \"readwrite\")\n namespaces.set(namespace, working);\n return result;\n });\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...schemaStatus }),\n deleteNamespace: async (namespace) => {\n await withLock(async () => {\n namespaces.delete(namespace);\n return;\n });\n }\n };\n};\nvar openProtectedRecord = (value, protector, context) => {\n if (protector === undefined || protector.id !== value.protector)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync data is protected by \"${value.protector}\", which is unavailable in this runtime.`);\n return JSON.parse(protector.open(value.value, { ...context, name: value.name }));\n};\nvar requestResult = (request) => new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar transactionComplete = (transaction) => new Promise((resolve, reject) => {\n transaction.oncomplete = () => resolve();\n transaction.onabort = () => reject(transaction.error ?? new Error(\"IndexedDB transaction aborted\"));\n transaction.onerror = () => reject(transaction.error ?? new Error(\"IndexedDB transaction failed\"));\n});\nvar deleteIndexRows = (index, namespace) => new Promise((resolve, reject) => {\n const request = index.openCursor(namespace);\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n cursor.delete();\n cursor.continue();\n };\n});\nvar migrateIndexedRows = (request, migrate) => new Promise((resolve, reject) => {\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n let next;\n try {\n next = migrate(cursor.value);\n } catch (error) {\n reject(error);\n return;\n }\n const write = next === null ? cursor.delete() : cursor.update(next);\n write.onerror = () => reject(write.error);\n write.onsuccess = () => cursor.continue();\n };\n});\nvar createIndexedDbSyncLocalStore = ({\n databaseName = \"absolutejs-sync-local-v1\",\n indexedDB: factory = globalThis.indexedDB,\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n if (factory === undefined) {\n throw new Error(\"createIndexedDbSyncLocalStore requires IndexedDB in this runtime\");\n }\n let databasePromise;\n const database = () => {\n databasePromise ??= new Promise((resolve, reject) => {\n const request = factory.open(databaseName, 2);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"metadata\"))\n db.createObjectStore(\"metadata\");\n if (!db.objectStoreNames.contains(\"collections\")) {\n const collections = db.createObjectStore(\"collections\", {\n keyPath: [\"namespace\", \"key\"]\n });\n collections.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"mutations\")) {\n const mutations = db.createObjectStore(\"mutations\", {\n keyPath: [\"namespace\", \"operationId\"]\n });\n mutations.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"schema\"))\n db.createObjectStore(\"schema\");\n };\n request.onsuccess = () => {\n request.result.onversionchange = () => request.result.close();\n resolve(request.result);\n };\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error(`IndexedDB upgrade blocked for \"${databaseName}\"`));\n });\n return databasePromise;\n };\n let schemaPromise;\n const prepareSchema = () => {\n schemaPromise ??= Promise.all([database(), prepareProtector()]).then(async ([db, preparedProtector]) => {\n const native = db.transaction([\"schema\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n try {\n const schemaStore = native.objectStore(\"schema\");\n const savedVersion = await requestResult(schemaStore.get(\"logicalVersion\"));\n const savedComponents = await requestResult(schemaStore.get(\"componentVersions\"));\n const storedVersions = {};\n if (typeof savedComponents === \"object\" && savedComponents !== null && !Array.isArray(savedComponents))\n for (const [id, version] of Object.entries(savedComponents)) {\n if (!Number.isSafeInteger(version) || version < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Stored Sync component \"${id}\" has an invalid version`);\n storedVersions[id] = version;\n }\n if (storedVersions[\"@absolutejs/app\"] === undefined && typeof savedVersion === \"number\")\n storedVersions[\"@absolutejs/app\"] = savedVersion;\n const resolved = resolveSyncLocalSchemaComponents(storedVersions, storageSchema);\n const steps = resolved.components.flatMap((component) => component.steps);\n if (steps.length > 0) {\n await migrateIndexedRows(native.objectStore(\"collections\").openCursor(), (row) => {\n const {\n namespace,\n key,\n protectedRecord,\n ...plain\n } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"collection\", namespace }) : plain;\n const migrated = migrateSyncLocalCollectionRecord(record, { key, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n key,\n namespace,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"collection\",\n name: migrated.collection ?? key,\n namespace\n })\n }\n } : { ...migrated, key, namespace };\n });\n await migrateIndexedRows(native.objectStore(\"mutations\").openCursor(), (row) => {\n const { namespace, protectedRecord, ...plain } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"mutation\", namespace }) : plain;\n const migrated = migrateSyncLocalMutationRecord(record, { key: record.operationId, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n createdAt: migrated.createdAt,\n namespace,\n operationId: migrated.operationId,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"mutation\",\n name: migrated.name,\n namespace\n })\n }\n } : { ...migrated, namespace };\n });\n }\n const nextVersions = { ...storedVersions };\n for (const component of resolved.components)\n nextVersions[component.id] = component.targetVersion;\n await requestResult(schemaStore.put(nextVersions, \"componentVersions\"));\n const app = resolved.components.find((component) => component.id === \"@absolutejs/app\");\n if (app)\n await requestResult(schemaStore.put(app.targetVersion, \"logicalVersion\"));\n await completed;\n return createSyncLocalSchemaStatus(resolved.components, resolved.orphanedComponents, isSchemaBundle(storageSchema));\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n });\n return schemaPromise;\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n await prepareSchema();\n const protector = await prepareProtector();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], mode);\n const completed = transactionComplete(native);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const metadata = native.objectStore(\"metadata\");\n const collections = native.objectStore(\"collections\");\n const mutations = native.objectStore(\"mutations\");\n const tx = {\n getInstallationId: () => requestResult(metadata.get(namespace)),\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n await requestResult(metadata.put(installationId, namespace));\n },\n getCollection: async (key) => {\n const row = await requestResult(collections.get([namespace, key]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace });\n const {\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n listCollections: async () => {\n const rows = await requestResult(collections.index(\"namespace\").getAll(namespace));\n return rows.map((row) => ({\n key: row.key,\n record: row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace }) : (({\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n }) => record)(row)\n }));\n },\n putCollection: async (key, record) => {\n writable();\n await requestResult(collections.put(protector ? {\n key,\n namespace,\n protectedRecord: {\n name: record.collection ?? key,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"collection\",\n name: record.collection ?? key,\n namespace\n })\n }\n } : { ...record, key, namespace }));\n },\n deleteCollection: async (key) => {\n writable();\n await requestResult(collections.delete([namespace, key]));\n },\n listMutations: async () => {\n const rows = await requestResult(mutations.index(\"namespace\").getAll(namespace));\n return rows.map((row) => row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace }) : (({\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n }) => record)(row)).sort((a, b) => a.createdAt - b.createdAt);\n },\n getMutation: async (operationId) => {\n const row = await requestResult(mutations.get([namespace, operationId]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace });\n const {\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n putMutation: async (record) => {\n writable();\n await requestResult(mutations.put(protector ? {\n createdAt: record.createdAt,\n namespace,\n operationId: record.operationId,\n protectedRecord: {\n name: record.name,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"mutation\",\n name: record.name,\n namespace\n })\n }\n } : { ...record, namespace }));\n },\n deleteMutation: async (operationId) => {\n writable();\n await requestResult(mutations.delete([namespace, operationId]));\n }\n };\n try {\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n await completed;\n return result;\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...await prepareSchema() }),\n deleteNamespace: async (namespace) => {\n await prepareSchema();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n await requestResult(native.objectStore(\"metadata\").delete(namespace));\n await deleteIndexRows(native.objectStore(\"collections\").index(\"namespace\"), namespace);\n await deleteIndexRows(native.objectStore(\"mutations\").index(\"namespace\"), namespace);\n await completed;\n }\n };\n};\nvar randomId = () => {\n const id = globalThis.crypto?.randomUUID?.();\n if (id === undefined) {\n throw new Error(\"Sync operation ids require crypto.randomUUID or a createId callback\");\n }\n return id;\n};\nvar ensureSyncInstallationId = (store, namespace, createId = randomId) => store.transaction(namespace, \"readwrite\", async (tx) => {\n const existing = await tx.getInstallationId();\n if (existing !== undefined)\n return existing;\n const installationId = createId();\n await tx.setInstallationId(installationId);\n return installationId;\n});\nvar createSyncOperationId = (installationId, createId = randomId) => `${installationId}:${createId()}`;\n\n// src/reconciliation.ts\nclass SyncMutationRejectedError extends Error {\n operationId;\n rejection;\n constructor(rejection, operationId) {\n super(rejection.message);\n this.name = \"SyncMutationRejectedError\";\n this.operationId = operationId;\n this.rejection = rejection;\n }\n}\n\n// src/client/syncClient.ts\nvar serverFrameTypes2 = [\n \"snapshot\",\n \"diff\",\n \"frame\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar canonicalJson = (value) => {\n const seen = new Set;\n const normalize = (input) => {\n if (input === undefined)\n return null;\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") {\n return input;\n }\n if (typeof input === \"number\") {\n if (!Number.isFinite(input)) {\n throw new Error(\"Sync collection params must contain finite numbers; provide an explicit localKey\");\n }\n return input;\n }\n if (typeof input !== \"object\") {\n throw new Error(\"Sync collection params must be JSON-serializable; provide an explicit localKey\");\n }\n if (seen.has(input)) {\n throw new Error(\"Sync collection params contain a cycle; provide an explicit localKey\");\n }\n seen.add(input);\n try {\n if (Array.isArray(input))\n return input.map(normalize);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Sync collection params must use plain objects; provide an explicit localKey\");\n }\n return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));\n } finally {\n seen.delete(input);\n }\n };\n return JSON.stringify(normalize(value));\n};\nvar defaultLocalKey = (collection, params) => params === undefined ? collection : `${collection}:${canonicalJson(params)}`;\nvar ticketAuthenticatedSocketUrl = (url) => {\n if (/(?:\\?|&)__absolute_auth=/u.test(url))\n return url;\n const hashAt = url.indexOf(\"#\");\n const beforeHash = hashAt === -1 ? url : url.slice(0, hashAt);\n const hash = hashAt === -1 ? \"\" : url.slice(hashAt);\n const separator = beforeHash.includes(\"?\") ? \"&\" : \"?\";\n return `${beforeHash}${separator}__absolute_auth=ticket${hash}`;\n};\nvar createSyncClient = (options) => {\n const runtime = getSyncClientRuntimeTransport();\n const socketTicket = options.socketTicket ?? runtime?.socketTicket;\n const durable = options.durable ?? runtime?.durable;\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const maxAttempts = durable?.maxAttempts ?? 5;\n if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {\n throw new TypeError(\"durable.maxAttempts must be a positive integer\");\n }\n const retryBackoff = durable?.retryBackoff ?? ((attempt) => Math.min(30000, 500 * 2 ** (attempt - 1)));\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncClient requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const entries = new Map;\n const pending = [];\n const mutationOwner = new Map;\n const deadLetters = new Map;\n const retryTimers = new Map;\n const statusListeners = new Set;\n let nextEntryId = 0;\n let mutationSeq = 0;\n let installationId;\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let immediateReconnect = false;\n let clientStatus = {\n connection: \"connecting\",\n deadLetters: 0,\n pending: 0\n };\n const snapshotStatus = () => ({ ...clientStatus });\n const updateStatus = (patch = {}) => {\n const oldestPendingAt = pending.reduce((oldest, mutation) => oldest === undefined ? mutation.createdAt : Math.min(oldest, mutation.createdAt), undefined);\n clientStatus = {\n ...clientStatus,\n ...patch,\n pending: pending.length,\n deadLetters: deadLetters.size,\n ...oldestPendingAt === undefined ? {} : { oldestPendingAt }\n };\n if (oldestPendingAt === undefined)\n delete clientStatus.oldestPendingAt;\n for (const listener of statusListeners)\n listener(snapshotStatus());\n };\n const notify = (entry) => {\n for (const listener of entry.listeners) {\n listener(entry.state);\n }\n };\n const rebuild = (entry, patch = {}) => {\n const working = new Map(entry.confirmed);\n const draft = {\n set: (row) => working.set(entry.key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n if (mutation.ownerKey === entry.localKey) {\n mutation.optimistic?.(draft);\n }\n for (const operation of mutation.optimisticOperations) {\n if (operation.collection !== entry.localKey)\n continue;\n if (operation.type === \"delete\")\n draft.delete(operation.key);\n else\n draft.set(operation.row);\n }\n }\n entry.state = {\n ...entry.state,\n ...patch,\n data: [...working.values()]\n };\n };\n const recompute = (entry, patch = {}) => {\n rebuild(entry, patch);\n notify(entry);\n };\n const applyDiffToConfirmed = (entry, diff) => {\n for (const row of diff.removed) {\n entry.confirmed.delete(entry.key(row));\n }\n for (const row of diff.added) {\n entry.confirmed.set(entry.key(row), row);\n }\n for (const row of diff.changed) {\n entry.confirmed.set(entry.key(row), row);\n }\n };\n const settlePending = (mutationId) => {\n const mutation = mutationOwner.get(mutationId);\n mutationOwner.delete(mutationId);\n if (mutation === undefined) {\n return;\n }\n const index = pending.findIndex((item) => item === mutation);\n if (index === -1) {\n return;\n }\n pending.splice(index, 1);\n if (mutation.operationId !== undefined) {\n const timer = retryTimers.get(mutation.operationId);\n if (timer !== undefined)\n clearTimeout(timer);\n retryTimers.delete(mutation.operationId);\n }\n updateStatus();\n return mutation;\n };\n const reportStorageError = (error) => {\n durable?.onError?.(error);\n options.onError?.(error);\n };\n let localWriteTail = Promise.resolve();\n const queueLocalWrite = (run) => {\n const next = localWriteTail.then(run);\n localWriteTail = next.then(() => {\n return;\n }, (error) => reportStorageError(error));\n return next;\n };\n const persistEntries = (affected) => {\n if (durable === undefined)\n return;\n const snapshots = new Map;\n for (const entry of affected) {\n snapshots.set(entry.localKey, {\n rows: [...entry.confirmed.values()],\n version: entry.appliedVersion,\n cursor: entry.cursor,\n collection: entry.collection,\n params: entry.params,\n ...entry.headlessKey ? { headlessKey: entry.headlessKey } : {}\n });\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n for (const [key, record] of snapshots) {\n await tx.putCollection(key, record);\n }\n })).catch(() => {});\n };\n const recomputeMutationEntries = (mutation) => {\n const keys = new Set([\n mutation.ownerKey,\n ...mutation.optimisticOperations.map((operation) => operation.collection)\n ]);\n for (const entry of entries.values()) {\n if (keys.has(entry.localKey))\n recompute(entry);\n }\n };\n let sendMutate;\n const finishPending = (mutationId, result, error) => {\n const mutation = settlePending(mutationId);\n if (mutation === undefined)\n return;\n recomputeMutationEntries(mutation);\n if (error === undefined)\n mutation.resolve?.(result);\n else\n mutation.reject?.(error);\n };\n const finishDurablePending = (mutationId, echoedOperationId, result, error) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, result, error);\n return;\n }\n if (echoedOperationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation acknowledgment identity mismatch for ${mutation.operationId}`));\n return;\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => finishPending(mutationId, result, error)).catch(() => {});\n };\n const deadLetterPending = (mutationId, rejection) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation?.operationId));\n return;\n }\n const deadLetteredAt = Date.now();\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(mutation.operationId);\n if (current === undefined)\n return;\n const record = {\n ...current,\n attempts: mutation.attempts,\n deadLetteredAt,\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete record.nextAttemptAt;\n await tx.putMutation(record);\n deadLetters.set(record.operationId, record);\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n };\n const retryRejectedPending = (mutation, rejection) => {\n if (mutation.operationId === undefined || durable === undefined) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n if (mutation.attempts >= maxAttempts) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n const delay = Math.max(0, rejection.retryAfterMs ?? retryBackoff(mutation.attempts));\n mutation.nextAttemptAt = Date.now() + delay;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n lastError: rejection.message,\n nextAttemptAt: mutation.nextAttemptAt,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n sendMutate(mutation);\n }).catch(() => {});\n };\n const applyFrame = (frame) => {\n updateStatus({ connection: \"online\" });\n if (frame.type === \"snapshot\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n entry.confirmed.clear();\n for (const row of frame.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n if (frame.version !== undefined) {\n entry.appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry, { status: \"ready\", error: undefined });\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"diff\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n applyDiffToConfirmed(entry, frame);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry);\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"frame\") {\n const affected = new Set;\n for (const diff of frame.diffs) {\n const entry = entries.get(diff.id);\n if (entry === undefined) {\n continue;\n }\n applyDiffToConfirmed(entry, diff);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n rebuild(entry);\n affected.add(entry);\n }\n persistEntries(affected);\n for (const entry of affected) {\n notify(entry);\n }\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"error\") {\n if (frame.id !== undefined) {\n const entry = entries.get(frame.id);\n if (entry !== undefined) {\n recompute(entry, { error: frame.message });\n }\n }\n options.onError?.(frame.message);\n updateStatus({ lastError: String(frame.message) });\n } else if (frame.type === \"ack\") {\n updateStatus({ lastSuccessfulPushAt: Date.now() });\n finishDurablePending(frame.mutationId, frame.operationId, frame.result);\n } else if (frame.type === \"reject\") {\n const mutation = mutationOwner.get(frame.mutationId);\n if (mutation?.operationId !== undefined && frame.operationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation rejection identity mismatch for ${mutation.operationId}`));\n return;\n }\n const rejection = frame.rejection ?? {\n kind: \"permanent\",\n message: String(frame.message)\n };\n if (rejection.kind === \"retryable\" && mutation !== undefined) {\n retryRejectedPending(mutation, rejection);\n } else {\n deadLetterPending(frame.mutationId, rejection);\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendSubscribe = (entry) => {\n const since = entry.cursor ?? (entry.appliedVersion > 0 ? entry.appliedVersion : undefined);\n wsSend(serializer.encodeClient({\n type: \"subscribe\",\n id: entry.id,\n collection: entry.collection,\n params: entry.params,\n since\n }));\n };\n sendMutate = (mutation) => {\n if (mutation.nextAttemptAt !== undefined) {\n const delay = mutation.nextAttemptAt - Date.now();\n if (delay > 0 && mutation.operationId !== undefined) {\n if (!retryTimers.has(mutation.operationId)) {\n const timer = setTimeout(() => {\n retryTimers.delete(mutation.operationId);\n mutation.nextAttemptAt = undefined;\n sendMutate(mutation);\n }, delay);\n retryTimers.set(mutation.operationId, timer);\n }\n return;\n }\n mutation.nextAttemptAt = undefined;\n }\n if (!connected)\n return;\n const payload = serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n operationId: mutation.operationId,\n name: mutation.name,\n args: mutation.args\n });\n if (durable === undefined || mutation.operationId === undefined) {\n wsSend(payload);\n return;\n }\n if (mutation.sending)\n return;\n mutation.sending = true;\n mutation.attempts += 1;\n const targetSocket = socket;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record !== undefined) {\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n state: \"pending\",\n nextAttemptAt: undefined\n });\n }\n })).catch(() => {}).finally(() => {\n mutation.sending = false;\n if (connected && socket === targetSocket && pending.includes(mutation)) {\n targetSocket?.send(payload);\n }\n });\n };\n const initializeDurable = async () => {\n if (durable === undefined)\n return;\n installationId = await ensureSyncInstallationId(durable.store, durable.namespace, durable.createId);\n const records = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.listMutations());\n for (const record of records) {\n if (record.state === \"dead-letter\") {\n deadLetters.set(record.operationId, record);\n continue;\n }\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId: record.operationId,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n name: record.name,\n args: record.args,\n optimisticOperations: record.optimistic,\n inverse: record.inverse,\n attempts: record.attempts,\n createdAt: record.createdAt,\n nextAttemptAt: record.nextAttemptAt\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n }\n updateStatus();\n };\n const durableReady = durable === undefined ? Promise.resolve() : initializeDurable().catch((error) => {\n reportStorageError(error);\n throw error;\n });\n const hydrateEntry = async (entry) => {\n if (durable === undefined)\n return;\n await durableReady;\n const record = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.getCollection(entry.localKey));\n if (entry.closed || record === undefined) {\n if (!entry.closed)\n recompute(entry);\n return;\n }\n entry.confirmed.clear();\n for (const row of record.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n entry.appliedVersion = record.version;\n entry.cursor = record.cursor;\n recompute(entry);\n };\n const connect = () => {\n if (closed) {\n return;\n }\n reconnectTimer = undefined;\n updateStatus({ connection: \"connecting\" });\n const ws = new Impl(socketTicket ? ticketAuthenticatedSocketUrl(options.url) : options.url);\n socket = ws;\n const sendInitialFrames = () => {\n if (socket !== ws || closed)\n return;\n if (socketTicket) {\n socketTicket().then((ticket) => {\n if (socket !== ws || closed)\n return;\n wsSend(serializer.encodeClient({\n type: \"authenticate\",\n ticket\n }));\n connected = true;\n for (const entry of entries.values())\n sendSubscribe(entry);\n for (const mutation of pending)\n sendMutate(mutation);\n }).catch((error) => {\n options.onError?.(error);\n updateStatus({ lastError: String(error) });\n ws.close();\n });\n return;\n }\n connected = true;\n for (const entry of entries.values()) {\n sendSubscribe(entry);\n }\n for (const mutation of pending)\n sendMutate(mutation);\n };\n ws.onopen = () => {\n if (durable === undefined) {\n sendInitialFrames();\n return;\n }\n Promise.all([...entries.values()].map((entry) => entry.hydrated)).then(sendInitialFrames).catch((error) => {\n reportStorageError(error);\n ws.close();\n });\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes2)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n if (socket === ws)\n socket = undefined;\n connected = false;\n if (closed) {\n return;\n }\n updateStatus({ connection: \"offline\" });\n if (immediateReconnect) {\n immediateReconnect = false;\n connect();\n return;\n }\n if (reconnectMs <= 0)\n return;\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n if (durable === undefined)\n connect();\n else\n durableReady.then(connect).catch(() => {});\n const normalizeOptimisticOperations = (ownerKey, operations) => (operations ?? []).map((operation) => operation.type === \"delete\" ? {\n type: \"delete\",\n collection: operation.collection ?? ownerKey,\n key: operation.key\n } : {\n type: operation.type,\n collection: operation.collection ?? ownerKey,\n row: operation.row\n });\n const captureInverse = (operations) => {\n const working = new Map;\n const entryFor = (localKey) => {\n const entry = [...entries.values()].find((item) => item.localKey === localKey);\n if (entry === undefined) {\n throw new Error(`Durable optimistic operation targets unopened collection \"${localKey}\"`);\n }\n let rows = working.get(localKey);\n if (rows === undefined) {\n rows = new Map(entry.state.data.map((row) => [entry.key(row), row]));\n working.set(localKey, rows);\n }\n return { entry, rows };\n };\n const inverse = [];\n for (const operation of operations) {\n const { entry, rows } = entryFor(operation.collection);\n if (operation.type === \"delete\") {\n const existing2 = rows.get(operation.key);\n if (existing2 !== undefined) {\n inverse.unshift({\n type: \"insert\",\n collection: operation.collection,\n row: existing2\n });\n }\n rows.delete(operation.key);\n continue;\n }\n const rowKey = entry.key(operation.row);\n const existing = rows.get(rowKey);\n inverse.unshift(existing === undefined ? {\n type: \"delete\",\n collection: operation.collection,\n key: rowKey\n } : {\n type: \"update\",\n collection: operation.collection,\n row: existing\n });\n rows.set(rowKey, operation.row);\n }\n return inverse;\n };\n const collection = (handleOptions) => {\n const entryId = `c${nextEntryId}`;\n nextEntryId += 1;\n const localKey = handleOptions.localKey ?? defaultLocalKey(handleOptions.collection, handleOptions.params);\n if (localKey.length === 0) {\n throw new Error(\"Sync collection localKey must not be empty\");\n }\n const entry = {\n id: entryId,\n localKey,\n collection: handleOptions.collection,\n params: handleOptions.params,\n key: handleOptions.key ?? ((row) => row.id),\n headlessKey: handleOptions.key === undefined ? \"id\" : undefined,\n confirmed: new Map,\n state: { data: [], status: \"connecting\", error: undefined },\n listeners: new Set,\n appliedVersion: 0,\n cursor: undefined,\n closed: false,\n hydrated: Promise.resolve()\n };\n entries.set(entryId, entry);\n entry.hydrated = hydrateEntry(entry);\n if (connected)\n entry.hydrated.then(() => sendSubscribe(entry)).catch(reportStorageError);\n return {\n get: () => entry.state,\n subscribe: (listener) => {\n const typed = listener;\n entry.listeners.add(typed);\n listener(entry.state);\n return () => {\n entry.listeners.delete(typed);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const addPending = (operationId, optimisticOperations, inverse, createdAt = Date.now()) => {\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId,\n ownerKey: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n optimisticOperations,\n inverse,\n attempts: 0,\n createdAt,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n updateStatus();\n recomputeMutationEntries(mutation);\n sendMutate(mutation);\n };\n if (durable === undefined) {\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n addPending(undefined, optimisticOperations, inverse);\n return;\n }\n (async () => {\n await entry.hydrated;\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n await durableReady;\n const operationId = createSyncOperationId(installationId, durable.createId);\n const createdAt = Date.now();\n const record = {\n operationId,\n owner: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: optimisticOperations,\n inverse,\n createdAt,\n attempts: 0,\n state: \"pending\"\n };\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.putMutation(record)));\n addPending(operationId, optimisticOperations, inverse, createdAt);\n })().catch(reject);\n }),\n close: () => {\n if (entry.closed) {\n return;\n }\n entry.closed = true;\n entries.delete(entryId);\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: entryId\n }));\n }\n }\n };\n };\n const listDeadLetters = async () => {\n if (durable === undefined)\n return [];\n await durableReady;\n return [...deadLetters.values()].sort((a, b) => a.createdAt - b.createdAt).map((record) => structuredClone(record));\n };\n const retryDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter retry requires a durable Sync client\");\n }\n await durableReady;\n if (closed)\n throw new Error(\"Cannot retry a dead letter on a closed client\");\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\") {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n const next = {\n ...current,\n attempts: 0,\n state: \"pending\"\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n createdAt: record.createdAt,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\"\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n };\n const discardDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter discard requires a durable Sync client\");\n }\n await durableReady;\n if (!deadLetters.has(operationId)) {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(operationId)));\n deadLetters.delete(operationId);\n updateStatus();\n };\n const subscribeStatus = (listener) => {\n statusListeners.add(listener);\n listener(snapshotStatus());\n return () => {\n statusListeners.delete(listener);\n };\n };\n const flush = async ({ timeoutMs = 1e4 } = {}) => {\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"Sync flush timeoutMs must be a non-negative number\");\n }\n await durableReady;\n if (pending.length === 0) {\n return {\n deadLetters: deadLetters.size,\n pending: 0,\n timedOut: false\n };\n }\n if (!connected)\n reconnect();\n const timedOut = await new Promise((resolve) => {\n let settled = false;\n let remove = () => {\n return;\n };\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n remove();\n resolve(true);\n }, timeoutMs);\n remove = subscribeStatus((current) => {\n if (settled || current.pending > 0)\n return;\n settled = true;\n clearTimeout(timer);\n remove();\n resolve(false);\n });\n });\n return {\n deadLetters: deadLetters.size,\n pending: pending.length,\n timedOut\n };\n };\n let removeRuntimeClient;\n const close = () => {\n if (closed)\n return;\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n socket?.close();\n for (const timer of retryTimers.values())\n clearTimeout(timer);\n retryTimers.clear();\n entries.clear();\n mutationOwner.clear();\n pending.length = 0;\n updateStatus({ connection: \"closed\" });\n statusListeners.clear();\n removeRuntimeClient?.();\n removeRuntimeClient = undefined;\n };\n const disconnect = () => {\n if (closed || socket === undefined) {\n return;\n }\n socket.close();\n };\n const reconnect = () => {\n if (closed)\n return;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\n const current = socket;\n if (current && current.readyState !== current.CLOSED) {\n immediateReconnect = true;\n current.close();\n return;\n }\n socket = undefined;\n connect();\n };\n const client = {\n close,\n collection,\n discardDeadLetter,\n disconnect,\n flush,\n listDeadLetters,\n reconnect,\n retryDeadLetter,\n status: snapshotStatus,\n subscribeStatus\n };\n removeRuntimeClient = runtime?.registerClient?.(client) ?? undefined;\n return client;\n};\n// src/client/syncStore.ts\nvar serverFrameTypes3 = [\"snapshot\", \"diff\", \"error\"];\nvar SUBSCRIPTION_ID2 = \"s\";\nvar syncStore = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const reconcileGraceMs = options.reconcileGraceMs ?? 3000;\n const mutations = options.mutations ?? {};\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"syncStore requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: options.initialData ? [...options.initialData] : [],\n status: \"connecting\",\n error: undefined\n };\n if (options.initialData) {\n for (const row of options.initialData) {\n confirmed.set(key(row), row);\n }\n }\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.id,\n name: mutation.name,\n args: mutation.args\n })));\n };\n const dropPending = (mutation) => {\n const index = pending.indexOf(mutation);\n if (index !== -1) {\n pending.splice(index, 1);\n }\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n };\n const reconcileSettled = () => {\n let changed = false;\n for (const mutation of [...pending]) {\n if (!mutation.settled) {\n continue;\n }\n let reflected = true;\n for (const [rowKey, kind] of mutation.touched) {\n const present = confirmed.has(rowKey);\n if (kind === \"set\" ? !present : present) {\n reflected = false;\n break;\n }\n }\n if (reflected) {\n dropPending(mutation);\n changed = true;\n }\n }\n if (changed) {\n recompute();\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute({ status: \"ready\", error: undefined });\n reconcileSettled();\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute();\n reconcileSettled();\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n }\n };\n const runMutation = async (mutation) => {\n if (mutation.inFlight || mutation.settled) {\n return;\n }\n const run = mutations[mutation.name];\n if (run === undefined) {\n dropPending(mutation);\n recompute();\n mutation.reject(new Error(`Unknown mutation \"${mutation.name}\"`));\n return;\n }\n mutation.inFlight = true;\n try {\n const result = await run(mutation.args);\n mutation.inFlight = false;\n mutation.settled = true;\n mutation.resolve(result);\n persist();\n reconcileSettled();\n if (pending.includes(mutation)) {\n mutation.graceTimer = setTimeout(() => {\n dropPending(mutation);\n recompute();\n }, reconcileGraceMs);\n }\n } catch (error) {\n mutation.inFlight = false;\n if (connected) {\n dropPending(mutation);\n recompute();\n persist();\n mutation.reject(error);\n } else {\n options.onError?.(error);\n }\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID2,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n if (!mutation.settled && !mutation.inFlight) {\n runMutation(mutation);\n }\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes3)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const eagerHydrate = async () => {\n if (options.hydrate === undefined || options.initialData !== undefined) {\n return;\n }\n try {\n const rows = await options.hydrate();\n if (state.status !== \"ready\") {\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n }\n } catch (error) {\n options.onError?.(error);\n }\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.id === record.mutationId)) {\n continue;\n }\n pending.push({\n id: record.mutationId,\n name: record.name,\n args: record.args,\n touched: new Map,\n settled: false,\n inFlight: false,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n runMutation(mutation);\n }\n }\n };\n connect();\n eagerHydrate();\n hydratePersisted();\n const collectTouched = (optimistic) => {\n const touched = new Map;\n optimistic?.({\n set: (row) => touched.set(key(row), \"set\"),\n delete: (rowKey) => touched.set(rowKey, \"delete\")\n });\n return touched;\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (name, args, mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n id: mutationSeq += 1,\n name,\n args,\n touched: collectTouched(mutateOptions?.optimistic),\n optimistic: mutateOptions?.optimistic,\n settled: false,\n inFlight: false,\n resolve,\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n runMutation(mutation);\n }),\n refetch: async () => {\n if (options.hydrate === undefined) {\n return;\n }\n const rows = await options.hydrate();\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n socket?.send(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID2\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n mutation.reject(new Error(\"sync store closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\nvar unwrapEden = async (response) => {\n const { data, error } = await response;\n if (error !== null && error !== undefined) {\n throw error;\n }\n return data;\n};\nexport {\n validateSyncLocalDataPolicy,\n unwrapEden,\n syncStore,\n runSyncLocalPolicyTransaction,\n runHeadlessSync,\n resolveSyncLocalSchemaComponents,\n resolveSyncLocalMutationPolicy,\n resolveSyncLocalMigrations,\n resolveSyncLocalDataPolicy,\n resolveSyncLocalCollectionPolicy,\n normalizeSyncLocalSchemaComponents,\n migrateSyncLocalMutationRecord,\n migrateSyncLocalCollectionRecord,\n localStorageMutationStorage,\n localStorageCollectionCache,\n jsonFetcher,\n installSyncClientRuntimeTransport,\n indexedDbCollectionCache,\n getSyncClientRuntimeTransport,\n ensureSyncInstallationId,\n createSyncSubscriber,\n createSyncOperationId,\n createSyncLocalSchemaStatus,\n createSyncCollection,\n createSyncClient,\n createPresence,\n createMemorySyncLocalStore,\n createLiveQuery,\n createIndexedDbSyncLocalStore,\n createCollaborativeText,\n SyncMutationRejectedError,\n SyncLocalStoreSchemaError,\n SyncLocalDataPolicyError\n};\n\n//# debugId=BBF39876255F709564756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
10
|
+
"import { readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport {\n\tresolveSyncLocalSchemaComponents,\n\ttype SyncLocalCollectionMigrationOperation,\n\ttype SyncLocalCollectionPolicy,\n\ttype SyncLocalDataPolicy,\n\ttype SyncLocalJsonValue,\n\ttype SyncLocalMutationPolicy,\n\ttype SyncLocalStoreMigration,\n\ttype SyncLocalStoreSchemaBundle,\n\ttype SyncLocalStoreSchemaComponent\n} from '@absolutejs/sync/client';\n\nexport type AbsoluteSyncSchemaDiscovery = {\n\tcomponents: SyncLocalStoreSchemaBundle['components'];\n\tsources: { id: string; manifestPath: string }[];\n};\n\n// A predicate annotation is required so parsed package JSON remains `unknown`\n// until every object boundary has been checked.\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst manifestAt = (path: string) => {\n\ttry {\n\t\tconst value: unknown = JSON.parse(readFileSync(path, 'utf8'));\n\n\t\treturn object(value) ? value : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst localSchemaMetadata = (manifest: object) => {\n\tconst absolutejs = Reflect.get(manifest, 'absolutejs');\n\tif (!object(absolutejs)) return undefined;\n\tconst sync = Reflect.get(absolutejs, 'sync');\n\tif (!object(sync)) return undefined;\n\n\treturn Reflect.get(sync, 'localSchema');\n};\n\nconst packageManifestPath = (projectRoot: string, packageName: string) => {\n\tlet directory = resolve(projectRoot);\n\twhile (true) {\n\t\tconst candidate = join(\n\t\t\tdirectory,\n\t\t\t'node_modules',\n\t\t\tpackageName,\n\t\t\t'package.json'\n\t\t);\n\t\tconst manifest = manifestAt(candidate);\n\t\tif (manifest && Reflect.get(manifest, 'name') === packageName)\n\t\t\treturn candidate;\n\t\tconst parent = dirname(directory);\n\t\tif (parent === directory) return undefined;\n\t\tdirectory = parent;\n\t}\n};\n\nconst metadataError = (id: string, detail: string) =>\n\tnew TypeError(\n\t\t`Invalid AbsoluteJS Sync schema metadata for ${id}: ${detail}`\n\t);\n\nconst positiveVersion = (value: unknown, id: string, field: string) => {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1)\n\t\tthrow metadataError(id, `${field} must be a positive safe integer.`);\n\n\treturn value;\n};\n\nconst nonEmpty = (value: unknown, id: string, field: string) => {\n\tif (\n\t\ttypeof value !== 'string' ||\n\t\tvalue.trim() !== value ||\n\t\tvalue.length === 0\n\t)\n\t\tthrow metadataError(id, `${field} must be a non-empty trimmed string.`);\n\n\treturn value;\n};\n\nconst requireObject = (value: unknown, id: string, detail: string) => {\n\tif (!object(value)) throw metadataError(id, detail);\n\n\treturn value;\n};\n\nconst unknownField = (record: Record<string, unknown>, key: string) =>\n\trecord[key];\n\nconst normalizeJsonValue: (\n\tvalue: unknown,\n\tid: string,\n\tfield: string\n) => SyncLocalJsonValue = (value, id, field) => {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === 'string' ||\n\t\ttypeof value === 'boolean'\n\t)\n\t\treturn value;\n\tif (typeof value === 'number' && Number.isFinite(value)) return value;\n\tif (Array.isArray(value))\n\t\treturn value.map((entry) => normalizeJsonValue(entry, id, field));\n\tif (object(value))\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value).map(([key, entry]) => [\n\t\t\t\tkey,\n\t\t\t\tnormalizeJsonValue(entry, id, field)\n\t\t\t])\n\t\t);\n\n\tthrow metadataError(id, `${field} must be JSON-safe.`);\n};\n\nconst operation: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalCollectionMigrationOperation = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration operation ${index} must be an object.`\n\t);\n\tconst type = Reflect.get(record, 'type');\n\tconst collection = nonEmpty(\n\t\tReflect.get(record, 'collection'),\n\t\tid,\n\t\t`operation ${index}.collection`\n\t);\n\tif (type === 'delete-collection') return { collection, type };\n\tif (type === 'rename-field')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfrom: nonEmpty(\n\t\t\t\tReflect.get(record, 'from'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.from`\n\t\t\t),\n\t\t\tto: nonEmpty(\n\t\t\t\tReflect.get(record, 'to'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.to`\n\t\t\t),\n\t\t\ttype\n\t\t};\n\tconst field = nonEmpty(\n\t\tReflect.get(record, 'field'),\n\t\tid,\n\t\t`operation ${index}.field`\n\t);\n\tif (type === 'remove-field') return { collection, field, type };\n\tif (type === 'set-default')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfield,\n\t\t\ttype,\n\t\t\tvalue: normalizeJsonValue(\n\t\t\t\tReflect.get(record, 'value'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.value`\n\t\t\t)\n\t\t};\n\n\tthrow metadataError(id, `operation ${index}.type is not supported.`);\n};\n\nconst migration: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalStoreMigration = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration ${index} must be an object.`\n\t);\n\tconst allowed = new Set(['operations', 'toVersion']);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.${unsupported} is not declarative metadata.`\n\t\t);\n\tconst declaredOperations = Reflect.get(record, 'operations');\n\tif (declaredOperations !== undefined && !Array.isArray(declaredOperations))\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.operations must be an array.`\n\t\t);\n\tconst operations = Array.isArray(declaredOperations)\n\t\t? declaredOperations\n\t\t: [];\n\n\treturn {\n\t\toperations: operations.map((entry, operationIndex) =>\n\t\t\toperation(entry, id, operationIndex)\n\t\t),\n\t\ttoVersion: positiveVersion(\n\t\t\tReflect.get(record, 'toVersion'),\n\t\t\tid,\n\t\t\t`migration ${index}.toVersion`\n\t\t)\n\t};\n};\n\nconst localDataPolicy = (value: unknown, id: string): SyncLocalDataPolicy => {\n\tconst record = requireObject(value, id, 'localData must be an object.');\n\tconst allowed = new Set([\n\t\t'collections',\n\t\t'maxBytesPerNamespace',\n\t\t'mutations'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `localData.${unsupported} is not supported.`);\n\tconst collectionRules = Reflect.get(record, 'collections');\n\tconst mutationRules = Reflect.get(record, 'mutations');\n\tif (collectionRules !== undefined && !Array.isArray(collectionRules))\n\t\tthrow metadataError(id, 'localData.collections must be an array.');\n\tif (mutationRules !== undefined && !Array.isArray(mutationRules))\n\t\tthrow metadataError(id, 'localData.mutations must be an array.');\n\tconst collections: SyncLocalCollectionPolicy[] | undefined = Array.isArray(\n\t\tcollectionRules\n\t)\n\t\t? collectionRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'evictionPriority',\n\t\t\t\t\t'match',\n\t\t\t\t\t'maxAgeMs',\n\t\t\t\t\t'onProtectionUnavailable',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst match = nonEmpty(\n\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}].match`\n\t\t\t\t);\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst onProtectionUnavailable = unknownField(\n\t\t\t\t\trule,\n\t\t\t\t\t'onProtectionUnavailable'\n\t\t\t\t);\n\t\t\t\tconst evictionPriority = unknownField(rule, 'evictionPriority');\n\t\t\t\tconst maxAge = unknownField(rule, 'maxAgeMs');\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tonProtectionUnavailable !== undefined &&\n\t\t\t\t\tonProtectionUnavailable !== 'error' &&\n\t\t\t\t\tonProtectionUnavailable !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].onProtectionUnavailable is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tevictionPriority !== undefined &&\n\t\t\t\t\tevictionPriority !== 'critical' &&\n\t\t\t\t\tevictionPriority !== 'normal' &&\n\t\t\t\t\tevictionPriority !== 'disposable'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].evictionPriority is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch,\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(persistence ? { persistence } : {}),\n\t\t\t\t\t...(protection ? { protection } : {}),\n\t\t\t\t\t...(onProtectionUnavailable\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tonProtectionUnavailable: onProtectionUnavailable\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(evictionPriority ? { evictionPriority } : {}),\n\t\t\t\t\t...(maxAge === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tmaxAgeMs: positiveVersion(\n\t\t\t\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t`localData.collections[${index}].maxAgeMs`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst mutations: SyncLocalMutationPolicy[] | undefined = Array.isArray(\n\t\tmutationRules\n\t)\n\t\t? mutationRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.mutations[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'match',\n\t\t\t\t\t'onProtectionUnavailable',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tconst onProtectionUnavailable = unknownField(\n\t\t\t\t\trule,\n\t\t\t\t\t'onProtectionUnavailable'\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tonProtectionUnavailable !== undefined &&\n\t\t\t\t\tonProtectionUnavailable !== 'error' &&\n\t\t\t\t\tonProtectionUnavailable !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].onProtectionUnavailable is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch: nonEmpty(\n\t\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].match`\n\t\t\t\t\t),\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(onProtectionUnavailable\n\t\t\t\t\t\t? { onProtectionUnavailable }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(persistence\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpersistence: persistence\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(protection ? { protection: protection } : {})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst quota = Reflect.get(record, 'maxBytesPerNamespace');\n\n\treturn {\n\t\t...(collections ? { collections } : {}),\n\t\t...(mutations ? { mutations } : {}),\n\t\t...(quota === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmaxBytesPerNamespace: positiveVersion(\n\t\t\t\t\t\tquota,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t'localData.maxBytesPerNamespace'\n\t\t\t\t\t)\n\t\t\t\t})\n\t};\n};\n\nconst component: (\n\tid: string,\n\tvalue: unknown\n) => SyncLocalStoreSchemaComponent = (id, value) => {\n\tconst record = requireObject(value, id, 'localSchema must be an object.');\n\tconst allowed = new Set([\n\t\t'localData',\n\t\t'migrations',\n\t\t'minimumCompatibleVersion',\n\t\t'version'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `${unsupported} is not supported.`);\n\tconst version = positiveVersion(\n\t\tReflect.get(record, 'version'),\n\t\tid,\n\t\t'version'\n\t);\n\tconst declaredMinimum = Reflect.get(record, 'minimumCompatibleVersion');\n\tconst minimumCompatibleVersion =\n\t\tdeclaredMinimum === undefined\n\t\t\t? Math.max(1, version - 2)\n\t\t\t: positiveVersion(declaredMinimum, id, 'minimumCompatibleVersion');\n\tconst declaredMigrations = Reflect.get(record, 'migrations');\n\tconst declaredLocalData = Reflect.get(record, 'localData');\n\tif (declaredMigrations !== undefined && !Array.isArray(declaredMigrations))\n\t\tthrow metadataError(id, 'migrations must be an array.');\n\tconst migrations = Array.isArray(declaredMigrations)\n\t\t? declaredMigrations\n\t\t: undefined;\n\n\treturn {\n\t\tid,\n\t\t...(declaredLocalData === undefined\n\t\t\t? {}\n\t\t\t: { localData: localDataPolicy(declaredLocalData, id) }),\n\t\tminimumCompatibleVersion,\n\t\t...(Array.isArray(migrations)\n\t\t\t? {\n\t\t\t\t\tmigrations: migrations.map((entry, index) =>\n\t\t\t\t\t\tmigration(entry, id, index)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t: {}),\n\t\tversion\n\t};\n};\n\nconst dependencyNames = (manifest: object) =>\n\t[\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t]\n\t\t.flatMap((dependencies) =>\n\t\t\tobject(dependencies) ? Object.keys(dependencies) : []\n\t\t)\n\t\t.filter((name, index, names) => names.indexOf(name) === index)\n\t\t.sort();\n\nexport const discoverAbsoluteSyncSchema = (\n\tprojectRoot: string\n): AbsoluteSyncSchemaDiscovery => {\n\tconst appManifestPath = join(resolve(projectRoot), 'package.json');\n\tconst appManifest = manifestAt(appManifestPath);\n\tif (!appManifest)\n\t\treturn {\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tid: '@absolutejs/app',\n\t\t\t\t\tminimumCompatibleVersion: 1,\n\t\t\t\t\tversion: 1\n\t\t\t\t}\n\t\t\t],\n\t\t\tsources: []\n\t\t};\n\tconst appMetadata = localSchemaMetadata(appManifest);\n\tconst components: SyncLocalStoreSchemaComponent[] = [\n\t\tappMetadata === undefined\n\t\t\t? { id: '@absolutejs/app', minimumCompatibleVersion: 1, version: 1 }\n\t\t\t: component('@absolutejs/app', appMetadata)\n\t];\n\tconst sources: AbsoluteSyncSchemaDiscovery['sources'] = [\n\t\t{ id: '@absolutejs/app', manifestPath: appManifestPath }\n\t];\n\tfor (const name of dependencyNames(appManifest)) {\n\t\tconst manifestPath = packageManifestPath(projectRoot, name);\n\t\tif (!manifestPath) continue;\n\t\tconst manifest = manifestAt(manifestPath);\n\t\tif (!manifest) continue;\n\t\tconst metadata = localSchemaMetadata(manifest);\n\t\tif (metadata === undefined) continue;\n\t\tcomponents.push(component(name, metadata));\n\t\tsources.push({ id: name, manifestPath });\n\t}\n\tcomponents.sort((left, right) => left.id.localeCompare(right.id));\n\tsources.sort((left, right) => left.id.localeCompare(right.id));\n\tresolveSyncLocalSchemaComponents({}, { components });\n\n\treturn { components, sources };\n};\n",
|
|
11
11
|
"import { createHash } from 'node:crypto';\nimport {\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\treaddir,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { join, resolve as resolvePath } from 'node:path';\nimport {\n\tparseAbsoluteMobileCompatibilityArtifact,\n\tretainAbsoluteMobileCompatibilityArtifacts,\n\ttype AbsoluteMobileCompatibilityArtifact\n} from './releaseArtifact';\n\nexport type AbsoluteMobileStoredCompatibilityRelease = {\n\tartifact: AbsoluteMobileCompatibilityArtifact;\n\tproducer: Blob;\n};\n\nexport type AbsoluteMobileCompatibilityArtifactStore = {\n\tdelete: (appId: string, releaseId: string) => Promise<void>;\n\tlist: (appId: string) => Promise<AbsoluteMobileCompatibilityArtifact[]>;\n\tread: (\n\t\tappId: string,\n\t\treleaseId: string\n\t) => Promise<AbsoluteMobileStoredCompatibilityRelease | null>;\n\twrite: (release: AbsoluteMobileStoredCompatibilityRelease) => Promise<void>;\n};\n\nexport type AbsoluteMobileFileArtifactStoreOptions = {\n\tmaxProducerBytes?: number;\n\troot: string;\n};\n\nexport type AbsoluteMobileBlobStore = {\n\tdelete: (key: string) => Promise<void>;\n\tget: (key: string) => Promise<Uint8Array | null>;\n\tlist: (options: { cursor?: string; prefix: string }) => Promise<{\n\t\tcursor?: string;\n\t\tobjects: Array<{ key: string }>;\n\t\ttruncated: boolean;\n\t}>;\n\tput: (\n\t\tkey: string,\n\t\tbody: ReadableStream<Uint8Array> | Uint8Array | string,\n\t\toptions?: {\n\t\t\tcontentType?: string;\n\t\t\tmaxBytes?: number;\n\t\t\tmetadata?: Record<string, string>;\n\t\t}\n\t) => Promise<unknown>;\n};\n\nexport type AbsoluteMobileBlobArtifactStoreOptions = {\n\tmaxProducerBytes?: number;\n\tprefix?: string;\n\tstore: AbsoluteMobileBlobStore;\n};\n\nexport type AbsoluteMobileCarryForwardInput = {\n\tcurrent: AbsoluteMobileStoredCompatibilityRelease;\n\tstore: AbsoluteMobileCompatibilityArtifactStore;\n};\n\nconst DEFAULT_MAX_PRODUCER_BYTES = 134_217_728;\nconst SHA_256 = 'sha256';\nconst ARTIFACT_FILE = 'artifact.json';\nconst RELEASE_ID_PATTERN = /^amc_[a-f0-9]{64}$/;\nconst DEFAULT_BLOB_PREFIX = 'absolutejs/mobile-compatibility';\n\nconst hashBlob = async (blob: Blob) => {\n\tconst bytes = new Uint8Array(await blob.arrayBuffer());\n\n\treturn createHash(SHA_256).update(bytes).digest('hex');\n};\n\nconst blobFromBytes = (bytes: Uint8Array) => {\n\tconst buffer = new ArrayBuffer(bytes.byteLength);\n\tnew Uint8Array(buffer).set(bytes);\n\n\treturn new Blob([buffer]);\n};\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst appDirectoryName = (appId: string) =>\n\tcreateHash(SHA_256).update(appId).digest('hex');\n\nconst requireReleaseId = (releaseId: string) => {\n\tif (!RELEASE_ID_PATTERN.test(releaseId)) {\n\t\tthrow new TypeError('Invalid mobile compatibility release id.');\n\t}\n\n\treturn releaseId;\n};\n\nconst readStoredArtifact = async (releaseDirectory: string) => {\n\tconst serialized = await readFile(\n\t\tjoin(releaseDirectory, ARTIFACT_FILE),\n\t\t'utf8'\n\t);\n\tconst parsed: unknown = JSON.parse(serialized);\n\n\treturn parseAbsoluteMobileCompatibilityArtifact(parsed);\n};\n\nconst validateStoredIdentity = (\n\tartifact: AbsoluteMobileCompatibilityArtifact,\n\tappId: string,\n\treleaseId: string\n) => {\n\tif (artifact.appId !== appId || artifact.releaseId !== releaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Stored mobile compatibility identity does not match.'\n\t\t);\n\t}\n\n\treturn artifact;\n};\n\ntype BlobKeyLister = (\n\tstore: AbsoluteMobileBlobStore,\n\tprefix: string,\n\tcursor?: string,\n\tkeys?: string[]\n) => Promise<string[]>;\n\nconst listBlobKeys: BlobKeyLister = async (\n\tstore,\n\tprefix,\n\tcursor,\n\tkeys = []\n) => {\n\tconst result = await store.list({ cursor, prefix });\n\tconst collected = [...keys, ...result.objects.map(({ key }) => key)];\n\tif (!result.truncated) return collected;\n\tif (!result.cursor) {\n\t\tthrow new TypeError('Truncated blob listing did not provide a cursor.');\n\t}\n\n\treturn listBlobKeys(store, prefix, result.cursor, collected);\n};\n\nconst normalizeBlobPrefix = (prefix: string) => {\n\tconst normalized = prefix.replace(/^\\/+|\\/+$/g, '');\n\tif (!normalized || normalized.split('/').includes('..')) {\n\t\tthrow new TypeError('Mobile compatibility blob prefix is invalid.');\n\t}\n\n\treturn normalized;\n};\nexport const carryForwardAbsoluteMobileCompatibilityReleases = async (\n\tinput: AbsoluteMobileCarryForwardInput\n) => {\n\tawait verifyAbsoluteMobileCompatibilityProducer(input.current);\n\tawait input.store.write(input.current);\n\tconst available = await input.store.list(input.current.artifact.appId);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(available);\n\tif (retained[0]?.releaseId !== input.current.artifact.releaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Current mobile release generation must be newer than stored history.'\n\t\t);\n\t}\n\tconst releases = await Promise.all(\n\t\tretained.map(({ releaseId }) =>\n\t\t\tinput.store.read(input.current.artifact.appId, releaseId)\n\t\t)\n\t);\n\n\treturn Promise.all(\n\t\treleases.map((release) => {\n\t\t\tif (!release) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'Compatibility store listed a release it could not read.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn verifyAbsoluteMobileCompatibilityProducer(release);\n\t\t})\n\t);\n};\n\nexport const createAbsoluteMobileBlobArtifactStore = (\n\toptions: AbsoluteMobileBlobArtifactStoreOptions\n): AbsoluteMobileCompatibilityArtifactStore => {\n\tconst prefix = normalizeBlobPrefix(options.prefix ?? DEFAULT_BLOB_PREFIX);\n\tconst maxProducerBytes =\n\t\toptions.maxProducerBytes ?? DEFAULT_MAX_PRODUCER_BYTES;\n\tconst appPrefix = (appId: string) =>\n\t\t`${prefix}/${appDirectoryName(appId)}/releases`;\n\tconst releasePrefix = (appId: string, releaseId: string) =>\n\t\t`${appPrefix(appId)}/${requireReleaseId(releaseId)}`;\n\tconst artifactKey = (appId: string, releaseId: string) =>\n\t\t`${releasePrefix(appId, releaseId)}/${ARTIFACT_FILE}`;\n\tconst producerKey = (artifact: AbsoluteMobileCompatibilityArtifact) =>\n\t\t`${releasePrefix(artifact.appId, artifact.releaseId)}/${artifact.producer.module}`;\n\tconst readArtifact = async (appId: string, releaseId: string) => {\n\t\tconst bytes = await options.store.get(artifactKey(appId, releaseId));\n\t\tif (!bytes) return null;\n\t\tconst parsed: unknown = JSON.parse(new TextDecoder().decode(bytes));\n\n\t\treturn validateStoredIdentity(\n\t\t\tparseAbsoluteMobileCompatibilityArtifact(parsed),\n\t\t\tappId,\n\t\t\treleaseId\n\t\t);\n\t};\n\n\treturn {\n\t\tdelete: async (appId, releaseId) => {\n\t\t\tconst artifact = await readArtifact(appId, releaseId);\n\t\t\tif (artifact) await options.store.delete(producerKey(artifact));\n\t\t\tawait options.store.delete(artifactKey(appId, releaseId));\n\t\t},\n\t\tlist: async (appId) => {\n\t\t\tconst releaseRoot = `${appPrefix(appId)}/`;\n\t\t\tconst keys = await listBlobKeys(options.store, releaseRoot);\n\t\t\tconst releaseIds = keys\n\t\t\t\t.filter((key) => key.endsWith(`/${ARTIFACT_FILE}`))\n\t\t\t\t.map((key) => key.slice(releaseRoot.length).split('/')[0])\n\t\t\t\t.filter(\n\t\t\t\t\t(releaseId): releaseId is string =>\n\t\t\t\t\t\ttypeof releaseId === 'string' &&\n\t\t\t\t\t\tRELEASE_ID_PATTERN.test(releaseId)\n\t\t\t\t);\n\t\t\tconst artifacts = await Promise.all(\n\t\t\t\t[...new Set(releaseIds)].map((releaseId) =>\n\t\t\t\t\treadArtifact(appId, releaseId)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn artifacts\n\t\t\t\t.filter(\n\t\t\t\t\t(\n\t\t\t\t\t\tartifact\n\t\t\t\t\t): artifact is AbsoluteMobileCompatibilityArtifact =>\n\t\t\t\t\t\tartifact !== null\n\t\t\t\t)\n\t\t\t\t.sort((left, right) => right.generation - left.generation);\n\t\t},\n\t\tread: async (appId, releaseId) => {\n\t\t\tconst artifact = await readArtifact(appId, releaseId);\n\t\t\tif (!artifact) return null;\n\t\t\tconst bytes = await options.store.get(producerKey(artifact));\n\t\t\tif (!bytes) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'Mobile compatibility artifact is missing its producer.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { artifact, producer: blobFromBytes(bytes) };\n\t\t},\n\t\twrite: async (release) => {\n\t\t\tconst artifact = parseAbsoluteMobileCompatibilityArtifact(\n\t\t\t\trelease.artifact\n\t\t\t);\n\t\t\tconst validated = await verifyAbsoluteMobileCompatibilityProducer(\n\t\t\t\t{ artifact, producer: release.producer },\n\t\t\t\tmaxProducerBytes\n\t\t\t);\n\t\t\tawait options.store.put(\n\t\t\t\tproducerKey(validated.artifact),\n\t\t\t\tvalidated.producer.stream(),\n\t\t\t\t{\n\t\t\t\t\tcontentType: 'text/javascript; charset=utf-8',\n\t\t\t\t\tmaxBytes: maxProducerBytes,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tappId: validated.artifact.appId,\n\t\t\t\t\t\treleaseId: validated.artifact.releaseId,\n\t\t\t\t\t\tsha256: validated.artifact.producer.bundleHash\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tawait options.store.put(\n\t\t\t\tartifactKey(\n\t\t\t\t\tvalidated.artifact.appId,\n\t\t\t\t\tvalidated.artifact.releaseId\n\t\t\t\t),\n\t\t\t\t`${JSON.stringify(validated.artifact, null, '\\t')}\\n`,\n\t\t\t\t{ contentType: 'application/json' }\n\t\t\t);\n\t\t}\n\t};\n};\n\nexport const createAbsoluteMobileFileArtifactStore = (\n\toptions: AbsoluteMobileFileArtifactStoreOptions\n): AbsoluteMobileCompatibilityArtifactStore => {\n\tconst root = resolvePath(options.root);\n\tconst maxProducerBytes =\n\t\toptions.maxProducerBytes ?? DEFAULT_MAX_PRODUCER_BYTES;\n\tconst appDirectory = (appId: string) => join(root, appDirectoryName(appId));\n\tconst releaseDirectory = (appId: string, releaseId: string) =>\n\t\tjoin(appDirectory(appId), requireReleaseId(releaseId));\n\tconst acceptExistingRelease = async (\n\t\terror: unknown,\n\t\tartifact: AbsoluteMobileCompatibilityArtifact\n\t) => {\n\t\tif (\n\t\t\t!errorHasCode(error, 'EEXIST') &&\n\t\t\t!errorHasCode(error, 'ENOTEMPTY')\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tconst existing = await readStoredArtifact(\n\t\t\treleaseDirectory(artifact.appId, artifact.releaseId)\n\t\t);\n\n\t\treturn existing.releaseId === artifact.releaseId;\n\t};\n\n\treturn {\n\t\tdelete: async (appId, releaseId) => {\n\t\t\tawait rm(releaseDirectory(appId, releaseId), {\n\t\t\t\tforce: true,\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t},\n\t\tlist: async (appId) => {\n\t\t\tlet entries;\n\t\t\ttry {\n\t\t\t\tentries = await readdir(appDirectory(appId), {\n\t\t\t\t\twithFileTypes: true\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (errorHasCode(error, 'ENOENT')) return [];\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst artifacts = await Promise.all(\n\t\t\t\tentries\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(entry) =>\n\t\t\t\t\t\t\tentry.isDirectory() &&\n\t\t\t\t\t\t\tRELEASE_ID_PATTERN.test(entry.name)\n\t\t\t\t\t)\n\t\t\t\t\t.map(async ({ name }) =>\n\t\t\t\t\t\tvalidateStoredIdentity(\n\t\t\t\t\t\t\tawait readStoredArtifact(\n\t\t\t\t\t\t\t\treleaseDirectory(appId, name)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn artifacts.sort(\n\t\t\t\t(left, right) => right.generation - left.generation\n\t\t\t);\n\t\t},\n\t\tread: async (appId, releaseId) => {\n\t\t\tconst directory = releaseDirectory(appId, releaseId);\n\t\t\tlet artifact;\n\t\t\ttry {\n\t\t\t\tartifact = validateStoredIdentity(\n\t\t\t\t\tawait readStoredArtifact(directory),\n\t\t\t\t\tappId,\n\t\t\t\t\treleaseId\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tif (errorHasCode(error, 'ENOENT')) return null;\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tartifact,\n\t\t\t\tproducer: Bun.file(join(directory, artifact.producer.module))\n\t\t\t};\n\t\t},\n\t\twrite: async (release) => {\n\t\t\tconst validatedArtifact = parseAbsoluteMobileCompatibilityArtifact(\n\t\t\t\trelease.artifact\n\t\t\t);\n\t\t\tconst validated = await verifyAbsoluteMobileCompatibilityProducer(\n\t\t\t\t{ artifact: validatedArtifact, producer: release.producer },\n\t\t\t\tmaxProducerBytes\n\t\t\t);\n\t\t\tconst parent = appDirectory(validated.artifact.appId);\n\t\t\tawait mkdir(parent, { recursive: true });\n\t\t\tconst staging = await mkdtemp(join(parent, '.stage-'));\n\t\t\tconst producerPath = join(\n\t\t\t\tstaging,\n\t\t\t\tvalidated.artifact.producer.module\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tawait mkdir(resolvePath(producerPath, '..'), {\n\t\t\t\t\trecursive: true\n\t\t\t\t});\n\t\t\t\tawait Promise.all([\n\t\t\t\t\twriteFile(\n\t\t\t\t\t\tjoin(staging, ARTIFACT_FILE),\n\t\t\t\t\t\t`${JSON.stringify(validated.artifact, null, '\\t')}\\n`\n\t\t\t\t\t),\n\t\t\t\t\twriteFile(\n\t\t\t\t\t\tproducerPath,\n\t\t\t\t\t\tnew Uint8Array(await validated.producer.arrayBuffer())\n\t\t\t\t\t)\n\t\t\t\t]);\n\t\t\t\tawait rename(\n\t\t\t\t\tstaging,\n\t\t\t\t\treleaseDirectory(\n\t\t\t\t\t\tvalidated.artifact.appId,\n\t\t\t\t\t\tvalidated.artifact.releaseId\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tawait rm(staging, { force: true, recursive: true });\n\t\t\t\tif (await acceptExistingRelease(error, validated.artifact))\n\t\t\t\t\treturn;\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t};\n};\n\nexport const verifyAbsoluteMobileCompatibilityProducer = async (\n\trelease: AbsoluteMobileStoredCompatibilityRelease,\n\tmaxProducerBytes = DEFAULT_MAX_PRODUCER_BYTES\n) => {\n\tconst { artifact, producer } = release;\n\tif (\n\t\tproducer.size !== artifact.producer.bytes ||\n\t\tproducer.size > maxProducerBytes\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile compatibility producer size does not match its artifact.'\n\t\t);\n\t}\n\tif ((await hashBlob(producer)) !== artifact.producer.bundleHash) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile compatibility producer hash does not match its artifact.'\n\t\t);\n\t}\n\n\treturn release;\n};\n",
|
|
12
12
|
"import { createHash } from 'node:crypto';\nimport type {\n\tAbsoluteMobilePageClient,\n\tAbsoluteMobilePageFramework,\n\tAbsoluteMobileUpgradeRequiredResult\n} from './pageProtocol';\n\nexport const ABSOLUTE_MOBILE_COMPATIBILITY_FORMAT = 1 as const;\nexport const ABSOLUTE_MOBILE_RETAINED_GENERATIONS = 3;\n\nexport type AbsoluteMobileCompatibilityPage = {\n\tbundleHash: string;\n\tbundlePath: string;\n\tcontract: string;\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\tpropsSchemaHash: string;\n\tstyleBundleHash?: string;\n\tstyleBundlePath?: string;\n};\n\nexport type AbsoluteMobileCompatibilityRoute = {\n\tmethod: 'GET' | 'HEAD';\n\tpageId: string;\n\tpattern: string;\n};\n\nexport type AbsoluteMobileCompatibilityProducer = {\n\tbundleHash: string;\n\tbytes: number;\n\texportName: string;\n\tmodule: string;\n};\n\nexport type AbsoluteMobileCompatibilityArtifactInput = {\n\tappBuild: string;\n\tappId: string;\n\tgeneration: number;\n\tpages: readonly AbsoluteMobileCompatibilityPage[];\n\tproducer: AbsoluteMobileCompatibilityProducer;\n\troutes: readonly AbsoluteMobileCompatibilityRoute[];\n\truntime: string;\n};\n\nexport type AbsoluteMobileCompatibilityArtifact = {\n\tappBuild: string;\n\tappId: string;\n\tformat: typeof ABSOLUTE_MOBILE_COMPATIBILITY_FORMAT;\n\tgeneration: number;\n\tpages: AbsoluteMobileCompatibilityPage[];\n\tproducer: AbsoluteMobileCompatibilityProducer;\n\treleaseId: string;\n\troutes: AbsoluteMobileCompatibilityRoute[];\n\truntime: string;\n};\n\nexport type AbsoluteMobileResolvedRelease =\n\t| {\n\t\t\tartifact: AbsoluteMobileCompatibilityArtifact;\n\t\t\tkind: 'retained';\n\t\t\tpage: AbsoluteMobileCompatibilityPage;\n\t }\n\t| {\n\t\t\tkind: 'upgrade-required';\n\t\t\tresult: AbsoluteMobileUpgradeRequiredResult;\n\t };\n\ntype CanonicalRecord = Record<string, unknown>;\ntype CanonicalValueNormalizer = (\n\tvalue: unknown,\n\tancestors: Set<object>\n) => unknown;\ntype CompatibilityArtifactContent = Omit<\n\tAbsoluteMobileCompatibilityArtifact,\n\t'releaseId'\n>;\n\nconst SHA_256 = 'sha256';\nconst RELEASE_ID_PREFIX = 'amc_';\nconst MODULE_SEGMENT_PARENT = '..';\nconst EXPORT_NAME_PATTERN = /^[A-Z_a-z]\\w*$/;\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\n\nconst isCanonicalRecord = (value: unknown): value is CanonicalRecord => {\n\tif (typeof value !== 'object' || value === null || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\n\treturn prototype === Object.prototype || prototype === null;\n};\n\nconst enterCanonicalValue = (value: object, ancestors: Set<object>) => {\n\tif (ancestors.has(value)) {\n\t\tthrow new TypeError('Compatibility metadata cannot contain cycles.');\n\t}\n\tancestors.add(value);\n};\n\nconst normalizeCanonicalArray = (value: unknown[], ancestors: Set<object>) => {\n\tenterCanonicalValue(value, ancestors);\n\tconst normalized = value.map((item) =>\n\t\tnormalizeCanonicalValue(item, ancestors)\n\t);\n\tancestors.delete(value);\n\n\treturn normalized;\n};\n\nconst normalizeCanonicalRecord = (\n\tvalue: CanonicalRecord,\n\tancestors: Set<object>\n) => {\n\tenterCanonicalValue(value, ancestors);\n\tconst normalized = Object.fromEntries(\n\t\tObject.entries(value)\n\t\t\t.sort(([left], [right]) => left.localeCompare(right))\n\t\t\t.map(([key, item]) => [\n\t\t\t\tkey,\n\t\t\t\tnormalizeCanonicalValue(item, ancestors)\n\t\t\t])\n\t);\n\tancestors.delete(value);\n\n\treturn normalized;\n};\n\nconst normalizeCanonicalValue: CanonicalValueNormalizer = (\n\tvalue,\n\tancestors\n) => {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === 'string' ||\n\t\ttypeof value === 'boolean'\n\t) {\n\t\treturn value;\n\t}\n\tif (typeof value === 'number' && Number.isFinite(value)) return value;\n\tif (Array.isArray(value)) return normalizeCanonicalArray(value, ancestors);\n\tif (isCanonicalRecord(value)) {\n\t\treturn normalizeCanonicalRecord(value, ancestors);\n\t}\n\n\tthrow new TypeError(\n\t\t'Compatibility metadata must contain only finite JSON values.'\n\t);\n};\n\nconst canonicalJson = (value: unknown) =>\n\tJSON.stringify(normalizeCanonicalValue(value, new Set<object>()));\n\nconst hashCanonicalValue = (value: unknown) =>\n\tcreateHash(SHA_256).update(canonicalJson(value)).digest('hex');\n\nconst requireNonEmpty = (value: string, field: string) => {\n\tif (!value.trim()) {\n\t\tthrow new TypeError(`${field} must not be empty.`);\n\t}\n\n\treturn value;\n};\n\nconst isPageFramework = (\n\tvalue: unknown\n): value is AbsoluteMobilePageFramework =>\n\ttypeof value === 'string' && frameworks.has(value);\n\nconst readString = (value: unknown, field: string) => {\n\tif (typeof value !== 'string') {\n\t\tthrow new TypeError(`${field} must be a string.`);\n\t}\n\n\treturn value;\n};\n\nconst parseCompatibilityPage = (value: unknown) => {\n\tif (!isCanonicalRecord(value) || !isPageFramework(value.framework)) {\n\t\tthrow new TypeError('Compatibility artifact contains an invalid page.');\n\t}\n\n\tconst styleBundleHash =\n\t\ttypeof value.styleBundleHash === 'string'\n\t\t\t? value.styleBundleHash\n\t\t\t: undefined;\n\tconst styleBundlePath =\n\t\ttypeof value.styleBundlePath === 'string'\n\t\t\t? value.styleBundlePath\n\t\t\t: undefined;\n\tif (Boolean(styleBundleHash) !== Boolean(styleBundlePath)) {\n\t\tthrow new TypeError(\n\t\t\t'Compatibility page style hash and path must be provided together.'\n\t\t);\n\t}\n\n\treturn {\n\t\tbundleHash: readString(value.bundleHash, 'page.bundleHash'),\n\t\tbundlePath: readString(value.bundlePath, 'page.bundlePath'),\n\t\tcontract: readString(value.contract, 'page.contract'),\n\t\tframework: value.framework,\n\t\tpageId: readString(value.pageId, 'page.pageId'),\n\t\tpropsSchemaHash: readString(\n\t\t\tvalue.propsSchemaHash,\n\t\t\t'page.propsSchemaHash'\n\t\t),\n\t\t...(styleBundleHash && styleBundlePath\n\t\t\t? { styleBundleHash, styleBundlePath }\n\t\t\t: {})\n\t} satisfies AbsoluteMobileCompatibilityPage;\n};\n\nconst parseCompatibilityRoute = (value: unknown) => {\n\tif (\n\t\t!isCanonicalRecord(value) ||\n\t\t(value.method !== 'GET' && value.method !== 'HEAD')\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Compatibility artifact contains an invalid route.'\n\t\t);\n\t}\n\n\treturn {\n\t\tmethod: value.method,\n\t\tpageId: readString(value.pageId, 'route.pageId'),\n\t\tpattern: readString(value.pattern, 'route.pattern')\n\t} satisfies AbsoluteMobileCompatibilityRoute;\n};\n\nconst parseCompatibilityProducer = (value: unknown) => {\n\tif (!isCanonicalRecord(value) || typeof value.bytes !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t'Compatibility artifact contains an invalid producer.'\n\t\t);\n\t}\n\n\treturn {\n\t\tbundleHash: readString(value.bundleHash, 'producer.bundleHash'),\n\t\tbytes: value.bytes,\n\t\texportName: readString(value.exportName, 'producer.exportName'),\n\t\tmodule: readString(value.module, 'producer.module')\n\t} satisfies AbsoluteMobileCompatibilityProducer;\n};\n\nconst validateProducerModule = (module: string) => {\n\trequireNonEmpty(module, 'producer.module');\n\tconst segments = module.split('/');\n\tif (\n\t\tmodule.startsWith('/') ||\n\t\tmodule.includes('\\\\') ||\n\t\tsegments.includes(MODULE_SEGMENT_PARENT)\n\t) {\n\t\tthrow new TypeError('producer.module must be a safe relative path.');\n\t}\n\n\treturn module;\n};\n\nconst normalizePage = (\n\tpage: AbsoluteMobileCompatibilityPage\n): AbsoluteMobileCompatibilityPage => {\n\tif (Boolean(page.styleBundleHash) !== Boolean(page.styleBundlePath)) {\n\t\tthrow new TypeError(\n\t\t\t'Compatibility page style hash and path must be provided together.'\n\t\t);\n\t}\n\n\treturn {\n\t\tbundleHash: requireNonEmpty(page.bundleHash, 'page.bundleHash'),\n\t\tbundlePath: requireNonEmpty(page.bundlePath, 'page.bundlePath'),\n\t\tcontract: requireNonEmpty(page.contract, 'page.contract'),\n\t\tframework: page.framework,\n\t\tpageId: requireNonEmpty(page.pageId, 'page.pageId'),\n\t\tpropsSchemaHash: requireNonEmpty(\n\t\t\tpage.propsSchemaHash,\n\t\t\t'page.propsSchemaHash'\n\t\t),\n\t\t...(page.styleBundleHash && page.styleBundlePath\n\t\t\t? {\n\t\t\t\t\tstyleBundleHash: requireNonEmpty(\n\t\t\t\t\t\tpage.styleBundleHash,\n\t\t\t\t\t\t'page.styleBundleHash'\n\t\t\t\t\t),\n\t\t\t\t\tstyleBundlePath: requireNonEmpty(\n\t\t\t\t\t\tpage.styleBundlePath,\n\t\t\t\t\t\t'page.styleBundlePath'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t: {})\n\t};\n};\n\nconst normalizeRoute = (\n\troute: AbsoluteMobileCompatibilityRoute\n): AbsoluteMobileCompatibilityRoute => {\n\tif (!route.pattern.startsWith('/')) {\n\t\tthrow new TypeError('route.pattern must start with /.');\n\t}\n\n\treturn {\n\t\tmethod: route.method,\n\t\tpageId: requireNonEmpty(route.pageId, 'route.pageId'),\n\t\tpattern: route.pattern\n\t};\n};\n\nconst assertUnique = (values: string[], field: string) => {\n\tif (new Set(values).size !== values.length) {\n\t\tthrow new TypeError(`${field} values must be unique.`);\n\t}\n};\n\nconst normalizeArtifactContent = (\n\tinput: AbsoluteMobileCompatibilityArtifactInput\n): CompatibilityArtifactContent => {\n\tif (!Number.isSafeInteger(input.generation) || input.generation < 1) {\n\t\tthrow new TypeError('generation must be a positive safe integer.');\n\t}\n\tif (\n\t\t!Number.isSafeInteger(input.producer.bytes) ||\n\t\tinput.producer.bytes < 1\n\t) {\n\t\tthrow new TypeError('producer.bytes must be a positive safe integer.');\n\t}\n\n\tconst pages = input.pages\n\t\t.map(normalizePage)\n\t\t.sort((left, right) => left.pageId.localeCompare(right.pageId));\n\tconst routes = input.routes\n\t\t.map(normalizeRoute)\n\t\t.sort((left, right) =>\n\t\t\t`${left.pattern}:${left.method}`.localeCompare(\n\t\t\t\t`${right.pattern}:${right.method}`\n\t\t\t)\n\t\t);\n\tassertUnique(\n\t\tpages.map(({ pageId }) => pageId),\n\t\t'page.pageId'\n\t);\n\tassertUnique(\n\t\troutes.map(({ method, pattern }) => `${method}:${pattern}`),\n\t\t'route method and pattern'\n\t);\n\tconst pageIds = new Set(pages.map(({ pageId }) => pageId));\n\tconst missingPage = routes.find(({ pageId }) => !pageIds.has(pageId));\n\tif (missingPage) {\n\t\tthrow new TypeError(\n\t\t\t`Route ${missingPage.pattern} references unknown page ${missingPage.pageId}.`\n\t\t);\n\t}\n\tif (!EXPORT_NAME_PATTERN.test(input.producer.exportName)) {\n\t\tthrow new TypeError(\n\t\t\t'producer.exportName must be a JavaScript identifier.'\n\t\t);\n\t}\n\n\treturn {\n\t\tappBuild: requireNonEmpty(input.appBuild, 'appBuild'),\n\t\tappId: requireNonEmpty(input.appId, 'appId'),\n\t\tformat: ABSOLUTE_MOBILE_COMPATIBILITY_FORMAT,\n\t\tgeneration: input.generation,\n\t\tpages,\n\t\tproducer: {\n\t\t\tbundleHash: requireNonEmpty(\n\t\t\t\tinput.producer.bundleHash,\n\t\t\t\t'producer.bundleHash'\n\t\t\t),\n\t\t\tbytes: input.producer.bytes,\n\t\t\texportName: input.producer.exportName,\n\t\t\tmodule: validateProducerModule(input.producer.module)\n\t\t},\n\t\troutes,\n\t\truntime: requireNonEmpty(input.runtime, 'runtime')\n\t};\n};\n\nexport const createAbsoluteMobileCompatibilityArtifact = (\n\tinput: AbsoluteMobileCompatibilityArtifactInput\n) => {\n\tconst content = normalizeArtifactContent(input);\n\n\treturn {\n\t\t...content,\n\t\treleaseId: `${RELEASE_ID_PREFIX}${hashCanonicalValue(content)}`\n\t} satisfies AbsoluteMobileCompatibilityArtifact;\n};\n\nexport const hashAbsoluteMobilePropsSchema = (schema: unknown) =>\n\thashCanonicalValue(schema);\n\nexport const parseAbsoluteMobileCompatibilityArtifact = (value: unknown) => {\n\tif (\n\t\t!isCanonicalRecord(value) ||\n\t\tvalue.format !== ABSOLUTE_MOBILE_COMPATIBILITY_FORMAT ||\n\t\ttypeof value.generation !== 'number' ||\n\t\t!Array.isArray(value.pages) ||\n\t\t!Array.isArray(value.routes)\n\t) {\n\t\tthrow new TypeError('Invalid mobile compatibility artifact.');\n\t}\n\n\tconst releaseId = readString(value.releaseId, 'releaseId');\n\tconst artifact = createAbsoluteMobileCompatibilityArtifact({\n\t\tappBuild: readString(value.appBuild, 'appBuild'),\n\t\tappId: readString(value.appId, 'appId'),\n\t\tgeneration: value.generation,\n\t\tpages: value.pages.map(parseCompatibilityPage),\n\t\tproducer: parseCompatibilityProducer(value.producer),\n\t\troutes: value.routes.map(parseCompatibilityRoute),\n\t\truntime: readString(value.runtime, 'runtime')\n\t});\n\tif (artifact.releaseId !== releaseId) {\n\t\tthrow new TypeError('Mobile compatibility artifact integrity failed.');\n\t}\n\n\treturn artifact;\n};\n\nexport const resolveAbsoluteMobileCompatibilityRelease = (\n\tclient: AbsoluteMobilePageClient,\n\tartifacts: readonly AbsoluteMobileCompatibilityArtifact[]\n): AbsoluteMobileResolvedRelease => {\n\tconst artifact = artifacts.find(\n\t\t(candidate) =>\n\t\t\tcandidate.appBuild === client.appBuild &&\n\t\t\tcandidate.runtime === client.runtime\n\t);\n\tif (!artifact) {\n\t\treturn {\n\t\t\tkind: 'upgrade-required',\n\t\t\tresult: {\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: client.pageId,\n\t\t\t\treason: 'app-release'\n\t\t\t}\n\t\t};\n\t}\n\n\tconst page = artifact.pages.find(\n\t\t(candidate) =>\n\t\t\tcandidate.pageId === client.pageId &&\n\t\t\tcandidate.bundleHash === client.pageBundle &&\n\t\t\tclient.pageContracts.includes(candidate.contract)\n\t);\n\tif (!page) {\n\t\treturn {\n\t\t\tkind: 'upgrade-required',\n\t\t\tresult: {\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: client.pageId,\n\t\t\t\treason: 'page-contract',\n\t\t\t\tsupportedContracts: artifact.pages\n\t\t\t\t\t.filter(({ pageId }) => pageId === client.pageId)\n\t\t\t\t\t.map(({ contract }) => contract)\n\t\t\t}\n\t\t};\n\t}\n\n\treturn { artifact, kind: 'retained', page };\n};\n\nexport const retainAbsoluteMobileCompatibilityArtifacts = (\n\tartifacts: readonly AbsoluteMobileCompatibilityArtifact[]\n) => {\n\tconst appIds = new Set(artifacts.map(({ appId }) => appId));\n\tif (appIds.size > 1) {\n\t\tthrow new TypeError(\n\t\t\t'Cannot retain compatibility artifacts for multiple apps.'\n\t\t);\n\t}\n\tassertUnique(\n\t\tartifacts.map(({ appBuild }) => appBuild),\n\t\t'appBuild'\n\t);\n\tassertUnique(\n\t\tartifacts.map(({ generation }) => String(generation)),\n\t\t'generation'\n\t);\n\n\treturn [...artifacts]\n\t\t.sort((left, right) => right.generation - left.generation)\n\t\t.slice(0, ABSOLUTE_MOBILE_RETAINED_GENERATIONS);\n};\n",
|
|
13
13
|
"import { createHash } from 'node:crypto';\nimport {\n\taccess,\n\tcopyFile,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\tstat,\n\twriteFile\n} from 'node:fs/promises';\nimport { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';\nimport {\n\tabsoluteManagedAndroidSdkRoot,\n\tdetectAbsoluteMobileHost,\n\ttype AbsoluteMobileHost\n} from './emulatorDoctor';\nimport {\n\tbuildAbsoluteAndroidGradleArtifact,\n\tfingerprintAbsoluteAndroidNativeProject,\n\ttype AbsoluteAndroidCommandOptions,\n\ttype AbsoluteAndroidCommandResult\n} from './androidEmulatorController';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nexport const ABSOLUTE_ANDROID_RELEASE_FORMAT = 1 as const;\n\nexport type AbsoluteAndroidReleaseMetadata = {\n\tappBuild: string;\n\tappId: string;\n\tartifact: string;\n\tbytes: number;\n\tengine: 'capacitor';\n\tformat: typeof ABSOLUTE_ANDROID_RELEASE_FORMAT;\n\tplatform: 'android';\n\treleaseId: string;\n\truntime: string;\n\tsha256: string;\n\tsigned: boolean;\n\ttype: 'aab';\n\tversionCode?: number;\n};\n\ntype MobileClientManifest = {\n\tappBuild: string;\n\tappId: string;\n\truntime: string;\n};\n\nexport type BuildAbsoluteAndroidReleaseOptions = {\n\tallowUnsigned?: boolean;\n\tandroidRoot?: string;\n\tcapture?: (\n\t\tcommand: string[],\n\t\toptions?: AbsoluteAndroidCommandOptions\n\t) => AbsoluteAndroidCommandResult;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\thost?: AbsoluteMobileHost;\n\tjarsigner?: string | null;\n\toutputDirectory?: string;\n\tprojectRoot: string;\n\trun?: (\n\t\tcommand: string[],\n\t\toptions?: AbsoluteAndroidCommandOptions\n\t) => Promise<number>;\n\tprepareVersionCode?: (buildIdentity: string) => Promise<number>;\n\tversionCode?: number;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst requireManifest = (value: unknown): MobileClientManifest => {\n\tif (\n\t\t!isRecord(value) ||\n\t\ttypeof value.appBuild !== 'string' ||\n\t\ttypeof value.appId !== 'string' ||\n\t\ttypeof value.runtime !== 'string'\n\t) {\n\t\tthrow new TypeError('Invalid embedded AbsoluteJS mobile manifest.');\n\t}\n\n\treturn {\n\t\tappBuild: value.appBuild,\n\t\tappId: value.appId,\n\t\truntime: value.runtime\n\t};\n};\n\nconst pathExists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst defaultCapture = (\n\tcommand: string[],\n\toptions: AbsoluteAndroidCommandOptions = {}\n) => {\n\ttry {\n\t\tconst result = Bun.spawnSync(command, {\n\t\t\tcwd: options.cwd,\n\t\t\tenv: options.env,\n\t\t\tstderr: 'pipe',\n\t\t\tstdin: 'ignore',\n\t\t\tstdout: 'pipe'\n\t\t});\n\n\t\treturn {\n\t\t\texitCode: result.exitCode,\n\t\t\tstderr: result.stderr.toString(),\n\t\t\tstdout: result.stdout.toString()\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\texitCode: 1,\n\t\t\tstderr: error instanceof Error ? error.message : String(error),\n\t\t\tstdout: ''\n\t\t};\n\t}\n};\n\nconst verifyAabSignature = (\n\tartifactPath: string,\n\tcapture: NonNullable<BuildAbsoluteAndroidReleaseOptions['capture']>,\n\tjarsigner: string | null | undefined\n) => {\n\tconst executable =\n\t\tjarsigner === undefined ? Bun.which('jarsigner') : jarsigner;\n\tif (!executable) return null;\n\tconst result = capture([\n\t\texecutable,\n\t\t'-J-Duser.language=en',\n\t\t'-J-Duser.country=US',\n\t\t'-verify',\n\t\tartifactPath\n\t]);\n\n\treturn result.exitCode === 0 && /jar verified/iu.test(result.stdout);\n};\n\nconst sha256File = async (path: string) =>\n\tcreateHash('sha256')\n\t\t.update(await readFile(path))\n\t\t.digest('hex');\n\nconst safeOutputDirectory = (projectRoot: string, requested?: string) => {\n\tconst root = resolve(projectRoot);\n\tconst output = resolve(\n\t\troot,\n\t\trequested ?? '.absolutejs/mobile/releases/android'\n\t);\n\tconst projectRelative = relative(root, output);\n\tif (\n\t\tprojectRelative === '..' ||\n\t\tprojectRelative.startsWith(`..${sep}`) ||\n\t\tisAbsolute(projectRelative)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile build --outdir must remain inside the project.'\n\t\t);\n\t}\n\n\treturn output;\n};\n\nconst installRelease = async (\n\tartifactPath: string,\n\tmetadata: Omit<AbsoluteAndroidReleaseMetadata, 'artifact'>,\n\toutputRoot: string\n) => {\n\tconst releaseRoot = join(outputRoot, metadata.releaseId);\n\tconst artifactName = 'app-release.aab';\n\tconst destination = join(releaseRoot, artifactName);\n\tif (await pathExists(releaseRoot)) {\n\t\tconst existing = requireManifestIdentity(\n\t\t\tJSON.parse(\n\t\t\t\tawait readFile(join(releaseRoot, 'release.json'), 'utf8')\n\t\t\t),\n\t\t\tmetadata\n\t\t);\n\t\tconst [installedBytes, installedSha256] = await Promise.all([\n\t\t\tstat(destination).then(({ size }) => size),\n\t\t\tsha256File(destination)\n\t\t]);\n\t\tif (\n\t\t\tinstalledBytes !== metadata.bytes ||\n\t\t\tinstalledSha256 !== metadata.sha256\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Immutable Android release ${metadata.releaseId} artifact is missing or modified.`\n\t\t\t);\n\t\t}\n\n\t\treturn { artifactPath: destination, metadata: existing, releaseRoot };\n\t}\n\tawait mkdir(dirname(releaseRoot), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(releaseRoot), '.android-stage-')\n\t);\n\ttry {\n\t\tawait copyFile(artifactPath, join(staging, artifactName));\n\t\tconst complete = {\n\t\t\t...metadata,\n\t\t\tartifact: artifactName\n\t\t} satisfies AbsoluteAndroidReleaseMetadata;\n\t\tawait writeFile(\n\t\t\tjoin(staging, 'release.json'),\n\t\t\t`${JSON.stringify(complete, null, '\\t')}\\n`,\n\t\t\t{ flag: 'wx' }\n\t\t);\n\t\tawait rename(staging, releaseRoot);\n\n\t\treturn { artifactPath: destination, metadata: complete, releaseRoot };\n\t} finally {\n\t\tawait rm(staging, { force: true, recursive: true }).catch(\n\t\t\t() => undefined\n\t\t);\n\t}\n};\n\nconst requireManifestIdentity = (\n\tvalue: unknown,\n\texpected: Omit<AbsoluteAndroidReleaseMetadata, 'artifact'>\n) => {\n\tif (!isRecord(value)) {\n\t\tthrow new TypeError('Existing Android release metadata is invalid.');\n\t}\n\tconst { artifact } = value;\n\tif (\n\t\tartifact !== 'app-release.aab' ||\n\t\tObject.entries(expected).some(\n\t\t\t([key, expectedValue]) => Reflect.get(value, key) !== expectedValue\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`Immutable Android release ${expected.releaseId} does not match its content.`\n\t\t);\n\t}\n\n\treturn { ...expected, artifact } satisfies AbsoluteAndroidReleaseMetadata;\n};\n\nexport const buildAbsoluteAndroidRelease = async (\n\toptions: BuildAbsoluteAndroidReleaseOptions\n) => {\n\tif (options.versionCode !== undefined && options.prepareVersionCode) {\n\t\tthrow new TypeError(\n\t\t\t'Android release versionCode and prepareVersionCode cannot be combined.'\n\t\t);\n\t}\n\tif (\n\t\toptions.versionCode !== undefined &&\n\t\t(!Number.isSafeInteger(options.versionCode) ||\n\t\t\toptions.versionCode < 1 ||\n\t\t\toptions.versionCode > 2_100_000_000)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Android versionCode must be an integer from 1 through 2100000000.'\n\t\t);\n\t}\n\tconst projectRoot = resolve(options.projectRoot);\n\tconst host = options.host ?? detectAbsoluteMobileHost();\n\tconst androidRoot =\n\t\toptions.androidRoot ??\n\t\tprocess.env.ANDROID_HOME ??\n\t\tprocess.env.ANDROID_SDK_ROOT ??\n\t\tabsoluteManagedAndroidSdkRoot(host);\n\tconst nativeDirectory = join(\n\t\toptions.config.nativeProjectDirectory,\n\t\t'android'\n\t);\n\tconst manifest = requireManifest(\n\t\tJSON.parse(\n\t\t\tawait readFile(\n\t\t\t\tjoin(\n\t\t\t\t\toptions.config.bundleDirectory,\n\t\t\t\t\t'absolute-mobile-manifest.json'\n\t\t\t\t),\n\t\t\t\t'utf8'\n\t\t\t)\n\t\t)\n\t);\n\tif (manifest.appId !== options.config.appId) {\n\t\tthrow new TypeError(\n\t\t\t'Embedded mobile manifest appId does not match mobile.appId.'\n\t\t);\n\t}\n\tlet { versionCode } = options;\n\tif (options.prepareVersionCode) {\n\t\tconst nativeFingerprint = await fingerprintAbsoluteAndroidNativeProject(\n\t\t\t{ nativeDirectory }\n\t\t);\n\t\tconst buildIdentity = createHash('sha256')\n\t\t\t.update(`${manifest.appBuild}\\0${nativeFingerprint}`)\n\t\t\t.digest('hex');\n\t\tversionCode = await options.prepareVersionCode(buildIdentity);\n\t}\n\tif (\n\t\tversionCode !== undefined &&\n\t\t(!Number.isSafeInteger(versionCode) ||\n\t\t\tversionCode < 1 ||\n\t\t\tversionCode > 2_100_000_000)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Android versionCode must be an integer from 1 through 2100000000.'\n\t\t);\n\t}\n\tconst { artifactPath } = await buildAbsoluteAndroidGradleArtifact({\n\t\tcapture: options.capture,\n\t\tgradleArguments:\n\t\t\tversionCode === undefined\n\t\t\t\t? []\n\t\t\t\t: [`-Pandroid.injected.version.code=${versionCode}`],\n\t\tproject: {\n\t\t\tandroidRoot,\n\t\t\tconfig: options.config,\n\t\t\thost,\n\t\t\tnativeDirectory,\n\t\t\tprojectRoot\n\t\t},\n\t\trun: options.run,\n\t\ttask: 'bundleRelease'\n\t});\n\tif (!(await pathExists(artifactPath))) {\n\t\tthrow new TypeError(\n\t\t\t`Android Gradle did not produce the expected App Bundle: ${artifactPath}`\n\t\t);\n\t}\n\tconst capture = options.capture ?? defaultCapture;\n\tconst signed = verifyAabSignature(artifactPath, capture, options.jarsigner);\n\tif (signed === null && !options.allowUnsigned) {\n\t\tthrow new TypeError(\n\t\t\t'Could not verify the Android App Bundle signature because jarsigner is unavailable. Install a JDK, or use --unsigned only for a non-publishable build.'\n\t\t);\n\t}\n\tif (!signed && !options.allowUnsigned) {\n\t\tthrow new TypeError(\n\t\t\t'Android Gradle produced an unsigned App Bundle. Configure the release signingConfig in the source-owned Android project (prefer external Gradle properties), or pass --unsigned only for a non-publishable build.'\n\t\t);\n\t}\n\tconst [bytes, sha256] = await Promise.all([\n\t\tstat(artifactPath).then(({ size }) => size),\n\t\tsha256File(artifactPath)\n\t]);\n\tconst releaseId = `amobile_android_${sha256}`;\n\tconst metadata = {\n\t\tappBuild: manifest.appBuild,\n\t\tappId: manifest.appId,\n\t\tbytes,\n\t\tengine: 'capacitor',\n\t\tformat: ABSOLUTE_ANDROID_RELEASE_FORMAT,\n\t\tplatform: 'android',\n\t\treleaseId,\n\t\truntime: manifest.runtime,\n\t\tsha256,\n\t\tsigned: signed === true,\n\t\ttype: 'aab',\n\t\t...(versionCode === undefined ? {} : { versionCode })\n\t} satisfies Omit<AbsoluteAndroidReleaseMetadata, 'artifact'>;\n\n\treturn installRelease(\n\t\tartifactPath,\n\t\tmetadata,\n\t\tsafeOutputDirectory(projectRoot, options.outputDirectory)\n\t);\n};\n",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"import { access } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { AbsoluteAndroidReleaseMetadata } from './androidRelease';\nimport type { AbsoluteIosReleaseMetadata } from './iosRelease';\n\nexport type AbsoluteGooglePlayReleaseTarget = {\n\tchangesNotSentForReview?: boolean;\n\tinAppUpdatePriority?: number;\n\tname?: string;\n\treleaseNotes?: readonly { language: string; text: string }[];\n\treviewBehavior?: 'CANCEL_IN_REVIEW_AND_SUBMIT' | 'ERROR_IF_IN_REVIEW';\n\tstatus?: 'completed' | 'draft' | 'halted' | 'inProgress';\n\ttrack: string;\n\tuserFraction?: number;\n};\n\nexport type AbsoluteAppStoreConnectReleaseTarget = {\n\tgroups?: readonly string[];\n\tsubmitForReview?: boolean;\n\twhatsNew?: readonly { locale: string; text: string }[];\n};\n\nexport type AbsoluteNativeReleasePublication = {\n\tchannel?: {\n\t\tchannel: string;\n\t\treleaseId: string;\n\t};\n\trecord: {\n\t\tmetadata: AbsoluteAndroidReleaseMetadata | AbsoluteIosReleaseMetadata;\n\t};\n\treused: boolean;\n\tgooglePlay?: {\n\t\treceipt: {\n\t\t\tintent: { track: string };\n\t\t\tpackageName: string;\n\t\t\tprovider: 'google-play';\n\t\t\treleaseId: string;\n\t\t\tsha256: string;\n\t\t\tstage: string;\n\t\t\tversionCode?: string;\n\t\t};\n\t\treused: boolean;\n\t};\n\tappStoreConnect?: {\n\t\treceipt: {\n\t\t\tappleAppId: string;\n\t\t\tbuildId?: string;\n\t\t\tbuildNumber: number;\n\t\t\tintent: { groups: string[]; submitForReview: boolean };\n\t\t\tmarketingVersion: string;\n\t\t\tprovider: 'app-store-connect';\n\t\t\treleaseId: string;\n\t\t\tsha256: string;\n\t\t\tstage: string;\n\t\t};\n\t\treused: boolean;\n\t};\n};\n\nexport type AbsoluteNativeReleasePublisher = {\n\tprepareAndroidRelease?: (options: {\n\t\tbuildIdentity: string;\n\t\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\t\tpackageName: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<{ versionCode?: number }>;\n\tprepareIosRelease?: (options: {\n\t\tbuildIdentity: string;\n\t\tbundleId: string;\n\t\tmarketingVersion: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<{ buildNumber: number }>;\n\tpublish: (options: {\n\t\tallowUnsigned?: boolean;\n\t\tappStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;\n\t\tchannel?: string;\n\t\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\t\treleaseRoot: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<AbsoluteNativeReleasePublication>;\n};\n\nexport const prepareAbsoluteIosRelease = async (\n\tpublisher: AbsoluteNativeReleasePublisher,\n\toptions: {\n\t\tbuildIdentity: string;\n\t\tbundleId: string;\n\t\tmarketingVersion: string;\n\t\tsignal?: AbortSignal;\n\t}\n) => {\n\tif (typeof publisher.prepareIosRelease !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t'App Store Connect publishing requires a registry module created with @absolutejs/deploy/app-store-connect.'\n\t\t);\n\t}\n\tconst { buildNumber } = await publisher.prepareIosRelease(options);\n\tif (!Number.isSafeInteger(buildNumber) || buildNumber < 1) {\n\t\tthrow new TypeError(\n\t\t\t'App Store Connect publisher returned an invalid iOS build number.'\n\t\t);\n\t}\n\n\treturn buildNumber;\n};\n\ntype PrepareAbsoluteAndroidReleaseOptions = {\n\tbuildIdentity: string;\n\tgooglePlay: AbsoluteGooglePlayReleaseTarget;\n\tpackageName: string;\n\tsignal?: AbortSignal;\n};\n\nexport const prepareAbsoluteAndroidRelease = async (\n\tpublisher: AbsoluteNativeReleasePublisher,\n\toptions: PrepareAbsoluteAndroidReleaseOptions\n) => {\n\tif (typeof publisher.prepareAndroidRelease !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t'Google Play publishing requires a registry module created with @absolutejs/deploy/google-play.'\n\t\t);\n\t}\n\tconst prepared = await publisher.prepareAndroidRelease(options);\n\tconst { versionCode } = prepared;\n\tif (\n\t\ttypeof versionCode !== 'number' ||\n\t\t!Number.isSafeInteger(versionCode) ||\n\t\tversionCode < 1 ||\n\t\tversionCode > 2_100_000_000\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Google Play publisher returned an invalid Android versionCode.'\n\t\t);\n\t}\n\n\treturn versionCode;\n};\n\nexport type PublishAbsoluteAndroidReleaseOptions = {\n\tallowUnsigned?: boolean;\n\tchannel?: string;\n\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\tmodulePath: string;\n\tprojectRoot: string;\n\trelease: {\n\t\tmetadata: AbsoluteAndroidReleaseMetadata;\n\t\treleaseRoot: string;\n\t};\n\tsignal?: AbortSignal;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isPublisher = (value: unknown): value is AbsoluteNativeReleasePublisher =>\n\tisRecord(value) && typeof value.publish === 'function';\n\nconst publisherModulePath = (projectRoot: string, requested: string) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, requested);\n\tconst projectRelative = relative(root, path);\n\tif (\n\t\tprojectRelative === '..' ||\n\t\tprojectRelative.startsWith(`..${sep}`) ||\n\t\tisAbsolute(projectRelative)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile publish --registry must remain inside the project.'\n\t\t);\n\t}\n\n\treturn path;\n};\n\nexport const loadAbsoluteNativeReleasePublisher = async (\n\tprojectRoot: string,\n\trequestedModulePath: string\n) => {\n\tconst modulePath = publisherModulePath(projectRoot, requestedModulePath);\n\tawait access(modulePath).catch(() => {\n\t\tthrow new TypeError(\n\t\t\t`Native release registry module does not exist: ${modulePath}`\n\t\t);\n\t});\n\tconst loaded: unknown = await import(pathToFileURL(modulePath).href);\n\tconst publisher = isRecord(loaded)\n\t\t? (loaded.default ?? loaded.registry)\n\t\t: undefined;\n\tif (!isPublisher(publisher)) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry module must default-export a registry with publish(options).'\n\t\t);\n\t}\n\n\treturn publisher;\n};\n\nexport const publishAbsoluteAndroidRelease = async (\n\toptions: PublishAbsoluteAndroidReleaseOptions\n) => {\n\tconst publisher = await loadAbsoluteNativeReleasePublisher(\n\t\toptions.projectRoot,\n\t\toptions.modulePath\n\t);\n\tconst publication = await publisher.publish({\n\t\tallowUnsigned: options.allowUnsigned,\n\t\tchannel: options.channel,\n\t\tgooglePlay: options.googlePlay,\n\t\treleaseRoot: options.release.releaseRoot,\n\t\tsignal: options.signal\n\t});\n\tconst expected = options.release.metadata;\n\tconst actual = publication.record?.metadata;\n\tif (\n\t\t!actual ||\n\t\tactual.appId !== expected.appId ||\n\t\tactual.platform !== 'android' ||\n\t\tactual.releaseId !== expected.releaseId ||\n\t\tactual.sha256 !== expected.sha256 ||\n\t\tactual.signed !== expected.signed ||\n\t\tactual.versionCode !== expected.versionCode ||\n\t\ttypeof publication.reused !== 'boolean'\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry returned a different Android release identity.'\n\t\t);\n\t}\n\tif (\n\t\toptions.channel !== undefined &&\n\t\t(publication.channel?.channel !== options.channel ||\n\t\t\tpublication.channel.releaseId !== expected.releaseId)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry did not promote the requested channel.'\n\t\t);\n\t}\n\tconst { googlePlay } = publication;\n\tif (options.googlePlay) {\n\t\tif (\n\t\t\t!expected.versionCode ||\n\t\t\t!googlePlay ||\n\t\t\tgooglePlay.receipt.provider !== 'google-play' ||\n\t\t\tgooglePlay.receipt.packageName !== expected.appId ||\n\t\t\tgooglePlay.receipt.releaseId !== expected.releaseId ||\n\t\t\tgooglePlay.receipt.sha256 !== expected.sha256 ||\n\t\t\tgooglePlay.receipt.stage !== 'committed' ||\n\t\t\tgooglePlay.receipt.intent.track !== options.googlePlay.track ||\n\t\t\ttypeof googlePlay.receipt.versionCode !== 'string' ||\n\t\t\t!/^\\d+$/.test(googlePlay.receipt.versionCode) ||\n\t\t\tNumber(googlePlay.receipt.versionCode) !== expected.versionCode ||\n\t\t\ttypeof googlePlay.reused !== 'boolean'\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Native release publisher did not commit the requested Google Play release.'\n\t\t\t);\n\t\t}\n\t}\n\n\treturn publication;\n};\n\nexport const publishAbsoluteIosRelease = async (options: {\n\tallowUnsigned?: boolean;\n\tappStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;\n\tchannel?: string;\n\tmodulePath: string;\n\tprojectRoot: string;\n\trelease: {\n\t\tmetadata: AbsoluteIosReleaseMetadata;\n\t\treleaseRoot: string;\n\t};\n\tsignal?: AbortSignal;\n}) => {\n\tconst publisher = await loadAbsoluteNativeReleasePublisher(\n\t\toptions.projectRoot,\n\t\toptions.modulePath\n\t);\n\tconst publication = await publisher.publish({\n\t\tallowUnsigned: options.allowUnsigned,\n\t\tappStoreConnect: options.appStoreConnect,\n\t\tchannel: options.channel,\n\t\treleaseRoot: options.release.releaseRoot,\n\t\tsignal: options.signal\n\t});\n\tconst expected = options.release.metadata;\n\tconst actual = publication.record?.metadata;\n\tif (\n\t\t!actual ||\n\t\tactual.appId !== expected.appId ||\n\t\tactual.platform !== 'ios' ||\n\t\tactual.releaseId !== expected.releaseId ||\n\t\tactual.sha256 !== expected.sha256 ||\n\t\tactual.signed !== expected.signed ||\n\t\tactual.buildNumber !== expected.buildNumber ||\n\t\tactual.marketingVersion !== expected.marketingVersion ||\n\t\ttypeof publication.reused !== 'boolean'\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry returned a different iOS release identity.'\n\t\t);\n\t}\n\tif (\n\t\toptions.channel !== undefined &&\n\t\t(publication.channel?.channel !== options.channel ||\n\t\t\tpublication.channel.releaseId !== expected.releaseId)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry did not promote the requested channel.'\n\t\t);\n\t}\n\tif (options.appStoreConnect) {\n\t\tconst distributed = publication.appStoreConnect;\n\t\tif (\n\t\t\t!expected.buildNumber ||\n\t\t\t!distributed ||\n\t\t\tdistributed.receipt.provider !== 'app-store-connect' ||\n\t\t\tdistributed.receipt.releaseId !== expected.releaseId ||\n\t\t\tdistributed.receipt.sha256 !== expected.sha256 ||\n\t\t\tdistributed.receipt.buildNumber !== expected.buildNumber ||\n\t\t\tdistributed.receipt.marketingVersion !==\n\t\t\t\texpected.marketingVersion ||\n\t\t\t!['distributed', 'review-submitted'].includes(\n\t\t\t\tdistributed.receipt.stage\n\t\t\t) ||\n\t\t\tJSON.stringify([...distributed.receipt.intent.groups].sort()) !==\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t[...(options.appStoreConnect.groups ?? [])].sort()\n\t\t\t\t) ||\n\t\t\tdistributed.receipt.intent.submitForReview !==\n\t\t\t\t(options.appStoreConnect.submitForReview ?? false) ||\n\t\t\ttypeof distributed.reused !== 'boolean'\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Native release publisher did not complete the requested App Store Connect release.'\n\t\t\t);\n\t\t}\n\t}\n\n\treturn publication;\n};\n",
|
|
42
42
|
"import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, extname, relative, resolve } from 'node:path';\nimport type { BunPlugin } from 'bun';\nimport ts from 'typescript';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { hashAbsoluteMobilePropsSchema } from './releaseArtifact';\nimport {\n\tABSOLUTE_MOBILE_ROUTE_DETAIL,\n\ttype AbsoluteMobileBuildPageMetadata\n} from './buildMetadata';\n\ntype MobileRouteTransformOptions = {\n\tentry: string;\n\tprojectRoot?: string;\n};\n\ntype AnalyzedPageCall = {\n\tinputKind: 'object' | 'static';\n\tmetadata: AbsoluteMobileBuildPageMetadata;\n\tpageCallStart: number;\n\trouteCallSpan: string;\n};\n\ntype AnalyzedFile = {\n\tbyPageCall: Map<number, AnalyzedPageCall>;\n\tbyRouteCall: Map<string, AnalyzedPageCall>;\n};\n\ntype PageHandlerDefinition = {\n\tbundleProperty?: 'index' | 'indexPath';\n\tframework: AbsoluteMobileBuildPageMetadata['framework'];\n\tinputKind?: 'static';\n\tpageProperty?: 'Page';\n\tpropsProperty: 'props' | 'requestContext';\n\tsourceProperty?: 'pagePath';\n};\n\ntype AssetKeyResolver = (\n\texpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker,\n\tseen?: Set<ts.Symbol>\n) => string | undefined;\n\nconst ROUTE_METHODS = new Set(['get', 'head']);\nconst SOURCE_FILTER = /\\.[cm]?[jt]sx?$/;\nconst PAGE_HANDLERS = new Map<string, PageHandlerDefinition>([\n\t[\n\t\t'handleHTMLPageRequest',\n\t\t{ framework: 'html', inputKind: 'static', propsProperty: 'props' }\n\t],\n\t[\n\t\t'handleHTMXPageRequest',\n\t\t{ framework: 'htmx', inputKind: 'static', propsProperty: 'props' }\n\t],\n\t[\n\t\t'handleAngularPageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'angular',\n\t\t\tpropsProperty: 'requestContext',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t],\n\t[\n\t\t'handleReactPageRequest',\n\t\t{\n\t\t\tbundleProperty: 'index',\n\t\t\tframework: 'react',\n\t\t\tpageProperty: 'Page',\n\t\t\tpropsProperty: 'props'\n\t\t}\n\t],\n\t[\n\t\t'handleSveltePageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'svelte',\n\t\t\tpropsProperty: 'props',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t],\n\t[\n\t\t'handleVuePageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'vue',\n\t\t\tpropsProperty: 'props',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t]\n]);\n\nconst posixPath = (value: string) => value.replace(/\\\\/g, '/');\n\nconst findTsconfig = (entry: string, projectRoot: string) =>\n\tts.findConfigFile(dirname(entry), existsSync, 'tsconfig.json') ??\n\tts.findConfigFile(projectRoot, existsSync, 'tsconfig.json');\n\nconst createProgram = (entry: string, projectRoot: string) => {\n\tconst configPath = findTsconfig(entry, projectRoot);\n\tif (!configPath) {\n\t\treturn ts.createProgram([entry], {\n\t\t\tallowJs: true,\n\t\t\tjsx: ts.JsxEmit.ReactJSX,\n\t\t\tmodule: ts.ModuleKind.ESNext,\n\t\t\tmoduleResolution: ts.ModuleResolutionKind.Bundler,\n\t\t\ttarget: ts.ScriptTarget.ESNext\n\t\t});\n\t}\n\n\tconst parsed = ts.parseJsonConfigFileContent(\n\t\tts.readConfigFile(configPath, (path) => readFileSync(path, 'utf8'))\n\t\t\t.config,\n\t\tts.sys,\n\t\tdirname(configPath)\n\t);\n\tif (!parsed.fileNames.includes(entry)) parsed.fileNames.push(entry);\n\n\treturn ts.createProgram(parsed.fileNames, parsed.options);\n};\n\nconst propertyName = (property: ts.ObjectLiteralElementLike) => {\n\tif (!('name' in property) || !property.name) return undefined;\n\tif (ts.isIdentifier(property.name)) return property.name.text;\n\tif (ts.isStringLiteralLike(property.name)) return property.name.text;\n\n\treturn undefined;\n};\n\nconst objectPropertyExpression = (\n\tobject: ts.ObjectLiteralExpression,\n\tname: string\n) => {\n\tconst property = object.properties.find(\n\t\t(candidate) => propertyName(candidate) === name\n\t);\n\tif (property && ts.isPropertyAssignment(property)) {\n\t\treturn property.initializer;\n\t}\n\tif (property && ts.isShorthandPropertyAssignment(property)) {\n\t\treturn property.name;\n\t}\n\n\treturn undefined;\n};\n\nconst serializeType = (\n\ttype: ts.Type,\n\tchecker: ts.TypeChecker,\n\tancestors = new Set<ts.Type>()\n): unknown => {\n\tif (type.flags & ts.TypeFlags.Any) return { type: 'any' };\n\tif (type.flags & ts.TypeFlags.Unknown) return { type: 'unknown' };\n\tif (type.flags & ts.TypeFlags.Never) return { type: 'never' };\n\tif (type.flags & ts.TypeFlags.StringLike) return { type: 'string' };\n\tif (type.flags & ts.TypeFlags.NumberLike) return { type: 'number' };\n\tif (type.flags & ts.TypeFlags.BooleanLike) return { type: 'boolean' };\n\tif (type.flags & ts.TypeFlags.BigIntLike) return { type: 'bigint' };\n\tif (type.flags & ts.TypeFlags.Null) return { type: 'null' };\n\tif (type.flags & ts.TypeFlags.Undefined) return { type: 'undefined' };\n\tif (type.isUnion()) {\n\t\treturn {\n\t\t\tanyOf: type.types\n\t\t\t\t.map((member) => serializeType(member, checker, ancestors))\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\tJSON.stringify(left).localeCompare(JSON.stringify(right))\n\t\t\t\t)\n\t\t};\n\t}\n\tif (type.isIntersection()) {\n\t\treturn {\n\t\t\tallOf: type.types\n\t\t\t\t.map((member) => serializeType(member, checker, ancestors))\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\tJSON.stringify(left).localeCompare(JSON.stringify(right))\n\t\t\t\t)\n\t\t};\n\t}\n\tif (ancestors.has(type)) {\n\t\treturn {\n\t\t\tref: checker.typeToString(\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\tts.TypeFormatFlags.NoTruncation\n\t\t\t)\n\t\t};\n\t}\n\n\tancestors.add(type);\n\tconst arrayElement = checker.getIndexTypeOfType(type, ts.IndexKind.Number);\n\tconst properties = checker.getPropertiesOfType(type);\n\tlet schema: unknown;\n\tif (arrayElement && properties.some(({ name }) => name === 'length')) {\n\t\tschema = {\n\t\t\titems: serializeType(arrayElement, checker, ancestors),\n\t\t\ttype: 'array'\n\t\t};\n\t} else if (properties.length > 0) {\n\t\tconst entries = properties\n\t\t\t.filter(({ name }) => !name.startsWith('__'))\n\t\t\t.map((property) => {\n\t\t\t\tconst declaration =\n\t\t\t\t\tproperty.valueDeclaration ?? property.declarations?.[0];\n\t\t\t\tconst propertyType = declaration\n\t\t\t\t\t? checker.getTypeOfSymbolAtLocation(property, declaration)\n\t\t\t\t\t: checker.getDeclaredTypeOfSymbol(property);\n\n\t\t\t\treturn [\n\t\t\t\t\tproperty.name,\n\t\t\t\t\t{\n\t\t\t\t\t\toptional: Boolean(\n\t\t\t\t\t\t\tproperty.flags & ts.SymbolFlags.Optional\n\t\t\t\t\t\t),\n\t\t\t\t\t\tschema: serializeType(propertyType, checker, ancestors)\n\t\t\t\t\t}\n\t\t\t\t] as const;\n\t\t\t})\n\t\t\t.sort(([left], [right]) => left.localeCompare(right));\n\t\tschema = { properties: Object.fromEntries(entries), type: 'object' };\n\t} else {\n\t\tschema = {\n\t\t\ttype: checker.typeToString(\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\tts.TypeFormatFlags.NoTruncation\n\t\t\t)\n\t\t};\n\t}\n\tancestors.delete(type);\n\n\treturn schema;\n};\n\nconst pagePropsType = (\n\tpageExpression: ts.Expression,\n\tpropsExpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker\n) => {\n\tconst pageType = checker.getTypeAtLocation(pageExpression);\n\tconst [signature] = pageType.getCallSignatures();\n\tconst [parameter] = signature?.parameters ?? [];\n\tconst declaration =\n\t\tparameter?.valueDeclaration ?? parameter?.declarations?.[0];\n\tif (parameter && declaration) {\n\t\treturn checker.getTypeOfSymbolAtLocation(parameter, declaration);\n\t}\n\n\treturn propsExpression\n\t\t? checker.getTypeAtLocation(propsExpression)\n\t\t: checker.getTypeAtLocation(pageExpression);\n};\n\nconst resolvePageIdentity = (\n\texpression: ts.Expression,\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tlet symbol = checker.getSymbolAtLocation(expression);\n\tif (symbol?.flags && symbol.flags & ts.SymbolFlags.Alias) {\n\t\tsymbol = checker.getAliasedSymbol(symbol);\n\t}\n\tconst declaration = symbol?.declarations?.[0];\n\tconst file = declaration?.getSourceFile().fileName ?? sourceFile.fileName;\n\tconst exportedName = symbol?.name ?? expression.getText(sourceFile);\n\tconst source = posixPath(relative(projectRoot, file));\n\n\treturn `${source}#${exportedName}`;\n};\n\nconst resolveAlias = (symbol: ts.Symbol, checker: ts.TypeChecker) => {\n\tif (!(symbol.flags & ts.SymbolFlags.Alias)) return symbol;\n\n\treturn checker.getAliasedSymbol(symbol);\n};\n\nconst assetKey: AssetKeyResolver = (\n\texpression,\n\tchecker,\n\tseen = new Set<ts.Symbol>()\n) => {\n\tif (!expression) return undefined;\n\n\tif (ts.isIdentifier(expression)) {\n\t\tconst unresolved = ts.isShorthandPropertyAssignment(expression.parent)\n\t\t\t? checker.getShorthandAssignmentValueSymbol(expression.parent)\n\t\t\t: checker.getSymbolAtLocation(expression);\n\t\tif (!unresolved) return undefined;\n\t\tconst symbol = resolveAlias(unresolved, checker);\n\t\tif (seen.has(symbol)) return undefined;\n\t\tseen.add(symbol);\n\t\tconst declaration = symbol.valueDeclaration ?? symbol.declarations?.[0];\n\t\tif (!declaration || !ts.isVariableDeclaration(declaration))\n\t\t\treturn undefined;\n\n\t\treturn assetKey(declaration.initializer, checker, seen);\n\t}\n\n\tif (!ts.isCallExpression(expression)) return undefined;\n\tif (\n\t\t!ts.isIdentifier(expression.expression) ||\n\t\texpression.expression.text !== 'asset'\n\t) {\n\t\treturn undefined;\n\t}\n\tconst [, key] = expression.arguments;\n\n\treturn key && ts.isStringLiteralLike(key) ? key.text : undefined;\n};\n\nconst staticString = (\n\texpression: ts.Expression,\n\tbindings: ReadonlyMap<string, string>\n): string | undefined => {\n\tif (ts.isStringLiteralLike(expression)) return expression.text;\n\tif (ts.isIdentifier(expression)) return bindings.get(expression.text);\n\tif (ts.isNoSubstitutionTemplateLiteral(expression)) return expression.text;\n\tif (!ts.isTemplateExpression(expression)) return undefined;\n\tlet value = expression.head.text;\n\tfor (const span of expression.templateSpans) {\n\t\tconst substitution = staticString(span.expression, bindings);\n\t\tif (substitution === undefined) return undefined;\n\t\tvalue += substitution + span.literal.text;\n\t}\n\n\treturn value;\n};\n\nconst assetKeyWithBindings = (\n\texpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string> = new Map()\n) => {\n\tif (!expression) return undefined;\n\tif (\n\t\tts.isCallExpression(expression) &&\n\t\tts.isIdentifier(expression.expression) &&\n\t\texpression.expression.text === 'asset'\n\t) {\n\t\tconst [, key] = expression.arguments;\n\n\t\treturn key ? staticString(key, bindings) : undefined;\n\t}\n\n\treturn assetKey(expression, checker);\n};\n\nconst callableObject = (call: ts.CallExpression, checker: ts.TypeChecker) => {\n\tconst symbol = checker.getSymbolAtLocation(call.expression);\n\tconst resolved = symbol ? resolveAlias(symbol, checker) : undefined;\n\tconst declaration =\n\t\tresolved?.valueDeclaration ?? resolved?.declarations?.[0];\n\tlet callable:\n\t\t| ts.ArrowFunction\n\t\t| ts.FunctionDeclaration\n\t\t| ts.FunctionExpression\n\t\t| undefined;\n\tif (declaration && ts.isFunctionDeclaration(declaration)) {\n\t\tcallable = declaration;\n\t} else if (\n\t\tdeclaration &&\n\t\tts.isVariableDeclaration(declaration) &&\n\t\tdeclaration.initializer &&\n\t\t(ts.isArrowFunction(declaration.initializer) ||\n\t\t\tts.isFunctionExpression(declaration.initializer))\n\t) {\n\t\tcallable = declaration.initializer;\n\t}\n\tif (!callable) return undefined;\n\tconst bindings = new Map<string, string>();\n\tcallable.parameters.forEach((parameter, index) => {\n\t\tif (!ts.isIdentifier(parameter.name)) return;\n\t\tconst argument = call.arguments[index];\n\t\tif (!argument) return;\n\t\tconst value = staticString(argument, new Map());\n\t\tif (value !== undefined) bindings.set(parameter.name.text, value);\n\t});\n\tconst { body } = callable;\n\tif (!body) return undefined;\n\tconst expressionBody = ts.isParenthesizedExpression(body)\n\t\t? body.expression\n\t\t: body;\n\tif (ts.isObjectLiteralExpression(expressionBody)) {\n\t\treturn { bindings, object: expressionBody };\n\t}\n\tif (ts.isBlock(body)) {\n\t\tconst returned = body.statements.find(ts.isReturnStatement)?.expression;\n\t\tif (returned && ts.isObjectLiteralExpression(returned)) {\n\t\t\treturn { bindings, object: returned };\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nconst spreadObject = (\n\texpression: ts.Expression,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string>\n) => {\n\tif (ts.isObjectLiteralExpression(expression)) {\n\t\treturn { bindings, object: expression };\n\t}\n\tif (!ts.isCallExpression(expression)) return undefined;\n\n\treturn callableObject(expression, checker);\n};\n\nconst objectAssetKey = (\n\tobject: ts.ObjectLiteralExpression,\n\tname: string,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string> = new Map()\n): string | undefined => {\n\tfor (const property of [...object.properties].reverse()) {\n\t\tif (\n\t\t\tpropertyName(property) === name &&\n\t\t\tts.isShorthandPropertyAssignment(property)\n\t\t) {\n\t\t\treturn assetKeyWithBindings(property.name, checker, bindings);\n\t\t}\n\t\tif (\n\t\t\tpropertyName(property) === name &&\n\t\t\tts.isPropertyAssignment(property)\n\t\t) {\n\t\t\treturn assetKeyWithBindings(\n\t\t\t\tproperty.initializer,\n\t\t\t\tchecker,\n\t\t\t\tbindings\n\t\t\t);\n\t\t}\n\t\tif (!ts.isSpreadAssignment(property)) continue;\n\t\tconst nestedObject = spreadObject(\n\t\t\tproperty.expression,\n\t\t\tchecker,\n\t\t\tbindings\n\t\t);\n\t\tif (!nestedObject) continue;\n\t\tconst nested = objectAssetKey(\n\t\t\tnestedObject.object,\n\t\t\tname,\n\t\t\tchecker,\n\t\t\tnestedObject.bindings\n\t\t);\n\t\tif (nested) return nested;\n\t}\n\n\treturn undefined;\n};\n\nconst findPageCall = (nodes: readonly ts.Node[]) => {\n\tlet found:\n\t\t| { definition: PageHandlerDefinition; node: ts.CallExpression }\n\t\t| undefined;\n\tconst visit = (candidate: ts.Node) => {\n\t\tif (found) return;\n\t\tif (\n\t\t\tts.isCallExpression(candidate) &&\n\t\t\tts.isIdentifier(candidate.expression) &&\n\t\t\tPAGE_HANDLERS.has(candidate.expression.text)\n\t\t) {\n\t\t\tconst definition = PAGE_HANDLERS.get(candidate.expression.text);\n\t\t\tif (!definition) return;\n\t\t\tfound = { definition, node: candidate };\n\n\t\t\treturn;\n\t\t}\n\t\tts.forEachChild(candidate, visit);\n\t};\n\tfor (const node of nodes) visit(node);\n\n\treturn found;\n};\n\nconst isProjectSource = (\n\tsourceFile: ts.SourceFile,\n\tresolvedFile: string,\n\tprojectRoot: string\n) =>\n\t!sourceFile.isDeclarationFile &&\n\t!resolvedFile.includes('/node_modules/') &&\n\tresolvedFile.startsWith(`${projectRoot}/`);\n\nconst analyzeRouteCall = (\n\tnode: ts.CallExpression,\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tconst callee = node.expression;\n\tif (!ts.isPropertyAccessExpression(callee)) return undefined;\n\tif (!ROUTE_METHODS.has(callee.name.text)) return undefined;\n\tconst [routePath] = node.arguments;\n\tif (!routePath || !ts.isStringLiteralLike(routePath)) return undefined;\n\tconst foundPageCall = findPageCall(node.arguments.slice(1));\n\tconst pageCall = foundPageCall?.node;\n\tconst definition = foundPageCall?.definition;\n\tconst [input] = pageCall?.arguments ?? [];\n\tif (!pageCall || !input) {\n\t\treturn undefined;\n\t}\n\tif (!definition) return undefined;\n\tif (definition.inputKind === 'static') {\n\t\tconst bundleKey = assetKey(input, checker);\n\t\tif (!bundleKey) return undefined;\n\t\tconst pageId = `${definition.framework}:${bundleKey}`;\n\t\tconst propsSchemaHash = hashAbsoluteMobilePropsSchema({\n\t\t\tproperties: {},\n\t\t\ttype: 'object'\n\t\t});\n\n\t\treturn {\n\t\t\tinputKind: 'static',\n\t\t\tmetadata: {\n\t\t\t\tbundleKey,\n\t\t\t\tcontract: `${definition.framework}:${pageId}:${propsSchemaHash}`,\n\t\t\t\tframework: definition.framework,\n\t\t\t\tpageId,\n\t\t\t\tpropsSchemaHash\n\t\t\t},\n\t\t\tpageCallStart: pageCall.getStart(sourceFile),\n\t\t\trouteCallSpan: `${node.getStart(sourceFile)}:${node.end}`\n\t\t} satisfies AnalyzedPageCall;\n\t}\n\tif (!ts.isObjectLiteralExpression(input) || !definition.bundleProperty) {\n\t\treturn undefined;\n\t}\n\tconst page = definition.pageProperty\n\t\t? objectPropertyExpression(input, definition.pageProperty)\n\t\t: undefined;\n\tconst source = definition.sourceProperty\n\t\t? objectAssetKey(input, definition.sourceProperty, checker)\n\t\t: undefined;\n\tif (definition.pageProperty && !page) return undefined;\n\tif (definition.sourceProperty && !source) return undefined;\n\tconst props = objectPropertyExpression(input, definition.propsProperty);\n\tconst bundleKey = objectAssetKey(input, definition.bundleProperty, checker);\n\tif (!bundleKey) return undefined;\n\tconst pageId = page\n\t\t? resolvePageIdentity(page, sourceFile, checker, projectRoot)\n\t\t: `${definition.framework}:${source}`;\n\tlet propsType: ts.Type | undefined;\n\tif (page) propsType = pagePropsType(page, props, checker);\n\telse if (props) propsType = checker.getTypeAtLocation(props);\n\tconst schema = propsType\n\t\t? serializeType(propsType, checker)\n\t\t: { properties: {}, type: 'object' };\n\tconst propsSchemaHash = hashAbsoluteMobilePropsSchema(schema);\n\tconst metadata: AbsoluteMobileBuildPageMetadata = {\n\t\tbundleKey,\n\t\tcontract: `${definition.framework}:${pageId}:${propsSchemaHash}`,\n\t\tframework: definition.framework,\n\t\tpageId,\n\t\tpropsSchemaHash\n\t};\n\tconst result: AnalyzedPageCall = {\n\t\tinputKind: 'object',\n\t\tmetadata,\n\t\tpageCallStart: pageCall.getStart(sourceFile),\n\t\trouteCallSpan: `${node.getStart(sourceFile)}:${node.end}`\n\t};\n\n\treturn result;\n};\n\nconst analyzeSourceFile = (\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tconst analysis: AnalyzedFile = {\n\t\tbyPageCall: new Map(),\n\t\tbyRouteCall: new Map()\n\t};\n\tconst visit = (node: ts.Node) => {\n\t\tconst result = ts.isCallExpression(node)\n\t\t\t? analyzeRouteCall(node, sourceFile, checker, projectRoot)\n\t\t\t: undefined;\n\t\tif (result) {\n\t\t\tanalysis.byPageCall.set(result.pageCallStart, result);\n\t\t\tanalysis.byRouteCall.set(result.routeCallSpan, result);\n\t\t}\n\t\tts.forEachChild(node, visit);\n\t};\n\tts.forEachChild(sourceFile, visit);\n\n\treturn analysis;\n};\n\nconst analyzeProgram = (program: ts.Program, projectRoot: string) => {\n\tconst checker = program.getTypeChecker();\n\tconst analyzed = new Map<string, AnalyzedFile>();\n\tfor (const sourceFile of program.getSourceFiles()) {\n\t\tconst resolvedFile = resolve(sourceFile.fileName);\n\t\tif (!isProjectSource(sourceFile, resolvedFile, projectRoot)) continue;\n\t\tconst analysis = analyzeSourceFile(sourceFile, checker, projectRoot);\n\t\tif (analysis.byPageCall.size > 0) analyzed.set(resolvedFile, analysis);\n\t}\n\n\treturn analyzed;\n};\n\nconst metadataExpression = (metadata: AbsoluteMobileBuildPageMetadata) =>\n\tts.factory.createObjectLiteralExpression(\n\t\tObject.entries(metadata).map(([key, item]) =>\n\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\tts.factory.createStringLiteral(key),\n\t\t\t\tts.factory.createStringLiteral(item)\n\t\t\t)\n\t\t),\n\t\tfalse\n\t);\n\nconst routeOptions = (\n\texisting: ts.Expression | undefined,\n\tmetadata: AbsoluteMobileBuildPageMetadata\n) => {\n\tconst detail = ts.factory.createObjectLiteralExpression([\n\t\tts.factory.createPropertyAssignment(\n\t\t\tts.factory.createStringLiteral(ABSOLUTE_MOBILE_ROUTE_DETAIL),\n\t\t\tmetadataExpression(metadata)\n\t\t)\n\t]);\n\tif (!existing) {\n\t\treturn ts.factory.createObjectLiteralExpression([\n\t\t\tts.factory.createPropertyAssignment('detail', detail)\n\t\t]);\n\t}\n\n\treturn ts.factory.createObjectLiteralExpression([\n\t\tts.factory.createSpreadAssignment(existing),\n\t\tts.factory.createPropertyAssignment(\n\t\t\t'detail',\n\t\t\tts.factory.createObjectLiteralExpression([\n\t\t\t\tts.factory.createSpreadAssignment(\n\t\t\t\t\tts.factory.createPropertyAccessExpression(\n\t\t\t\t\t\texisting,\n\t\t\t\t\t\t'detail'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t\tts.factory.createStringLiteral(\n\t\t\t\t\t\tABSOLUTE_MOBILE_ROUTE_DETAIL\n\t\t\t\t\t),\n\t\t\t\t\tmetadataExpression(metadata)\n\t\t\t\t)\n\t\t\t])\n\t\t)\n\t]);\n};\n\nconst transformPageCall = (\n\tnode: ts.CallExpression,\n\tpage: AnalyzedPageCall | undefined\n) => {\n\tif (!page) return undefined;\n\tif (page.inputKind === 'static') {\n\t\tconst [pagePath, existingOptions, ...rest] = node.arguments;\n\t\tif (!pagePath) return undefined;\n\t\tconst options = ts.factory.createObjectLiteralExpression([\n\t\t\t...(existingOptions\n\t\t\t\t? [ts.factory.createSpreadAssignment(existingOptions)]\n\t\t\t\t: []),\n\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t'__absoluteMobile',\n\t\t\t\tmetadataExpression(page.metadata)\n\t\t\t)\n\t\t]);\n\n\t\treturn ts.factory.updateCallExpression(\n\t\t\tnode,\n\t\t\tnode.expression,\n\t\t\tnode.typeArguments,\n\t\t\t[pagePath, options, ...rest]\n\t\t);\n\t}\n\tconst [input] = node.arguments;\n\tif (!input || !ts.isObjectLiteralExpression(input)) return undefined;\n\n\treturn ts.factory.updateCallExpression(\n\t\tnode,\n\t\tnode.expression,\n\t\tnode.typeArguments,\n\t\t[\n\t\t\tts.factory.updateObjectLiteralExpression(input, [\n\t\t\t\t...input.properties,\n\t\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t\t'__absoluteMobile',\n\t\t\t\t\tmetadataExpression(page.metadata)\n\t\t\t\t)\n\t\t\t]),\n\t\t\t...node.arguments.slice(1)\n\t\t]\n\t);\n};\n\nconst transformRouteCall = (\n\tnode: ts.CallExpression,\n\troute: AnalyzedPageCall | undefined\n) => {\n\tif (!route) return undefined;\n\tconst [path, maybeOptions, maybeHandler, ...rest] = node.arguments;\n\tif (!path || !maybeOptions) return undefined;\n\tconst options = maybeHandler ? maybeOptions : undefined;\n\tconst handler = maybeHandler ?? maybeOptions;\n\n\treturn ts.factory.updateCallExpression(\n\t\tnode,\n\t\tnode.expression,\n\t\tnode.typeArguments,\n\t\t[path, routeOptions(options, route.metadata), handler, ...rest]\n\t);\n};\n\nconst transformFile = (\n\tsource: string,\n\tfileName: string,\n\tanalysis: AnalyzedFile\n) => {\n\tconst sourceFile = ts.createSourceFile(\n\t\tfileName,\n\t\tsource,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tfileName.endsWith('x') ? ts.ScriptKind.TSX : ts.ScriptKind.TS\n\t);\n\tconst transformer: ts.TransformerFactory<ts.SourceFile> = (context) => {\n\t\tconst visit: ts.Visitor = (node) => {\n\t\t\tif (!ts.isCallExpression(node)) {\n\t\t\t\treturn ts.visitEachChild(node, visit, context);\n\t\t\t}\n\t\t\tconst transformedChildren = ts.visitEachChild(node, visit, context);\n\t\t\tconst page = analysis.byPageCall.get(node.getStart(sourceFile));\n\t\t\tconst transformedPage = transformPageCall(\n\t\t\t\ttransformedChildren,\n\t\t\t\tpage\n\t\t\t);\n\t\t\tif (transformedPage) return transformedPage;\n\t\t\tconst route = analysis.byRouteCall.get(\n\t\t\t\t`${node.getStart(sourceFile)}:${node.end}`\n\t\t\t);\n\t\t\tconst transformedRoute = transformRouteCall(\n\t\t\t\ttransformedChildren,\n\t\t\t\troute\n\t\t\t);\n\t\t\tif (transformedRoute) return transformedRoute;\n\n\t\t\treturn transformedChildren;\n\t\t};\n\n\t\treturn (node) => ts.visitNode(node, visit, ts.isSourceFile) ?? node;\n\t};\n\tconst result = ts.transform(sourceFile, [transformer]);\n\ttry {\n\t\tconst [transformed] = result.transformed;\n\t\tif (!transformed) throw new TypeError('Mobile route transform failed.');\n\n\t\treturn ts.createPrinter().printFile(transformed);\n\t} finally {\n\t\tresult.dispose();\n\t}\n};\n\nexport const ABSOLUTE_MOBILE_TRANSFORM_PROTOCOL =\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION;\nexport const createAbsoluteMobileRouteMetadataPlugin = (\n\toptions: MobileRouteTransformOptions\n): BunPlugin => {\n\tconst projectRoot = resolve(options.projectRoot ?? process.cwd());\n\tconst entry = resolve(options.entry);\n\tconst analyzed = analyzeProgram(\n\t\tcreateProgram(entry, projectRoot),\n\t\tprojectRoot\n\t);\n\n\treturn {\n\t\tname: 'absolute-mobile-route-metadata',\n\t\tsetup(build) {\n\t\t\tbuild.onLoad({ filter: SOURCE_FILTER }, async ({ path }) => {\n\t\t\t\tconst analysis = analyzed.get(resolve(path));\n\t\t\t\tif (!analysis) return undefined;\n\t\t\t\tconst source = await Bun.file(path).text();\n\n\t\t\t\treturn {\n\t\t\t\t\tcontents: transformFile(source, path, analysis),\n\t\t\t\t\tloader: extname(path).endsWith('x') ? 'tsx' : 'ts'\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n};\nexport const inspectAbsoluteMobileRouteMetadata = (\n\toptions: MobileRouteTransformOptions\n) => {\n\tconst projectRoot = resolve(options.projectRoot ?? process.cwd());\n\tconst entry = resolve(options.entry);\n\tconst analyzed = analyzeProgram(\n\t\tcreateProgram(entry, projectRoot),\n\t\tprojectRoot\n\t);\n\n\treturn [...analyzed.entries()].flatMap(([file, analysis]) =>\n\t\t[...analysis.byRouteCall.values()].map(({ metadata }) => ({\n\t\t\tfile: posixPath(relative(projectRoot, file)),\n\t\t\tmetadata\n\t\t}))\n\t);\n};\n"
|
|
43
43
|
],
|
|
44
|
-
"mappings": "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",
|
|
45
|
-
"debugId": "
|
|
44
|
+
"mappings": "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",
|
|
45
|
+
"debugId": "8A696911288E3CC364756E2164756E21",
|
|
46
46
|
"names": []
|
|
47
47
|
}
|