@3sln/trove 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/package.json +1 -1
  2. package/packages/core/src/collections/index.js +146 -1
  3. package/packages/core/src/encryption/envelope.js +444 -0
  4. package/packages/core/src/encryption/exposure.js +101 -0
  5. package/packages/core/src/encryption/keys.js +88 -0
  6. package/packages/core/src/encryption/policy.js +112 -0
  7. package/packages/core/src/encryption/rotation.js +313 -0
  8. package/packages/core/src/index.js +17 -1
  9. package/packages/core/src/links.js +85 -0
  10. package/packages/core/src/metadata/memory.js +3 -1
  11. package/packages/core/src/metadata/sqlite.js +27 -7
  12. package/packages/core/src/scan.js +35 -1
  13. package/packages/core/src/storage/cost.js +228 -0
  14. package/packages/core/src/uploads.js +197 -15
  15. package/packages/core/src/vfs.js +148 -9
  16. package/packages/server/src/engine/providers/core.js +9 -2
  17. package/packages/server/src/routes.js +29 -1
  18. package/packages/web/dist/assets/main-y778bpte.js +356 -0
  19. package/packages/web/dist/assets/{main-f0f2tfhp.js.map → main-y778bpte.js.map} +10 -8
  20. package/packages/web/dist/assets/styles-nfy8t3n1.css +1 -0
  21. package/packages/web/dist/index.html +9 -3
  22. package/packages/web/dist/sw.js +1 -1
  23. package/packages/web/src/bl/actions.js +20 -4
  24. package/packages/web/src/bl/services.js +64 -4
  25. package/packages/web/src/platform/api.js +134 -11
  26. package/packages/web/src/styles.css +3 -0
  27. package/packages/web/src/ui/components/overlays.js +13 -0
  28. package/packages/web/dist/assets/main-f0f2tfhp.js +0 -356
  29. package/packages/web/dist/assets/styles-d3cyysgp.css +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/@3sln/dodo/src/vdom.js", "../../../node_modules/@3sln/dodo/src/html.js", "../../../node_modules/@3sln/dodo/src/scheduler.js", "../../../node_modules/@3sln/dodo/index.js", "../../../node_modules/@3sln/dodo/src/settings.js", "../../../node_modules/@3sln/dodo/src/reactive.js", "../../../node_modules/@3sln/dodo/reactive.js", "../src/runtime.js", "../../core/src/errors.js", "../../core/src/util.js", "../../core/src/plugins/identity.js", "../../core/src/plugins/contributions.js", "../src/platform/contributions.js", "../src/platform/whenclause.js", "../src/platform/context.js", "../src/platform/commands.js", "../src/platform/keybindings.js", "../src/platform/settings.js", "../src/platform/notifications.js", "../../core/src/retry.js", "../src/platform/api.js", "../../../node_modules/fflate/esm/browser.js", "../src/platform/pluginStore.js", "../src/platform/pluginClientDb.js", "../src/platform/pluginSigning.js", "../src/platform/pluginNet.js", "../src/platform/pluginPackage.js", "../src/platform/pluginMedia.js", "../src/platform/pluginDock.js", "../../plugin-sdk/src/rpc.js", "../../plugin-sdk/src/protocol.js", "../../../node_modules/es-module-lexer/dist/lexer.js", "../src/platform/pluginModules.js", "../src/platform/pluginFrames.js", "../../core/src/plugins/sql.js", "../src/platform/pluginRpc.js", "../../core/src/plugins/package.js", "../src/platform/pluginHost.js", "../src/platform/overlay.js", "../src/platform/navigation.js", "../src/platform/workbench.js", "../src/platform/viewport.js", "../src/platform/spatialNav.js", "../src/platform/voice.js", "../src/platform/voiceSearch.js", "../src/platform/mediaUrls.js", "../src/platform/index.js", "../../../node_modules/@3sln/ngin/src/internal.js", "../../../node_modules/@3sln/ngin/src/providers.js", "../../../node_modules/@3sln/ngin/src/actions.js", "../../../node_modules/@3sln/ngin/src/queries.js", "../../../node_modules/@3sln/ngin/src/engine.js", "../src/bl/services.js", "../src/bl/social.js", "../../core/src/search/embeddings.js", "../../core/src/links.js", "../../core/src/indexers/registry.js", "../../core/src/search/keywordStore.js", "../src/bl/fileType.js", "../src/bl/offline.js", "../src/bl/activity.js", "../../core/src/search/tagMatch.js", "../src/bl/tagQuery.js", "../src/bl/openers.js", "../src/bl/actions.js", "../src/bl/pluginInstall.js", "../src/bl/commands.js", "../src/bl/index.js", "../src/ui/icon.js", "../src/ui/format.js", "../src/ui/components/social.js", "../src/ui/components/activityBar.js", "../src/ui/sanitize.js", "../src/ui/components/statusBar.js", "../src/ui/components/views/parts.js", "../src/ui/components/views/list.js", "../src/ui/media.js", "../src/ui/components/views/grid.js", "../src/ui/components/views/index.js", "../src/ui/components/launcher.js", "../src/ui/components/settingsView.js", "../src/ui/components/collectionGate.js", "../src/ui/components/pluginsView.js", "../src/bl/links.js", "../src/ui/components/openers/markdown.js", "../src/ui/components/openers/index.js", "../src/ui/components/editorArea.js", "../src/ui/components/commandPalette.js", "../src/ui/components/pluginReview.js", "../src/ui/components/overlays.js", "../src/ui/components/activityPanel.js", "../src/ui/components/phoneChrome.js", "../src/ui/compositions/workbench.js", "../src/workbench.js", "../src/main.js"],
3
+ "sources": ["../../../node_modules/@3sln/dodo/src/vdom.js", "../../../node_modules/@3sln/dodo/src/html.js", "../../../node_modules/@3sln/dodo/src/scheduler.js", "../../../node_modules/@3sln/dodo/index.js", "../../../node_modules/@3sln/dodo/src/settings.js", "../../../node_modules/@3sln/dodo/src/reactive.js", "../../../node_modules/@3sln/dodo/reactive.js", "../src/runtime.js", "../../core/src/errors.js", "../../core/src/util.js", "../../core/src/plugins/identity.js", "../../core/src/plugins/contributions.js", "../src/platform/contributions.js", "../src/platform/whenclause.js", "../src/platform/context.js", "../src/platform/commands.js", "../src/platform/keybindings.js", "../src/platform/settings.js", "../src/platform/notifications.js", "../../core/src/retry.js", "../../core/src/encryption/envelope.js", "../../core/src/encryption/keys.js", "../src/platform/api.js", "../../../node_modules/fflate/esm/browser.js", "../src/platform/pluginStore.js", "../src/platform/pluginClientDb.js", "../src/platform/pluginSigning.js", "../src/platform/pluginNet.js", "../src/platform/pluginPackage.js", "../src/platform/pluginMedia.js", "../src/platform/pluginDock.js", "../../plugin-sdk/src/rpc.js", "../../plugin-sdk/src/protocol.js", "../../../node_modules/es-module-lexer/dist/lexer.js", "../src/platform/pluginModules.js", "../src/platform/pluginFrames.js", "../../core/src/plugins/sql.js", "../src/platform/pluginRpc.js", "../../core/src/plugins/package.js", "../src/platform/pluginHost.js", "../src/platform/overlay.js", "../src/platform/navigation.js", "../src/platform/workbench.js", "../src/platform/viewport.js", "../src/platform/spatialNav.js", "../src/platform/voice.js", "../src/platform/voiceSearch.js", "../src/platform/mediaUrls.js", "../src/platform/index.js", "../../../node_modules/@3sln/ngin/src/internal.js", "../../../node_modules/@3sln/ngin/src/providers.js", "../../../node_modules/@3sln/ngin/src/actions.js", "../../../node_modules/@3sln/ngin/src/queries.js", "../../../node_modules/@3sln/ngin/src/engine.js", "../src/bl/services.js", "../src/bl/social.js", "../../core/src/search/embeddings.js", "../../core/src/links.js", "../../core/src/indexers/registry.js", "../../core/src/search/keywordStore.js", "../src/bl/fileType.js", "../src/bl/offline.js", "../src/bl/activity.js", "../../core/src/search/tagMatch.js", "../src/bl/tagQuery.js", "../src/bl/openers.js", "../src/bl/actions.js", "../src/bl/pluginInstall.js", "../src/bl/commands.js", "../src/bl/index.js", "../src/ui/icon.js", "../src/ui/format.js", "../src/ui/components/social.js", "../src/ui/components/activityBar.js", "../src/ui/sanitize.js", "../src/ui/components/statusBar.js", "../src/ui/components/views/parts.js", "../src/ui/components/views/list.js", "../src/ui/media.js", "../src/ui/components/views/grid.js", "../src/ui/components/views/index.js", "../src/ui/components/launcher.js", "../src/ui/components/settingsView.js", "../src/ui/components/collectionGate.js", "../src/ui/components/pluginsView.js", "../src/bl/links.js", "../src/ui/components/openers/markdown.js", "../src/ui/components/openers/index.js", "../src/ui/components/editorArea.js", "../src/ui/components/commandPalette.js", "../src/ui/components/pluginReview.js", "../src/ui/components/overlays.js", "../src/ui/components/activityPanel.js", "../src/ui/components/phoneChrome.js", "../src/ui/compositions/workbench.js", "../src/workbench.js", "../src/main.js"],
4
4
  "sourcesContent": [
5
5
  "const ELEMENT_NODE = Symbol('ELEMENT_NODE');\nconst ALIAS_NODE = Symbol('ALIAS_NODE');\nconst SPECIAL_NODE = Symbol('SPECIAL_NODE');\nconst OPAQUE_NODE = Symbol('OPAQUE_NODE');\nconst NODE_STATE = Symbol('NODE_STATE');\nconst HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n\n// Property names that must never be written through to a DOM node: assigning\n// `__proto__` swaps the node's prototype, which corrupts the element for every\n// later operation. Relevant whenever props are built from untrusted data.\nconst UNSAFE_PROP_NAMES = new Set(['__proto__', 'constructor', 'prototype']);\n\nconst hasOwn = (o, k) => Object.prototype.hasOwnProperty.call(o, k);\n\n// HTML tag names come back from the DOM upper cased while SVG/MathML keep their\n// authored case. A plain case-insensitive compare covers both, and unlike\n// `localeCompare` it neither builds a collator nor depends on the host locale.\nfunction sameTagName(nodeName, tag) {\n return typeof tag === 'string' && nodeName.toLowerCase() === tag.toLowerCase();\n}\n\nclass VNode {\n constructor(type, tag, args) {\n this.type = type;\n this.tag = tag;\n this.args = args;\n }\n\n key(k) {\n this.k = k;\n return this;\n }\n\n on(hooks) {\n this.hooks = hooks;\n return this;\n }\n\n opaque() {\n if (this.type !== ELEMENT_NODE) {\n throw new Error('.opaque() can only be used on element nodes (h).');\n }\n this.type = OPAQUE_NODE;\n return this;\n }\n}\n\nfunction defaultShouldUpdate(a, b) {\n if (a === b) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) return true;\n\n if (Array.isArray(a)) {\n if (a.length !== b.length) return true;\n for (let j = 0; j < a.length; j++) {\n if (a[j] !== b[j]) return true;\n }\n return false;\n }\n\n if (a.constructor === Object) {\n const keysA = Object.keys(a);\n if (keysA.length !== Object.keys(b).length) return true;\n for (const key of keysA) {\n if (!hasOwn(b, key) || a[key] !== b[key]) return true;\n }\n return false;\n }\n }\n return true;\n}\n\nfunction isIterable(x) {\n return (\n Array.isArray(x) ||\n (x != null && typeof x[Symbol.iterator] === 'function' && typeof x !== 'string')\n );\n}\n\nfunction alias(f) {\n return (...args) => new VNode(ALIAS_NODE, f, args);\n}\n\nfunction special(o) {\n return (...args) => new VNode(SPECIAL_NODE, o, args);\n}\n\nfunction newElementNamespace(parentNode, newNodeTag) {\n if (parentNode.namespaceURI === HTML_NAMESPACE) {\n switch (newNodeTag) {\n case 'svg':\n return 'http://www.w3.org/2000/svg';\n case 'math':\n return 'http://www.w3.org/1998/Math/MathML';\n }\n }\n return parentNode.namespaceURI ?? parentNode.host?.namespaceURI ?? HTML_NAMESPACE;\n}\n\n// `originalProps` is null-prototyped so that prop names like `__proto__` or\n// `toString` are recorded as ordinary own keys rather than hitting Object.prototype.\nfunction newNodeState(vdom) {\n return {originalProps: Object.create(null), newVdom: vdom};\n}\n\nfunction createElementNode(parentNode, tag, vdom) {\n const el = parentNode.ownerDocument.createElementNS(newElementNamespace(parentNode, tag), tag);\n el[NODE_STATE] = newNodeState(vdom);\n return el;\n}\n\nconst documentToFocusWithinSet = new WeakMap();\n\nfunction getPathFromElement(element) {\n const path = [];\n let current = element;\n while (current) {\n path.push(current);\n if (current.parentElement) {\n current = current.parentElement;\n } else {\n current = current.getRootNode()?.host;\n }\n }\n return path;\n}\n\nfunction addPathToFocusWithinSet(set, path) {\n for (const node of path) {\n set.add(node);\n }\n}\n\n// The realm's own `Node.prototype` is what we want, so that a node from an\n// iframe or a detached document is moved by its own implementation. Falls back\n// through the configured window and then the ambient one, either of which may\n// be all that is available for a document with no `defaultView`.\nfunction nodePrototypeFor(doc, settingsWindow) {\n const view = settingsWindow ?? doc?.defaultView ?? globalThis;\n return view.Node?.prototype ?? view.Element?.prototype;\n}\n\nfunction installFocusTrackingForDocument(doc) {\n const focusWithinSet = new Set();\n // The set is rebuilt on every focusin rather than accumulated. `focusin`\n // fires after `focusout`, and its composed path is the path of the element\n // that just gained focus, so this is always exactly the current focus path.\n // Accumulating instead would leave every previously focused element marked as\n // holding focus for the rest of the document's life.\n doc.addEventListener('focusin', event => {\n focusWithinSet.clear();\n addPathToFocusWithinSet(focusWithinSet, event.composedPath());\n });\n doc.addEventListener('focusout', event => {\n // A focusout with no relatedTarget means focus left the document entirely;\n // otherwise the focusin that follows will rebuild the set.\n if (!event.relatedTarget) focusWithinSet.clear();\n });\n addPathToFocusWithinSet(focusWithinSet, getPathFromElement(doc.activeElement));\n documentToFocusWithinSet.set(doc, focusWithinSet);\n return focusWithinSet;\n}\n\nexport default userSettings => {\n const shouldUpdate = userSettings?.shouldUpdate ?? defaultShouldUpdate;\n const isMap = userSettings?.isMap ?? (x => x?.constructor === Object);\n const mapIter = userSettings?.mapIter ?? (m => Object.entries(m));\n const mapGet = userSettings?.mapGet ?? ((m, k) => m[k]);\n const mapMerge = userSettings?.mapMerge ?? ((...maps) => Object.assign({}, ...maps));\n const newMap = userSettings?.newMap ?? (obj => ({...obj}));\n const mapPut =\n userSettings?.mapPut ??\n ((m, k, v) => {\n m[k] = v;\n return m;\n });\n const isSeq = userSettings?.isSeq ?? isIterable;\n const seqIter = userSettings?.seqIter ?? (s => s);\n const convertName = userSettings?.convertName ?? (x => x);\n const convertTagName = userSettings?.convertTagName ?? convertName;\n const convertPropName = userSettings?.convertPropName ?? convertName;\n const convertStyleName = userSettings?.convertStyleName ?? convertName;\n const convertDataName = userSettings?.convertDataName ?? convertName;\n const convertClassName = userSettings?.convertClassName ?? convertName;\n const convertHookName = userSettings?.convertHookName ?? convertName;\n const listenerKey = userSettings?.listenerKey ?? 'listener';\n const captureKey = userSettings?.captureKey ?? 'capture';\n const passiveKey = userSettings?.passiveKey ?? 'passive';\n\n const EMPTY_MAP = newMap({});\n\n function toIterator(iterableOrIterator) {\n if (iterableOrIterator == null) return [][Symbol.iterator]();\n if (typeof iterableOrIterator[Symbol.iterator] === 'function') {\n return iterableOrIterator[Symbol.iterator]();\n }\n if (typeof iterableOrIterator.next === 'function') {\n return iterableOrIterator;\n }\n return [iterableOrIterator][Symbol.iterator]();\n }\n\n // Reconciling one element walks its props, styling, attrs, dataset and hooks,\n // so building an array of [name, value] pairs for each of those maps is the\n // single biggest source of garbage in an update. `mapEach` is the iteration\n // primitive the reconciler actually uses: it visits entries without\n // materialising them.\n //\n // Supply `mapEach` for a custom collection and it is as cheap as a plain\n // object — ClojureScript has `reduce-kv`, Immutable.js has `forEach`. Supply\n // only `mapIter` and it still works, by way of the pairs it yields; that is\n // the existing contract and it is unchanged.\n //\n // The extra `a`/`b`/`c` slots let call sites pass context to a hoisted\n // visitor, so iterating does not allocate a closure either.\n // `for...in` with an own-key guard, not `Object.keys`: it allocates no key\n // array and measures ~3.5x faster, while enumerating exactly the same keys.\n // The guard has to be the hoisted `hasOwnProperty.call` — `Object.hasOwn`\n // reads better but benchmarks about the same as building the key array,\n // which defeats the point.\n function defaultMapEach(map, visit, a, b, c) {\n if (map == null) return;\n for (const key in map) {\n if (hasOwn(map, key)) visit(key, map[key], a, b, c);\n }\n }\n\n function mapEachViaIter(map, visit, a, b, c) {\n if (map == null) return;\n const iterator = toIterator(mapIter(map));\n let result;\n while (!(result = iterator.next()).done) {\n const entry = result.value;\n visit(entry[0], entry[1], a, b, c);\n }\n }\n\n // Only fall back to the plain-object walk when the user has told us nothing\n // about their maps. Overriding `mapIter` alone still routes through it.\n const mapEach =\n userSettings?.mapEach ?? (userSettings?.mapIter ? mapEachViaIter : defaultMapEach);\n\n // `null`, `undefined` and `false` are the \"render nothing\" values. Note the\n // checks are strict: `0` and `''` are legitimate text children.\n function isBlank(item) {\n return item === null || item === undefined || item === false;\n }\n\n function flattenSeqIntoArray(array, items, excludeFalsey) {\n const iterator = toIterator(seqIter(items));\n let result;\n while (!(result = iterator.next()).done) {\n const item = result.value;\n if (excludeFalsey && isBlank(item)) {\n continue;\n }\n\n if (!isSeq(item)) {\n array.push(item);\n } else {\n flattenSeqIntoArray(array, item, excludeFalsey);\n }\n }\n }\n\n function defaultFlattenSeq(items, excludeFalsey) {\n const array = [];\n flattenSeqIntoArray(array, items, excludeFalsey);\n return array;\n }\n\n const flattenSeq = userSettings?.flattenSeq ?? defaultFlattenSeq;\n\n function flattenVNodeChildren(children, startIndex) {\n const array = [];\n for (let i = startIndex; i < children.length; i++) {\n const item = children[i];\n if (isBlank(item)) continue;\n if (!isSeq(item)) {\n array.push(item);\n } else {\n flattenSeqIntoArray(array, item, true);\n }\n }\n return array;\n }\n\n // Blank children are filtered out before they reach here, but a custom\n // `flattenSeq` may not do that filtering, so never assume `.toString()` exists.\n function toText(value) {\n return isBlank(value) ? '' : String(value);\n }\n\n function h(tag, props, ...children) {\n if (!isMap(props)) {\n // An explicit nullish props slot means \"no props\", not \"render nothing\".\n if (props !== null && props !== undefined) children.unshift(props);\n props = EMPTY_MAP;\n }\n return new VNode(ELEMENT_NODE, convertTagName(tag), [props, ...children]);\n }\n\n // Visitors are hoisted to the factory closure rather than written inline, so\n // that iterating a map allocates neither entries nor a callback.\n function setStyleProperty(name, value, style) {\n style.setProperty(convertStyleName(name), value);\n }\n\n function removeStaleStyleProperty(name, _value, style, newStyling) {\n if (mapGet(newStyling, name) !== undefined) return;\n style.removeProperty(convertStyleName(name));\n }\n\n function reconcileElementStyling(target, oldStyling, newStyling) {\n const style = target.style;\n mapEach(newStyling, setStyleProperty, style);\n mapEach(oldStyling, removeStaleStyleProperty, style, newStyling);\n }\n\n function setAttribute(name, value, target) {\n target.setAttribute(convertPropName(name), value);\n }\n\n function removeStaleAttribute(name, _value, target, newAttrs) {\n if (mapGet(newAttrs, name) !== undefined) return;\n target.removeAttribute(convertPropName(name));\n }\n\n function reconcileElementAttributes(target, oldAttrs, newAttrs) {\n mapEach(newAttrs, setAttribute, target);\n mapEach(oldAttrs, removeStaleAttribute, target, newAttrs);\n }\n\n function setDataProperty(name, value, target) {\n target.dataset[convertDataName(name)] = value;\n }\n\n function removeStaleDataProperty(name, _value, target, newDataset) {\n if (mapGet(newDataset, name) !== undefined) return;\n delete target.dataset[convertDataName(name)];\n }\n\n function reconcileElementDataset(target, oldDataset, newDataset) {\n mapEach(newDataset, setDataProperty, target);\n mapEach(oldDataset, removeStaleDataProperty, target, newDataset);\n }\n\n function reconcileElementClasses(target, oldClasses, newClasses) {\n // Both sides are compared post-conversion, otherwise a non-identity\n // `convertClassName` would never match an old class against a new one.\n const classesToRemove = new Set();\n for (const c of flattenSeq(oldClasses, true)) {\n const className = convertClassName(c);\n if (className) classesToRemove.add(className);\n }\n for (const c of flattenSeq(newClasses, true)) {\n const className = convertClassName(c);\n // `classList.add('')` throws, and empty class names carry no meaning.\n if (!className) continue;\n classesToRemove.delete(className);\n target.classList.add(className);\n }\n for (const className of classesToRemove) {\n target.classList.remove(className);\n }\n }\n\n function setElementProp(target, nodeState, propName, newValue) {\n if (UNSAFE_PROP_NAMES.has(propName)) {\n console.error(`Refusing to assign unsafe prop name '${propName}' to a DOM node.`);\n return;\n }\n const originalProps = nodeState.originalProps;\n if (!(propName in originalProps)) {\n originalProps[propName] = target[propName];\n }\n target[propName] = newValue === undefined ? originalProps[propName] : newValue;\n }\n\n function restoreElementProp(target, nodeState, propName) {\n const originalProps = nodeState.originalProps;\n if (propName in originalProps) {\n target[propName] = originalProps[propName];\n delete originalProps[propName];\n }\n }\n\n function applyProp(name, newValue, target, oldProps, isHtml) {\n const propName = convertPropName(name);\n const oldValue = mapGet(oldProps, name);\n\n if (Object.is(newValue, oldValue)) return;\n\n switch (propName) {\n case '$styling': {\n if (!isMap(newValue)) throw new Error('invalid value for styling prop');\n reconcileElementStyling(target, oldValue ?? EMPTY_MAP, newValue ?? EMPTY_MAP);\n break;\n }\n case '$classes': {\n if (!isSeq(newValue)) throw new Error('invalid value for classes prop');\n reconcileElementClasses(target, oldValue ?? [], newValue ?? []);\n break;\n }\n case '$attrs': {\n if (!isMap(newValue)) throw new Error('invalid value for attrs prop');\n reconcileElementAttributes(target, oldValue ?? EMPTY_MAP, newValue ?? EMPTY_MAP);\n break;\n }\n case '$dataset': {\n if (!isMap(newValue)) throw new Error('invalid value for dataset prop');\n reconcileElementDataset(target, oldValue ?? EMPTY_MAP, newValue ?? EMPTY_MAP);\n break;\n }\n default: {\n if (isHtml) {\n setElementProp(target, target[NODE_STATE], propName, newValue);\n } else {\n if (newValue === undefined) {\n target.removeAttribute(propName);\n } else {\n target.setAttribute(propName, newValue);\n }\n }\n break;\n }\n }\n }\n\n function restoreRemovedProp(name, oldValue, target, props, isHtml) {\n if (mapGet(props, name) !== undefined) return; // it wasn't removed\n\n const propName = convertPropName(name);\n switch (propName) {\n case '$styling':\n reconcileElementStyling(target, oldValue ?? EMPTY_MAP, EMPTY_MAP);\n break;\n case '$classes':\n reconcileElementClasses(target, oldValue ?? [], []);\n break;\n case '$attrs':\n reconcileElementAttributes(target, oldValue ?? EMPTY_MAP, EMPTY_MAP);\n break;\n case '$dataset':\n reconcileElementDataset(target, oldValue ?? EMPTY_MAP, EMPTY_MAP);\n break;\n default: {\n if (isHtml) {\n restoreElementProp(target, target[NODE_STATE], propName);\n } else {\n target.removeAttribute(propName);\n }\n break;\n }\n }\n }\n\n function reconcileElementProps(target, props) {\n const nodeState = target[NODE_STATE];\n const isHtml = target.namespaceURI === HTML_NAMESPACE;\n const oldProps = nodeState.vdom?.args[0] ?? EMPTY_MAP;\n\n mapEach(props, applyProp, target, oldProps, isHtml);\n mapEach(oldProps, restoreRemovedProp, target, props, isHtml);\n }\n\n function addListener(target, hookName, listener) {\n if (typeof listener === 'function') {\n target.addEventListener(hookName, listener);\n } else if (listener != null) {\n target.addEventListener(hookName, mapGet(listener, listenerKey), {\n capture: !!mapGet(listener, captureKey),\n passive: !!mapGet(listener, passiveKey),\n });\n }\n }\n\n function removeListener(target, hookName, listener) {\n if (typeof listener === 'function') {\n target.removeEventListener(hookName, listener);\n } else if (listener != null) {\n target.removeEventListener(\n hookName,\n mapGet(listener, listenerKey),\n !!mapGet(listener, captureKey),\n );\n }\n }\n\n function addInitialListener(name, listener, target) {\n const hookName = convertHookName(name);\n if (hookName[0] === '$') return;\n addListener(target, hookName, listener);\n }\n\n function swapListener(name, listener, target, oldHooks) {\n const hookName = convertHookName(name);\n if (hookName[0] === '$') return;\n const oldListener = mapGet(oldHooks, name);\n if (listener === oldListener) return;\n removeListener(target, hookName, oldListener);\n addListener(target, hookName, listener);\n }\n\n function removeStaleListener(name, oldListener, target, newHooks) {\n const hookName = convertHookName(name);\n if (hookName[0] === '$' || mapGet(newHooks, name) !== undefined) return;\n removeListener(target, hookName, oldListener);\n }\n\n function reconcileListeners(target, hooks) {\n const state = target[NODE_STATE];\n const newHooks = hooks ?? EMPTY_MAP;\n\n if (!state.vdom) {\n mapEach(newHooks, addInitialListener, target);\n return;\n }\n\n const oldHooks = state.vdom.hooks ?? EMPTY_MAP;\n mapEach(newHooks, swapListener, target, oldHooks);\n mapEach(oldHooks, removeStaleListener, target, newHooks);\n }\n\n function reconcileNode(target) {\n const state = target[NODE_STATE];\n const newVdom = state.newVdom;\n const oldVdom = state.vdom;\n const args = newVdom.args;\n\n switch (newVdom.type) {\n case ELEMENT_NODE: {\n reconcileElementProps(target, args[0]);\n reconcileElementChildren(target, flattenVNodeChildren(args, 1));\n break;\n }\n case OPAQUE_NODE: {\n reconcileElementProps(target, args[0]);\n break;\n }\n case ALIAS_NODE: {\n const innerVdom = newVdom.tag.apply(target, newVdom.args);\n if (isBlank(innerVdom)) {\n reconcileElementChildren(target, []);\n } else if (isSeq(innerVdom)) {\n reconcileElementChildren(target, flattenSeq(innerVdom, true));\n } else {\n reconcileElementChildren(target, [innerVdom]);\n }\n break;\n }\n case SPECIAL_NODE: {\n try {\n newVdom.tag.update?.(target, newVdom.args, oldVdom?.args);\n } catch (err) {\n console.error(err);\n }\n break;\n }\n }\n\n if (newVdom.hooks || oldVdom?.hooks) {\n reconcileListeners(target, newVdom.hooks ?? EMPTY_MAP);\n }\n try {\n newVdom.hooks?.$update?.(target, newVdom, oldVdom);\n } catch (err) {\n console.error(err);\n }\n state.vdom = newVdom;\n delete state.newVdom;\n }\n\n function createNode(parentNode, vdom) {\n if (typeof vdom !== 'object' || vdom === null) {\n return parentNode.ownerDocument.createTextNode(toText(vdom));\n }\n\n let domNode;\n switch (vdom.type) {\n case ELEMENT_NODE:\n case OPAQUE_NODE:\n domNode = createElementNode(parentNode, vdom.tag, vdom);\n break;\n case ALIAS_NODE:\n domNode = createElementNode(parentNode, 'udom-alias', vdom);\n domNode.style.display = 'contents';\n break;\n case SPECIAL_NODE:\n domNode = createElementNode(parentNode, 'udom-special', vdom);\n domNode.style.display = 'contents';\n break;\n default:\n throw new Error('Invalid VDOM node');\n }\n return domNode;\n }\n\n function cleanupTargetChildren(target) {\n if (target.children) {\n for (const child of target.children) {\n cleanupTarget(child);\n }\n }\n }\n\n function cleanupTarget(target) {\n const state = target[NODE_STATE];\n if (!state) {\n return;\n }\n\n const {vdom} = state;\n if (!vdom) {\n // The node was created but never reconciled (a builder threw part way\n // through); there is nothing attached to tear down.\n delete target[NODE_STATE];\n return;\n }\n\n if (vdom.hooks) {\n reconcileListeners(target, EMPTY_MAP);\n }\n\n if (vdom.type === ELEMENT_NODE || vdom.type === OPAQUE_NODE) {\n reconcileElementProps(target, EMPTY_MAP);\n }\n\n if (vdom.type === ELEMENT_NODE || vdom.type === ALIAS_NODE) {\n cleanupTargetChildren(target);\n }\n\n delete target[NODE_STATE];\n\n try {\n if (vdom.type === SPECIAL_NODE) {\n vdom.tag.detach?.(target);\n }\n vdom.hooks?.$detach?.(target);\n } catch (err) {\n console.error(err);\n }\n }\n\n // A reused node only needs a second pass when its arguments or its hooks\n // changed; comparing hooks too means a node whose props are stable but whose\n // listeners are freshly bound each render still gets those listeners swapped.\n function claimExistingNode(domNode, newVdom) {\n const state = domNode[NODE_STATE];\n if (\n shouldUpdate(state.vdom.args, newVdom.args) ||\n shouldUpdate(state.vdom.hooks, newVdom.hooks)\n ) {\n state.newVdom = newVdom;\n }\n return domNode;\n }\n\n function collectOldChildren(target) {\n // Keyed by vdom tag; each bucket keeps a native Map of key -> nodes so that\n // user supplied keys such as 'constructor' or '__proto__' cannot collide\n // with Object.prototype. `cursor` replaces Array#shift, which would make\n // reconciling a long unkeyed list quadratic.\n const byTag = new Map();\n const textNodes = {nodes: [], cursor: 0};\n\n for (const oldChild of target.childNodes) {\n if (oldChild.nodeType === 3 /* TEXT_NODE */) {\n textNodes.nodes.push(oldChild);\n continue;\n }\n\n const oldChildState = oldChild[NODE_STATE];\n const vdom = oldChildState?.vdom;\n if (vdom === undefined) {\n if (oldChildState?.newVdom) {\n throw new Error(\n 'Attempt to reconcile against a target while already working on a reconciliation against that same target, this is not allowed',\n );\n }\n continue;\n }\n\n let poolForTag = byTag.get(vdom.tag);\n if (!poolForTag) {\n poolForTag = {nodesForKey: null, nodesWithoutKey: {nodes: [], cursor: 0}};\n byTag.set(vdom.tag, poolForTag);\n }\n\n if (vdom.k !== undefined) {\n if (!poolForTag.nodesForKey) poolForTag.nodesForKey = new Map();\n const nodesForKey = poolForTag.nodesForKey.get(vdom.k);\n if (nodesForKey) {\n nodesForKey.nodes.push(oldChild);\n } else {\n poolForTag.nodesForKey.set(vdom.k, {nodes: [oldChild], cursor: 0});\n }\n } else {\n poolForTag.nodesWithoutKey.nodes.push(oldChild);\n }\n }\n\n return {byTag, textNodes};\n }\n\n function takeFromPool(pool) {\n if (!pool || pool.cursor >= pool.nodes.length) return undefined;\n return pool.nodes[pool.cursor++];\n }\n\n // Places children in order, walking the existing siblings alongside the\n // desired list so that only nodes that are genuinely out of position move.\n function placeChildren(target, newDomChildren, insertBefore, moveBefore) {\n let ref = target.firstChild;\n for (let i = 0; i < newDomChildren.length; i++) {\n const newChild = newDomChildren[i];\n if (newChild === ref) {\n ref = ref.nextSibling;\n continue;\n }\n const op = moveBefore && newChild.isConnected ? moveBefore : insertBefore;\n op.call(target, newChild, ref);\n }\n }\n\n // Same result, but reached without ever passing the focused child to\n // insertBefore. Detaching a focused node blurs it, so instead it is treated\n // as a fixed anchor and every other child is arranged around it: the children\n // that belong before it are placed immediately before it, and the rest are\n // walked into place after it. The anchor still ends up at its correct index,\n // because exactly the right number of children end up on either side.\n //\n // Only needed where `moveBefore` is unavailable — it relocates a node without\n // detaching it, so focus survives an ordinary move.\n function placeChildrenAroundAnchor(target, newDomChildren, insertBefore, anchorIndex) {\n const anchor = newDomChildren[anchorIndex];\n\n // Right to left, so each child lands directly before the one that follows it.\n let before = anchor;\n for (let i = anchorIndex - 1; i >= 0; i--) {\n const child = newDomChildren[i];\n if (child !== before.previousSibling) {\n insertBefore.call(target, child, before);\n }\n before = child;\n }\n\n // Left to right over whatever still follows the anchor. Children that were\n // stranded on the other side of it get pulled across here.\n let ref = anchor.nextSibling;\n for (let i = anchorIndex + 1; i < newDomChildren.length; i++) {\n const child = newDomChildren[i];\n if (child === ref) {\n ref = ref.nextSibling;\n } else {\n insertBefore.call(target, child, ref);\n }\n }\n }\n\n // At most one child of a given parent can be on the focus path, so there is\n // never more than one anchor to preserve.\n function findFocusedChildIndex(newDomChildren, focusWithin) {\n for (let i = 0; i < newDomChildren.length; i++) {\n if (focusWithin.has(newDomChildren[i])) return i;\n }\n return -1;\n }\n\n function attachAndReconcile(newChild) {\n const state = newChild[NODE_STATE];\n if (!state?.newVdom) return;\n if (!state.vdom) {\n try {\n state.newVdom.hooks?.$attach?.(newChild);\n if (state.newVdom.type === SPECIAL_NODE) {\n state.newVdom.tag.attach?.(newChild);\n }\n } catch (err) {\n console.error(err);\n }\n }\n reconcileNode(newChild);\n }\n\n function reconcileElementChildren(target, newChildren) {\n const oldNodesToRemove = target.firstChild ? new Set(target.childNodes) : null;\n const {byTag, textNodes} = collectOldChildren(target);\n\n const newDomChildren = [];\n for (const newVdom of newChildren) {\n let newDomNode;\n if (newVdom instanceof VNode) {\n const poolForTag = byTag.get(newVdom.tag);\n const reusable = poolForTag\n ? takeFromPool(\n newVdom.k !== undefined\n ? poolForTag.nodesForKey?.get(newVdom.k)\n : poolForTag.nodesWithoutKey,\n )\n : undefined;\n newDomNode = reusable ? claimExistingNode(reusable, newVdom) : createNode(target, newVdom);\n } else {\n const reusableText = takeFromPool(textNodes);\n const text = toText(newVdom);\n if (reusableText) {\n newDomNode = reusableText;\n if (newDomNode.nodeValue !== text) newDomNode.nodeValue = text;\n } else {\n newDomNode = target.ownerDocument.createTextNode(text);\n }\n }\n oldNodesToRemove?.delete(newDomNode);\n newDomChildren.push(newDomNode);\n }\n\n if (oldNodesToRemove) {\n for (const nodeToRemove of oldNodesToRemove) {\n cleanupTarget(nodeToRemove);\n target.removeChild(nodeToRemove);\n }\n }\n\n if (newDomChildren.length === 0) return;\n\n const doc = target.ownerDocument;\n const nodeProto = nodePrototypeFor(doc, userSettings?.window);\n const insertBefore = nodeProto.insertBefore;\n const moveBefore = typeof nodeProto.moveBefore === 'function' ? nodeProto.moveBefore : null;\n const connected = target.isConnected;\n\n let anchorIndex = -1;\n if (connected && !moveBefore) {\n const focusWithin = documentToFocusWithinSet.get(doc) ?? installFocusTrackingForDocument(doc);\n anchorIndex = findFocusedChildIndex(newDomChildren, focusWithin);\n // A focused child is always one we pooled from the existing children, so\n // it is already under this target. The guard is only here so that a\n // surprising focus set can never turn into a thrown insertBefore.\n if (anchorIndex !== -1 && newDomChildren[anchorIndex].parentNode !== target) {\n anchorIndex = -1;\n }\n }\n\n if (anchorIndex === -1) {\n placeChildren(target, newDomChildren, insertBefore, connected ? moveBefore : null);\n } else {\n placeChildrenAroundAnchor(target, newDomChildren, insertBefore, anchorIndex);\n }\n\n // Placement happens first so that lifecycle hooks and alias builders run\n // against a fully arranged sibling list rather than a half built one.\n for (let i = 0; i < newDomChildren.length; i++) {\n attachAndReconcile(newDomChildren[i]);\n }\n }\n\n function reconcile(target, vdom) {\n const state = target[NODE_STATE];\n if (vdom === null || vdom === undefined) {\n if (state) {\n cleanupTarget(target);\n } else {\n cleanupTargetChildren(target);\n }\n target.replaceChildren();\n return;\n }\n\n if (isSeq(vdom)) {\n reconcileElementChildren(target, flattenSeq(vdom, true));\n return;\n }\n\n if (vdom instanceof VNode) {\n if (state) {\n // The tag has to match as well as the type: swapping the alias function\n // or the special descriptor is a different component, and reusing the\n // state would skip the old one's detach and the new one's attach.\n if (state.vdom.type === vdom.type && state.vdom.tag === vdom.tag) {\n if (\n shouldUpdate(state.vdom.args, vdom.args) ||\n shouldUpdate(state.vdom.hooks, vdom.hooks)\n ) {\n state.newVdom = vdom;\n reconcileNode(target);\n }\n return;\n }\n cleanupTarget(target);\n }\n\n switch (vdom.type) {\n case ELEMENT_NODE:\n case OPAQUE_NODE:\n if (!sameTagName(target.nodeName, convertTagName(vdom.tag))) {\n throw new Error('incompatible target for vdom');\n }\n break;\n }\n\n target[NODE_STATE] = newNodeState(vdom);\n try {\n vdom.hooks?.$attach?.(target);\n if (vdom.type === SPECIAL_NODE) {\n vdom.tag.attach?.(target);\n }\n } catch (err) {\n console.error(err);\n }\n reconcileNode(target);\n return;\n }\n\n throw new Error('invalid vdom');\n }\n\n return {\n h,\n alias,\n special,\n reconcile,\n settings: {\n shouldUpdate,\n isMap,\n mapIter,\n mapEach,\n mapGet,\n mapMerge,\n newMap,\n mapPut,\n isSeq,\n flattenSeq,\n seqIter,\n convertTagName,\n convertPropName,\n convertStyleName,\n convertDataName,\n convertClassName,\n convertHookName,\n convertName,\n listenerKey,\n captureKey,\n passiveKey,\n },\n };\n};\n",
6
6
  "export default function htmlFactory({h}) {\n return {\n // Document metadata\n title: (...args) => h('title', ...args),\n meta: props => h('meta', props),\n link: props => h('link', props),\n style: (...args) => h('style', ...args),\n script: (...args) => h('script', ...args),\n noscript: (...args) => h('noscript', ...args),\n\n // Content sectioning\n address: (...args) => h('address', ...args),\n article: (...args) => h('article', ...args),\n aside: (...args) => h('aside', ...args),\n footer: (...args) => h('footer', ...args),\n header: (...args) => h('header', ...args),\n h1: (...args) => h('h1', ...args),\n h2: (...args) => h('h2', ...args),\n h3: (...args) => h('h3', ...args),\n h4: (...args) => h('h4', ...args),\n h5: (...args) => h('h5', ...args),\n h6: (...args) => h('h6', ...args),\n main: (...args) => h('main', ...args),\n nav: (...args) => h('nav', ...args),\n section: (...args) => h('section', ...args),\n\n // Text content\n blockquote: (...args) => h('blockquote', ...args),\n dd: (...args) => h('dd', ...args),\n div: (...args) => h('div', ...args),\n dl: (...args) => h('dl', ...args),\n dt: (...args) => h('dt', ...args),\n figcaption: (...args) => h('figcaption', ...args),\n figure: (...args) => h('figure', ...args),\n hr: () => h('hr'),\n li: (...args) => h('li', ...args),\n ol: (...args) => h('ol', ...args),\n p: (...args) => h('p', ...args),\n pre: (...args) => h('pre', ...args),\n ul: (...args) => h('ul', ...args),\n\n // Inline text semantics\n a: (...args) => h('a', ...args),\n abbr: (...args) => h('abbr', ...args),\n b: (...args) => h('b', ...args),\n br: () => h('br'),\n cite: (...args) => h('cite', ...args),\n code: (...args) => h('code', ...args),\n data: (...args) => h('data', ...args),\n del: (...args) => h('del', ...args),\n dfn: (...args) => h('dfn', ...args),\n em: (...args) => h('em', ...args),\n i: (...args) => h('i', ...args),\n ins: (...args) => h('ins', ...args),\n kbd: (...args) => h('kbd', ...args),\n mark: (...args) => h('mark', ...args),\n q: (...args) => h('q', ...args),\n s: (...args) => h('s', ...args),\n samp: (...args) => h('samp', ...args),\n small: (...args) => h('small', ...args),\n span: (...args) => h('span', ...args),\n strong: (...args) => h('strong', ...args),\n sub: (...args) => h('sub', ...args),\n sup: (...args) => h('sup', ...args),\n time: (...args) => h('time', ...args),\n u: (...args) => h('u', ...args),\n wbr: () => h('wbr'),\n\n // Image and multimedia\n area: props => h('area', props),\n audio: (...args) => h('audio', ...args),\n img: props => h('img', props),\n map: (...args) => h('map', ...args),\n track: props => h('track', props),\n video: (...args) => h('video', ...args),\n\n // Embedded content\n embed: props => h('embed', props),\n iframe: (...args) => h('iframe', ...args),\n object: (...args) => h('object', ...args),\n param: props => h('param', props),\n picture: (...args) => h('picture', ...args),\n portal: (...args) => h('portal', ...args),\n source: props => h('source', props),\n\n // SVG and MathML\n svg: (...args) => h('svg', ...args),\n math: (...args) => h('math', ...args),\n\n // Scripting\n canvas: (...args) => h('canvas', ...args),\n\n // Table content\n caption: (...args) => h('caption', ...args),\n col: props => h('col', props),\n colgroup: (...args) => h('colgroup', ...args),\n table: (...args) => h('table', ...args),\n tbody: (...args) => h('tbody', ...args),\n td: (...args) => h('td', ...args),\n tfoot: (...args) => h('tfoot', ...args),\n th: (...args) => h('th', ...args),\n thead: (...args) => h('thead', ...args),\n tr: (...args) => h('tr', ...args),\n\n // Forms\n button: (...args) => h('button', ...args),\n datalist: (...args) => h('datalist', ...args),\n fieldset: (...args) => h('fieldset', ...args),\n form: (...args) => h('form', ...args),\n input: props => h('input', props),\n label: (...args) => h('label', ...args),\n legend: (...args) => h('legend', ...args),\n meter: (...args) => h('meter', ...args),\n optgroup: (...args) => h('optgroup', ...args),\n option: (...args) => h('option', ...args),\n output: (...args) => h('output', ...args),\n progress: (...args) => h('progress', ...args),\n select: (...args) => h('select', ...args),\n textarea: (...args) => h('textarea', ...args),\n\n // Interactive elements\n details: (...args) => h('details', ...args),\n dialog: (...args) => h('dialog', ...args),\n summary: (...args) => h('summary', ...args),\n\n // Web Components\n slot: (...args) => h('slot', ...args),\n template: (...args) => h('template', ...args),\n };\n}\n",
@@ -22,7 +22,9 @@
22
22
  "// SettingsService — schema-driven, persisted, reactive settings (VS Code's\n// settings model). Core and plugins register typed setting schemas; values are\n// stored in localStorage, namespaced, and merged over defaults. The Settings UI\n// is generated from the schema, so adding a setting never means touching UI code.\n// Plugin keys are namespaced under the plugin id.\n\nimport { cell } from '../runtime.js';\n\nconst STORAGE_KEY = 'trove.settings';\n\nexport class SettingsService {\n constructor() {\n this.schema = new Map(); // key -> { type, default, title, description, enum?, minimum?, maximum?, category, order }\n this.values = read();\n this.cell = cell(this.effective());\n }\n\n /**\n * Register one or more settings. Each: { key, type, default, title,\n * description?, enum?, enumLabels?, minimum?, maximum?, category?, order? }\n */\n register(schemas) {\n for (const s of [].concat(schemas)) this.schema.set(s.key, s);\n this.cell.setValue(this.effective());\n return () => {\n for (const s of [].concat(schemas)) this.schema.delete(s.key);\n this.cell.setValue(this.effective());\n };\n }\n\n get(key) {\n if (key in this.values) return this.values[key];\n return this.schema.get(key)?.default;\n }\n\n set(key, value) {\n const schema = this.schema.get(key);\n if (schema && value === schema.default) delete this.values[key];\n else this.values[key] = value;\n write(this.values);\n this.cell.setValue(this.effective());\n }\n\n reset(key) {\n delete this.values[key];\n write(this.values);\n this.cell.setValue(this.effective());\n }\n\n /** Full resolved values (defaults ⊕ overrides). */\n effective() {\n const out = {};\n for (const [key, s] of this.schema) out[key] = key in this.values ? this.values[key] : s.default;\n // Include stored keys with no (current) schema, so unknown/plugin values survive.\n for (const [key, v] of Object.entries(this.values)) if (!(key in out)) out[key] = v;\n return out;\n }\n\n observe() {\n return this.cell;\n }\n\n /** Schema entries grouped by category, for the Settings UI. */\n grouped() {\n const groups = new Map();\n for (const s of [...this.schema.values()].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))) {\n // `hidden` settings are state the app keeps under the settings key, not choices a\n // person makes — the opener associations, for one, which are edited through the\n // opener chooser and have their own section below. Rendering them anyway put a row\n // reading \"[object Object]\" at the top of Settings.\n if (s.hidden) continue;\n const cat = s.category || 'General';\n if (!groups.has(cat)) groups.set(cat, []);\n groups.get(cat).push({ ...s, value: this.get(s.key) });\n }\n return [...groups.entries()].map(([category, items]) => ({ category, items }));\n }\n\n scopedFor(pluginId) {\n const prefix = `${pluginId}.`;\n return {\n register: (schemas) =>\n this.register([].concat(schemas).map((s) => ({ ...s, key: prefix + s.key, category: s.category || pluginId }))),\n get: (key) => this.get(prefix + key),\n set: (key, value) => this.set(prefix + key, value),\n };\n }\n}\n\nfunction read() {\n try {\n return JSON.parse(localStorage.getItem(STORAGE_KEY)) || {};\n } catch {\n return {};\n }\n}\nfunction write(values) {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(values));\n } catch { /* quota / private mode */ }\n}\n",
23
23
  "// NotificationService — transient toasts + a small log. Everything user-facing\n// that fails routes here so problems are never silent. Reactive: the status/UI\n// watches `observe()`.\n\nimport { cell } from '../runtime.js';\n\nlet seq = 0;\n\nexport class NotificationService {\n constructor() {\n this.items = [];\n this.cell = cell([]);\n }\n observe() {\n return this.cell;\n }\n #push(level, message, opts = {}) {\n const item = {\n id: ++seq, level, message,\n actions: opts.actions || null,\n createdAt: Date.now(),\n sticky: opts.sticky || level === 'error',\n };\n this.items = [...this.items, item];\n this.cell.setValue(this.items);\n if (!item.sticky) setTimeout(() => this.dismiss(item.id), opts.timeout ?? 4000);\n return item.id;\n }\n info(m, o) {\n return this.#push('info', m, o);\n }\n success(m, o) {\n return this.#push('success', m, o);\n }\n warn(m, o) {\n return this.#push('warn', m, o);\n }\n error(m, o) {\n return this.#push('error', m, o);\n }\n /** Update a notification in place (e.g. a progress message). */\n update(id, patch) {\n this.items = this.items.map((i) => (i.id === id ? { ...i, ...patch } : i));\n this.cell.setValue(this.items);\n }\n dismiss(id) {\n this.items = this.items.filter((i) => i.id !== id);\n this.cell.setValue(this.items);\n }\n}\n",
24
24
  "// Retry with exponential backoff + full jitter. Only retries errors classified\n// retryable (see errors.js), respects an AbortSignal between attempts, and\n// surfaces the last error untouched when it gives up — so the caller still sees\n// a clean TroveError, not a generic \"retries exhausted\".\n\nimport { isRetryable, wrapError, TroveError } from './errors.js';\n\nconst DEFAULTS = {\n retries: 4, // attempts after the first = 5 total tries\n minDelayMs: 250,\n maxDelayMs: 8000,\n factor: 2,\n jitter: true,\n};\n\nfunction sleep(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) return reject(TroveError.aborted());\n // `{ once: true }` removes the listener when it FIRES — not when the timer wins,\n // which is the normal case. One long-lived signal driving a few retried operations\n // therefore accumulated a listener per attempt and released none of them.\n const done = (fn) => (arg) => {\n clearTimeout(t);\n signal?.removeEventListener('abort', onAbort);\n fn(arg);\n };\n const t = setTimeout(() => done(resolve)(), ms);\n const onAbort = () => done(reject)(TroveError.aborted());\n signal?.addEventListener('abort', onAbort, { once: true });\n });\n}\n\n/**\n * @template T\n * @param {(attempt: number) => Promise<T>} fn\n * @param {object} [opts]\n * @param {number} [opts.retries]\n * @param {AbortSignal} [opts.signal]\n * @param {(info: {attempt: number, delayMs: number, error: TroveError}) => void} [opts.onRetry]\n * @param {(err: unknown) => boolean} [opts.shouldRetry] override classification\n * @returns {Promise<T>}\n */\nexport async function withRetry(fn, opts = {}) {\n const cfg = { ...DEFAULTS, ...opts };\n const shouldRetry = cfg.shouldRetry ?? isRetryable;\n let attempt = 0;\n\n for (;;) {\n if (cfg.signal?.aborted) throw TroveError.aborted();\n try {\n return await fn(attempt);\n } catch (raw) {\n const err = wrapError(raw);\n const canRetry = attempt < cfg.retries && shouldRetry(err) && err.code !== 'aborted';\n if (!canRetry) throw err;\n\n const base = Math.min(cfg.maxDelayMs, cfg.minDelayMs * cfg.factor ** attempt);\n const delayMs = cfg.jitter ? Math.random() * base : base;\n cfg.onRetry?.({ attempt: attempt + 1, delayMs, error: err });\n await sleep(delayMs, cfg.signal);\n attempt++;\n }\n }\n}\n\n/** Reject after `ms`, unless `promise` settles first. Cleans up its timer. */\nexport function withTimeout(promise, ms, message = 'Operation timed out') {\n if (!ms || ms <= 0) return promise;\n let t;\n const timeout = new Promise((_, reject) => {\n t = setTimeout(() => reject(TroveError.timeout(message)), ms);\n });\n return Promise.race([promise, timeout]).finally(() => clearTimeout(t));\n}\n",
25
- "// TroveApiClient — the browser's view of the server API. Thin JSON calls with\n// transient-error retry, plus the upload orchestrator, which is where the \"handle\n// large uploads well\" requirement lives:\n//\n// • Chooses nothing itself — it follows the plan the server returns (single /\n// presigned-multipart / direct-multipart), so an S3 deployment uploads parts\n// straight to S3 and a filesystem deployment streams through the server, with\n// the same client code.\n// • Uploads parts concurrently (bounded), each with its own retry, and reports\n// aggregate byte progress for a live progress bar.\n// • Resumable: on retry it asks the server which parts already landed and skips\n// them, so a dropped connection doesn't restart a 4 GB upload.\n//\n// Uploads use XMLHttpRequest because fetch can't report upload progress.\n\nimport { withRetry } from '@3sln/trove/core/retry.js';\nimport { TroveError } from '@3sln/trove/core/errors.js';\n\nexport class TroveApiClient {\n /**\n * @param {{baseUrl?: string, fetch?: Function, token?: string|(() => string|null)}} [opts]\n * `token` is a bearer JWT, or a function returning one. Optional because the common\n * deployment puts an authenticating proxy in front (Cloudflare Access sets its own\n * header and the browser sends nothing) — but a deployment where the user HOLDS a\n * token has no way to present it otherwise, which is why this exists.\n */\n constructor({ baseUrl = '', fetch: f = globalThis.fetch.bind(globalThis), token = null } = {}) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this._fetch = f;\n this._token = token;\n }\n\n /** The bearer token to present, if any. Read per request so a refresh takes effect. */\n token() {\n const t = typeof this._token === 'function' ? this._token() : this._token;\n return t || null;\n }\n /** Auth headers for a request, or nothing at all when there is no token to send. */\n authHeaders() {\n const t = this.token();\n return t ? { authorization: `Bearer ${t}` } : {};\n }\n\n async request(method, path, { body, query, signal, raw } = {}) {\n const url = this.baseUrl + path + (query ? '?' + new URLSearchParams(query) : '');\n return withRetry(\n async () => {\n const res = await this._fetch(url, {\n method,\n headers: { ...this.authHeaders(), ...(body ? { 'content-type': 'application/json' } : {}) },\n body: body ? JSON.stringify(body) : undefined,\n signal,\n });\n if (res.status === 429 || res.status >= 500) {\n // Read the structured error to decide retry: an explicitly non-retryable\n // failure (e.g. a per-file size limit) must fail fast with its real message,\n // not be retried 3× into a generic \"Server 429\". `raw` requests can't consume\n // the body here, so they stay status-based.\n if (!raw) {\n let e;\n try { const t = await res.text(); e = (t ? JSON.parse(t) : null)?.error; } catch { /* non-JSON body */ }\n if (e && e.retryable === false) throw new TroveError(e.code, e.message, { retryable: false, details: e.details });\n throw TroveError.transient(e?.message || `Server ${res.status}`);\n }\n throw TroveError.transient(`Server ${res.status}`);\n }\n if (raw) return res;\n const text = await res.text();\n const json = text ? JSON.parse(text) : null;\n if (!res.ok) {\n const e = json?.error || { code: 'internal', message: `Request failed (${res.status})` };\n throw new TroveError(e.code, e.message, { retryable: e.retryable, details: e.details });\n }\n return json;\n },\n { signal, retries: 3 },\n );\n }\n\n // --- browse / mutate -------------------------------------------------------\n\n capabilities() {\n return this.request('GET', '/api/capabilities');\n }\n /** Single-shot reachability probe (short timeout, no retries) — is the server\n * actually reachable, vs. `navigator.onLine` merely reporting an up interface? */\n async reachable(timeoutMs = 4000) {\n try {\n const signal = AbortSignal.timeout ? AbortSignal.timeout(timeoutMs) : undefined;\n const res = await this._fetch(this.baseUrl + '/api/capabilities', { method: 'GET', signal, headers: this.authHeaders() });\n return res.ok;\n } catch { return false; }\n }\n // Collection-scoped calls name their collection in the PATH. There is no default and\n // no `?collection=`: the server refuses a request that does not say which collection it\n // means, so a caller that forgets gets an error here rather than silently reaching one.\n /** Every item in a collection. */\n list(collection, opts = {}) {\n return this.request('GET', `${this.#scope(collection)}/items`, { query: opts });\n }\n /** Resolve an item by id, by `trove:` URI, or by name within a collection. */\n stat(ref, { collection, ...opts } = {}) {\n const key = String(ref).startsWith('trove:') ? 'uri' : 'id';\n // A name is only unique inside a collection, so resolving one needs the scope. An id\n // or a trove: URI names itself, and the flat resolve is fine for those.\n const base = collection ? `${this.#scope(collection)}/items/resolve` : '/api/items/resolve';\n return this.request('GET', base, { query: { [key]: ref, ...opts } });\n }\n #scope(collection) {\n if (!collection) throw new Error('This call is scoped to a collection — pass one');\n return `/api/collections/${encodeURIComponent(collection)}`;\n }\n /** What links to this item. */\n backlinks(id, opts = {}) {\n return this.request('GET', '/api/items/backlinks', { query: { id, ...opts } });\n }\n rename(id, newName) {\n return this.request('POST', '/api/items/rename', { body: { id, newName } });\n }\n remove(id) {\n return this.request('POST', '/api/items/delete', { body: { id } });\n }\n /** What's been deleted but not yet destroyed. */\n trash(collection) {\n return this.request('GET', `${this.#scope(collection)}/trash`);\n }\n restore(id) {\n return this.request('POST', '/api/trash/restore', { body: { id } });\n }\n /** Destroy for real — one item, or everything in a collection's trash. */\n purgeTrash({ id, collection } = {}) {\n // One item names itself; emptying a whole collection has to name the collection, and\n // says so in the URL — \"everything in here\" is the request that must never be able\n // to mean somewhere you did not point at.\n return id\n ? this.request('POST', '/api/trash/purge', { body: { id } })\n : this.request('POST', `${this.#scope(collection)}/trash/purge`);\n }\n search(q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/search` : '/api/search';\n return this.request('GET', base, { query: { q, ...opts } });\n }\n // Unified query: server transforms the raw string (parse/LLM) → runs it → returns\n // { query, results, resolved }. `resolved` is what was actually searched.\n query(q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/query` : '/api/query';\n return this.request('POST', base, { body: { q, ...opts } });\n }\n // Drive-wide tag/property filter (launcher #tag / #key:op:value).\n tagSearch(filters, q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/tags/search` : '/api/tags/search';\n return this.request('POST', base, { body: { filters, q, ...opts } });\n }\n indexers() {\n return this.request('GET', '/api/indexers');\n }\n\n // --- background work + standing problems -----------------------------------\n // Tasks are in-flight and ephemeral; issues are what a failure left behind and are\n // durable. Ids can contain anything (an issue id embeds a node id), so every one of\n // these encodes before it becomes a path segment.\n tasks() {\n return this.request('GET', '/api/tasks');\n }\n cancelTask(id) {\n return this.request('POST', `/api/tasks/${encodeURIComponent(id)}/cancel`);\n }\n dismissTask(id) {\n return this.request('DELETE', `/api/tasks/${encodeURIComponent(id)}`);\n }\n issues() {\n return this.request('GET', '/api/issues');\n }\n retryIssue(id) {\n return this.request('POST', `/api/issues/${encodeURIComponent(id)}/retry`);\n }\n dismissIssue(id) {\n return this.request('DELETE', `/api/issues/${encodeURIComponent(id)}`);\n }\n reindex() {\n return this.request('POST', '/api/reindex');\n }\n /** Reconcile a collection against its object store (changes made outside Trove). */\n scanCollection(id) {\n return this.request('POST', `/api/collections/${encodeURIComponent(id)}/scan`);\n }\n\n /**\n * Check every collection's backing store for problems a browser would hit — chiefly a\n * missing CORS policy, which leaves the file list and search working while every file\n * fails to open.\n *\n * Worth asking from the browser rather than only on a timer: the server checks against\n * the origin of THIS request, and a bucket policy may name exactly one origin.\n */\n checkStorage() {\n return this.request('POST', '/api/diagnostics/storage');\n }\n\n // --- server plugin installs (account-scoped, synced across devices) ---------\n /** Upload a package zip for account install; returns the server install record. */\n async installPlugin(bytes, grants) {\n const q = grants && grants.length ? '?grants=' + encodeURIComponent(grants.join(',')) : '';\n const res = await this._fetch(this.baseUrl + '/api/plugins/install' + q, { method: 'POST', body: bytes, headers: this.authHeaders() });\n const json = await res.json().catch(() => null);\n if (!res.ok) {\n const e = json?.error || { code: 'internal', message: `Install failed (${res.status})` };\n throw new TroveError(e.code, e.message, { details: e.details });\n }\n return json.install;\n }\n installedPlugins() {\n return this.request('GET', '/api/plugins/installed');\n }\n async pluginPackage(id) {\n const res = await this._fetch(`${this.baseUrl}/api/plugins/${encodeURIComponent(id)}/package`, { headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('not_found', `Package for \"${id}\" not found`);\n return new Uint8Array(await res.arrayBuffer());\n }\n uninstallPluginServer(id) {\n return this.request('DELETE', `/api/plugins/${encodeURIComponent(id)}/install`);\n }\n // contribution: { semanticTexts?, tags?, metadata? } (legacy { documents, facet } ok).\n pushIndex(indexerId, nodeId, contribution) {\n return this.request('POST', `/api/index/${encodeURIComponent(indexerId)}`, { body: { nodeId, ...contribution } });\n }\n\n // --- identity --------------------------------------------------------------\n me() {\n return this.request('GET', '/api/me');\n }\n\n // --- collections -----------------------------------------------------------\n collections() {\n return this.request('GET', '/api/collections');\n }\n createCollection(body) {\n return this.request('POST', '/api/collections', { body });\n }\n\n // --- conversations, tags, sidecar ------------------------------------------\n sidecar(id) {\n return this.request('GET', `/api/items/${encodeURIComponent(id)}/sidecar`);\n }\n addComment(id, { body, parentId, mentions } = {}) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments`, { body: { body, parentId, mentions } });\n }\n editComment(id, cid, body) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}/edit`, { body: { body } });\n }\n deleteComment(id, cid) {\n return this.request('DELETE', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}`);\n }\n reactComment(id, cid, emoji, on) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}/react`, { body: { emoji, on } });\n }\n setTag(id, name, value) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/tags`, { body: { name, value } });\n }\n removeTag(id, name) {\n return this.request('DELETE', `/api/items/${encodeURIComponent(id)}/tags/${encodeURIComponent(name)}`);\n }\n\n // --- notifications & push --------------------------------------------------\n notifications() {\n return this.request('GET', '/api/notifications');\n }\n markNotificationsRead(ids) {\n return this.request('POST', '/api/notifications/read', { body: { ids } });\n }\n vapidKey() {\n return this.request('GET', '/api/push/vapid');\n }\n\n // --- API keys (admin) -------------------------------------------------------\n // Capability-only credentials; see core/apiKeys.js. `mintApiKey` is the one call in\n // this client whose response contains a secret, and it is the only chance to see it.\n apiKeys() {\n return this.request('GET', '/api/keys');\n }\n mintApiKey({ name, scopes, expiresAt = null }) {\n return this.request('POST', '/api/keys', { body: { name, scopes, expiresAt } });\n }\n revokeApiKey(id) {\n return this.request('DELETE', `/api/keys/${encodeURIComponent(id)}`);\n }\n subscribePush(subscription) {\n return this.request('POST', '/api/push/subscribe', { body: { subscription } });\n }\n\n /** URL for GET-ing bytes (used by <img>/<audio>/<video> and downloads). */\n downloadUrl(id, { attachment } = {}) {\n return `${this.baseUrl}/api/items/download?id=${encodeURIComponent(id)}${attachment ? '&disposition=attachment' : ''}`;\n }\n\n /**\n * Mint URLs that carry their own authorization, for the things that cannot send a\n * header — an <img src>, a <video src>, cache.add(). Batched: a gallery asks for what\n * it is about to draw, in one request. See platform/mediaUrls.js.\n */\n mintUrls(ids, op = 'media') {\n return this.request('POST', '/api/items/urls', { body: { ids, op } });\n }\n\n /**\n * Start a download in the browser.\n *\n * With no bearer token this is a plain navigation to the download URL — the browser\n * streams it, handles Range, and never buffers a 4 GB file in a tab. When a token IS\n * in play that isn't possible: an `<a href>` cannot carry an Authorization header, so\n * the navigation would arrive unauthenticated and 401. Rather than move the token into\n * the query string (where it lands in logs, history, and referrers), fetch the bytes\n * with the header and hand the browser a blob.\n *\n * The cost is honest and worth stating: the blob path holds the file in memory. It is\n * the price of bearer auth without a token-bearing URL, and it does not apply to the\n * common proxy-authenticated deployment, which takes the streaming path.\n */\n async download(id, name, { attachment = true } = {}) {\n const url = this.downloadUrl(id, { attachment });\n if (!this.token()) return { url, streamed: true };\n const res = await this._fetch(url, { headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('internal', `Download failed (${res.status})`);\n return { url: URL.createObjectURL(await res.blob()), streamed: false, revoke: true };\n }\n\n /** Read a whole file as text/bytes (small files, indexers). */\n async readBytes(id, { signal } = {}) {\n const res = await this._fetch(this.downloadUrl(id), { signal, headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('internal', `Download failed (${res.status})`);\n return new Uint8Array(await res.arrayBuffer());\n }\n async readText(id, opts) {\n return new TextDecoder().decode(await this.readBytes(id, opts));\n }\n\n /**\n * Read at most `maxBytes` of a file as text.\n *\n * A viewer must never pull a whole file just to show the top of it. A drive holds\n * logs, exports and dumps that are hundreds of megabytes; `readText` on one of those\n * buffers the entire thing in the tab before a single character is drawn, and the\n * browser is gone before the user learns anything. A Range request costs one extra\n * byte over the wire and bounds the damage at the transfer rather than the render.\n *\n * The cut is at a BYTE boundary, which can land mid-character in UTF-8, so the\n * decoder is told to tolerate it — a trailing replacement glyph beats throwing away\n * the read. The last partial line is dropped for the same reason.\n *\n * @returns {Promise<{text: string, truncated: boolean, total: number|null}>}\n */\n async readTextCapped(id, { maxBytes = 512 * 1024, size = null, signal } = {}) {\n // Skip the Range when we already know the file fits. An empty file has no\n // satisfiable range, so asking for one turned \"open an empty note\" into an error\n // page; a 416 from any backend would do the same.\n const ranged = size == null || size > maxBytes;\n const res = await this._fetch(this.downloadUrl(id), {\n signal,\n headers: { ...this.authHeaders(), ...(ranged ? { range: `bytes=0-${maxBytes - 1}` } : {}) },\n });\n if (res.status === 416) return { text: '', truncated: false, total: 0 };\n if (!res.ok && res.status !== 206) throw new TroveError('internal', `Download failed (${res.status})`);\n const bytes = new Uint8Array(await res.arrayBuffer());\n // `Content-Range: bytes 0-N/TOTAL` is how we learn the real size; a server that\n // ignored the Range header just sent everything, which is also fine.\n const total = Number(/\\/(\\d+)$/.exec(res.headers.get('content-range') || '')?.[1]) || null;\n const truncated = bytes.length >= maxBytes && (total == null || total > bytes.length);\n let text = new TextDecoder('utf-8', { fatal: false }).decode(bytes);\n if (truncated) {\n const lastBreak = text.lastIndexOf('\\n');\n if (lastBreak > 0) text = text.slice(0, lastBreak);\n }\n return { text, truncated, total };\n }\n\n /**\n * Upload a File/Blob with progress + resume.\n * @param {Blob & {name?:string}} file\n * @param {object} opts\n * @param {string} opts.parentId\n * @param {string} [opts.name]\n * @param {(p:{loaded:number,total:number,ratio:number}) => void} [opts.onProgress]\n * @param {AbortSignal} [opts.signal]\n * @param {number} [opts.concurrency]\n * @returns {Promise<object>} the created node\n */\n async upload(file, opts) {\n const name = opts.name || file.name || 'untitled';\n const size = file.size;\n const plan = await this.request('POST', `${this.#scope(opts.collection)}/uploads`, {\n body: { name, size, contentType: file.type || undefined },\n signal: opts.signal,\n });\n // Hand the caller the server upload id so a cancel/failure can abort the session\n // (otherwise a multipart upload leaks server + storage state).\n if (plan.uploadId) opts.onStart?.(plan.uploadId);\n\n const progress = new ProgressAggregator(size, opts.onProgress);\n const t = plan.transfer || {};\n const completeUrl = plan.endpoints?.complete || `/api/uploads/${plan.uploadId}/complete`;\n\n if (plan.strategy === 'single') {\n // One presigned PUT straight to storage (bytes never touch our server).\n await xhrPut(t.url || plan.url, file, { headers: t.requiredHeaders, signal: opts.signal, onProgress: (l) => progress.set('single', l) });\n const done = await this.request('POST', completeUrl, { body: {}, signal: opts.signal });\n return done.node;\n }\n if (plan.strategy === 'direct-single') {\n await xhrPut(this.baseUrl + this.#partUrl(plan, 1), file, {\n // Our own server, so it needs our bearer token; `t.authHeaders` lets the plan\n // add its own and wins on a clash.\n headers: { ...this.authHeaders(), ...t.authHeaders },\n signal: opts.signal, onProgress: (l) => progress.set(1, l),\n });\n const done = await this.request('POST', completeUrl, { body: {}, signal: opts.signal });\n return done.node;\n }\n\n // Multipart (presign or direct).\n const partSize = plan.partSize;\n const partCount = plan.partCount ?? Math.ceil(size / partSize);\n // Resume: which parts already exist?\n let received = new Set();\n try {\n const statusUrl = plan.endpoints?.status || `/api/uploads/${plan.uploadId}/status`;\n const status = await this.request('GET', statusUrl, { signal: opts.signal });\n received = new Set(status.received || []);\n } catch { /* fresh upload */ }\n\n const parts = [];\n const jobs = [];\n for (let n = 1; n <= partCount; n++) {\n const start = (n - 1) * partSize;\n const blob = file.slice(start, Math.min(start + partSize, size));\n jobs.push({ n, blob });\n }\n\n const results = new Array(partCount);\n const concurrency = Math.min(opts.concurrency ?? 4, jobs.length);\n let cursor = 0;\n // When one part fails for good, abort the sibling workers' in-flight parts instead\n // of letting them keep PUTting bytes whose result we're about to discard. The inner\n // controller is chained to the caller's signal so a user cancel still propagates.\n const inner = new AbortController();\n const onOuterAbort = () => inner.abort();\n if (opts.signal) {\n if (opts.signal.aborted) inner.abort();\n else opts.signal.addEventListener('abort', onOuterAbort, { once: true });\n }\n const worker = async () => {\n while (cursor < jobs.length) {\n if (inner.signal.aborted) return;\n const { n, blob } = jobs[cursor++];\n if (received.has(n)) {\n progress.set(n, blob.size);\n continue;\n }\n const etag = await withRetry(\n () => this.#uploadPart(plan, n, blob, {\n signal: inner.signal, onProgress: (l) => progress.set(n, l),\n }),\n { signal: inner.signal, retries: 4 },\n );\n results[n - 1] = { partNumber: n, etag };\n }\n };\n try {\n await Promise.all(Array.from({ length: concurrency }, worker));\n } catch (err) {\n inner.abort(); // stop the other workers before surfacing the failure\n throw err;\n } finally {\n opts.signal?.removeEventListener('abort', onOuterAbort);\n }\n\n const reportedParts = results.filter(Boolean);\n const done = await this.request('POST', completeUrl, {\n body: { parts: reportedParts }, signal: opts.signal,\n });\n return done.node;\n }\n\n // Expand an endpoint/transfer URL template's {partNumber} placeholder.\n #partUrl(plan, n) {\n const tmpl = plan.transfer?.partUrl || `/api/uploads/${plan.uploadId}/parts/{partNumber}`;\n return tmpl.replace('{partNumber}', String(n));\n }\n\n async #uploadPart(plan, n, blob, { signal, onProgress }) {\n const t = plan.transfer || {};\n if (plan.strategy === 'presign') {\n const part = (t.parts || plan.parts)?.find((p) => p.partNumber === n);\n let url = part?.url;\n if (!url) {\n const signTmpl = plan.endpoints?.sign || `/api/uploads/${plan.uploadId}/parts/{partNumber}/sign`;\n const r = await this.request('POST', signTmpl.replace('{partNumber}', String(n)), { signal });\n url = r.url;\n }\n const res = await xhrPut(url, blob, { signal, onProgress, wantEtag: true });\n const etag = res.etag;\n const reportTmpl = plan.endpoints?.report || `/api/uploads/${plan.uploadId}/parts/{partNumber}/report`;\n await this.request('POST', reportTmpl.replace('{partNumber}', String(n)), { body: { etag }, signal });\n return etag;\n }\n // proxied: server records the etag; response body has it.\n const res = await xhrPut(this.baseUrl + this.#partUrl(plan, n), blob, {\n headers: { ...this.authHeaders(), ...t.authHeaders },\n signal, onProgress, wantJson: true,\n });\n return res.json?.etag;\n }\n\n async abortUpload(uploadId) {\n return this.request('DELETE', `/api/uploads/${uploadId}`);\n }\n}\n\nclass ProgressAggregator {\n constructor(total, cb) {\n this.total = total;\n this.cb = cb;\n this.parts = new Map();\n }\n set(key, loaded) {\n // Monotonic per part: a retried part restarts its XHR progress at 0, which would\n // otherwise pull the aggregate bar backwards. Never let a part's reported bytes drop.\n const prev = this.parts.get(key) || 0;\n if (loaded < prev) return;\n this.parts.set(key, loaded);\n if (!this.cb) return;\n let sum = 0;\n for (const v of this.parts.values()) sum += v;\n const loadedTotal = Math.min(sum, this.total);\n this.cb({ loaded: loadedTotal, total: this.total, ratio: this.total ? loadedTotal / this.total : 1 });\n }\n}\n\n// XHR PUT with upload progress + abort. Returns { status, etag?, json? }.\nfunction xhrPut(url, body, { signal, onProgress, wantEtag, wantJson, headers } = {}) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('PUT', url, true);\n for (const [k, v] of Object.entries(headers || {})) { try { xhr.setRequestHeader(k, v); } catch { /* forbidden header */ } }\n if (signal) {\n if (signal.aborted) {\n xhr.abort();\n return reject(TroveError.aborted());\n }\n signal.addEventListener('abort', () => xhr.abort(), { once: true });\n }\n xhr.upload.onprogress = (e) => onProgress?.(e.loaded);\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const out = { status: xhr.status };\n if (wantEtag) out.etag = xhr.getResponseHeader('ETag') || xhr.getResponseHeader('etag');\n if (wantJson) {\n try {\n out.json = JSON.parse(xhr.responseText);\n } catch { /* ignore */ }\n }\n resolve(out);\n } else if (xhr.status === 429 || xhr.status >= 500) {\n reject(TroveError.transient(`Upload part failed (${xhr.status})`));\n } else {\n reject(new TroveError('internal', `Upload failed (${xhr.status})`));\n }\n };\n xhr.onerror = () => reject(TroveError.transient('Network error during upload'));\n xhr.onabort = () => reject(TroveError.aborted());\n xhr.send(body);\n });\n}\n",
25
+ "// The wrapper around an encrypted object's bytes.\n//\n// An encrypted item is not a blob of ciphertext — it is a readable header followed by\n// independently-encrypted chunks. Both halves of that are load-bearing.\n//\n// READABLE HEADER. Whoever holds the object must be able to learn what key it wants\n// without having the key: which collection key encrypted it (the fingerprint), how it was\n// encrypted, and how big it really is. That is what lets a sideloaded object — one copied\n// into the bucket from somewhere else, or left behind by a half-finished key rotation —\n// be matched to a key instead of being an unreadable mystery. It is also why the\n// collection carries a fingerprint AND every object carries one: the collection's says\n// which key to ask the user for, the object's says whether this particular object is\n// actually encrypted with it.\n//\n// CHUNKS. Range requests are load-bearing in this drive already: the service worker slices\n// ranges out of pinned files, the text viewer reads the first 512KB of a large file rather\n// than pulling gigabytes to show a screenful, and media seeking is a range request per\n// seek. A single AES-GCM blob has exactly one authentication tag over the whole message,\n// so reading one byte means fetching and decrypting all of them. Fixed-size chunks turn a\n// plaintext range into a chunk range, and only those chunks are fetched and decrypted.\n//\n// The cost is honest and small: 16 bytes of tag per chunk, and a header. At the default\n// chunk size that is under 0.02% overhead.\n\nimport { TroveError } from '../errors.js';\n\n/** \"TRV1\" — enough to recognise the format, and to refuse bytes that are not it. */\nconst MAGIC = new Uint8Array([0x54, 0x52, 0x56, 0x31]);\n\nexport const VERSION = 1;\n/** AES-256-GCM. Recorded per object so the format can gain another without ambiguity. */\nexport const ALG_AES_256_GCM = 1;\n\n/** AES-GCM's authentication tag. */\nexport const TAG_BYTES = 16;\n/** Random per object; the per-chunk nonce is this followed by the chunk index. */\nconst NONCE_PREFIX_BYTES = 8;\nconst NONCE_BYTES = 12;\n/** Truncated: 128 bits is far past collision risk for \"which key is this\". */\nexport const FINGERPRINT_BYTES = 16;\n\nexport const HEADER_BYTES = 44;\n\n/**\n * 1 MiB of plaintext per chunk.\n *\n * The trade is seek granularity against overhead and round trips. Too small and a large\n * file becomes thousands of tags and a range read becomes many requests; too large and\n * seeking to one second of audio drags megabytes. 1 MiB keeps overhead at 16 bytes per\n * MiB — about 0.0015% — while keeping a seek to roughly one chunk.\n */\nexport const DEFAULT_CHUNK_SIZE = 1024 * 1024;\n\n/**\n * How many bytes the ciphertext of a plaintext of this size occupies.\n *\n * Needed before a single byte is encrypted: the upload plan negotiates part boundaries and\n * a per-file size limit against the size that will actually be STORED, and a plan computed\n * against the plaintext size is wrong by a tag per chunk. On a multipart upload that is the\n * difference between a final part that exists and one that does not.\n */\nexport function cipherSize(plaintextSize, chunkSize = DEFAULT_CHUNK_SIZE) {\n assertChunkSize(chunkSize);\n if (!(plaintextSize >= 0)) throw TroveError.invalid('plaintextSize must be a non-negative number');\n // An empty file still gets a header, and still has one (empty) chunk — so that \"is this\n // encrypted\" has the same answer for an empty file as for any other.\n const chunks = plaintextSize === 0 ? 1 : Math.ceil(plaintextSize / chunkSize);\n return HEADER_BYTES + plaintextSize + chunks * TAG_BYTES;\n}\n\n/** The inverse, for reporting the real size of something already stored. */\nexport function plaintextSizeOf(cipherTotal, chunkSize = DEFAULT_CHUNK_SIZE) {\n assertChunkSize(chunkSize);\n const body = cipherTotal - HEADER_BYTES;\n if (body < TAG_BYTES) throw TroveError.invalid('Ciphertext is too short to be an envelope');\n const full = Math.floor(body / (chunkSize + TAG_BYTES));\n const rest = body - full * (chunkSize + TAG_BYTES);\n // A trailing partial chunk still carries a full tag.\n return full * chunkSize + Math.max(0, rest - TAG_BYTES);\n}\n\nfunction assertChunkSize(chunkSize) {\n if (!Number.isInteger(chunkSize) || chunkSize <= 0 || chunkSize > 0xffffffff) {\n throw TroveError.invalid(`Invalid chunk size ${chunkSize}`);\n }\n}\n\n/**\n * @typedef {object} EnvelopeHeader\n * @property {number} version\n * @property {number} algorithm\n * @property {number} chunkSize plaintext bytes per chunk\n * @property {number} plaintextSize the real size, which the ciphertext length does not give\n * @property {Uint8Array} noncePrefix\n * @property {Uint8Array} fingerprint which key this was encrypted with\n */\n\n/** @param {EnvelopeHeader} h */\nexport function encodeHeader(h) {\n const out = new Uint8Array(HEADER_BYTES);\n const view = new DataView(out.buffer);\n out.set(MAGIC, 0);\n out[4] = h.version ?? VERSION;\n out[5] = h.algorithm ?? ALG_AES_256_GCM;\n // 6..7 reserved: written as zero and required to BE zero on read, so a future flag\n // cannot be silently ignored by a reader that predates it.\n view.setUint32(8, h.chunkSize, true);\n // A double holds an exact integer to 2^53, which is 9 petabytes — past any file, and\n // past what the rest of this codebase handles as a JS number anyway.\n view.setBigUint64(12, BigInt(h.plaintextSize), true);\n out.set(h.noncePrefix, 20);\n out.set(h.fingerprint, 28);\n return out;\n}\n\n/** @returns {EnvelopeHeader} */\nexport function decodeHeader(bytes) {\n if (bytes.length < HEADER_BYTES) throw TroveError.invalid('Not an encrypted object: too short');\n for (let i = 0; i < MAGIC.length; i++) {\n if (bytes[i] !== MAGIC[i]) throw TroveError.invalid('Not an encrypted object');\n }\n const version = bytes[4];\n if (version !== VERSION) {\n // Named rather than \"corrupt\". A reader that meets a newer envelope should say the\n // drive is newer than it is, not that the file is broken.\n throw TroveError.invalid(`This object uses envelope version ${version}, and this client understands ${VERSION}`);\n }\n const algorithm = bytes[5];\n if (algorithm !== ALG_AES_256_GCM) throw TroveError.invalid(`Unknown encryption algorithm ${algorithm}`);\n if (bytes[6] !== 0 || bytes[7] !== 0) {\n throw TroveError.invalid('This object sets envelope flags this client does not understand');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const chunkSize = view.getUint32(8, true);\n assertChunkSize(chunkSize);\n return {\n version,\n algorithm,\n chunkSize,\n plaintextSize: Number(view.getBigUint64(12, true)),\n noncePrefix: bytes.slice(20, 20 + NONCE_PREFIX_BYTES),\n fingerprint: bytes.slice(28, 28 + FINGERPRINT_BYTES),\n };\n}\n\n/** Does this look like one of ours? Cheap, and does not need the key. */\nexport function isEnvelope(bytes) {\n if (!bytes || bytes.length < MAGIC.length) return false;\n for (let i = 0; i < MAGIC.length; i++) if (bytes[i] !== MAGIC[i]) return false;\n return true;\n}\n\n/**\n * The nonce for one chunk: the object's random prefix, then the chunk index.\n *\n * Uniqueness per (key, nonce) is the one thing AES-GCM cannot survive losing — a repeat\n * leaks the XOR of two plaintexts and, worse, the authentication key. The prefix is random\n * per object so two objects never collide, and the counter makes chunks within an object\n * distinct. This is why an object may never be re-encrypted in place under the same key\n * with a fresh prefix omitted: rotation writes a NEW object.\n */\nfunction nonceFor(prefix, chunkIndex) {\n const nonce = new Uint8Array(NONCE_BYTES);\n nonce.set(prefix, 0);\n new DataView(nonce.buffer).setUint32(NONCE_PREFIX_BYTES, chunkIndex, true);\n return nonce;\n}\n\n/**\n * Which ciphertext bytes are needed to answer a plaintext range, and how much of the\n * decrypted result to discard at each end.\n *\n * This is the whole reason for chunking. A viewer asking for the first 512KB of a 4GB file\n * gets one chunk fetched instead of four gigabytes.\n *\n * @param {{start: number, end: number}} range inclusive plaintext byte range\n * @param {EnvelopeHeader} header\n */\nexport function cipherRangeFor(range, header) {\n const { chunkSize, plaintextSize } = header;\n const start = Math.max(0, range.start);\n const end = Math.min(range.end ?? plaintextSize - 1, plaintextSize - 1);\n if (start > end) throw TroveError.invalid('Empty or reversed range');\n const firstChunk = Math.floor(start / chunkSize);\n const lastChunk = Math.floor(end / chunkSize);\n const stride = chunkSize + TAG_BYTES;\n return {\n firstChunk,\n lastChunk,\n // Inclusive ciphertext byte range to fetch.\n cipherStart: HEADER_BYTES + firstChunk * stride,\n cipherEnd: Math.min(HEADER_BYTES + (lastChunk + 1) * stride, cipherSize(plaintextSize, chunkSize)) - 1,\n // Once those chunks are decrypted and joined, the caller wants this slice of them.\n trimStart: start - firstChunk * chunkSize,\n trimEnd: end - firstChunk * chunkSize + 1,\n };\n}\n\nasync function importKey(rawKey) {\n if (!(rawKey instanceof Uint8Array) || rawKey.length !== 32) {\n throw TroveError.invalid('An AES-256 key must be 32 bytes');\n }\n return crypto.subtle.importKey('raw', rawKey, 'AES-GCM', false, ['encrypt', 'decrypt']);\n}\n\n/**\n * Encrypt a whole object.\n *\n * @param {Uint8Array} rawKey 32-byte data key\n * @param {Uint8Array} plaintext\n * @param {{fingerprint: Uint8Array, chunkSize?: number}} opts\n * @returns {Promise<Uint8Array>} header + chunks\n */\nexport async function encrypt(rawKey, plaintext, { fingerprint, chunkSize = DEFAULT_CHUNK_SIZE } = {}) {\n assertChunkSize(chunkSize);\n if (!fingerprint || fingerprint.length !== FINGERPRINT_BYTES) {\n throw TroveError.invalid(`A fingerprint must be ${FINGERPRINT_BYTES} bytes`);\n }\n const key = await importKey(rawKey);\n const noncePrefix = crypto.getRandomValues(new Uint8Array(NONCE_PREFIX_BYTES));\n const header = encodeHeader({\n version: VERSION,\n algorithm: ALG_AES_256_GCM,\n chunkSize,\n plaintextSize: plaintext.length,\n noncePrefix,\n fingerprint,\n });\n\n const out = new Uint8Array(cipherSize(plaintext.length, chunkSize));\n out.set(header, 0);\n let at = HEADER_BYTES;\n const chunks = plaintext.length === 0 ? 1 : Math.ceil(plaintext.length / chunkSize);\n for (let i = 0; i < chunks; i++) {\n const slice = plaintext.subarray(i * chunkSize, Math.min((i + 1) * chunkSize, plaintext.length));\n const sealed = new Uint8Array(await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv: nonceFor(noncePrefix, i) }, key, slice,\n ));\n out.set(sealed, at);\n at += sealed.length;\n }\n return out;\n}\n\n/**\n * Decrypt a whole object.\n *\n * A failure here is deliberately not distinguished into \"wrong key\" versus \"tampered\":\n * AES-GCM cannot tell them apart, and a message that guessed would be guessing.\n */\nexport async function decrypt(rawKey, envelope) {\n const header = decodeHeader(envelope);\n const key = await importKey(rawKey);\n return decryptChunks(key, envelope.subarray(HEADER_BYTES), header, 0);\n}\n\n/**\n * Decrypt a run of chunks that starts at `firstChunk` — the partner of `cipherRangeFor`,\n * for the case where only part of the object was fetched.\n */\nexport async function decryptRange(rawKey, cipherPart, header, firstChunk) {\n const key = await importKey(rawKey);\n return decryptChunks(key, cipherPart, header, firstChunk);\n}\n\nasync function decryptChunks(key, body, header, firstChunk) {\n const { chunkSize, noncePrefix } = header;\n const stride = chunkSize + TAG_BYTES;\n const pieces = [];\n let total = 0;\n for (let at = 0, i = firstChunk; at < body.length; at += stride, i++) {\n const sealed = body.subarray(at, Math.min(at + stride, body.length));\n if (sealed.length <= TAG_BYTES && sealed.length !== TAG_BYTES) {\n throw TroveError.invalid('Truncated encrypted object');\n }\n let opened;\n try {\n opened = new Uint8Array(await crypto.subtle.decrypt(\n { name: 'AES-GCM', iv: nonceFor(noncePrefix, i) }, key, sealed,\n ));\n } catch {\n throw TroveError.invalid('Could not decrypt: wrong key, or the data has been altered');\n }\n pieces.push(opened);\n total += opened.length;\n }\n const out = new Uint8Array(total);\n let at = 0;\n for (const p of pieces) { out.set(p, at); at += p.length; }\n return out;\n}\n\n/**\n * Decrypt a ciphertext stream chunk by chunk, without holding the object in memory.\n *\n * The buffering version is fine for a text preview and wrong for a two-hour video: a\n * server that decrypted whole objects would hold one per concurrent viewer, and on a\n * Worker that is the memory limit rather than a slowdown. This reassembles exactly one\n * chunk at a time and emits its plaintext as soon as the tag verifies.\n *\n * Emitting per chunk does mean unverified bytes are never emitted, but earlier chunks are\n * released before later ones are checked — which is inherent to streaming anything\n * authenticated, and is why the chunk is the unit of trust rather than the file.\n *\n * @param {Uint8Array} rawKey\n * @param {EnvelopeHeader} header\n * @param {ReadableStream<Uint8Array>} cipherStream body only, no header\n * @param {number} [firstChunk] index of the first chunk in the stream\n */\nexport async function decryptStream(rawKey, header, cipherStream, firstChunk = 0) {\n const key = await importKey(rawKey);\n const stride = header.chunkSize + TAG_BYTES;\n const reader = cipherStream.getReader();\n let held = new Uint8Array(0);\n let index = firstChunk;\n\n const take = (n) => {\n const out = held.subarray(0, n);\n held = held.subarray(n);\n return out;\n };\n const open = async (sealed) => {\n try {\n return new Uint8Array(await crypto.subtle.decrypt(\n { name: 'AES-GCM', iv: nonceFor(header.noncePrefix, index++) }, key, sealed,\n ));\n } catch {\n throw TroveError.invalid('Could not decrypt: wrong key, or the data has been altered');\n }\n };\n\n return new ReadableStream({\n async pull(controller) {\n for (;;) {\n if (held.length >= stride) {\n controller.enqueue(await open(take(stride)));\n return;\n }\n const { value, done } = await reader.read();\n if (done) {\n // Whatever is left is the final, partial chunk — still a whole tag, but fewer\n // than a chunk of plaintext.\n if (held.length) {\n if (held.length < TAG_BYTES) throw TroveError.invalid('Truncated encrypted object');\n controller.enqueue(await open(take(held.length)));\n }\n controller.close();\n return;\n }\n const grown = new Uint8Array(held.length + value.length);\n grown.set(held, 0);\n grown.set(value, held.length);\n held = grown;\n }\n },\n cancel(reason) {\n return reader.cancel(reason);\n },\n });\n}\n\n/**\n * Seal a plaintext stream into an envelope stream, a chunk at a time.\n *\n * The counterpart to `decryptStream`, and needed for the same reason: `encrypt` allocates\n * the whole ciphertext, so re-encrypting a large object meant holding the file twice over —\n * once decrypted and once sealed. On a Cloudflare isolate that is the memory limit rather\n * than a slowdown, which capped key rotation at small files.\n *\n * The size has to be known up front because it goes in the header, which is written before\n * any chunk. That is not a limitation in practice: every caller is re-sealing something\n * whose size is already recorded.\n *\n * @param {Uint8Array} rawKey\n * @param {ReadableStream<Uint8Array>} plaintext\n * @param {{fingerprint: Uint8Array, plaintextSize: number, chunkSize?: number}} opts\n */\nexport async function encryptStream(rawKey, plaintext, { fingerprint, plaintextSize, chunkSize = DEFAULT_CHUNK_SIZE } = {}) {\n assertChunkSize(chunkSize);\n if (!fingerprint || fingerprint.length !== FINGERPRINT_BYTES) {\n throw TroveError.invalid(`A fingerprint must be ${FINGERPRINT_BYTES} bytes`);\n }\n const key = await importKey(rawKey);\n const noncePrefix = crypto.getRandomValues(new Uint8Array(NONCE_PREFIX_BYTES));\n const header = encodeHeader({\n version: VERSION, algorithm: ALG_AES_256_GCM, chunkSize, plaintextSize, noncePrefix, fingerprint,\n });\n\n const reader = plaintext.getReader();\n let held = new Uint8Array(0);\n let index = 0;\n let wroteHeader = false;\n let seen = 0;\n\n const seal = async (piece) => new Uint8Array(await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv: nonceFor(noncePrefix, index++) }, key, piece,\n ));\n\n return new ReadableStream({\n async pull(controller) {\n if (!wroteHeader) {\n wroteHeader = true;\n controller.enqueue(header);\n return;\n }\n for (;;) {\n if (held.length >= chunkSize) {\n const piece = held.subarray(0, chunkSize);\n held = held.subarray(chunkSize);\n seen += piece.length;\n controller.enqueue(await seal(piece));\n return;\n }\n const { value, done } = await reader.read();\n if (done) {\n // The trailing partial chunk — and, for an empty file, the one empty chunk that\n // makes \"is this encrypted\" answerable the same way at any size.\n if (held.length || seen === 0) {\n seen += held.length;\n controller.enqueue(await seal(held));\n held = new Uint8Array(0);\n }\n if (seen !== plaintextSize) {\n // Refused rather than written: an envelope whose header disagrees with its body\n // decrypts to the wrong length forever, and the header cannot be fixed later\n // without re-encrypting.\n throw TroveError.invalid(\n `Expected ${plaintextSize} bytes to encrypt and received ${seen}`,\n );\n }\n controller.close();\n return;\n }\n const grown = new Uint8Array(held.length + value.length);\n grown.set(held, 0);\n grown.set(value, held.length);\n held = grown;\n }\n },\n cancel(reason) {\n return reader.cancel(reason);\n },\n });\n}\n",
26
+ "// The key a collection's objects are encrypted with, and the fingerprint that names it.\n//\n// The threat model is the STORAGE HOST, and only that: the bucket holds ciphertext, so a\n// leaked bucket credential, a public-bucket misconfiguration, or a storage vendor who is\n// not the compute vendor learns sizes and timestamps and no content. The server holds the\n// key — it has to, in order to hand it to a client and to decrypt for an indexer — so this\n// is explicitly not end-to-end and does not pretend to be.\n//\n// Which is why the key is GENERATED rather than derived from something a user types.\n// A passphrase would buy nothing here: the server knows the key either way, so there is no\n// protection to gain from the user holding it, and every cost still applies — a slow KDF\n// on every unlock, a prompt in front of every collection, a key that can be forgotten and\n// then cannot be reset by anyone, and a re-encryption of everything whenever someone\n// changes their password. A random 256-bit key has none of that and is stronger than any\n// passphrase a person would choose.\n//\n// Access to the key is therefore an ACCESS-CONTROL question, not a knowledge one: whoever\n// may read the collection may have the key, because they may already read its contents.\n//\n// If this ever becomes end-to-end, the change is confined to where the key comes from and\n// who is allowed it. The envelope, the fingerprint, and every stored object are unchanged.\n\nimport { TroveError } from '../errors.js';\n\nconst enc = new TextEncoder();\n\nexport const KEY_BYTES = 32; // AES-256\nexport const FINGERPRINT_BYTES = 16;\n\n/** A new collection key. Random, because there is nothing to derive it from. */\nexport function generateDataKey() {\n return crypto.getRandomValues(new Uint8Array(KEY_BYTES));\n}\n\n/**\n * The public name of a key.\n *\n * Stamped into every object and recorded on the collection, so an object can be matched to\n * a key by whoever holds it — which is what makes a sideloaded object identifiable and\n * what lets a key rotation tell what it has already converted.\n *\n * Derived through HKDF rather than being a plain hash of the key. With a random 256-bit key\n * there is nothing to guess, so this is no longer load-bearing against an offline attack;\n * it stays because a fingerprint should be a value derived FOR this purpose, and a bare\n * `SHA-256(key)` is a value that might mean something somewhere else. The label makes it\n * unambiguously this and nothing else.\n *\n * @param {Uint8Array} dataKey\n * @returns {Promise<Uint8Array>} 16 bytes — far past collision risk for \"which key is this\"\n */\nexport async function fingerprint(dataKey) {\n if (!(dataKey instanceof Uint8Array) || dataKey.length !== KEY_BYTES) {\n throw TroveError.invalid('A data key must be 32 bytes');\n }\n const base = await crypto.subtle.importKey('raw', dataKey, 'HKDF', false, ['deriveBits']);\n const bits = await crypto.subtle.deriveBits(\n { name: 'HKDF', hash: 'SHA-256', salt: new Uint8Array(0), info: enc.encode('trove-key-id') },\n base,\n FINGERPRINT_BYTES * 8,\n );\n return new Uint8Array(bits);\n}\n\n/** Bytes as lowercase hex — how a key and a fingerprint are written down. */\nexport function toHex(b) {\n return [...b].map((x) => x.toString(16).padStart(2, '0')).join('');\n}\n\nexport function fromHex(hex) {\n if (typeof hex !== 'string' || !hex.length || hex.length % 2 || /[^0-9a-f]/i.test(hex)) {\n throw TroveError.invalid('Not hex');\n }\n return new Uint8Array(hex.match(/../g).map((h) => parseInt(h, 16)));\n}\n\n/** Kept as the name the rest of the code already uses for a fingerprint in hex. */\nexport const fingerprintHex = toHex;\n\n/**\n * A fresh key and what the collection records about it.\n *\n * The key is returned separately from the config because they go to different places: the\n * config is what any reader may see, and the key is what the server keeps.\n */\nexport async function newCollectionKey() {\n const dataKey = generateDataKey();\n return { dataKey, config: { fingerprint: toHex(await fingerprint(dataKey)) } };\n}\n",
27
+ "// TroveApiClient — the browser's view of the server API. Thin JSON calls with\n// transient-error retry, plus the upload orchestrator, which is where the \"handle\n// large uploads well\" requirement lives:\n//\n// • Chooses nothing itself — it follows the plan the server returns (single /\n// presigned-multipart / direct-multipart), so an S3 deployment uploads parts\n// straight to S3 and a filesystem deployment streams through the server, with\n// the same client code.\n// • Uploads parts concurrently (bounded), each with its own retry, and reports\n// aggregate byte progress for a live progress bar.\n// • Resumable: on retry it asks the server which parts already landed and skips\n// them, so a dropped connection doesn't restart a 4 GB upload.\n//\n// Uploads use XMLHttpRequest because fetch can't report upload progress.\n\nimport { withRetry } from '@3sln/trove/core/retry.js';\nimport { TroveError } from '@3sln/trove/core/errors.js';\n// Imported from the module rather than the barrel so a page that never uploads to an\n// encrypted collection still does not pull the rest of core in with it.\nimport { encrypt, encryptStream, cipherSize } from '@3sln/trove/core/encryption/envelope.js';\nimport { fromHex } from '@3sln/trove/core/encryption/keys.js';\n\n/**\n * Seal a whole file into an envelope.\n *\n * Only used where the plan already decided the STORED size fits a single PUT, so the\n * buffering is bounded by that limit rather than by the file.\n */\nasync function sealWhole(file, enc) {\n const plain = new Uint8Array(await file.arrayBuffer());\n const sealed = await encrypt(fromHex(enc.key), plain, {\n fingerprint: fromHex(enc.fingerprint),\n chunkSize: enc.chunkSize,\n });\n return new Blob([sealed], { type: file.type || 'application/octet-stream' });\n}\n\nexport class TroveApiClient {\n /**\n * @param {{baseUrl?: string, fetch?: Function, token?: string|(() => string|null)}} [opts]\n * `token` is a bearer JWT, or a function returning one. Optional because the common\n * deployment puts an authenticating proxy in front (Cloudflare Access sets its own\n * header and the browser sends nothing) — but a deployment where the user HOLDS a\n * token has no way to present it otherwise, which is why this exists.\n */\n constructor({ baseUrl = '', fetch: f = globalThis.fetch.bind(globalThis), token = null } = {}) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this._fetch = f;\n this._token = token;\n }\n\n /** The bearer token to present, if any. Read per request so a refresh takes effect. */\n token() {\n const t = typeof this._token === 'function' ? this._token() : this._token;\n return t || null;\n }\n /** Auth headers for a request, or nothing at all when there is no token to send. */\n authHeaders() {\n const t = this.token();\n return t ? { authorization: `Bearer ${t}` } : {};\n }\n\n async request(method, path, { body, query, signal, raw } = {}) {\n const url = this.baseUrl + path + (query ? '?' + new URLSearchParams(query) : '');\n return withRetry(\n async () => {\n const res = await this._fetch(url, {\n method,\n headers: { ...this.authHeaders(), ...(body ? { 'content-type': 'application/json' } : {}) },\n body: body ? JSON.stringify(body) : undefined,\n signal,\n });\n if (res.status === 429 || res.status >= 500) {\n // Read the structured error to decide retry: an explicitly non-retryable\n // failure (e.g. a per-file size limit) must fail fast with its real message,\n // not be retried 3× into a generic \"Server 429\". `raw` requests can't consume\n // the body here, so they stay status-based.\n if (!raw) {\n let e;\n try { const t = await res.text(); e = (t ? JSON.parse(t) : null)?.error; } catch { /* non-JSON body */ }\n if (e && e.retryable === false) throw new TroveError(e.code, e.message, { retryable: false, details: e.details });\n throw TroveError.transient(e?.message || `Server ${res.status}`);\n }\n throw TroveError.transient(`Server ${res.status}`);\n }\n if (raw) return res;\n const text = await res.text();\n const json = text ? JSON.parse(text) : null;\n if (!res.ok) {\n const e = json?.error || { code: 'internal', message: `Request failed (${res.status})` };\n throw new TroveError(e.code, e.message, { retryable: e.retryable, details: e.details });\n }\n return json;\n },\n { signal, retries: 3 },\n );\n }\n\n // --- browse / mutate -------------------------------------------------------\n\n capabilities() {\n return this.request('GET', '/api/capabilities');\n }\n /** Single-shot reachability probe (short timeout, no retries) — is the server\n * actually reachable, vs. `navigator.onLine` merely reporting an up interface? */\n async reachable(timeoutMs = 4000) {\n try {\n const signal = AbortSignal.timeout ? AbortSignal.timeout(timeoutMs) : undefined;\n const res = await this._fetch(this.baseUrl + '/api/capabilities', { method: 'GET', signal, headers: this.authHeaders() });\n return res.ok;\n } catch { return false; }\n }\n // Collection-scoped calls name their collection in the PATH. There is no default and\n // no `?collection=`: the server refuses a request that does not say which collection it\n // means, so a caller that forgets gets an error here rather than silently reaching one.\n /** Every item in a collection. */\n list(collection, opts = {}) {\n return this.request('GET', `${this.#scope(collection)}/items`, { query: opts });\n }\n /** Resolve an item by id, by `trove:` URI, or by name within a collection. */\n stat(ref, { collection, ...opts } = {}) {\n const key = String(ref).startsWith('trove:') ? 'uri' : 'id';\n // A name is only unique inside a collection, so resolving one needs the scope. An id\n // or a trove: URI names itself, and the flat resolve is fine for those.\n const base = collection ? `${this.#scope(collection)}/items/resolve` : '/api/items/resolve';\n return this.request('GET', base, { query: { [key]: ref, ...opts } });\n }\n #scope(collection) {\n if (!collection) throw new Error('This call is scoped to a collection — pass one');\n return `/api/collections/${encodeURIComponent(collection)}`;\n }\n /** What links to this item. */\n backlinks(id, opts = {}) {\n return this.request('GET', '/api/items/backlinks', { query: { id, ...opts } });\n }\n rename(id, newName) {\n return this.request('POST', '/api/items/rename', { body: { id, newName } });\n }\n remove(id) {\n return this.request('POST', '/api/items/delete', { body: { id } });\n }\n /** What's been deleted but not yet destroyed. */\n trash(collection) {\n return this.request('GET', `${this.#scope(collection)}/trash`);\n }\n restore(id) {\n return this.request('POST', '/api/trash/restore', { body: { id } });\n }\n /** Destroy for real — one item, or everything in a collection's trash. */\n purgeTrash({ id, collection } = {}) {\n // One item names itself; emptying a whole collection has to name the collection, and\n // says so in the URL — \"everything in here\" is the request that must never be able\n // to mean somewhere you did not point at.\n return id\n ? this.request('POST', '/api/trash/purge', { body: { id } })\n : this.request('POST', `${this.#scope(collection)}/trash/purge`);\n }\n search(q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/search` : '/api/search';\n return this.request('GET', base, { query: { q, ...opts } });\n }\n // Unified query: server transforms the raw string (parse/LLM) → runs it → returns\n // { query, results, resolved }. `resolved` is what was actually searched.\n query(q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/query` : '/api/query';\n return this.request('POST', base, { body: { q, ...opts } });\n }\n // Drive-wide tag/property filter (launcher #tag / #key:op:value).\n tagSearch(filters, q, { collection, ...opts } = {}) {\n const base = collection ? `${this.#scope(collection)}/tags/search` : '/api/tags/search';\n return this.request('POST', base, { body: { filters, q, ...opts } });\n }\n indexers() {\n return this.request('GET', '/api/indexers');\n }\n\n // --- background work + standing problems -----------------------------------\n // Tasks are in-flight and ephemeral; issues are what a failure left behind and are\n // durable. Ids can contain anything (an issue id embeds a node id), so every one of\n // these encodes before it becomes a path segment.\n tasks() {\n return this.request('GET', '/api/tasks');\n }\n cancelTask(id) {\n return this.request('POST', `/api/tasks/${encodeURIComponent(id)}/cancel`);\n }\n dismissTask(id) {\n return this.request('DELETE', `/api/tasks/${encodeURIComponent(id)}`);\n }\n issues() {\n return this.request('GET', '/api/issues');\n }\n retryIssue(id) {\n return this.request('POST', `/api/issues/${encodeURIComponent(id)}/retry`);\n }\n dismissIssue(id) {\n return this.request('DELETE', `/api/issues/${encodeURIComponent(id)}`);\n }\n reindex() {\n return this.request('POST', '/api/reindex');\n }\n /** Reconcile a collection against its object store (changes made outside Trove). */\n scanCollection(id) {\n return this.request('POST', `/api/collections/${encodeURIComponent(id)}/scan`);\n }\n\n /**\n * Check every collection's backing store for problems a browser would hit — chiefly a\n * missing CORS policy, which leaves the file list and search working while every file\n * fails to open.\n *\n * Worth asking from the browser rather than only on a timer: the server checks against\n * the origin of THIS request, and a bucket policy may name exactly one origin.\n */\n checkStorage() {\n return this.request('POST', '/api/diagnostics/storage');\n }\n\n // --- server plugin installs (account-scoped, synced across devices) ---------\n /** Upload a package zip for account install; returns the server install record. */\n async installPlugin(bytes, grants) {\n const q = grants && grants.length ? '?grants=' + encodeURIComponent(grants.join(',')) : '';\n const res = await this._fetch(this.baseUrl + '/api/plugins/install' + q, { method: 'POST', body: bytes, headers: this.authHeaders() });\n const json = await res.json().catch(() => null);\n if (!res.ok) {\n const e = json?.error || { code: 'internal', message: `Install failed (${res.status})` };\n throw new TroveError(e.code, e.message, { details: e.details });\n }\n return json.install;\n }\n installedPlugins() {\n return this.request('GET', '/api/plugins/installed');\n }\n async pluginPackage(id) {\n const res = await this._fetch(`${this.baseUrl}/api/plugins/${encodeURIComponent(id)}/package`, { headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('not_found', `Package for \"${id}\" not found`);\n return new Uint8Array(await res.arrayBuffer());\n }\n uninstallPluginServer(id) {\n return this.request('DELETE', `/api/plugins/${encodeURIComponent(id)}/install`);\n }\n // contribution: { semanticTexts?, tags?, metadata? } (legacy { documents, facet } ok).\n pushIndex(indexerId, nodeId, contribution) {\n return this.request('POST', `/api/index/${encodeURIComponent(indexerId)}`, { body: { nodeId, ...contribution } });\n }\n\n // --- identity --------------------------------------------------------------\n me() {\n return this.request('GET', '/api/me');\n }\n\n // --- collections -----------------------------------------------------------\n collections() {\n return this.request('GET', '/api/collections');\n }\n createCollection(body) {\n return this.request('POST', '/api/collections', { body });\n }\n\n // --- conversations, tags, sidecar ------------------------------------------\n sidecar(id) {\n return this.request('GET', `/api/items/${encodeURIComponent(id)}/sidecar`);\n }\n addComment(id, { body, parentId, mentions } = {}) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments`, { body: { body, parentId, mentions } });\n }\n editComment(id, cid, body) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}/edit`, { body: { body } });\n }\n deleteComment(id, cid) {\n return this.request('DELETE', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}`);\n }\n reactComment(id, cid, emoji, on) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/comments/${encodeURIComponent(cid)}/react`, { body: { emoji, on } });\n }\n setTag(id, name, value) {\n return this.request('POST', `/api/items/${encodeURIComponent(id)}/tags`, { body: { name, value } });\n }\n removeTag(id, name) {\n return this.request('DELETE', `/api/items/${encodeURIComponent(id)}/tags/${encodeURIComponent(name)}`);\n }\n\n // --- notifications & push --------------------------------------------------\n notifications() {\n return this.request('GET', '/api/notifications');\n }\n markNotificationsRead(ids) {\n return this.request('POST', '/api/notifications/read', { body: { ids } });\n }\n vapidKey() {\n return this.request('GET', '/api/push/vapid');\n }\n\n // --- API keys (admin) -------------------------------------------------------\n // Capability-only credentials; see core/apiKeys.js. `mintApiKey` is the one call in\n // this client whose response contains a secret, and it is the only chance to see it.\n apiKeys() {\n return this.request('GET', '/api/keys');\n }\n mintApiKey({ name, scopes, expiresAt = null }) {\n return this.request('POST', '/api/keys', { body: { name, scopes, expiresAt } });\n }\n revokeApiKey(id) {\n return this.request('DELETE', `/api/keys/${encodeURIComponent(id)}`);\n }\n subscribePush(subscription) {\n return this.request('POST', '/api/push/subscribe', { body: { subscription } });\n }\n\n /** URL for GET-ing bytes (used by <img>/<audio>/<video> and downloads). */\n downloadUrl(id, { attachment } = {}) {\n return `${this.baseUrl}/api/items/download?id=${encodeURIComponent(id)}${attachment ? '&disposition=attachment' : ''}`;\n }\n\n /**\n * Mint URLs that carry their own authorization, for the things that cannot send a\n * header — an <img src>, a <video src>, cache.add(). Batched: a gallery asks for what\n * it is about to draw, in one request. See platform/mediaUrls.js.\n */\n mintUrls(ids, op = 'media') {\n return this.request('POST', '/api/items/urls', { body: { ids, op } });\n }\n\n /**\n * Start a download in the browser.\n *\n * With no bearer token this is a plain navigation to the download URL — the browser\n * streams it, handles Range, and never buffers a 4 GB file in a tab. When a token IS\n * in play that isn't possible: an `<a href>` cannot carry an Authorization header, so\n * the navigation would arrive unauthenticated and 401. Rather than move the token into\n * the query string (where it lands in logs, history, and referrers), fetch the bytes\n * with the header and hand the browser a blob.\n *\n * The cost is honest and worth stating: the blob path holds the file in memory. It is\n * the price of bearer auth without a token-bearing URL, and it does not apply to the\n * common proxy-authenticated deployment, which takes the streaming path.\n */\n async download(id, name, { attachment = true } = {}) {\n const url = this.downloadUrl(id, { attachment });\n if (!this.token()) return { url, streamed: true };\n const res = await this._fetch(url, { headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('internal', `Download failed (${res.status})`);\n return { url: URL.createObjectURL(await res.blob()), streamed: false, revoke: true };\n }\n\n /** Read a whole file as text/bytes (small files, indexers). */\n async readBytes(id, { signal } = {}) {\n const res = await this._fetch(this.downloadUrl(id), { signal, headers: this.authHeaders() });\n if (!res.ok) throw new TroveError('internal', `Download failed (${res.status})`);\n return new Uint8Array(await res.arrayBuffer());\n }\n async readText(id, opts) {\n return new TextDecoder().decode(await this.readBytes(id, opts));\n }\n\n /**\n * Read at most `maxBytes` of a file as text.\n *\n * A viewer must never pull a whole file just to show the top of it. A drive holds\n * logs, exports and dumps that are hundreds of megabytes; `readText` on one of those\n * buffers the entire thing in the tab before a single character is drawn, and the\n * browser is gone before the user learns anything. A Range request costs one extra\n * byte over the wire and bounds the damage at the transfer rather than the render.\n *\n * The cut is at a BYTE boundary, which can land mid-character in UTF-8, so the\n * decoder is told to tolerate it — a trailing replacement glyph beats throwing away\n * the read. The last partial line is dropped for the same reason.\n *\n * @returns {Promise<{text: string, truncated: boolean, total: number|null}>}\n */\n async readTextCapped(id, { maxBytes = 512 * 1024, size = null, signal } = {}) {\n // Skip the Range when we already know the file fits. An empty file has no\n // satisfiable range, so asking for one turned \"open an empty note\" into an error\n // page; a 416 from any backend would do the same.\n const ranged = size == null || size > maxBytes;\n const res = await this._fetch(this.downloadUrl(id), {\n signal,\n headers: { ...this.authHeaders(), ...(ranged ? { range: `bytes=0-${maxBytes - 1}` } : {}) },\n });\n if (res.status === 416) return { text: '', truncated: false, total: 0 };\n if (!res.ok && res.status !== 206) throw new TroveError('internal', `Download failed (${res.status})`);\n const bytes = new Uint8Array(await res.arrayBuffer());\n // `Content-Range: bytes 0-N/TOTAL` is how we learn the real size; a server that\n // ignored the Range header just sent everything, which is also fine.\n const total = Number(/\\/(\\d+)$/.exec(res.headers.get('content-range') || '')?.[1]) || null;\n const truncated = bytes.length >= maxBytes && (total == null || total > bytes.length);\n let text = new TextDecoder('utf-8', { fatal: false }).decode(bytes);\n if (truncated) {\n const lastBreak = text.lastIndexOf('\\n');\n if (lastBreak > 0) text = text.slice(0, lastBreak);\n }\n return { text, truncated, total };\n }\n\n /**\n * Upload a File/Blob with progress + resume.\n * @param {Blob & {name?:string}} file\n * @param {object} opts\n * @param {string} opts.parentId\n * @param {string} [opts.name]\n * @param {(p:{loaded:number,total:number,ratio:number}) => void} [opts.onProgress]\n * @param {AbortSignal} [opts.signal]\n * @param {number} [opts.concurrency]\n * @returns {Promise<object>} the created node\n */\n async upload(file, opts) {\n const name = opts.name || file.name || 'untitled';\n const size = file.size;\n // Every step of an upload is retried, not just the parts.\n //\n // Multipart parts already had this; nothing else did — so a transient failure on\n // `create`, on the single presigned PUT, or on `complete` killed the whole upload on\n // the first stumble, while the same failure mid-multipart was shrugged off. The\n // single-PUT path is the one most uploads take (anything under the multipart floor),\n // which is to say the retries were on the rarer half.\n //\n // `withRetry` decides what is worth retrying — see errors.js. Notably a lost upload\n // session is NOT retryable, and must not be: a session that has genuinely expired or\n // been aborted will never come back, and hammering it just delays the error. That\n // case is what the manual retry is for.\n const step = (fn) => withRetry(fn, {\n signal: opts.signal,\n retries: 4,\n onRetry: ({ attempt, delayMs, error }) => opts.onRetry?.({ attempt, delayMs, message: error.message }),\n });\n\n const plan = await step(() => this.request('POST', `${this.#scope(opts.collection)}/uploads`, {\n body: { name, size, contentType: file.type || undefined },\n signal: opts.signal,\n }));\n // Hand the caller the server upload id so a cancel/failure can abort the session\n // (otherwise a multipart upload leaks server + storage state).\n if (plan.uploadId) opts.onStart?.(plan.uploadId);\n\n // Progress is measured against what TRAVELS, which for an encrypted upload is the\n // envelope — larger than the file by a header and a tag per chunk. Measured against the\n // file, the bar would pass 100% and sit there.\n const progress = new ProgressAggregator(plan.encryption?.storedSize || size, opts.onProgress);\n const t = plan.transfer || {};\n const completeUrl = plan.endpoints?.complete || `/api/uploads/${plan.uploadId}/complete`;\n\n if (plan.strategy === 'single') {\n // One presigned PUT straight to storage (bytes never touch our server).\n // Sealed here, before a byte leaves the browser, so the bucket only ever receives\n // ciphertext while the PUT still goes straight to it. The whole envelope is built in\n // memory, which is fine on this path: the plan only chooses `single` when what is\n // stored fits under the single-PUT limit.\n const body = plan.encryption ? await sealWhole(file, plan.encryption) : file;\n await step(() => xhrPut(t.url || plan.url, body, { headers: t.requiredHeaders, signal: opts.signal, onProgress: (l) => progress.set('single', l) }));\n const done = await step(() => this.request('POST', completeUrl, { body: {}, signal: opts.signal }));\n return done.node;\n }\n if (plan.strategy === 'direct-single') {\n const body = plan.encryption ? await sealWhole(file, plan.encryption) : file;\n await step(() => xhrPut(this.baseUrl + this.#partUrl(plan, 1), body, {\n // Our own server, so it needs our bearer token; `t.authHeaders` lets the plan\n // add its own and wins on a clash.\n headers: { ...this.authHeaders(), ...t.authHeaders },\n signal: opts.signal, onProgress: (l) => progress.set(1, l),\n }));\n const done = await step(() => this.request('POST', completeUrl, { body: {}, signal: opts.signal }));\n return done.node;\n }\n\n // Multipart, encrypted: sequential, and streamed.\n //\n // Two things stop the ordinary path working here. The parts have to be slices of the\n // ENVELOPE rather than of the file, and the envelope is produced in order — chunk n\n // cannot be sealed before chunk n-1, because the nonce is derived from its position. So\n // parts are produced and sent one at a time, and the concurrency the plaintext path\n // enjoys is not available.\n //\n // Streamed rather than assembled: building the whole envelope before slicing it would\n // hold a second copy of the file in a browser tab, which for the large files that\n // reach this path is exactly what it cannot afford.\n if (plan.encryption) {\n return this.#uploadSealed(file, plan, { ...opts, progress, step, completeUrl });\n }\n\n // Multipart (presign or direct).\n const partSize = plan.partSize;\n const partCount = plan.partCount ?? Math.ceil(size / partSize);\n // Resume: which parts already exist?\n let received = new Set();\n try {\n const statusUrl = plan.endpoints?.status || `/api/uploads/${plan.uploadId}/status`;\n const status = await this.request('GET', statusUrl, { signal: opts.signal });\n received = new Set(status.received || []);\n } catch { /* fresh upload */ }\n\n const parts = [];\n const jobs = [];\n for (let n = 1; n <= partCount; n++) {\n const start = (n - 1) * partSize;\n const blob = file.slice(start, Math.min(start + partSize, size));\n jobs.push({ n, blob });\n }\n\n const results = new Array(partCount);\n const concurrency = Math.min(opts.concurrency ?? 4, jobs.length);\n let cursor = 0;\n // When one part fails for good, abort the sibling workers' in-flight parts instead\n // of letting them keep PUTting bytes whose result we're about to discard. The inner\n // controller is chained to the caller's signal so a user cancel still propagates.\n const inner = new AbortController();\n const onOuterAbort = () => inner.abort();\n if (opts.signal) {\n if (opts.signal.aborted) inner.abort();\n else opts.signal.addEventListener('abort', onOuterAbort, { once: true });\n }\n const worker = async () => {\n while (cursor < jobs.length) {\n if (inner.signal.aborted) return;\n const { n, blob } = jobs[cursor++];\n if (received.has(n)) {\n progress.set(n, blob.size);\n continue;\n }\n const etag = await withRetry(\n () => this.#uploadPart(plan, n, blob, {\n signal: inner.signal, onProgress: (l) => progress.set(n, l),\n }),\n {\n signal: inner.signal,\n retries: 4,\n onRetry: ({ attempt, delayMs, error }) => opts.onRetry?.({ attempt, delayMs, part: n, message: error.message }),\n },\n );\n results[n - 1] = { partNumber: n, etag };\n }\n };\n try {\n await Promise.all(Array.from({ length: concurrency }, worker));\n } catch (err) {\n inner.abort(); // stop the other workers before surfacing the failure\n throw err;\n } finally {\n opts.signal?.removeEventListener('abort', onOuterAbort);\n }\n\n const reportedParts = results.filter(Boolean);\n const done = await step(() => this.request('POST', completeUrl, {\n body: { parts: reportedParts }, signal: opts.signal,\n }));\n return done.node;\n }\n\n // Expand an endpoint/transfer URL template's {partNumber} placeholder.\n #partUrl(plan, n) {\n const tmpl = plan.transfer?.partUrl || `/api/uploads/${plan.uploadId}/parts/{partNumber}`;\n return tmpl.replace('{partNumber}', String(n));\n }\n\n\n /**\n * A multipart upload of an encrypted object, one part at a time.\n *\n * Parts are gathered to the plan's part size because every part but the last has to clear\n * the backend's floor, and an envelope chunk is far smaller than that.\n */\n async #uploadSealed(file, plan, { signal, progress, step, completeUrl, onRetry }) {\n const enc = plan.encryption;\n const sealed = await encryptStream(fromHex(enc.key), file.stream(), {\n fingerprint: fromHex(enc.fingerprint),\n plaintextSize: file.size,\n chunkSize: enc.chunkSize,\n });\n const reader = sealed.getReader();\n const parts = [];\n let held = [];\n let size = 0;\n let n = 1;\n let sent = 0;\n\n const flush = async () => {\n const body = new Uint8Array(size);\n let at = 0;\n for (const p of held) { body.set(p, at); at += p.length; }\n held = [];\n size = 0;\n const partNumber = n++;\n const base = sent;\n const etag = await withRetry(\n () => this.#uploadPart(plan, partNumber, new Blob([body]), {\n signal, onProgress: (l) => progress.set(partNumber, l),\n }),\n {\n signal,\n retries: 4,\n onRetry: ({ attempt, delayMs, error }) => onRetry?.({ attempt, delayMs, part: partNumber, message: error.message }),\n },\n );\n sent = base + body.length;\n progress.set(partNumber, body.length);\n parts.push({ partNumber, etag });\n };\n\n for (;;) {\n const { value, done } = await reader.read();\n if (done) break;\n held.push(value);\n size += value.length;\n if (size >= plan.partSize) await flush();\n }\n // The final part may be under the floor, and only the final part may be.\n if (size || parts.length === 0) await flush();\n\n const finished = await step(() => this.request('POST', completeUrl, { body: { parts }, signal }));\n return finished.node;\n }\n\n async #uploadPart(plan, n, blob, { signal, onProgress }) {\n const t = plan.transfer || {};\n if (plan.strategy === 'presign') {\n const part = (t.parts || plan.parts)?.find((p) => p.partNumber === n);\n let url = part?.url;\n if (!url) {\n const signTmpl = plan.endpoints?.sign || `/api/uploads/${plan.uploadId}/parts/{partNumber}/sign`;\n const r = await this.request('POST', signTmpl.replace('{partNumber}', String(n)), { signal });\n url = r.url;\n }\n const res = await xhrPut(url, blob, { signal, onProgress, wantEtag: true });\n const etag = res.etag;\n const reportTmpl = plan.endpoints?.report || `/api/uploads/${plan.uploadId}/parts/{partNumber}/report`;\n await this.request('POST', reportTmpl.replace('{partNumber}', String(n)), { body: { etag }, signal });\n return etag;\n }\n // proxied: server records the etag; response body has it.\n const res = await xhrPut(this.baseUrl + this.#partUrl(plan, n), blob, {\n headers: { ...this.authHeaders(), ...t.authHeaders },\n signal, onProgress, wantJson: true,\n });\n return res.json?.etag;\n }\n\n async abortUpload(uploadId) {\n return this.request('DELETE', `/api/uploads/${uploadId}`);\n }\n}\n\nclass ProgressAggregator {\n constructor(total, cb) {\n this.total = total;\n this.cb = cb;\n this.parts = new Map();\n }\n set(key, loaded) {\n // Monotonic per part: a retried part restarts its XHR progress at 0, which would\n // otherwise pull the aggregate bar backwards. Never let a part's reported bytes drop.\n const prev = this.parts.get(key) || 0;\n if (loaded < prev) return;\n this.parts.set(key, loaded);\n if (!this.cb) return;\n let sum = 0;\n for (const v of this.parts.values()) sum += v;\n const loadedTotal = Math.min(sum, this.total);\n this.cb({ loaded: loadedTotal, total: this.total, ratio: this.total ? loadedTotal / this.total : 1 });\n }\n}\n\n// XHR PUT with upload progress + abort. Returns { status, etag?, json? }.\nfunction xhrPut(url, body, { signal, onProgress, wantEtag, wantJson, headers } = {}) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('PUT', url, true);\n for (const [k, v] of Object.entries(headers || {})) { try { xhr.setRequestHeader(k, v); } catch { /* forbidden header */ } }\n if (signal) {\n if (signal.aborted) {\n xhr.abort();\n return reject(TroveError.aborted());\n }\n signal.addEventListener('abort', () => xhr.abort(), { once: true });\n }\n xhr.upload.onprogress = (e) => onProgress?.(e.loaded);\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const out = { status: xhr.status };\n if (wantEtag) out.etag = xhr.getResponseHeader('ETag') || xhr.getResponseHeader('etag');\n if (wantJson) {\n try {\n out.json = JSON.parse(xhr.responseText);\n } catch { /* ignore */ }\n }\n resolve(out);\n } else if (xhr.status === 429 || xhr.status >= 500) {\n reject(TroveError.transient(`Upload part failed (${xhr.status})`));\n } else {\n reject(new TroveError('internal', `Upload failed (${xhr.status})`));\n }\n };\n xhr.onerror = () => reject(TroveError.transient('Network error during upload'));\n xhr.onabort = () => reject(TroveError.aborted());\n xhr.send(body);\n });\n}\n",
26
28
  "// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n , // determined by compression function\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data[0]) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush(ev.data[1]);\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n // can fail for cross-realm Uint8Array, but ok - only a small performance penalty\n w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function (sync) { w.postMessage([0, sync]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read 8 bytes\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n if (final) {\n // cleanup unneeded buffers/state to reduce memory usage\n this.s = this.o = {};\n this.b = et;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible. A separate DEFLATE stream may be concatenated\n * with the current output after a sync flush.\n */\n Deflate.prototype.flush = function (sync) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n // could technically skip writing the type-0 block for (this.s.r & 7) == 0,\n // but the deterministic trailer (00 00 FF FF) is useful in some situations\n if (sync) {\n var c = new u8(6);\n c[0] = this.s.r >> 3;\n // write empty, non-final type-0 block\n var ep = wfblk(c, this.s.r, et);\n this.s.r = 0;\n this.ondata(c.subarray(0, ep >> 3), false);\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Gzip.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, 0);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n else if (final) {\n Inflate.prototype.c.call(this, final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Zlib.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (ArrayBuffer.isView(val))\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];\n};\n// read zip64 header sizes\nvar z64hs = function (d, b, l, z, sc, su, off) {\n var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;\n var nf = nsc + nsu + noff;\n if (z && nf) {\n for (; b + 4 < e; b += 4 + b2(d, b + 2)) {\n if (b2(d, b) == 1) {\n return [\n nsc ? b8(d, b + 4 + 8 * nsu) : sc,\n nsu ? b8(d, b + 4) : su,\n noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,\n 1\n ];\n }\n }\n // z == 2 for unknown whether or not zip64\n if (z < 2)\n err(13);\n }\n return [sc, su, off, 0];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n // we shouldn't really do this cast, but properly handling ArrayBufferLike\n // makes the API unergonomic with Buffer\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (chunk, final) {\n // same as ZipPassThrough: cast to retain Buffer ergonomics\n this.ondata(null, chunk, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (chunk, final) {\n try {\n this.i.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (chunk, final) {\n if (this.i.terminate)\n chunk = slc(chunk, 0);\n this.i.push(chunk, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];\n if (dd)\n sc_1 = -1 - z64;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n",
27
29
  "// PluginRegistry — install records (manifest, package files, granted caps, trust\n// status, settings, secrets) persisted in IndexedDB so plugins survive reloads on\n// this device. Package bytes stay on-device (they can be large); non-secret\n// settings can also be mirrored to the server (see the settings service) so they\n// follow the user. A plugin's OWN data lives in per-scope SQLite databases (server\n// via the host API; on-device via the wasm store) — not here.\n\nconst DB = 'trove-plugins';\nconst STORE = 'installs';\n\nfunction openDb() {\n return new Promise((resolve, reject) => {\n const req = indexedDB.open(DB, 1);\n req.onupgradeneeded = () => {\n const db = req.result;\n if (!db.objectStoreNames.contains(STORE)) db.createObjectStore(STORE, { keyPath: 'id' });\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n });\n}\nfunction tx(db, mode, fn) {\n return new Promise((resolve, reject) => {\n const t = db.transaction(STORE, mode);\n const s = t.objectStore(STORE);\n let out;\n Promise.resolve(fn(s)).then((r) => (out = r));\n t.oncomplete = () => resolve(out);\n t.onerror = () => reject(t.error);\n });\n}\nconst reqP = (r) => new Promise((res, rej) => { r.onsuccess = () => res(r.result); r.onerror = () => rej(r.error); });\n\nexport class PluginRegistry {\n constructor() {\n this._db = null;\n }\n async #db() {\n return (this._db ??= await openDb());\n }\n /** record: { id, manifest, files:{path:Uint8Array}, grants, trust, settings, secrets, installedAt } */\n async save(record) {\n const db = await this.#db();\n await tx(db, 'readwrite', (s) => s.put(record));\n return record;\n }\n async get(id) {\n const db = await this.#db();\n return tx(db, 'readonly', (s) => reqP(s.get(id)));\n }\n async list() {\n const db = await this.#db();\n return tx(db, 'readonly', (s) => reqP(s.getAll()));\n }\n async remove(id) {\n const db = await this.#db();\n await tx(db, 'readwrite', (s) => s.delete(id));\n }\n async patch(id, patch) {\n const rec = await this.get(id);\n if (!rec) return null;\n const next = { ...rec, ...patch };\n await this.save(next);\n return next;\n }\n}\n\n",
28
30
  "// Client-side plugin storage: an on-device SQLite database per scope, run in the\n// HOST with sql.js (wasm) and persisted to IndexedDB. The sandboxed iframe can't\n// touch IndexedDB (opaque origin), so — like everything else — the host holds the\n// store and the plugin reaches it over RPC. It exposes the SAME async\n// SqliteDatabase surface as the server side, so ctx.storage.*.client mirrors\n// .server. Lazy: the wasm only loads the first time a plugin uses client storage.\n\nlet sqlPromise = null;\nfunction loadSql() {\n // locateFile points at the wasm we serve at the app root (build copies it; dev &\n // test serve it via middleware). Only fetched on first use. On failure we clear\n // the cached promise so a later attempt can retry rather than wedging forever.\n if (!sqlPromise) {\n sqlPromise = import('sql.js')\n .then((m) => (m.default || m)({ locateFile: () => '/sql-wasm.wasm' }))\n .catch((err) => { sqlPromise = null; throw err; });\n }\n return sqlPromise;\n}\n\n// --- IndexedDB blob persistence (host origin) --------------------------------\n\nconst IDB = 'trove-plugin-clientdb';\nconst STORE = 'dbs';\n\nfunction openIdb() {\n return new Promise((resolve, reject) => {\n const req = indexedDB.open(IDB, 1);\n req.onupgradeneeded = () => {\n const db = req.result;\n if (!db.objectStoreNames.contains(STORE)) db.createObjectStore(STORE);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n });\n}\nfunction idbOp(mode, fn) {\n return openIdb().then((db) => new Promise((resolve, reject) => {\n const t = db.transaction(STORE, mode);\n let out;\n Promise.resolve(fn(t.objectStore(STORE))).then((r) => (out = r));\n t.oncomplete = () => { db.close(); resolve(out); };\n t.onerror = () => { db.close(); reject(t.error); };\n }));\n}\nconst reqP = (r) => new Promise((res, rej) => { r.onsuccess = () => res(r.result); r.onerror = () => rej(r.error); });\nconst loadBytes = (key) => idbOp('readonly', (s) => reqP(s.get(key)));\nconst saveBytes = (key, bytes) => idbOp('readwrite', (s) => s.put(bytes, key));\nconst dropBytes = (key) => idbOp('readwrite', (s) => s.delete(key));\n\n// --- a single scoped database (conforms to SqliteDatabase) -------------------\n\nclass ClientDatabase {\n constructor(key, db) {\n this.key = key;\n this.db = db;\n this._saveTimer = null;\n }\n // Debounce persistence: export the whole (small, per-scope) db to IndexedDB\n // shortly after the last write.\n //\n // The write already returned `{ok:true}` to the plugin by the time this runs, so a\n // failure here is data the plugin believes it saved and hasn't. Nothing can be\n // returned to it any more — but it must at least be visible, not swallowed.\n #dirty() {\n clearTimeout(this._saveTimer);\n this._saveTimer = setTimeout(() => {\n this.flush().catch((err) => {\n console.error(`persisting plugin storage \"${this.key}\" failed`, err);\n this.onError?.(err, this.key);\n });\n }, 150);\n }\n async flush() {\n clearTimeout(this._saveTimer);\n this._saveTimer = null;\n await saveBytes(this.key, this.db.export());\n }\n async exec(sql) { this.db.exec(sql); this.#dirty(); return { ok: true }; }\n async run(sql, ...params) { this.db.run(sql, params); this.#dirty(); return { ok: true }; }\n async get(sql, ...params) {\n const stmt = this.db.prepare(sql);\n try { stmt.bind(params); return stmt.step() ? stmt.getAsObject() : null; }\n finally { stmt.free(); }\n }\n async all(sql, ...params) {\n const stmt = this.db.prepare(sql);\n const out = [];\n try { stmt.bind(params); while (stmt.step()) out.push(stmt.getAsObject()); }\n finally { stmt.free(); }\n return out;\n }\n async batch(statements = []) {\n this.db.run('BEGIN');\n try {\n for (const { sql, params = [] } of statements) this.db.run(sql, params);\n this.db.run('COMMIT');\n } catch (err) {\n try { this.db.run('ROLLBACK'); } catch { /* already rolled back */ }\n throw err;\n }\n this.#dirty();\n return { ok: true };\n }\n close() { clearTimeout(this._saveTimer); this.db.close(); }\n}\n\n// --- the pool ----------------------------------------------------------------\n\nexport class ClientSqlProvider {\n constructor({ onError } = {}) { this._pool = new Map(); this.onError = onError || null; }\n\n async obtain(key) {\n let db = this._pool.get(key);\n if (!db) {\n const SQL = await loadSql();\n const bytes = await loadBytes(key);\n db = new ClientDatabase(key, new SQL.Database(bytes || undefined));\n db.onError = this.onError;\n this._pool.set(key, db);\n }\n return db;\n }\n\n /** Drop a scope's database. Throws if the bytes can't be deleted — the caller\n * (uninstall) reports leftover on-device data rather than claiming a clean wipe. */\n async drop(key) {\n const db = this._pool.get(key);\n if (db) { db.close(); this._pool.delete(key); }\n await dropBytes(key);\n }\n}\n",
@@ -54,10 +56,10 @@
54
56
  "// Layer 2: actions and interceptors.\n//\n// Depends only on the container seam (`feed`, `resolve`, `lease`, `use`), so it\n// can be used with providers but without queries.\n\nimport { Container } from './providers.js';\n\n// `ErrorEvent` is not a global everywhere JavaScript runs, so fall back to an\n// equivalent shape. Listeners read `event.error` either way.\nconst DispatchErrorEvent =\n typeof ErrorEvent === 'function'\n ? ErrorEvent\n : class DispatchErrorEvent extends Event {\n constructor(type, { error, message = '' } = {}) {\n super(type);\n this.error = error;\n this.message = message;\n }\n };\n\nfunction messageOf(error) {\n return error && typeof error.message === 'string' ? error.message : String(error);\n}\n\n// The event an aborted dispatch ends on. `reason` is what `abort()` was given;\n// `error` is set only if the action threw on its way out, so nothing is lost by\n// reporting the abort instead of the throw.\nclass DispatchAbortEvent extends Event {\n constructor({ reason, error = null } = {}) {\n super('abort');\n this.reason = reason;\n this.error = error;\n }\n}\n\n// How a dispatch can end. All three are terminal: exactly one fires, once.\nconst TERMINAL = ['complete', 'error', 'abort'];\n\n// What `abort()` uses when given no reason. The same shape an AbortController\n// picks for itself, so `feed.reason` and `signal.reason` agree; `DOMException`\n// is not a global absolutely everywhere, hence the fallback.\nfunction abortError() {\n return typeof DOMException === 'function'\n ? new DOMException('The dispatch was aborted', 'AbortError')\n : Object.assign(new Error('The dispatch was aborted'), { name: 'AbortError' });\n}\n\nexport class Action {\n execute() {\n throw new Error('execute() not implemented');\n }\n}\n\n// The channel a dispatch reports on.\n//\n// Still an EventTarget, and still the only way results leave an action -- an\n// action that emits `progress` five times and then `result` is saying more than\n// a return value could. Two things are layered on top:\n//\n// feed.abort(reason) -- the caller is no longer interested. `signal` is\n// handed to the action and its interceptors, so the\n// work can stop; cooperatively, since nothing can\n// interrupt a running function.\n// feed.next(names) -- await one of `names`. This is the shape a request\n// handler wants: dispatch, await the event that\n// carries the answer, reply.\n//\n// A dispatch ends on exactly one of `complete`, `error` or `abort`. An aborted\n// one ends on `abort` and never on `complete`, because a scan that was stopped\n// at thirty percent did not complete, and saying it did is how \"it worked\" gets\n// reported about work that did not happen.\n//\n// `next` treats all three as terminal unless you ask for one by name. A promise\n// that never settles is the worst thing this could do to a caller -- there is no\n// timeout, no cancellation, and no error to log -- and an action that ends\n// without emitting what was awaited would otherwise hang it forever.\nexport class DispatchFeed extends EventTarget {\n #controller = new AbortController();\n #reason; // why this was aborted -- see abort()\n #settled = null; // { type, event } once complete/error has fired\n\n constructor() {\n super();\n // Registered before any caller's listener, so `settled` is already true by\n // the time their handler runs. This is what lets `next()` answer a caller\n // that arrives after the action is over instead of waiting for an event\n // that can no longer fire.\n for (const type of TERMINAL) {\n this.addEventListener(\n type,\n (event) => { this.#settled ??= { type, event }; },\n { once: true }\n );\n }\n }\n\n // Aborted when the caller gives up. Handed to the action, and to every\n // interceptor, as `signal`.\n get signal() {\n return this.#controller.signal;\n }\n\n // The terminal event, if the dispatch is over: `'complete'`, `'error'`, or\n // null while it is still running.\n get settled() {\n return this.#settled?.type ?? null;\n }\n\n // Why this was aborted, once it has been. Held here rather than read back off\n // `signal.reason` at the point of use: that value belongs to the runtime, and\n // it is what `next()` rejects with, so it must never come back undefined --\n // rejecting with `undefined` breaks every caller that writes `catch (e) {\n // e.message }`. (Bun 1.3 does drop it under memory pressure; even without\n // that, the guarantee is cheaper to make than to depend on.)\n get reason() {\n return this.#reason;\n }\n\n // Stop caring about this dispatch. The action decides when to notice --\n // there is no way to interrupt a running function -- but anything waiting on\n // `next()` rejects at once, because the point of aborting is not to wait.\n abort(reason) {\n if (this.#controller.signal.aborted) {\n return; // first abort wins, as with AbortController\n }\n // Recorded BEFORE aborting. `abort()` dispatches synchronously, so a\n // `next()` waiting on the signal rejects during this call -- with the reason\n // if it is already here, and with undefined if it is not.\n this.#reason = reason ?? abortError();\n this.#controller.abort(this.#reason);\n }\n\n /**\n * Resolve with the first of `names` to fire.\n *\n * @param {string|string[]} names event name, or names, to wait for\n * @param {{signal?: AbortSignal}} [options] the caller's own cancellation,\n * separate from `feed.abort()` -- an HTTP handler passes the request's\n * signal here so a disconnect unblocks it without aborting the action.\n * @returns {Promise<Event>} the event that fired\n */\n next(names, { signal } = {}) {\n const wanted = new Set(Array.isArray(names) ? names : [names]);\n if (wanted.size === 0) {\n throw new TypeError('next() requires at least one event name');\n }\n\n // Aborting and then awaiting `abort` is the ordinary wind-down: you have\n // stopped caring about the answer but still need to know the work stopped,\n // to release something or to reply. So a wait for the abort event is not\n // pre-empted by the abort itself -- everything else is, because the point of\n // giving up is not to keep waiting for the action to notice.\n const awaitingTheEnd = wanted.has('abort');\n\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n if (this.#controller.signal.aborted && !awaitingTheEnd && !this.#settled) {\n reject(this.#reason);\n return;\n }\n // Already over. Answer from what was recorded rather than waiting for an\n // event that has fired once and will not fire again.\n if (this.#settled) {\n this.#finish(resolve, reject, this.#settled, wanted);\n return;\n }\n\n // One controller unregisters every listener below at once, on whichever\n // path settles first.\n const stop = new AbortController();\n const options = { signal: stop.signal };\n const settle = (fn) => (value) => {\n stop.abort();\n fn(value);\n };\n\n for (const name of wanted) {\n this.addEventListener(name, settle(resolve), options);\n }\n // Every terminal event not asked for by name ends the wait, because after\n // one of them nothing else will ever fire.\n for (const type of TERMINAL) {\n if (wanted.has(type)) {\n continue;\n }\n this.addEventListener(\n type,\n (event) => settle(reject)(endedWithout(type, event, wanted)),\n options\n );\n }\n if (!awaitingTheEnd) {\n this.#controller.signal.addEventListener(\n 'abort',\n () => settle(reject)(this.#reason),\n options\n );\n }\n signal?.addEventListener('abort', () => settle(reject)(signal.reason), options);\n });\n }\n\n #finish(resolve, reject, settled, wanted) {\n if (wanted.has(settled.type)) {\n resolve(settled.event);\n } else {\n reject(endedWithout(settled.type, settled.event, wanted));\n }\n }\n}\n\n// Why a wait ended without what it was waiting for. The action's own error and\n// the abort reason are handed back unwrapped, so a caller mapping them onto\n// something else -- an HTTP status, say -- still can.\nfunction endedWithout(type, event, wanted) {\n if (type === 'error') {\n return event.error;\n }\n if (type === 'abort') {\n return event.reason;\n }\n return missing(wanted);\n}\n\nfunction missing(wanted) {\n return new Error(\n `The dispatch completed without emitting ${[...wanted].map((n) => `'${n}'`).join(' or ')}`\n );\n}\n\n// Runs actions through a stack of interceptors.\nexport class Dispatcher {\n #container;\n #interceptors;\n\n constructor({ container, interceptors } = {}) {\n this.#container = container ?? new Container();\n this.#interceptors = interceptors ? [...interceptors] : [];\n }\n\n get container() {\n return this.#container;\n }\n\n get feed() {\n return this.#container.feed;\n }\n\n // Dispatch an action. Returns the dispatch feed immediately; the action\n // itself runs on a later turn of the event loop.\n dispatch(actionInstance) {\n if (!(actionInstance instanceof Action)) {\n throw new TypeError('dispatch() requires an instance of Action');\n }\n\n const container = this.#container;\n const interceptors = this.#interceptors;\n const engineFeed = container.feed;\n const dispatchFeed = new DispatchFeed();\n\n setTimeout(async () => {\n const enteredInterceptors = [];\n let state = {};\n let error = null;\n\n const applyState = (nextState) => {\n if (nextState !== undefined) {\n state = nextState;\n }\n };\n\n try {\n // Phase 1: Run 'enter' interceptors.\n for (const interceptor of interceptors) {\n // Recorded before running so a failing 'enter' still gets unwound.\n enteredInterceptors.push(interceptor);\n if (!interceptor.enter) {\n continue;\n }\n\n applyState(\n await container.use(interceptor.deps, (resources) =>\n interceptor.enter(resources, {\n dispatchFeed,\n engineFeed,\n signal: dispatchFeed.signal,\n state,\n action: actionInstance,\n })\n )\n );\n }\n\n // Phase 2: Obtain and execute the main action. Instance deps override\n // static ones of the same name.\n const lease = await container.lease(\n actionInstance.constructor.deps,\n actionInstance.deps\n );\n try {\n await actionInstance.execute(lease.resources, {\n dispatchFeed,\n engineFeed,\n // Cooperative: aborting cannot interrupt a running function, so an\n // action that wants to be stoppable checks this, or hands it to\n // something that does (fetch, a scan loop, another dispatch).\n signal: dispatchFeed.signal,\n state,\n });\n } finally {\n await lease.release();\n }\n } catch (e) {\n error = e;\n } finally {\n // Phase 3: Unwind the stack in reverse.\n //\n // Every interceptor that entered gets exactly ONE unwind call. That is\n // what makes it safe to acquire something in `enter`, so `abort` falls\n // back to the hook that would have run without it rather than to\n // nothing -- an interceptor that does not know about aborting must\n // still be given the chance to close what it opened.\n //\n // aborted -> abort ?? (error ? error : leave)\n // error -> error ?? nothing\n // otherwise -> leave ?? nothing\n //\n // Which matters because of what `leave` means to the obvious\n // interceptor: enter/begin, leave/commit, error/rollback. Without an\n // `abort` hook that one commits the work of a dispatch that was\n // cancelled half way through -- the same lie the feed used to tell by\n // ending an aborted dispatch on `complete`.\n for (let i = enteredInterceptors.length - 1; i >= 0; i--) {\n const interceptor = enteredInterceptors[i];\n // Read per iteration: an abort landing mid-unwind is reflected by the\n // interceptors that have not run yet, rather than being missed.\n const aborted = dispatchFeed.signal.aborted;\n try {\n if (aborted && interceptor.abort) {\n applyState(\n await container.use(interceptor.deps, (resources) =>\n interceptor.abort(resources, {\n dispatchFeed,\n engineFeed,\n signal: dispatchFeed.signal,\n action: actionInstance,\n state,\n reason: dispatchFeed.reason,\n // Set when the action threw on its way out -- usually\n // because it honoured the signal. There is no `handled()`\n // here: a cancellation cannot be handled into a success,\n // because the work did not happen.\n error,\n })\n )\n );\n } else if (error && interceptor.error) {\n const errorContext = {\n dispatchFeed,\n engineFeed,\n signal: dispatchFeed.signal,\n action: actionInstance,\n state,\n error,\n handled: () => {\n error = null;\n },\n };\n applyState(\n await container.use(interceptor.deps, (resources) =>\n interceptor.error(resources, errorContext)\n )\n );\n } else if (!error && interceptor.leave) {\n applyState(\n await container.use(interceptor.deps, (resources) =>\n interceptor.leave(resources, {\n dispatchFeed,\n engineFeed,\n signal: dispatchFeed.signal,\n state,\n action: actionInstance,\n })\n )\n );\n }\n } catch (e) {\n error = e;\n }\n }\n\n // An aborted dispatch ends on `abort`, whatever the action did on its\n // way out. It did not complete -- it was stopped -- and an action that\n // threw because it honoured the signal threw *because* of the abort, so\n // reporting the throw would name the symptom rather than the cause. The\n // error is carried on the event either way, so nothing is lost.\n if (dispatchFeed.signal.aborted) {\n dispatchFeed.dispatchEvent(\n new DispatchAbortEvent({ reason: dispatchFeed.reason, error })\n );\n } else if (error) {\n dispatchFeed.dispatchEvent(\n new DispatchErrorEvent('error', { error, message: messageOf(error) })\n );\n } else {\n dispatchFeed.dispatchEvent(new Event('complete'));\n }\n }\n });\n\n return dispatchFeed;\n }\n}\n",
55
57
  "// Layer 3: queries.\n//\n// Depends on the container seam, and optionally on *anything* with a\n// `dispatch(action)` method for queries that declare a `bootAction` or\n// `killAction`. It does not import the actions layer, so queries can be used\n// with providers alone.\n\nimport { Container } from './providers.js';\nimport { report } from './internal.js';\n\nexport class Query {\n // A query that implements `fetch` and not `boot` is a ONE-SHOT: subscribing to\n // it fetches once, hands the value over, and completes. See QueryController's\n // boot() for why that is the fallback rather than an error.\n boot() {\n throw new Error('boot() not implemented, and no fetch() to fall back to');\n }\n kill() {}\n}\n\n// One live realization of a query instance, shared by all of its observers.\nclass QueryController {\n #store;\n #query;\n #lease = null;\n #booting = null;\n #booted = false;\n #killing = null;\n #received = Promise.withResolvers();\n #hasValue = false;\n #currentValue = undefined;\n #dead = false;\n #bootFeed = undefined;\n #killFeed = undefined;\n\n observers = new Set();\n\n constructor(store, query) {\n this.#store = store;\n this.#query = query;\n this.notify = this.notify.bind(this);\n }\n\n get hasValue() {\n return this.#hasValue;\n }\n\n get currentValue() {\n return this.#currentValue;\n }\n\n // Resolves true once a value has arrived, false if the query died first.\n // A live query that never notifies leaves this pending -- that is what makes\n // peek() on such a query wait rather than fall back to fetch().\n get received() {\n return this.#received.promise;\n }\n\n get bootFeed() {\n return this.#bootFeed;\n }\n\n get killFeed() {\n return this.#killFeed;\n }\n\n // A lifecycle action is fire-and-forget -- nothing is waiting on its feed, so\n // a failure would otherwise vanish. Route it to the same channel as every\n // other unpropagatable error, with enough context to place it.\n #dispatchLifecycleAction(action, label) {\n const feed = this.#store._dispatch(action);\n\n feed.addEventListener(\n 'error',\n (event) => {\n report(\n new Error(\n `${this.#query.constructor.name} ${label} (${action.constructor.name}) failed`,\n { cause: event.error }\n )\n );\n },\n { once: true }\n );\n\n return feed;\n }\n\n notify(nextValue) {\n if (this.#dead) {\n return;\n }\n\n this.#currentValue = nextValue;\n\n if (!this.#hasValue) {\n this.#hasValue = true;\n this.#received.resolve(true);\n }\n\n // Copied so an observer unsubscribing mid-notify doesn't skip its peers.\n for (const observer of [...this.observers]) {\n try {\n observer.next?.(nextValue);\n } catch (err) {\n report(err);\n }\n }\n }\n\n boot() {\n if (this.#booting) {\n return this.#booting;\n }\n\n this.#booting = (async () => {\n try {\n if (this.#query.bootAction) {\n this.#bootFeed = this.#dispatchLifecycleAction(\n this.#query.bootAction,\n 'bootAction'\n );\n }\n\n this.#lease = await this.#store._container.lease(\n this.#query.constructor.deps,\n this.#query.deps\n );\n\n const context = {\n notify: this.notify,\n engineFeed: this.#store._container.feed,\n bootFeed: this.#bootFeed,\n };\n\n // A query that never overrode `boot` is a read: it has one answer and no\n // way to learn of a second. Rather than failing -- which is what the\n // base `boot` would do, and it failed QUIETLY, leaving the subscriber\n // waiting for a value that was never coming -- fetch once, hand the\n // value over, and complete. That is an ordinary single-value\n // observable, so a consumer can subscribe to any query without knowing\n // in advance whether it is live.\n if (this.#query.boot === Query.prototype.boot) {\n if (typeof this.#query.fetch !== 'function') {\n throw new Error(\n `${this.#query.constructor.name} implements neither boot() nor fetch()`\n );\n }\n this.notify(await this.#query.fetch(this.#lease.resources, context));\n // Evicts, completes every observer, and releases the lease -- and\n // evicting is what makes the NEXT subscribe fetch again rather than\n // serving a value that has no way of ever being refreshed.\n await this.#teardown();\n } else {\n await this.#query.boot(this.#lease.resources, context);\n }\n } catch (err) {\n report(err);\n // A query that failed to boot is not a query anyone can wait on.\n await this.#teardown(err);\n } finally {\n this.#booted = true;\n }\n })();\n\n return this.#booting;\n }\n\n kill() {\n if (this.#killing) {\n return this.#killing;\n }\n\n // Never tear down on top of an in-flight boot -- but when boot has already\n // settled, run the teardown eagerly rather than punting it to a later tick.\n this.#killing = this.#booted\n ? this.#runKill()\n : Promise.resolve(this.#booting).then(() => this.#runKill());\n\n return this.#killing;\n }\n\n async #runKill() {\n if (this.#dead) {\n return;\n }\n\n try {\n if (this.#query.killAction) {\n this.#killFeed = this.#dispatchLifecycleAction(\n this.#query.killAction,\n 'killAction'\n );\n }\n if (this.#query.kill) {\n await this.#query.kill(this.#lease?.resources ?? {}, {\n bootFeed: this.#bootFeed,\n killFeed: this.#killFeed,\n engineFeed: this.#store._container.feed,\n notify: this.notify,\n });\n }\n } catch (err) {\n report(err);\n } finally {\n await this.#teardown();\n }\n }\n\n /**\n * @param {any} [error] when the query is ending BECAUSE something failed.\n * Delivered to observers that implement `error`, which matters most for a\n * one-shot read: a fetch that threw must not look to its subscriber like an\n * empty success. Observers that do not implement it still get `complete`,\n * so nothing that worked before behaves differently, and `report` still runs\n * either way so a failure is never simply swallowed.\n */\n async #teardown(error) {\n if (this.#dead) {\n return;\n }\n this.#dead = true;\n\n this.#store._evict(this.#query, this);\n\n const observers = [...this.observers];\n this.observers.clear();\n for (const observer of observers) {\n try {\n if (error !== undefined && observer.error) {\n observer.error(error);\n } else {\n observer.complete?.();\n }\n } catch (err) {\n report(err);\n }\n }\n\n if (!this.#hasValue) {\n this.#received.resolve(false);\n }\n\n const lease = this.#lease;\n this.#lease = null;\n if (lease) {\n await lease.release();\n }\n }\n}\n\n// Realizes queries and keeps one live controller per query instance.\nexport class QueryStore {\n #container;\n #dispatcher;\n #controllers;\n #disposed = false;\n\n constructor({ container, dispatcher, createControllerMap } = {}) {\n this.#container = container ?? new Container();\n this.#dispatcher = dispatcher ?? null;\n this.#controllers = createControllerMap?.() ?? new Map();\n }\n\n get container() {\n return this.#container;\n }\n\n get feed() {\n return this.#container.feed;\n }\n\n // Internal seams used by QueryController.\n get _container() {\n return this.#container;\n }\n\n _dispatch(action) {\n if (!this.#dispatcher) {\n throw new Error(\n 'A query declared a bootAction/killAction but no dispatcher was given to QueryStore'\n );\n }\n return this.#dispatcher.dispatch(action);\n }\n\n _evict(queryInstance, controller) {\n if (this.#controllers.get(queryInstance) === controller) {\n this.#controllers.delete(queryInstance);\n }\n }\n\n #queryDeps(queryInstance) {\n return [queryInstance.constructor.deps, queryInstance.deps];\n }\n\n // Realizes a query. Call `subscribe` on the returned object to use it as an\n // RxJS style observable, or `peek` to get a look at the current value if the\n // query is active, or fetch it otherwise.\n query(queryInstance) {\n if (!(queryInstance instanceof Query)) {\n throw new TypeError('query() requires an instance of Query');\n }\n\n return {\n subscribe: (observerOrNext) => {\n if (this.#disposed) {\n throw new Error('The query store has been disposed');\n }\n\n const observer =\n typeof observerOrNext === 'function'\n ? { next: observerOrNext }\n : observerOrNext || {};\n\n let controller = this.#controllers.get(queryInstance);\n if (controller) {\n controller.observers.add(observer);\n if (controller.hasValue) {\n try {\n observer.next?.(controller.currentValue);\n } catch (err) {\n report(err);\n }\n }\n } else {\n controller = new QueryController(this, queryInstance);\n this.#controllers.set(queryInstance, controller);\n controller.observers.add(observer);\n controller.boot();\n }\n\n let closed = false;\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n if (closed) {\n return;\n }\n closed = true;\n\n // No complete() for the unsubscriber: withdrawing is not the query\n // ending. complete() stays reserved for a query dying underneath\n // observers that are still attached (see #teardown).\n controller.observers.delete(observer);\n if (controller.observers.size === 0) {\n // Dropped from the registry first, so a subscribe that arrives\n // while the controller is dying gets a fresh one.\n this._evict(queryInstance, controller);\n controller.kill();\n }\n },\n };\n },\n\n // Resolves with the active query's current value, waiting for its first\n // one if it has not emitted yet. If the query is not active -- or dies\n // before emitting -- falls through to the query's fetch().\n //\n // A live query that never emits therefore leaves this pending until it\n // is killed. That is deliberate: peek() on an active query answers from\n // that query, and a query with subscribers is expected to produce a\n // value. Callers that cannot block should race it themselves.\n peek: async () => {\n const controller = this.#controllers.get(queryInstance);\n if (controller && (await controller.received)) {\n return controller.currentValue;\n }\n\n if (typeof queryInstance.fetch !== 'function') {\n throw new TypeError(\n `${queryInstance.constructor.name} is not active and does not implement fetch()`\n );\n }\n\n const lease = await this.#container.lease(...this.#queryDeps(queryInstance));\n try {\n return await queryInstance.fetch(lease.resources, {\n engineFeed: this.#container.feed,\n bootFeed: controller?.bootFeed,\n killFeed: controller?.killFeed,\n });\n } finally {\n await lease.release();\n }\n },\n };\n }\n\n // Kills every live query. Idempotent.\n async dispose() {\n if (this.#disposed) {\n return;\n }\n this.#disposed = true;\n\n // A custom controller map is not required to be enumerable.\n for (const controller of [...(this.#controllers.values?.() ?? [])]) {\n await controller.kill();\n }\n }\n}\n",
56
58
  "// The full stack: providers + actions + queries, wired together.\n//\n// `Engine` is a facade. Everything it does is available from the three layers\n// directly; it exists so the common case stays a one-liner.\n\nimport { Container } from './providers.js';\nimport { Dispatcher } from './actions.js';\nimport { QueryStore } from './queries.js';\n\nexport class Engine {\n #container;\n #dispatcher;\n #queries;\n #disposed = false;\n\n constructor({ providers, interceptors, hooks, container, dispatcher, queries } = {}) {\n // Each layer can be supplied pre-built, which is how you swap one out\n // (a stub container in tests, a dispatcher shared with another engine).\n this.#container = container ?? new Container({ providers });\n this.#dispatcher =\n dispatcher ?? new Dispatcher({ container: this.#container, interceptors });\n this.#queries =\n queries ??\n new QueryStore({\n container: this.#container,\n dispatcher: this.#dispatcher,\n createControllerMap: hooks?.createQueryControllersMap,\n });\n }\n\n get container() {\n return this.#container;\n }\n\n get dispatcher() {\n return this.#dispatcher;\n }\n\n get queries() {\n return this.#queries;\n }\n\n get feed() {\n return this.#container.feed;\n }\n\n // Dispatch an action.\n dispatch(actionInstance) {\n return this.#dispatcher.dispatch(actionInstance);\n }\n\n // Realizes a query.\n query(queryInstance) {\n return this.#queries.query(queryInstance);\n }\n\n async dispose() {\n if (this.#disposed) {\n return;\n }\n this.#disposed = true;\n\n // Queries first: killing them releases resources back to the providers\n // that are about to be disposed.\n await this.#queries.dispose();\n await this.#container.dispose();\n }\n}\n",
57
- "// Reactive data services the workbench renders from. These hold *data* state\n// (the current collection's items, search results, in-flight transfers) as\n// opposed to the shell's UI state (WorkbenchService). ngin Actions mutate them;\n// the UI `watch`es them. Each is a plain cell wrapper so the render layer stays\n// declarative.\n\nimport { cell } from '../runtime.js';\n\nexport class ExplorerService {\n constructor(settings) {\n this.settings = settings;\n this.state = {\n items: [], loading: false, error: null,\n selection: [], sort: settings.get('explorer.sort'), order: settings.get('explorer.sortOrder'),\n // No collection until one is chosen or created. `gate` is 'create' | 'choose' | null\n // — when set, it is the ONLY thing the workbench shows, because every request needs\n // a collection and there is nothing sensible to render without one.\n collectionId: null, collections: [], canCreateCollection: false, gate: null,\n // `stats` is the whole collection; `items` is the page on screen. Keeping both\n // is what lets the UI say \"500 of 3,006\" instead of quietly claiming 500.\n stats: null, usage: null, nextCursor: null, loadingMore: false, trash: null,\n };\n this.cell = cell(this.state);\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n /**\n * @param {string[]} ids\n * @param {{additive?: boolean, nodes?: object[]}} [opts] `nodes` is the caller's own\n * copy of what it selected — pass it whenever you have it (see selectedNodes).\n */\n select(ids, { additive = false, nodes = null } = {}) {\n const next = additive ? Array.from(new Set([...this.state.selection, ...ids])) : ids;\n // Selecting what is already selected must not emit. The launcher syncs the\n // highlighted row into here on every mouseenter, and a state push per mouse move\n // would re-render the list under the pointer.\n const same = next.length === this.state.selection.length\n && next.every((id, i) => id === this.state.selection[i]);\n if (same) return;\n this.set({ selection: next, selectionNodes: nodes && !additive ? nodes : null });\n }\n /**\n * The nodes the selection refers to.\n *\n * Resolving ids against `items` only finds rows on the LOADED PAGE of the CURRENT\n * collection — and the launcher's rows come from search (which the server scopes to\n * every readable collection) and from recents (which survive a collection switch).\n * So every row reached by searching resolved to nothing, and rename / move-to-trash /\n * copy-link returned silently while `explorer.hasSelection` said there was a\n * selection. Preferring the nodes the selecting caller already held fixes the whole\n * class; the `items` lookup stays for callers that only have ids.\n */\n selectedNodes() {\n const held = this.state.selectionNodes;\n if (held?.length) return held.filter((n) => this.state.selection.includes(n.id));\n return this.state.items.filter((i) => this.state.selection.includes(i.id));\n }\n}\n\n/**\n * API keys, for the admin screen that manages them.\n *\n * Its own service rather than a corner of ExplorerService because it is a different\n * lifetime: keys are read when someone opens Settings and never again, so they should not\n * be part of the state every render of the file list walks over.\n *\n * `minted` holds the one secret a mint returns. It lives here, in memory, and is dropped\n * the moment the admin dismisses it — the server cannot show it again, so the UI is the\n * only place it ever exists, and it should not persist anywhere that outlives the tab.\n */\nexport class ApiKeysService {\n constructor() {\n this.state = {\n keys: [], loading: false, loaded: false, error: null, minted: null, busy: null,\n // The mint form. Held here rather than in the DOM so the section stays a pure\n // function of state — and so a half-filled form survives a re-render caused by\n // something else on the settings screen.\n draft: null,\n };\n this.cell = cell(this.state);\n }\n\n /** Open the mint form, empty. */\n startDraft() {\n this.set({ draft: { name: '', expiresInDays: '', caps: {} }, error: null });\n }\n cancelDraft() {\n this.set({ draft: null });\n }\n patchDraft(patch) {\n if (!this.state.draft) return;\n this.set({ draft: { ...this.state.draft, ...patch } });\n }\n\n /**\n * Toggle one capability on one collection in the draft.\n *\n * `admin` is not treated specially here — it is offered as itself and the server\n * expands it. Pre-ticking read/write/delete when admin is chosen would suggest they\n * are separable afterwards, and they are not.\n */\n toggleCap(collectionId, capability) {\n if (!this.state.draft) return;\n const caps = { ...this.state.draft.caps };\n const held = new Set(caps[collectionId] || []);\n if (held.has(capability)) held.delete(capability);\n else held.add(capability);\n if (held.size) caps[collectionId] = [...held];\n else delete caps[collectionId];\n this.patchDraft({ caps });\n }\n\n /** The draft as the API wants it, or null when it would grant nothing. */\n draftScopes() {\n const caps = this.state.draft?.caps || {};\n const scopes = Object.entries(caps)\n .filter(([, list]) => list.length)\n .map(([collectionId, capabilities]) => ({ collectionId, capabilities }));\n return scopes.length ? scopes : null;\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n /** Forget the freshly minted secret. Called on dismiss, and after a copy. */\n clearMinted() {\n if (this.state.minted) this.set({ minted: null });\n }\n}\n\nexport class SearchClientService {\n constructor() {\n this.state = { query: '', mode: 'hybrid', results: [], loading: false, error: null, ran: false, paletteFiles: [], paletteQuery: '', paletteLoading: false, paletteError: null };\n this.cell = cell(this.state);\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n}\n\n/**\n * Uploads in flight.\n *\n * This owns the DETAIL an upload needs and a generic task doesn't — bytes moved, an\n * AbortController, per-file retry. It also projects each transfer into ActivityService\n * so the drive has ONE list of \"what is happening\", covering work on both sides of the\n * wire: an upload running in this browser and a reindex running on the server show up\n * together, because a user doesn't care which machine is busy.\n *\n * The projection is one-way and this stays the owner. Two writable copies of the same\n * fact is how they drift.\n */\nexport class TransfersService {\n /** @param {import('./activity.js').ActivityService} [activity] */\n constructor(activity = null) {\n this.state = { items: [] }; // { id, name, direction, ratio, loaded, total, status, error }\n this.cell = cell(this.state);\n this._controllers = new Map();\n this.activity = activity;\n this._tasks = new Map(); // transfer id -> activity task handle\n }\n observe() {\n return this.cell;\n }\n #emit() {\n this.cell.setValue(this.state);\n }\n start(id, name, total, controller) {\n this._controllers.set(id, controller);\n this.state = { items: [...this.state.items, { id, name, direction: 'up', ratio: 0, loaded: 0, total, status: 'active', error: null }] };\n this.#emit();\n const task = this.activity?.start({\n kind: 'transfer', title: `Uploading ${name}`, total: total || null, unit: 'bytes',\n onCancel: () => this.cancel(id),\n });\n if (task) this._tasks.set(id, task);\n }\n progress(id, { loaded, total, ratio }) {\n this.state = { items: this.state.items.map((t) => (t.id === id ? { ...t, loaded, total, ratio } : t)) };\n this.#emit();\n this._tasks.get(id)?.progress({ done: loaded, total: total || null });\n }\n finish(id, status = 'done', error = null) {\n this.state = { items: this.state.items.map((t) => (t.id === id ? { ...t, status, error, ratio: status === 'done' ? 1 : t.ratio } : t)) };\n this._controllers.delete(id);\n this.#emit();\n const task = this._tasks.get(id);\n if (task) {\n if (status === 'done') task.succeed();\n else if (status === 'cancelled') task.cancel();\n else task.fail(error || new Error('Upload failed'));\n this._tasks.delete(id);\n }\n if (status === 'done') setTimeout(() => this.dismiss(id), 4000);\n }\n cancel(id) {\n this._controllers.get(id)?.abort();\n this.finish(id, 'cancelled');\n }\n dismiss(id) {\n this.state = { items: this.state.items.filter((t) => t.id !== id) };\n this.#emit();\n }\n clearDone() {\n this.state = { items: this.state.items.filter((t) => t.status === 'active') };\n this.#emit();\n }\n}\n",
59
+ "// Reactive data services the workbench renders from. These hold *data* state\n// (the current collection's items, search results, in-flight transfers) as\n// opposed to the shell's UI state (WorkbenchService). ngin Actions mutate them;\n// the UI `watch`es them. Each is a plain cell wrapper so the render layer stays\n// declarative.\n\nimport { cell } from '../runtime.js';\n\nexport class ExplorerService {\n constructor(settings) {\n this.settings = settings;\n this.state = {\n items: [], loading: false, error: null,\n selection: [], sort: settings.get('explorer.sort'), order: settings.get('explorer.sortOrder'),\n // No collection until one is chosen or created. `gate` is 'create' | 'choose' | null\n // — when set, it is the ONLY thing the workbench shows, because every request needs\n // a collection and there is nothing sensible to render without one.\n collectionId: null, collections: [], canCreateCollection: false, gate: null,\n // `stats` is the whole collection; `items` is the page on screen. Keeping both\n // is what lets the UI say \"500 of 3,006\" instead of quietly claiming 500.\n stats: null, usage: null, nextCursor: null, loadingMore: false, trash: null,\n };\n this.cell = cell(this.state);\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n /**\n * @param {string[]} ids\n * @param {{additive?: boolean, nodes?: object[]}} [opts] `nodes` is the caller's own\n * copy of what it selected — pass it whenever you have it (see selectedNodes).\n */\n select(ids, { additive = false, nodes = null } = {}) {\n const next = additive ? Array.from(new Set([...this.state.selection, ...ids])) : ids;\n // Selecting what is already selected must not emit. The launcher syncs the\n // highlighted row into here on every mouseenter, and a state push per mouse move\n // would re-render the list under the pointer.\n const same = next.length === this.state.selection.length\n && next.every((id, i) => id === this.state.selection[i]);\n if (same) return;\n this.set({ selection: next, selectionNodes: nodes && !additive ? nodes : null });\n }\n /**\n * The nodes the selection refers to.\n *\n * Resolving ids against `items` only finds rows on the LOADED PAGE of the CURRENT\n * collection — and the launcher's rows come from search (which the server scopes to\n * every readable collection) and from recents (which survive a collection switch).\n * So every row reached by searching resolved to nothing, and rename / move-to-trash /\n * copy-link returned silently while `explorer.hasSelection` said there was a\n * selection. Preferring the nodes the selecting caller already held fixes the whole\n * class; the `items` lookup stays for callers that only have ids.\n */\n selectedNodes() {\n const held = this.state.selectionNodes;\n if (held?.length) return held.filter((n) => this.state.selection.includes(n.id));\n return this.state.items.filter((i) => this.state.selection.includes(i.id));\n }\n}\n\n/**\n * API keys, for the admin screen that manages them.\n *\n * Its own service rather than a corner of ExplorerService because it is a different\n * lifetime: keys are read when someone opens Settings and never again, so they should not\n * be part of the state every render of the file list walks over.\n *\n * `minted` holds the one secret a mint returns. It lives here, in memory, and is dropped\n * the moment the admin dismisses it — the server cannot show it again, so the UI is the\n * only place it ever exists, and it should not persist anywhere that outlives the tab.\n */\nexport class ApiKeysService {\n constructor() {\n this.state = {\n keys: [], loading: false, loaded: false, error: null, minted: null, busy: null,\n // The mint form. Held here rather than in the DOM so the section stays a pure\n // function of state — and so a half-filled form survives a re-render caused by\n // something else on the settings screen.\n draft: null,\n };\n this.cell = cell(this.state);\n }\n\n /** Open the mint form, empty. */\n startDraft() {\n this.set({ draft: { name: '', expiresInDays: '', caps: {} }, error: null });\n }\n cancelDraft() {\n this.set({ draft: null });\n }\n patchDraft(patch) {\n if (!this.state.draft) return;\n this.set({ draft: { ...this.state.draft, ...patch } });\n }\n\n /**\n * Toggle one capability on one collection in the draft.\n *\n * `admin` is not treated specially here — it is offered as itself and the server\n * expands it. Pre-ticking read/write/delete when admin is chosen would suggest they\n * are separable afterwards, and they are not.\n */\n toggleCap(collectionId, capability) {\n if (!this.state.draft) return;\n const caps = { ...this.state.draft.caps };\n const held = new Set(caps[collectionId] || []);\n if (held.has(capability)) held.delete(capability);\n else held.add(capability);\n if (held.size) caps[collectionId] = [...held];\n else delete caps[collectionId];\n this.patchDraft({ caps });\n }\n\n /** The draft as the API wants it, or null when it would grant nothing. */\n draftScopes() {\n const caps = this.state.draft?.caps || {};\n const scopes = Object.entries(caps)\n .filter(([, list]) => list.length)\n .map(([collectionId, capabilities]) => ({ collectionId, capabilities }));\n return scopes.length ? scopes : null;\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n /** Forget the freshly minted secret. Called on dismiss, and after a copy. */\n clearMinted() {\n if (this.state.minted) this.set({ minted: null });\n }\n}\n\nexport class SearchClientService {\n constructor() {\n this.state = { query: '', mode: 'hybrid', results: [], loading: false, error: null, ran: false, paletteFiles: [], paletteQuery: '', paletteLoading: false, paletteError: null };\n this.cell = cell(this.state);\n }\n observe() {\n return this.cell;\n }\n set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n}\n\n/**\n * Uploads in flight.\n *\n * This owns the DETAIL an upload needs and a generic task doesn't — bytes moved, an\n * AbortController, per-file retry. It also projects each transfer into ActivityService\n * so the drive has ONE list of \"what is happening\", covering work on both sides of the\n * wire: an upload running in this browser and a reindex running on the server show up\n * together, because a user doesn't care which machine is busy.\n *\n * The projection is one-way and this stays the owner. Two writable copies of the same\n * fact is how they drift.\n */\nexport class TransfersService {\n /** @param {import('./activity.js').ActivityService} [activity] */\n constructor(activity = null) {\n this.state = { items: [] }; // { id, name, direction, ratio, loaded, total, status, error, retryable }\n this.cell = cell(this.state);\n this._controllers = new Map();\n this.activity = activity;\n this._tasks = new Map(); // transfer id -> activity task handle\n // How to run this transfer again. Held here rather than in state because it closes\n // over the File itself, which is not something a state snapshot should carry.\n //\n // It exists because automatic retry cannot cover everything: a lost upload session is\n // `notFound`, which is correctly classified non-retryable and will never succeed on\n // its own no matter how many times it is tried. Someone has to decide to start over,\n // and the alternative is asking the user to find the file and drag it in again.\n this._retries = new Map();\n }\n observe() {\n return this.cell;\n }\n #emit() {\n this.cell.setValue(this.state);\n }\n /**\n * @param {{retry?: () => Promise<any>}} [opts] how to run this transfer again, if it can be\n */\n start(id, name, total, controller, { retry = null } = {}) {\n this._controllers.set(id, controller);\n if (retry) this._retries.set(id, retry);\n this.state = {\n items: [...this.state.items, {\n id, name, direction: 'up', ratio: 0, loaded: 0, total, status: 'active', error: null,\n // Surfaced in state so the tray renders from a snapshot rather than interrogating\n // the service — it is a fact about the row, like `status`.\n retryable: !!retry,\n }],\n };\n this.#emit();\n this.#task(id, name, total);\n }\n\n #task(id, name, total) {\n const task = this.activity?.start({\n kind: 'transfer', title: `Uploading ${name}`, total: total || null, unit: 'bytes',\n onCancel: () => this.cancel(id),\n });\n if (task) this._tasks.set(id, task);\n }\n\n /**\n * Run a failed transfer again, in place.\n *\n * The same row rather than a new one: a retry is another attempt at the thing the user\n * already asked for, and a tray that grew an entry per attempt would report one upload\n * as four.\n */\n retry(id) {\n const again = this._retries.get(id);\n if (!again) return null;\n const item = this.state.items.find((t) => t.id === id);\n if (!item || item.status === 'active') return null;\n return again();\n }\n\n /** Put an existing row back into flight — see `retry`. */\n restart(id, controller) {\n this._controllers.set(id, controller);\n const item = this.state.items.find((t) => t.id === id);\n this.state = {\n items: this.state.items.map((t) => (t.id === id\n ? { ...t, status: 'active', error: null, ratio: 0, loaded: 0 }\n : t)),\n };\n this.#emit();\n // A fresh activity task: the previous one already ended as failed, and reporting\n // progress into a finished task would leave the panel showing a failure that is\n // actively being retried.\n this.#task(id, item?.name || 'file', item?.total || null);\n }\n progress(id, { loaded, total, ratio }) {\n this.state = { items: this.state.items.map((t) => (t.id === id ? { ...t, loaded, total, ratio } : t)) };\n this.#emit();\n this._tasks.get(id)?.progress({ done: loaded, total: total || null });\n }\n finish(id, status = 'done', error = null) {\n this.state = { items: this.state.items.map((t) => (t.id === id ? { ...t, status, error, ratio: status === 'done' ? 1 : t.ratio } : t)) };\n this._controllers.delete(id);\n this.#emit();\n const task = this._tasks.get(id);\n if (task) {\n if (status === 'done') task.succeed();\n else if (status === 'cancelled') task.cancel();\n else task.fail(error || new Error('Upload failed'));\n this._tasks.delete(id);\n }\n if (status === 'done') setTimeout(() => this.dismiss(id), 4000);\n }\n cancel(id) {\n this._controllers.get(id)?.abort();\n this.finish(id, 'cancelled');\n }\n dismiss(id) {\n this.state = { items: this.state.items.filter((t) => t.id !== id) };\n this._retries.delete(id);\n this.#emit();\n }\n clearDone() {\n const kept = this.state.items.filter((t) => t.status === 'active');\n const keptIds = new Set(kept.map((t) => t.id));\n // Drop the retry thunks of the rows that just left, so a dismissed upload does not\n // hold its File alive for the rest of the session.\n for (const id of [...this._retries.keys()]) if (!keptIds.has(id)) this._retries.delete(id);\n this.state = { items: kept };\n this.#emit();\n }\n}\n",
58
60
  "// SocialService — the client side of identity, conversations, tags, and mention\n// notifications. Reactive (the workbench `watch`es it): it holds the current\n// principal, the notification inbox (polled + refreshed on demand), and the\n// active file's sidecar (tags + threaded comments). It also owns the web-push\n// subscription flow (register the service worker, subscribe with the server's\n// VAPID key). All mutations optimistically reload the affected sidecar.\n\nimport { cell } from '../runtime.js';\n\nexport class SocialService {\n constructor(platform) {\n this.platform = platform;\n this.api = platform.api;\n this.state = {\n me: null,\n notifications: { items: [], unread: 0 },\n inboxOpen: false,\n pushSupported: 'serviceWorker' in navigator && 'PushManager' in window,\n pushEnabled: false,\n sidecar: null, // { nodeId, tags, comments, subscribers, loading, error }\n backlinks: null, // { nodeId, items, loading, error } — what links to the open item\n posting: false,\n replyTo: null, // { id, author } when composing a reply\n };\n this.cell = cell(this.state);\n this._pollTimer = null;\n }\n\n observe() {\n return this.cell;\n }\n #set(patch) {\n this.state = { ...this.state, ...patch };\n this.cell.setValue(this.state);\n }\n\n async init() {\n try {\n const me = await this.api.me();\n this.#set({ me: me.principal, admin: !!me.admin });\n } catch { /* anonymous / offline */ }\n await this.refreshNotifications();\n // Light polling; the service worker also nudges on push.\n this._pollTimer = setInterval(() => this.refreshNotifications(), 45_000);\n if (this._pollTimer.unref) this._pollTimer.unref();\n this.#detectPush();\n window.addEventListener('focus', () => this.refreshNotifications());\n navigator.serviceWorker?.addEventListener?.('message', (e) => {\n if (e.data?.type === 'trove-push') this.refreshNotifications();\n });\n }\n\n async refreshNotifications() {\n try {\n const n = await this.api.notifications();\n this.#set({ notifications: n });\n } catch { /* not enabled / offline */ }\n }\n\n toggleInbox(open) {\n const next = open ?? !this.state.inboxOpen;\n this.#set({ inboxOpen: next });\n if (next && this.state.notifications.unread) this.markAllRead();\n }\n async markAllRead() {\n try {\n await this.api.markNotificationsRead();\n this.#set({ notifications: { ...this.state.notifications, unread: 0, items: this.state.notifications.items.map((i) => ({ ...i, read: true })) } });\n } catch { /* ignore */ }\n }\n\n // --- sidecar (per active file) ---------------------------------------------\n\n async loadSidecar(nodeId) {\n if (!nodeId) return this.#set({ sidecar: null, backlinks: null });\n this.#set({ sidecar: { nodeId, loading: true, tags: [], comments: [], subscribers: [] } });\n this.loadBacklinks(nodeId);\n try {\n const view = await this.api.sidecar(nodeId);\n // A slower request for a previously-open item must not land on this one — the\n // same guard loadBacklinks already had. Without it, opening A then quickly opening\n // B let A resolve last, so `state.sidecar.nodeId` became A while B was on screen\n // and comment()/addTag()/removeTag() all wrote to A.\n if (this.state.sidecar?.nodeId !== nodeId) return;\n this.#set({ sidecar: { ...view, loading: false } });\n } catch (err) {\n if (this.state.sidecar?.nodeId !== nodeId) return;\n this.#set({ sidecar: { nodeId, loading: false, error: err.message, tags: [], comments: [] } });\n }\n }\n\n /**\n * What links to this item. With no folders, this is how you find out where an item\n * \"lives\" — which documents gather it up — so a failure has to be visible rather\n * than rendering as \"nothing links here\", which would be a claim about the drive.\n */\n async loadBacklinks(nodeId) {\n if (!nodeId) return this.#set({ backlinks: null });\n this.#set({ backlinks: { nodeId, items: [], loading: true, error: null } });\n try {\n const res = await this.api.backlinks(nodeId);\n // A slower request for a previously-open item must not land on this one.\n if (this.state.backlinks?.nodeId !== nodeId) return;\n this.#set({ backlinks: { nodeId, items: res.items || [], loading: false, error: null } });\n } catch (err) {\n if (this.state.backlinks?.nodeId !== nodeId) return;\n this.#set({ backlinks: { nodeId, items: [], loading: false, error: err.message } });\n }\n }\n async #reload() {\n if (this.state.sidecar?.nodeId) await this.loadSidecar(this.state.sidecar.nodeId);\n }\n\n setReplyTo(target) {\n this.#set({ replyTo: target });\n }\n async comment(body) {\n const nodeId = this.state.sidecar?.nodeId;\n if (!nodeId || !body.trim()) return;\n const parentId = this.state.replyTo?.id || null;\n // Offline → queue the op; it replays (CRDT-merges) on reconnect.\n if (this.offline && !this.offline.state.online) {\n await this.offline.queueOp({ method: 'POST', path: `/api/items/${encodeURIComponent(nodeId)}/comments`, body: { body, parentId } });\n this.#set({ replyTo: null });\n this.platform.notifications.info('Offline — your comment will post when you reconnect.');\n return;\n }\n this.#set({ posting: true });\n try {\n await this.api.addComment(nodeId, { body, parentId });\n this.#set({ replyTo: null });\n await this.#reload();\n } catch (err) {\n this.platform.notifications.error(`Couldn't post comment: ${err.message}`);\n } finally {\n this.#set({ posting: false });\n }\n }\n async deleteComment(cid) {\n const nodeId = this.state.sidecar?.nodeId;\n await this.api.deleteComment(nodeId, cid).catch((e) => this.platform.notifications.error(e.message));\n await this.#reload();\n }\n async react(cid, emoji) {\n const nodeId = this.state.sidecar?.nodeId;\n const comment = findComment(this.state.sidecar?.comments || [], cid);\n const on = !(comment?.reactions?.[emoji] || []).includes(this.state.me?.id);\n try {\n await this.api.reactComment(nodeId, cid, emoji, on);\n } catch (err) {\n this.platform.notifications.error(`Couldn't react: ${err.message}`);\n }\n await this.#reload();\n }\n async addTag(name, value) {\n const nodeId = this.state.sidecar?.nodeId;\n if (!name.trim()) return;\n if (this.offline && !this.offline.state.online) {\n await this.offline.queueOp({ method: 'POST', path: `/api/items/${encodeURIComponent(nodeId)}/tags`, body: { name: name.trim(), value } });\n this.platform.notifications.info('Offline — tag will sync when you reconnect.');\n return;\n }\n await this.api.setTag(nodeId, name.trim(), value).catch((e) => this.platform.notifications.error(e.message));\n await this.#reload();\n }\n async removeTag(name) {\n const nodeId = this.state.sidecar?.nodeId;\n // Offline → queue like addTag so the removal isn't silently lost.\n if (this.offline && !this.offline.state.online) {\n await this.offline.queueOp({ method: 'DELETE', path: `/api/items/${encodeURIComponent(nodeId)}/tags/${encodeURIComponent(name)}` });\n this.platform.notifications.info('Offline — tag removal will sync when you reconnect.');\n return;\n }\n try {\n await this.api.removeTag(nodeId, name);\n } catch (err) {\n this.platform.notifications.error(`Couldn't remove tag: ${err.message}`);\n }\n await this.#reload();\n }\n\n // --- web push --------------------------------------------------------------\n\n async #detectPush() {\n if (!this.state.pushSupported) return;\n try {\n const reg = await navigator.serviceWorker.getRegistration();\n const sub = await reg?.pushManager?.getSubscription();\n this.#set({ pushEnabled: !!sub });\n } catch { /* ignore */ }\n }\n\n async enablePush() {\n if (!this.state.pushSupported) {\n this.platform.notifications.warn('Push notifications are not supported in this browser.');\n return;\n }\n try {\n const { publicKey } = await this.api.vapidKey();\n if (!publicKey) {\n this.platform.notifications.warn('This server has no VAPID key configured for web push.');\n return;\n }\n const reg = await navigator.serviceWorker.register('/sw.js');\n await navigator.serviceWorker.ready;\n const perm = await Notification.requestPermission();\n if (perm !== 'granted') return this.platform.notifications.info('Notifications permission was denied.');\n const sub = await reg.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array(publicKey) });\n await this.api.subscribePush(sub.toJSON());\n this.#set({ pushEnabled: true });\n this.platform.notifications.success('Notifications enabled — you’ll be pinged when someone @mentions you.');\n } catch (err) {\n this.platform.notifications.error(`Couldn't enable notifications: ${err.message}`);\n }\n }\n}\n\nfunction findComment(list, cid) {\n for (const c of list) {\n if (c.id === cid) return c;\n const inner = findComment(c.replies || [], cid);\n if (inner) return inner;\n }\n return null;\n}\n\nfunction urlBase64ToUint8Array(base64) {\n const padding = '='.repeat((4 - (base64.length % 4)) % 4);\n const b64 = (base64 + padding).replace(/-/g, '+').replace(/_/g, '/');\n const raw = atob(b64);\n const out = new Uint8Array(raw.length);\n for (let i = 0; i < raw.length; i++) out[i] = raw.charCodeAt(i);\n return out;\n}\n",
59
61
  "// EmbeddingProvider — turns text into vectors. Pluggable so deployments choose\n// their model/cost tradeoff. Two are bundled:\n// - LocalHashEmbedding: zero-dependency, offline, deterministic. A hashed\n// bag-of-bigrams projected to a fixed dim and L2-normalised. Not as good as\n// a real model, but makes semantic search work out of the box and in tests.\n// - HttpEmbedding: POSTs to any OpenAI-compatible /embeddings endpoint (OpenAI,\n// Ollama, LM Studio, a self-hosted model). This is the production path.\n// Both expose `dimensions` and `embed(texts) -> number[][]`.\n\nimport { withRetry } from '../retry.js';\nimport { TroveError, wrapError } from '../errors.js';\n\nexport class EmbeddingProvider {\n get dimensions() {\n return 0;\n }\n /** @param {string[]} texts @returns {Promise<number[][]>} */\n async embed(texts) {\n throw TroveError.unsupported('embed not implemented');\n }\n async embedOne(text) {\n return (await this.embed([text]))[0];\n }\n}\n\nconst STOP = new Set('a an the of to in on for and or is are be as at by with from this that it'.split(' '));\n\nfunction tokenize(text) {\n return String(text)\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .split(/\\s+/)\n .filter((t) => t.length > 1 && !STOP.has(t));\n}\n\n// FNV-1a → 32-bit, used to bucket features into vector dims.\nfunction fnv(str) {\n let h = 2166136261;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = Math.imul(h, 16777619);\n }\n return h >>> 0;\n}\n\nexport class LocalHashEmbedding extends EmbeddingProvider {\n constructor({ dimensions = 256 } = {}) {\n super();\n this._dim = dimensions;\n }\n get dimensions() {\n return this._dim;\n }\n async embed(texts) {\n return texts.map((t) => this.#vec(t));\n }\n #vec(text) {\n const v = new Float64Array(this._dim);\n const tokens = tokenize(text);\n // Unigrams + bigrams give a little word-order sensitivity.\n const feats = [...tokens];\n for (let i = 0; i < tokens.length - 1; i++) feats.push(tokens[i] + '_' + tokens[i + 1]);\n for (const f of feats) {\n const h = fnv(f);\n const idx = h % this._dim;\n const sign = (h >> 31) & 1 ? -1 : 1; // signed hashing reduces collisions\n v[idx] += sign;\n }\n // L2 normalise so dot product == cosine similarity.\n let norm = 0;\n for (let i = 0; i < v.length; i++) norm += v[i] * v[i];\n norm = Math.sqrt(norm) || 1;\n return Array.from(v, (x) => x / norm);\n }\n}\n\nexport class HttpEmbedding extends EmbeddingProvider {\n /**\n * @param {object} cfg\n * @param {string} cfg.url e.g. https://api.openai.com/v1/embeddings\n * @param {string} [cfg.apiKey]\n * @param {string} [cfg.model] e.g. text-embedding-3-small\n * @param {number} cfg.dimensions the model's output dim (must match your index)\n * @param {number} [cfg.batchSize]\n */\n constructor(cfg) {\n super();\n if (!cfg?.url || !cfg?.dimensions) throw TroveError.invalid('HttpEmbedding requires url and dimensions');\n this.cfg = cfg;\n }\n get dimensions() {\n return this.cfg.dimensions;\n }\n async embed(texts) {\n const batchSize = this.cfg.batchSize ?? 64;\n const out = [];\n for (let i = 0; i < texts.length; i += batchSize) {\n const batch = texts.slice(i, i + batchSize);\n out.push(...(await this.#embedBatch(batch)));\n }\n return out;\n }\n async #embedBatch(batch) {\n return withRetry(async () => {\n let res;\n try {\n res = await fetch(this.cfg.url, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n ...(this.cfg.apiKey ? { authorization: `Bearer ${this.cfg.apiKey}` } : {}),\n },\n body: JSON.stringify({ model: this.cfg.model, input: batch }),\n });\n } catch (err) {\n throw wrapError(err);\n }\n if (res.status === 429 || res.status >= 500) {\n throw TroveError.transient(`Embedding endpoint ${res.status}`);\n }\n if (!res.ok) throw TroveError.internal(`Embedding endpoint failed: ${res.status}`);\n const json = await res.json();\n // OpenAI shape: { data: [{ embedding: [...] }, ...] }\n const data = json.data ?? json.embeddings ?? [];\n return data.map((d) => d.embedding ?? d);\n });\n }\n}\n",
60
- "// `trove:` — the URI that addresses an ITEM in the drive.\n//\n// There is no folder hierarchy. A collection is a flat namespace of uniquely-named\n// items, and structure comes from items linking to each other — a markdown document\n// that links its sources is what a folder used to be, except it can say *why* things\n// belong together, an item can appear in several of them, and the grouping is\n// searchable content rather than an invisible container.\n//\n// So a link has to be something a person can type into a markdown file:\n//\n// trove:default?name=sailing.txt canonical, by name\n// trove:default/sailing.txt shorthand for the same thing\n// trove:default?id=fil_01H2X8F4KQ by id — survives a rename, unreadable\n//\n// The selector is EXPLICIT (`?name=` vs `?id=`) rather than inferred from the shape\n// of the segment: a name that happens to look like an id would otherwise resolve to\n// something else entirely, and a link that silently retargets is worse than one that\n// visibly breaks. The `/name` shorthand is unambiguous for the same reason — that\n// slot only ever means a name.\n//\n// Names are unique per collection, which is what makes `?name=` resolve to exactly one\n// item. Renaming therefore breaks inbound links, on purpose and visibly: the alternative\n// is opaque ids nobody can hand-write, which would put linking back in the UI's hands.\n// `?id=` is there for links a tool inserts, where stability matters more than legibility.\n\nimport { TroveError } from './errors.js';\n\nexport const TROVE_SCHEME = 'trove:';\n\n// An item name is capped at 255 chars (isValidItemName), so a longer selector can never\n// resolve to anything. Refusing it at parse time keeps garbage out of the links index\n// rather than storing kilobytes that will never match.\nconst MAX_SELECTOR = 255;\n// How many distinct links one item may record. A document is a grouping, not a database\n// dump; past this the value is in the search index, not the link graph.\nexport const MAX_LINKS_PER_ITEM = 500;\n\n// Collection ids are slugs (see CollectionService); a name is anything but a slash,\n// since the pathname shorthand has to stop somewhere.\nconst COLLECTION_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;\n\n/**\n * Parse a `trove:` URI into `{ collection, by: 'name'|'id', value }`, or null if it\n * isn't one. Never throws — callers parse untrusted document text with this, where a\n * malformed link is a thing to render as broken, not an exception.\n */\nexport function parseTroveUri(uri) {\n if (typeof uri !== 'string' || !uri.toLowerCase().startsWith(TROVE_SCHEME)) return null;\n let url;\n try {\n url = new URL(uri);\n } catch {\n return null;\n }\n // `trove:default/sailing.txt` → pathname \"default/sailing.txt\"; the slash-free case\n // is `trove:default?name=…`, where the whole pathname is the collection.\n const path = url.pathname;\n const slash = path.indexOf('/');\n const collection = slash < 0 ? path : path.slice(0, slash);\n if (!COLLECTION_RE.test(collection)) return null;\n\n const id = url.searchParams.get('id');\n const name = url.searchParams.get('name');\n let shorthand = '';\n if (slash >= 0) {\n // A malformed percent-escape is a malformed link, not an exception to propagate\n // out of a document render.\n try { shorthand = decodeURIComponent(path.slice(slash + 1)); } catch { return null; }\n }\n\n // Both selectors at once is a contradiction, not something to silently pick between.\n if (id != null && (name != null || shorthand)) return null;\n const by = id != null ? 'id' : 'name';\n const value = id != null ? id : (name != null ? name : shorthand);\n if (!value || value.length > MAX_SELECTOR) return null;\n return { collection, by, value };\n}\n\n/** Whether `uri` is a well-formed trove: reference. */\nexport function isTroveUri(uri) {\n return parseTroveUri(uri) != null;\n}\n\n/**\n * Build a `trove:` URI. `by` defaults to 'name' — the legible form, which is what\n * gets written into documents; pass 'id' for a link that must survive a rename.\n */\nexport function troveUri(node, by = 'name') {\n const collection = node?.collectionId || 'default';\n if (by === 'id') {\n if (!node?.id) throw TroveError.invalid('trove: link by id needs a node id');\n return `${TROVE_SCHEME}${collection}?id=${encodeURIComponent(node.id)}`;\n }\n if (!node?.name) throw TroveError.invalid('trove: link by name needs a node name');\n return `${TROVE_SCHEME}${collection}?name=${encodeURIComponent(node.name)}`;\n}\n\n/**\n * Every distinct `trove:` reference in a block of text, in first-appearance order.\n *\n * Deliberately scans raw text rather than parsing markdown: a link is just as real in\n * an HTML `href`, a bare mention, or a front-matter list, and the point of extraction\n * is to know what an item references — not to reproduce one renderer's idea of a link.\n * Trailing punctuation is trimmed so `see trove:default/a.md.` doesn't capture the dot.\n */\nexport function extractTroveLinks(text, { limit = MAX_LINKS_PER_ITEM } = {}) {\n if (typeof text !== 'string' || !text) return [];\n const out = [];\n const seen = new Set();\n // Stop at whitespace and at the delimiters that wrap a URL in markdown/HTML.\n const re = /trove:[^\\s<>\"'`)\\]}]+/gi;\n for (const m of text.matchAll(re)) {\n if (out.length >= limit) break;\n const raw = m[0].replace(/[.,;:!?]+$/, '');\n const parsed = parseTroveUri(raw);\n if (!parsed) continue;\n const canonical = `${TROVE_SCHEME}${parsed.collection}?${parsed.by}=${encodeURIComponent(parsed.value)}`;\n if (seen.has(canonical)) continue;\n seen.add(canonical);\n out.push({ uri: canonical, raw, ...parsed });\n }\n return out;\n}\n\n/**\n * The canonical form of a reference, for storing and comparing. Two links that address\n * the same item by the same selector must produce the same string, or backlinks would\n * miss `trove:default/a.md` when the target stored `trove:default?name=a.md`.\n */\nexport function canonicalTroveUri(uri) {\n const p = parseTroveUri(uri);\n return p ? `${TROVE_SCHEME}${p.collection}?${p.by}=${encodeURIComponent(p.value)}` : null;\n}\n\n/** Both canonical forms an item can be addressed by — what a backlink query looks for. */\nexport function troveUrisFor(node) {\n const out = [];\n if (node?.collectionId && node?.name) out.push(troveUri(node, 'name'));\n if (node?.collectionId && node?.id) out.push(troveUri(node, 'id'));\n return out;\n}\n",
62
+ "// `trove:` — the URI that addresses an ITEM in the drive.\n//\n// There is no folder hierarchy. A collection is a flat namespace of uniquely-named\n// items, and structure comes from items linking to each other — a markdown document\n// that links its sources is what a folder used to be, except it can say *why* things\n// belong together, an item can appear in several of them, and the grouping is\n// searchable content rather than an invisible container.\n//\n// So a link has to be something a person can type into a markdown file:\n//\n// trove:default?name=sailing.txt canonical, by name\n// trove:default/sailing.txt shorthand for the same thing\n// trove:default?id=fil_01H2X8F4KQ by id — survives a rename, unreadable\n//\n// The selector is EXPLICIT (`?name=` vs `?id=`) rather than inferred from the shape\n// of the segment: a name that happens to look like an id would otherwise resolve to\n// something else entirely, and a link that silently retargets is worse than one that\n// visibly breaks. The `/name` shorthand is unambiguous for the same reason — that\n// slot only ever means a name.\n//\n// Names are unique per collection, which is what makes `?name=` resolve to exactly one\n// item. Renaming therefore breaks inbound links, on purpose and visibly: the alternative\n// is opaque ids nobody can hand-write, which would put linking back in the UI's hands.\n// `?id=` is there for links a tool inserts, where stability matters more than legibility.\n\nimport { TroveError } from './errors.js';\n\nexport const TROVE_SCHEME = 'trove:';\n\n// An item name is capped at 255 chars (isValidItemName), so a longer selector can never\n// resolve to anything. Refusing it at parse time keeps garbage out of the links index\n// rather than storing kilobytes that will never match.\nconst MAX_SELECTOR = 255;\n// How many distinct links one item may record. A document is a grouping, not a database\n// dump; past this the value is in the search index, not the link graph.\nexport const MAX_LINKS_PER_ITEM = 500;\n\n// Collection ids are slugs (see CollectionService); a name is anything but a slash,\n// since the pathname shorthand has to stop somewhere.\nconst COLLECTION_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;\n\n/**\n * Parse a `trove:` URI into `{ collection, by: 'name'|'id', value }`, or null if it\n * isn't one. Never throws — callers parse untrusted document text with this, where a\n * malformed link is a thing to render as broken, not an exception.\n */\nexport function parseTroveUri(uri) {\n if (typeof uri !== 'string' || !uri.toLowerCase().startsWith(TROVE_SCHEME)) return null;\n let url;\n try {\n url = new URL(uri);\n } catch {\n return null;\n }\n // `trove:default/sailing.txt` → pathname \"default/sailing.txt\"; the slash-free case\n // is `trove:default?name=…`, where the whole pathname is the collection.\n const path = url.pathname;\n const slash = path.indexOf('/');\n const collection = slash < 0 ? path : path.slice(0, slash);\n if (!COLLECTION_RE.test(collection)) return null;\n\n const id = url.searchParams.get('id');\n const name = url.searchParams.get('name');\n let shorthand = '';\n if (slash >= 0) {\n // A malformed percent-escape is a malformed link, not an exception to propagate\n // out of a document render.\n try { shorthand = decodeURIComponent(path.slice(slash + 1)); } catch { return null; }\n }\n\n // Both selectors at once is a contradiction, not something to silently pick between.\n if (id != null && (name != null || shorthand)) return null;\n const by = id != null ? 'id' : 'name';\n const value = id != null ? id : (name != null ? name : shorthand);\n if (!value || value.length > MAX_SELECTOR) return null;\n return { collection, by, value };\n}\n\n/** Whether `uri` is a well-formed trove: reference. */\nexport function isTroveUri(uri) {\n return parseTroveUri(uri) != null;\n}\n\n/**\n * Build a `trove:` URI. `by` defaults to 'name' — the legible form, which is what\n * gets written into documents; pass 'id' for a link that must survive a rename.\n */\nexport function troveUri(node, by = 'name') {\n const collection = node?.collectionId || 'default';\n if (by === 'id') {\n if (!node?.id) throw TroveError.invalid('trove: link by id needs a node id');\n return `${TROVE_SCHEME}${collection}?id=${encodeURIComponent(node.id)}`;\n }\n if (!node?.name) throw TroveError.invalid('trove: link by name needs a node name');\n return `${TROVE_SCHEME}${collection}?name=${encodeURIComponent(node.name)}`;\n}\n\n/**\n * Every distinct `trove:` reference in a block of text, in first-appearance order.\n *\n * Deliberately scans raw text rather than parsing markdown: a link is just as real in\n * an HTML `href`, a bare mention, or a front-matter list, and the point of extraction\n * is to know what an item references — not to reproduce one renderer's idea of a link.\n * Trailing punctuation is trimmed so `see trove:default/a.md.` doesn't capture the dot.\n */\nexport function extractTroveLinks(text, { limit = MAX_LINKS_PER_ITEM } = {}) {\n if (typeof text !== 'string' || !text) return [];\n const out = [];\n const seen = new Set();\n // Stop at whitespace and at the delimiters that wrap a URL in markdown/HTML.\n const re = /trove:[^\\s<>\"'`)\\]}]+/gi;\n for (const m of text.matchAll(re)) {\n if (out.length >= limit) break;\n const raw = m[0].replace(/[.,;:!?]+$/, '');\n const parsed = parseTroveUri(raw);\n if (!parsed) continue;\n const canonical = `${TROVE_SCHEME}${parsed.collection}?${parsed.by}=${encodeURIComponent(parsed.value)}`;\n if (seen.has(canonical)) continue;\n seen.add(canonical);\n out.push({ uri: canonical, raw, ...parsed });\n }\n return out;\n}\n\n/**\n * The canonical form of a reference, for storing and comparing. Two links that address\n * the same item by the same selector must produce the same string, or backlinks would\n * miss `trove:default/a.md` when the target stored `trove:default?name=a.md`.\n */\nexport function canonicalTroveUri(uri) {\n const p = parseTroveUri(uri);\n return p ? `${TROVE_SCHEME}${p.collection}?${p.by}=${encodeURIComponent(p.value)}` : null;\n}\n\n/** Both canonical forms an item can be addressed by — what a backlink query looks for. */\nexport function troveUrisFor(node) {\n const out = [];\n if (node?.collectionId && node?.name) out.push(troveUri(node, 'name'));\n if (node?.collectionId && node?.id) out.push(troveUri(node, 'id'));\n return out;\n}\n\n// --- shareable web links -------------------------------------------------------\n//\n// `trove:` addresses an item INSIDE the drive: it is what one document writes to link\n// another, and it means nothing to a browser. A share link is the other half — a URL you\n// can paste into a message so that someone else's browser opens the same item.\n//\n// They are deliberately the same addressing, not two competing schemes. A share link is a\n// `trove:` URI wearing an http(s) coat: same collection, same explicit `name`-or-`id`\n// selector, same refusal to infer which one you meant. So anything that can already\n// resolve a `trove:` URI can resolve a share link by parsing it back, and a rename breaks\n// both in the same visible way rather than one silently retargeting.\n//\n// The path form — /c/<collection>/i/<selector> — rather than the query form\n// `?coll=&item=`. Both put the ids in the URL and therefore in server logs and browser\n// history, so that is not the difference; the path reads as a location, survives being\n// truncated in a chat client more gracefully, and leaves the query string free for the\n// things that genuinely are parameters.\n//\n// Nothing secret ever rides in one. An encrypted collection's key is not in the link and\n// must not be: a link is pasted into chats, logged by proxies, and kept in history\n// forever. The recipient gets the item because they are allowed the collection, which is\n// the same rule as everywhere else here.\n\n/** The path a share link uses. Exported so a client router and the server agree. */\nexport const SHARE_PATH = '/c';\n\n/**\n * A URL that opens this item in a browser.\n *\n * @param {object} node\n * @param {string} [origin] where the drive is served; omitted gives a root-relative link\n * @param {'name'|'id'} [by] `name` reads better and breaks on rename; `id` is the reverse\n */\nexport function shareUrl(node, origin = '', by = 'name') {\n if (!node?.collectionId) throw TroveError.invalid('An item needs a collection to be linked to');\n const selector = by === 'id'\n ? `id:${node.id}`\n : encodeURIComponent(node.name);\n if (!selector || (by === 'id' && !node.id)) throw TroveError.invalid('Nothing to link to');\n const path = `${SHARE_PATH}/${encodeURIComponent(node.collectionId)}/i/${selector}`;\n return origin ? `${String(origin).replace(/\\/$/, '')}${path}` : path;\n}\n\n/**\n * Read a share link back, from a full URL or just a path.\n *\n * Returns the same shape `parseTroveUri` does, so a caller resolves either without caring\n * which it was handed. Null rather than a throw: this parses whatever was in the address\n * bar, and a URL that is not a share link is an ordinary page, not an error.\n */\nexport function parseShareUrl(url) {\n let path;\n try {\n path = url.startsWith('/') ? url : new URL(url).pathname;\n } catch {\n return null;\n }\n const m = /^\\/c\\/([^/]+)\\/i\\/(.+)$/.exec(path);\n if (!m) return null;\n let collection;\n let raw;\n try {\n collection = decodeURIComponent(m[1]);\n raw = decodeURIComponent(m[2]);\n } catch {\n return null; // a malformed escape is not a link to anything\n }\n if (!COLLECTION_RE.test(collection)) return null;\n // `id:` is the explicit selector, mirroring `?id=` — a name is never guessed at just\n // because it happens to look like an id.\n const byId = raw.startsWith('id:');\n const value = byId ? raw.slice(3) : raw;\n if (!value || value.length > MAX_SELECTOR) return null;\n return { collection, by: byId ? 'id' : 'name', value };\n}\n\n/** The `trove:` URI a share link denotes — the two are the same address. */\nexport function troveUriFromShareUrl(url) {\n const parsed = parseShareUrl(url);\n if (!parsed) return null;\n return parsed.by === 'id'\n ? `${TROVE_SCHEME}${parsed.collection}?id=${encodeURIComponent(parsed.value)}`\n : `${TROVE_SCHEME}${parsed.collection}?name=${encodeURIComponent(parsed.value)}`;\n}\n",
61
63
  "// IndexerRegistry — server-side indexers that extract structured content from\n// files. An indexer declares which nodes it handles and, for each, produces a\n// *contribution* with up to three scopes:\n// - semanticTexts: text chunks that become embeddings + keyword entries (search)\n// - tags: filterable key/values (merged into the node's queryable tags)\n// - metadata: arbitrary structured data (e.g. an audiobook's chapter index)\n// Everything is namespaced under the indexer's `id`, so indexers never clobber one\n// another and an indexer's whole contribution can be removed independently.\n//\n// This complements *plugin* indexers, which run in the browser sandbox and push\n// the same contribution shape through the API under their own namespace.\n//\n// Two built-ins ship here: a text/markdown extractor (the reference indexer) and a\n// links extractor, which is what makes a drive with no folders navigable.\n\nimport { extname } from '../util.js';\nimport { extractTroveLinks } from '../links.js';\nimport { LINKS_CONTRIBUTOR, LINKS_KEY } from '../metadata/interface.js';\n\n/**\n * @typedef {object} Indexer\n * @property {string} id unique namespace\n * @property {string} [displayName]\n * @property {(node: object) => boolean} match\n * @property {(node: object, ctx: IndexContext) => Promise<Contribution>} index\n *\n * @typedef {object} Contribution\n * @property {Doc[]} [semanticTexts] text chunks → embeddings + keyword search\n * @property {object} [tags] filterable key/values, e.g. { language: 'en' }\n * @property {object} [metadata] arbitrary structured data, e.g. { chapters: [...] }\n *\n * @typedef {object} Doc\n * @property {string} [id] stable per (node, chunk); defaults to `${node.id}:${i}`\n * @property {string} text\n * @property {object} [fields] e.g. { title, page, chapter }\n *\n * @typedef {object} IndexContext\n * @property {() => Promise<Uint8Array>} readBytes\n * @property {() => Promise<string>} readText\n * @property {number} maxBytes\n */\n\nexport class IndexerRegistry {\n /** @param {{builtins?: boolean}} [opts] register the reference text indexer (default on) */\n constructor({ builtins = true } = {}) {\n this.indexers = new Map();\n if (builtins) {\n this.register(textIndexer);\n this.register(linksIndexer);\n }\n }\n register(indexer) {\n if (!indexer?.id || typeof indexer.index !== 'function') {\n throw new Error('Indexer requires an id and an index() function');\n }\n this.indexers.set(indexer.id, indexer);\n // Only unregister if THIS registration is still the live one. Indexer ids are\n // contribution URIs, which are account-independent, so a second account installing\n // the same package replaces the first's entry — and the first's stale closure then\n // deleted the second's, taking that account's indexer out of the drive-wide registry\n // and purging its contributions.\n return () => { if (this.indexers.get(indexer.id) === indexer) this.indexers.delete(indexer.id); };\n }\n unregister(id) {\n this.indexers.delete(id);\n }\n list() {\n return [...this.indexers.values()].map((i) => ({ id: i.id, displayName: i.displayName || i.id }));\n }\n matching(node) {\n return [...this.indexers.values()].filter((i) => {\n try {\n return i.match(node);\n } catch {\n return false;\n }\n });\n }\n}\n\n// --- Reference indexer: plain text / markdown / code ------------------------\n\nconst TEXT_EXTS = new Set([\n '.txt', '.md', '.markdown', '.rst', '.log', '.csv', '.tsv',\n '.json', '.yaml', '.yml', '.toml', '.ini', '.env',\n '.js', '.mjs', '.ts', '.jsx', '.tsx', '.py', '.rb', '.go', '.rs', '.java',\n '.c', '.h', '.cpp', '.css', '.html', '.xml', '.sh',\n]);\n\nfunction isTexty(node) {\n if (node.contentType?.startsWith('text/')) return true;\n return TEXT_EXTS.has(extname(node.name));\n}\n\nexport const textIndexer = {\n id: 'core.text',\n displayName: 'Text & code',\n match: isTexty,\n async index(node, ctx) {\n const text = await ctx.readText();\n if (!text.trim()) return { semanticTexts: [] };\n const chunks = chunkText(text, 1200, 200);\n // Fields describe the CHUNK (which chunk it is), not the node. The node's name\n // deliberately isn't copied in: field values are indexed, so a name duplicated\n // across every chunk goes stale the moment the item is renamed — leaving the file\n // findable under a name it no longer has. Name search belongs to the `core.name`\n // index, which is a single document and is refreshed on rename.\n const semanticTexts = chunks.map((chunk, i) => ({\n id: `${node.id}:${i}`,\n text: chunk,\n fields: { chunk: i },\n }));\n return {\n semanticTexts,\n metadata: { chars: text.length, chunks: chunks.length, excerpt: text.slice(0, 280) },\n };\n },\n};\n\n// --- Links indexer: what this item points at --------------------------------\n//\n// With no folder hierarchy, an item's place in the drive is defined by what links to\n// it. This indexer records the outbound `trove:` URIs found in an item's text, which\n// is what MetadataStore.findLinksTo reads to answer the inverse question — \"what\n// gathers this up?\" — for the backlinks panel.\n//\n// It stores the links as `metadata`, not `semanticTexts`: a URI is an edge, not prose,\n// and embedding it would only pollute semantic results. `links` is also surfaced as a\n// tag count so `#links > 0` finds the documents that act as indexes.\n\nexport const linksIndexer = {\n id: LINKS_CONTRIBUTOR,\n displayName: 'Links',\n match: isTexty,\n async index(node, ctx) {\n const text = await ctx.readText();\n const links = extractTroveLinks(text).map((l) => l.uri);\n return {\n metadata: { [LINKS_KEY]: links },\n tags: { links: links.length },\n };\n },\n};\n\n/** Split into overlapping windows on sentence/line boundaries where possible. */\nexport function chunkText(text, size, overlap) {\n const out = [];\n let i = 0;\n while (i < text.length) {\n let end = Math.min(i + size, text.length);\n if (end < text.length) {\n // Prefer to break at a paragraph/sentence boundary within the last 25%.\n const window = text.slice(i, end);\n const brk = Math.max(window.lastIndexOf('\\n\\n'), window.lastIndexOf('. '), window.lastIndexOf('\\n'));\n if (brk > size * 0.75) end = i + brk + 1;\n }\n out.push(text.slice(i, end).trim());\n if (end >= text.length) break;\n i = end - overlap;\n }\n return out.filter(Boolean);\n}\n",
62
64
  "// KeywordStore — the pluggable lexical (sparse) half of hybrid search, mirroring\n// VectorStore's async, injectable shape. The in-memory default keeps a token set\n// per document and scores by query-term coverage; swap in an implementation over\n// SQLite FTS5, Postgres tsvector, Elasticsearch, etc. for durability/scale.\n// SearchService composes a VectorStore + a KeywordStore, so a deployment can mix\n// (e.g. Qdrant for vectors, Postgres FTS for keywords) — core hardcodes neither.\n\nimport { TroveError } from '../errors.js';\n\nconst STOP = new Set('a an the of to in on for and or is are be as at by with from this that it'.split(' '));\n\nexport function tokenize(text) {\n return String(text)\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .split(/\\s+/)\n .filter((t) => t.length > 1 && !STOP.has(t));\n}\n\nexport class KeywordStore {\n async add(docs) {\n throw TroveError.unsupported('add not implemented');\n }\n async removeByNode(nodeId) {\n throw TroveError.unsupported('removeByNode not implemented');\n }\n async removeByIndexer(indexerId) {\n throw TroveError.unsupported('removeByIndexer not implemented');\n }\n async removeByNodeIndexer(nodeId, indexerId) {\n throw TroveError.unsupported('removeByNodeIndexer not implemented');\n }\n /** @returns {Promise<Array<{docId,nodeId,indexerId,score,fields}>>} */\n async search(query, opts) {\n throw TroveError.unsupported('search not implemented');\n }\n /** Optional: a highlighted excerpt for a doc (null if unavailable). */\n async snippet(docId, query) {\n return null;\n }\n /** Optional: number of stored documents. Null when the store can't say — which is\n * not the same as zero, and the startup rebuild check depends on the difference. */\n async count() {\n return null;\n }\n}\n\nexport class MemoryKeywordStore extends KeywordStore {\n constructor() {\n super();\n this.docs = new Map(); // docId -> { nodeId, indexerId, text, tokens:Set, fields }\n }\n\n async add(docs) {\n for (const d of docs) {\n const text = d.text || '';\n this.docs.set(d.id, {\n nodeId: d.nodeId, indexerId: d.indexerId, text,\n tokens: new Set(tokenize(text + ' ' + Object.values(d.fields || {}).join(' '))),\n fields: d.fields || {},\n });\n }\n }\n async removeByNode(nodeId) {\n for (const [id, r] of this.docs) if (r.nodeId === nodeId) this.docs.delete(id);\n }\n async removeByIndexer(indexerId) {\n for (const [id, r] of this.docs) if (r.indexerId === indexerId) this.docs.delete(id);\n }\n async removeByNodeIndexer(nodeId, indexerId) {\n for (const [id, r] of this.docs) if (r.nodeId === nodeId && r.indexerId === indexerId) this.docs.delete(id);\n }\n\n async search(query, opts = {}) {\n const q = tokenize(query);\n if (!q.length) return [];\n const allow = opts.indexers ? new Set(opts.indexers) : null;\n const out = [];\n for (const [docId, r] of this.docs) {\n if (allow && !allow.has(r.indexerId)) continue;\n let hit = 0;\n for (const t of q) if (r.tokens.has(t)) hit++;\n if (hit > 0) out.push({ docId, nodeId: r.nodeId, indexerId: r.indexerId, score: hit / q.length, fields: r.fields });\n }\n out.sort((a, b) => b.score - a.score);\n return out.slice(0, opts.limit ?? 40);\n }\n\n async snippet(docId, query) {\n const r = this.docs.get(docId);\n if (!r?.text) return null;\n const q = tokenize(query);\n const lower = r.text.toLowerCase();\n let at = -1;\n for (const t of q) {\n const i = lower.indexOf(t);\n if (i >= 0) { at = i; break; }\n }\n if (at < 0) return r.text.slice(0, 160).trim();\n const start = Math.max(0, at - 60);\n return (start > 0 ? '…' : '') + r.text.slice(start, start + 200).trim() + '…';\n }\n\n async count() {\n return this.docs.size;\n }\n}\n",
63
65
  "// One place that knows how to classify a file by type — extension extraction and a\n// single format table. Previously the ext/mime lists were re-derived (and drifted)\n// across openers.extOf, contributions.matchesSelector, iconForNode, and offline.isTexty;\n// now the icon shown, the \"is this text?\" decision, and the type label all agree.\n\n/** The extension (\".pdf\") for a node, lowercased, or '' if none. */\nexport function extOf(node) {\n const name = (node?.name || '').toLowerCase();\n return name.includes('.') ? name.slice(name.lastIndexOf('.')) : '';\n}\n\n// Category → { mime: prefixes/exact it matches, ext: extensions }. Order matters:\n// kindOf checks these top-down.\nconst CATEGORIES = [\n { kind: 'audio', icon: 'file-audio', mime: ['audio/'], ext: ['.mp3', '.flac', '.wav', '.opus', '.ogg', '.m4a', '.m4b'] },\n { kind: 'image', icon: 'file-image', mime: ['image/'], ext: ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.avif'] },\n { kind: 'video', icon: 'file-video', mime: ['video/'], ext: ['.mp4', '.webm', '.mkv', '.mov'] },\n {\n kind: 'text', icon: 'file-text', mime: ['text/', 'application/json'],\n ext: ['.txt', '.md', '.markdown', '.json', '.js', '.mjs', '.ts', '.jsx', '.tsx', '.css', '.html',\n '.xml', '.yaml', '.yml', '.toml', '.ini', '.log', '.csv', '.py', '.rb', '.go', '.rs', '.sh', '.c', '.h', '.cpp', '.java'],\n },\n];\n\nfunction matchesCategory(cat, ext, ct) {\n if (cat.ext.includes(ext)) return true;\n // A mime entry ending in '/' is a prefix (audio/), otherwise an exact type.\n return cat.mime.some((m) => (m.endsWith('/') ? ct.startsWith(m) : ct === m));\n}\n\n/** Classify an item → 'audio'|'image'|'video'|'text'|'file'. */\nexport function kindOf(node) {\n const ext = extOf(node);\n const ct = node?.contentType || '';\n for (const cat of CATEGORIES) if (matchesCategory(cat, ext, ct)) return cat.kind;\n return 'file';\n}\n\nconst ICONS = { ...Object.fromEntries(CATEGORIES.map((c) => [c.kind, c.icon])), file: 'file' };\n\n/** The icon name for a node, derived from its kind. */\nexport function iconForKind(node) {\n return ICONS[kindOf(node)] || 'file';\n}\n\n/** Whether a node holds indexable text (drives offline text extraction). */\nexport function isTexty(node) {\n return kindOf(node) === 'text';\n}\n",
@@ -66,7 +68,7 @@
66
68
  "// One tag matcher, for everybody.\n//\n// There were four: this logic in `transformer.js` (post-filtering semantic results), a\n// near-copy in the memory metadata store, a third in the browser (used by the offline\n// path), and SQL in the sqlite store. Each pair \"mirrored\" the others in a comment and\n// diverged in fact:\n//\n// - the client lowercased both operands for `<`/`<=`/`>`/`>=`; the server did not, so\n// `#author:>Bob` against `author: \"alice\"` was false online and true offline;\n// - the sqlite store bound `String(value)` against `json_extract`, which preserves JSON\n// types, so a numeric tag `pages: 120` matched `#pages:!=120` and not `#pages:120`;\n// - the sqlite store treated `present` as `IS NOT NULL`, so a tag explicitly set to\n// `false` counted as present — everywhere else it does not;\n// - the sqlite store never consulted `meta`, which the interface documents as part of\n// what a filter matches.\n//\n// So the semantics live here, once, and the SQL in `metadata/sqlite.js` is written to\n// agree with THIS file rather than with its own history.\n//\n// The rules:\n// present the tag exists and is not `false` and not `''`\n// = / != numeric compare when BOTH sides are numbers, else case-insensitive text\n// < <= > >= same, and text comparison is case-insensitive (it was not on the server,\n// which is the one difference a user could actually observe between an\n// online and an offline search)\n\n/** A node's filterable properties: `meta`, overlaid by its merged tags. */\nexport function tagProps(node, mergedTags = null) {\n return { ...(node?.meta || {}), ...(mergedTags || node?.tags || {}) };\n}\n\n/** Does one value satisfy one parsed filter? */\nexport function matchesFilter(value, filter) {\n if (filter.present) return value != null && value !== false && value !== '';\n if (value == null) return false;\n const na = Number(value);\n const nb = Number(filter.value);\n // `Number('')` is 0, which would make an empty string compare as a number — hence\n // the explicit emptiness checks rather than `!Number.isNaN` alone.\n const numeric = value !== '' && value !== true && value !== false\n && filter.value !== '' && filter.value != null\n && !Number.isNaN(na) && !Number.isNaN(nb);\n const x = numeric ? na : String(value).toLowerCase();\n const y = numeric ? nb : String(filter.value).toLowerCase();\n switch (filter.op) {\n case '!=': return x !== y;\n case '<': return x < y;\n case '<=': return x <= y;\n case '>': return x > y;\n case '>=': return x >= y;\n default: return x === y;\n }\n}\n\n/** Does a node satisfy every filter? `mergedTags` when the caller already computed them. */\nexport function matchTagFilters(node, filters, mergedTags = null) {\n const props = tagProps(node, mergedTags);\n return (filters || []).every((f) => matchesFilter(props[f.key], f));\n}\n",
67
69
  "// Parse `#tag` / `#key:op:value` filter tokens out of a launcher query and match\n// nodes against them. Grammar (each token, space-separated):\n// #tag → the property/tag is present\n// #key:=v #key:!=v #key:<v #key:<=v #key:>v #key:>=v → compare\n// #key:v → equality shorthand (same as #key:=v)\n// Values may be \"quoted\" to include spaces. Comparisons are numeric when both\n// sides parse as numbers, otherwise case-insensitive string comparisons.\n\nimport { matchTagFilters } from '@3sln/trove/core/search/tagMatch.js';\n\nconst TOKEN = /#([\\w.-]+)(?::(<=|>=|!=|=|<|>)?(\"[^\"]*\"|[^#\\s]+)?)?/g;\n\n/** @returns {{ text: string, filters: {key,op,value,present}[] }} */\nexport function parseTagQuery(query) {\n const filters = [];\n let text = query;\n for (const m of query.matchAll(TOKEN)) {\n const [, key, op, rawValue] = m;\n const value = rawValue && rawValue.startsWith('\"') ? rawValue.slice(1, -1) : rawValue;\n filters.push(value == null || value === ''\n ? { key, present: true }\n : { key, op: op || '=', value, present: false });\n text = text.replace(m[0], ' ');\n }\n return { text: text.replace(/\\s+/g, ' ').trim(), filters };\n}\n\n/**\n * True if `node` satisfies ALL filters (AND).\n *\n * Delegates to core rather than re-implementing. This file had its own copy, and the\n * two drifted on the ordering operators — the client lowercased both operands, the\n * server did not — so `#author:>Bob` against `author: \"alice\"` answered differently\n * online and offline. Same query, same drive, different files.\n */\nexport function matchesTagFilters(node, filters) {\n if (!filters || !filters.length) return true;\n return matchTagFilters(node, filters);\n}\n\n/** Short human label for a filter (for the results heading). */\nexport function filterLabel(f) {\n return f.present ? `#${f.key}` : `#${f.key}:${f.op}${f.value}`;\n}\n",
68
70
  "// Opener choice: which viewer opens a file when several can. Built-in and plugin\n// openers register the same way (a selector + priority), so a file can match more\n// than one — e.g. a plugin PDF viewer alongside a built-in, or a rich player vs the\n// plain audio player for an .m4a. When that happens and the user hasn't expressed a\n// preference, we ask; their choice can be remembered per file type.\n//\n// Preferences live in settings under `openers.associations`: a map from a *type key*\n// (an extension like \".pdf\", an exact mime, or a \"type/*\" wildcard) to an opener id.\n\nimport { extOf } from './fileType.js';\n\nconst ASSOC_KEY = 'openers.associations';\n\nexport { extOf };\n\n/** The canonical type key we remember a choice under: prefer extension, else mime. */\nexport function typeKeyFor(node) {\n return extOf(node) || node?.contentType || '';\n}\n\n/** A human label for the type, for \"Always use … for {label}\". */\nexport function typeLabelFor(node) {\n const ext = extOf(node);\n if (ext) return `${ext} files`;\n const mime = node?.contentType || '';\n return mime ? `${mime} files` : 'this file type';\n}\n\n/** All openers that can handle this node right now (selector + when + availability),\n * best (highest priority) first. */\nexport function availableOpeners(platform, node) {\n const evaluate = (w) => platform.context.evaluate(w);\n const isAvailable = (o) => platform.plugins.isAvailable(o);\n return platform.contributions\n .openersFor(node)\n .filter((o) => (!o.when || evaluate(o.when)) && isAvailable(o))\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n}\n\n/** The remembered opener id for a node's type (ext → exact mime → type/* ), or null. */\nexport function rememberedOpenerId(platform, node) {\n const assoc = platform.settings.get(ASSOC_KEY) || {};\n const ext = extOf(node);\n const mime = node?.contentType || '';\n const wild = mime.includes('/') ? `${mime.slice(0, mime.indexOf('/') + 1)}*` : '';\n return (ext && assoc[ext]) || (mime && assoc[mime]) || (wild && assoc[wild]) || null;\n}\n\n/** Remember (or, with a null openerId, forget) the opener for a type key. */\nexport function rememberOpener(platform, typeKey, openerId) {\n if (!typeKey) return;\n const assoc = { ...(platform.settings.get(ASSOC_KEY) || {}) };\n if (openerId) assoc[typeKey] = openerId;\n else delete assoc[typeKey];\n platform.settings.set(ASSOC_KEY, assoc);\n}\n\n/** The saved associations as a list, for the Settings UI. */\nexport function listAssociations(platform) {\n const assoc = platform.settings.get(ASSOC_KEY) || {};\n return Object.entries(assoc).map(([typeKey, openerId]) => {\n const opener = platform.contributions.get(openerId);\n return { typeKey, openerId, openerTitle: opener?.title || openerId, missing: !opener };\n });\n}\n\n/** A short source label for an opener (\"Built-in\" or the plugin's name). */\nexport function openerSource(platform, opener) {\n if (!opener?.pluginId) return 'Built-in';\n return platform.plugins.plugins.get(opener.pluginId)?.manifest?.displayName || opener.pluginId;\n}\n",
69
- "// ngin Actions — the workbench's business logic as thin, dispatchable verbs\n// (CQRS-style). Each depends on the `app` provider (platform + reactive\n// services) and performs one user intent: navigate, mutate the tree, upload,\n// search, open a file. Errors surface as notifications; the reactive services\n// they update flow straight back into the UI via `watch`.\n\nimport { Action } from '@3sln/ngin';\nimport { newId } from '@3sln/trove/core/util.js';\nimport { matchesTagFilters } from './tagQuery.js';\nimport { availableOpeners, rememberedOpenerId } from './openers.js';\n\nclass AppAction extends Action {\n static deps = ['app'];\n}\n\n/**\n * Load a collection's items. There is nothing to navigate INTO any more — a drive is\n * browsed by search and by following links — so this only ever switches which\n * collection is on screen, or refreshes the current one.\n */\nexport class NavigateAction extends AppAction {\n constructor(collectionId) {\n super();\n this.collectionId = collectionId;\n }\n async execute({ app }) {\n const { explorer, platform } = app;\n // No `|| 'default'`. Navigating nowhere in particular used to land on a collection\n // that may not exist and may not be readable; now it is a bug in the caller, said out\n // loud rather than papered over with a guess.\n const collectionId = this.collectionId || explorer.state.collectionId;\n if (!collectionId) {\n explorer.set({ loading: false, gate: 'choose' });\n return;\n }\n const switching = collectionId !== explorer.state.collectionId;\n // A collection's trash belongs to that collection. Carrying it across a switch\n // listed the OLD collection's deleted files under the new one — above an \"Empty\n // trash\" button that purges the new one, so the rows and the button disagreed\n // about which drive they were talking about.\n explorer.set({ loading: true, error: null, collectionId, ...(switching ? { trash: null } : {}) });\n try {\n const sort = platform.settings.get('explorer.sort');\n const order = platform.settings.get('explorer.sortOrder');\n const res = await platform.api.list(collectionId, { sort, order });\n explorer.set({\n items: res.items, loading: false, selection: [], sort, order,\n collectionId: res.collectionId || collectionId,\n // What the COLLECTION holds, as against the page we were handed. Reporting the\n // page length would tell someone with 3,000 files that they have 500.\n stats: res.stats || null,\n usage: res.usage || null,\n nextCursor: res.nextCursor || null,\n });\n // Remember where they were, so the next visit opens there rather than guessing.\n platform.settings.set?.('explorer.lastCollection', collectionId);\n explorer.set({ gate: null });\n // Explorer→context projection (collectionId/hasSelection) lives in bl/index.js\n // so it stays in sync with selection too — nothing to mirror here.\n } catch (err) {\n explorer.set({ loading: false, error: err.message });\n platform.notifications.error(`Couldn't load this collection: ${err.message}`);\n }\n }\n}\n\nexport class LoadCollectionsAction extends AppAction {\n async execute({ app }) {\n try {\n const res = await app.platform.api.collections();\n const collections = res.collections || [];\n app.explorer.set({ collections, canCreateCollection: !!res.canCreate });\n return collections;\n } catch { /* collections disabled */ return []; }\n }\n}\n\n/**\n * Open the drive the user should land on.\n *\n * NOT simply 'default'. On a multi-user deployment plenty of people have no access to\n * the default collection at all, and starting there shows them a permission error\n * instead of their own files — the drive appears broken to the exact users for whom it\n * is working correctly. So: keep the last collection if it is still readable, otherwise\n * take the first one they can actually see.\n */\nexport class OpenInitialCollectionAction extends AppAction {\n async execute({ app }) {\n // Calls the API directly rather than dispatching LoadCollectionsAction: ngin's\n // dispatch() returns an event feed, not the action's value, so awaiting it would\n // hand back an EventTarget and this would fail in a way nothing reports.\n let collections = [];\n let canCreate = false;\n try {\n const res = await app.platform.api.collections();\n collections = res.collections || [];\n canCreate = !!res.canCreate;\n app.explorer.set({ collections, canCreateCollection: canCreate });\n } catch (err) {\n app.explorer.set({ loading: false, error: `Couldn't load your collections: ${err.message}` });\n return;\n }\n\n const ids = collections.map((c) => c.id);\n const remembered = app.platform.settings.get('explorer.lastCollection');\n\n // Nothing exists yet. Two different situations that used to read as one:\n if (!ids.length) {\n app.explorer.set({\n loading: false, items: [], collections: [],\n // Someone who may create one is on a fresh drive and should be asked to. Someone\n // who may not has no grants, and telling them to create a collection they cannot\n // create is worse than telling them nothing.\n gate: canCreate ? 'create' : null,\n error: canCreate\n ? null\n : 'You do not have access to any collections yet. Ask an administrator to grant you one.',\n });\n return;\n }\n\n // There is no fallback to a first or a favourite. Landing somewhere the user did not\n // pick is how the old 'default' behaved, and on a shared drive it opened a collection\n // plenty of people could not read — a permission error presented as their drive.\n // A remembered choice is theirs; anything else is a question.\n if (!remembered || !ids.includes(remembered)) {\n app.explorer.set({ loading: false, items: [], gate: 'choose', error: null });\n return;\n }\n\n app.explorer.set({ gate: null });\n return app.engine.dispatch(new NavigateAction(remembered));\n }\n}\n\nexport class CreateCollectionAction extends AppAction {\n constructor(record) {\n super();\n this.record = record;\n }\n async execute({ app }) {\n try {\n const res = await app.platform.api.createCollection(this.record);\n app.platform.notifications.success(`Created collection “${res.collection.name}”`);\n await app.engine.dispatch(new LoadCollectionsAction());\n app.engine.dispatch(new NavigateAction(res.collection.id));\n } catch (err) {\n app.platform.notifications.error(`Couldn’t create collection: ${err.message}`);\n }\n }\n}\n\n/** Append the next page of a collection to what's already on screen. */\nexport class LoadMoreAction extends AppAction {\n async execute({ app }) {\n const { explorer, platform } = app;\n const cursor = explorer.state.nextCursor;\n if (!cursor || explorer.state.loadingMore) return;\n explorer.set({ loadingMore: true });\n try {\n const res = await platform.api.list(explorer.state.collectionId, {\n sort: explorer.state.sort, order: explorer.state.order, cursor,\n });\n explorer.set({\n items: [...explorer.state.items, ...res.items],\n nextCursor: res.nextCursor || null,\n loadingMore: false,\n });\n } catch (err) {\n explorer.set({ loadingMore: false });\n platform.notifications.error(`Couldn't load more: ${err.message}`);\n }\n }\n}\n\nexport class RefreshAction extends AppAction {\n async execute({ app }) {\n return app.engine.dispatch(new NavigateAction(app.explorer.state.collectionId));\n }\n}\n\n/** Show what's been deleted but not destroyed, and act on it. */\nexport class TrashAction extends AppAction {\n constructor(op = 'list', id = null) {\n super();\n this.op = op;\n this.id = id;\n }\n async execute({ app }) {\n const { explorer, platform } = app;\n const collection = explorer.state.collectionId;\n // Putting it away is one of the things you can do to the trash. Without this the\n // section, once opened, stayed on screen until a page reload — there was no way\n // back to a plain list of files.\n if (this.op === 'hide') {\n explorer.set({ trash: null });\n return;\n }\n try {\n if (this.op === 'restore') {\n const { node } = await platform.api.restore(this.id);\n platform.notifications.success(`Restored “${node.name}”`);\n } else if (this.op === 'purge') {\n await platform.api.purgeTrash({ id: this.id });\n } else if (this.op === 'empty') {\n const { purged } = await platform.api.purgeTrash({ collection });\n platform.notifications.success(`Deleted ${purged} item${purged === 1 ? '' : 's'} for good`);\n }\n const { items } = await platform.api.trash(collection);\n explorer.set({ trash: items });\n // Restoring puts something back in the drive, so the list on screen is now stale.\n if (this.op !== 'list') await app.engine.dispatch(new NavigateAction(collection));\n } catch (err) {\n platform.notifications.error(`Trash: ${err.message}`);\n }\n }\n}\n\nexport class DeleteAction extends AppAction {\n constructor(ids) {\n super();\n this.ids = ids;\n }\n async execute({ app }) {\n try {\n for (const id of this.ids) await app.platform.api.remove(id);\n app.platform.notifications.info(`Deleted ${this.ids.length} item${this.ids.length > 1 ? 's' : ''}`);\n for (const id of this.ids) app.platform.workbench.closeTab(id);\n } catch (err) {\n app.platform.notifications.error(`Couldn’t delete: ${err.message}`);\n }\n app.engine.dispatch(new RefreshAction());\n }\n}\n\nexport class RenameAction extends AppAction {\n constructor(id, newName) {\n super();\n this.id = id;\n this.newName = newName;\n }\n async execute({ app }) {\n try {\n const node = await app.platform.api.rename(this.id, this.newName);\n app.platform.workbench.updateTabNode(node.node);\n app.engine.dispatch(new RefreshAction());\n } catch (err) {\n app.platform.notifications.error(`Couldn’t rename: ${err.message}`);\n }\n }\n}\n\n\nexport class OpenFileAction extends AppAction {\n /** @param {object} node @param {{reset?:boolean}} [opts] reset → start a fresh stack (modal search) */\n constructor(node, opts = {}) {\n super();\n this.node = node;\n this.opts = opts;\n }\n async execute({ app }) {\n // Guard against being invoked with no target (e.g. a command fired with an empty\n // selection) — dereferencing a null node would throw an unhandled rejection.\n if (!this.node) return;\n const { platform } = app;\n const open = (openerId) => platform.workbench.openFile(this.node, openerId, { reset: !!this.opts.reset });\n\n // An explicit opener (e.g. the switch-opener control) wins outright.\n if (this.opts.openerId) return open(this.opts.openerId);\n\n // Only openers available right now (a plugin previewer needing the network while\n // offline is skipped, so we fall back to a built-in one).\n const avail = availableOpeners(platform, this.node);\n\n // A remembered choice for this file type, if that opener is still available.\n const remembered = rememberedOpenerId(platform, this.node);\n if (remembered && avail.some((o) => o.id === remembered)) return open(remembered);\n\n // Several openers and no saved preference → let the user choose (with an option to\n // remember). One or none → just open the best (or the download fallback).\n if (avail.length > 1) {\n return platform.workbench.showDialog({ kind: 'opener-chooser', node: this.node, openers: avail, reset: !!this.opts.reset });\n }\n open(avail[0]?.id || 'core.fallback');\n }\n}\n\nexport class UploadFilesAction extends AppAction {\n constructor(files, collectionId) {\n super();\n this.files = files;\n this.collectionId = collectionId;\n }\n async execute({ app }) {\n const collection = this.collectionId || app.explorer.state.collectionId;\n // Uploading with no collection open has nowhere to put the bytes. Refused visibly:\n // the old fallback sent them to whatever 'default' happened to be.\n if (!collection) {\n app.platform.notifications.error('Open a collection before uploading');\n return;\n }\n const concurrency = app.platform.settings.get('uploads.concurrency');\n const uploads = [...this.files].map((file) => this.#one(app, file, collection, concurrency));\n await Promise.allSettled(uploads);\n app.engine.dispatch(new NavigateAction(collection));\n }\n async #one(app, file, collection, concurrency) {\n const { transfers, platform } = app;\n const tid = newId('xfer');\n const controller = new AbortController();\n transfers.start(tid, file.name, file.size, controller);\n let uploadId = null;\n try {\n const node = await platform.api.upload(file, {\n collection, concurrency, signal: controller.signal,\n onStart: (id) => { uploadId = id; },\n onProgress: (p) => transfers.progress(tid, p),\n });\n transfers.finish(tid, 'done');\n // The server disambiguates a same-name collision rather than overwriting — tell\n // the user when the saved name differs from what they dropped.\n if (node?.name && node.name !== file.name) {\n platform.notifications.info(`\"${file.name}\" already existed — saved as \"${node.name}\".`);\n }\n } catch (err) {\n // Release the server-side session so a cancelled/failed multipart upload doesn't\n // leak an open multipart object (best-effort; the server also sweeps stale ones).\n if (uploadId) platform.api.abortUpload(uploadId).catch(() => {});\n if (err.code === 'aborted') transfers.finish(tid, 'cancelled');\n else {\n transfers.finish(tid, 'error', err.message);\n platform.notifications.error(`Upload failed: ${file.name} — ${err.message}`);\n }\n }\n }\n}\n\n/** Drive-wide tag/property filter (`#tag`, `#key:op:value`), optionally narrowed\n * by free text. Falls back to filtering the loaded folder when offline. */\nexport class FilterAction extends AppAction {\n constructor(filters, text) {\n super();\n this.filters = filters || [];\n this.text = text || '';\n }\n async execute({ app }) {\n const { search, platform } = app;\n if (!this.filters.length) {\n search.set({ results: [], ran: false, filtered: false });\n return;\n }\n search.set({ query: this.text, loading: true, error: null, filtered: true });\n if (app.offline && !app.offline.state.online) {\n const items = (app.explorer.state.items || []).filter((n) => matchesTagFilters(n, this.filters));\n search.set({ results: items.map((node) => ({ node })), loading: false, ran: true, filtered: true, offline: true });\n return;\n }\n try {\n const res = await platform.api.tagSearch(this.filters, this.text.trim() || undefined, { limit: 100 });\n search.set({ results: (res.items || []).map((node) => ({ node })), loading: false, ran: true, filtered: true, offline: false });\n } catch (err) {\n search.set({ loading: false, error: err.message, ran: true, filtered: true });\n }\n }\n}\n\n/** Command-palette quick-open: a keyword file search whose results live in the search\n * service (state.se.paletteFiles) instead of ad-hoc state hung off the UI. */\nexport class QuickOpenAction extends AppAction {\n constructor(query) {\n super();\n this.query = query;\n }\n async execute({ app }) {\n const { search, platform } = app;\n const q = (this.query || '').trim();\n if (!q) { search.set({ paletteFiles: [], paletteQuery: '', paletteError: null, paletteLoading: false }); return; }\n // Keystrokes outrun the network: a slower request for an earlier query must not\n // land on top of a newer one's results. The query itself is the sequence token —\n // whatever the palette input holds now is the only answer worth showing.\n search.set({ paletteQuery: q, paletteLoading: true, paletteError: null });\n try {\n const res = await platform.api.search(q, { mode: 'keyword', limit: 30 });\n if (search.state.paletteQuery !== q) return; // superseded\n search.set({ paletteFiles: res.results || [], paletteLoading: false });\n } catch (err) {\n if (search.state.paletteQuery !== q) return;\n // A failed search must not look like \"no files matched\" — that reads as a fact\n // about the drive when it's actually a fact about the request.\n search.set({ paletteFiles: [], paletteLoading: false, paletteError: err?.message || 'Search failed' });\n }\n }\n}\n\nexport class SearchAction extends AppAction {\n constructor(query, mode) {\n super();\n this.query = query;\n this.mode = mode;\n }\n async execute({ app }) {\n const { search, platform } = app;\n const q = this.query.trim();\n if (!q) {\n search.set({ query: '', results: [], ran: false, error: null, resolved: null });\n return;\n }\n const mode = this.mode || platform.settings.get('search.mode');\n search.set({ query: this.query, mode, loading: true, error: null, resolved: null });\n const offline = app.offline;\n // Offline (or server unreachable) → search the pinned corpus locally.\n if (offline && !offline.state.online) {\n try {\n const results = await offline.searchOffline(q, { limit: 40 });\n search.set({ results, loading: false, ran: true, offline: true, resolved: null });\n } catch (err) {\n search.set({ results: [], loading: false, ran: true, offline: true, error: err.message });\n }\n return;\n }\n try {\n // The server transforms the raw query (parse/LLM) and tells us what it actually\n // searched — surfaced to the user via `resolved` so search is honest.\n //\n // We send the views we can draw with, because the transformer is the only thing in\n // the stack that read the sentence: \"photos from the trip last summer\" asks for a\n // gallery, and by the time the results are back all anyone can do is guess from\n // content types. It can only name a view from this list.\n const views = platform.contributions.ofType('view').map((v) => ({ id: v.id, title: v.title || v.id }));\n const res = await platform.api.query(q, { mode, limit: 40, views });\n search.set({ results: res.results, resolved: res.resolved || null, loading: false, ran: true, offline: false });\n } catch (err) {\n if (offline) {\n const results = await offline.searchOffline(q, { limit: 40 });\n search.set({ results, loading: false, ran: true, offline: true, error: results.length ? null : err.message });\n } else {\n search.set({ loading: false, error: err.message, ran: true });\n }\n }\n }\n}\n\n// --- API keys (admin) ----------------------------------------------------------\n\n/**\n * Load the key list.\n *\n * Silent on failure rather than noisy: this fires when Settings opens, and a non-admin\n * opening Settings gets a 403 that is the correct answer, not an error worth a toast.\n * The section simply does not render.\n */\nexport class LoadApiKeysAction extends AppAction {\n async execute({ app }) {\n app.apiKeys.set({ loading: true, error: null });\n try {\n const res = await app.platform.api.apiKeys();\n app.apiKeys.set({ keys: res.keys || [], loading: false, loaded: true, error: null });\n } catch (err) {\n app.apiKeys.set({ loading: false, loaded: true, error: err?.message || 'Could not load API keys' });\n }\n }\n}\n\n/**\n * Mint a key and hold the secret for display.\n *\n * The secret is the whole point of the round trip and cannot be fetched again, so it is\n * put into state before anything else can fail. A refresh of the list afterwards is a\n * convenience; losing the secret because the refresh threw would not be.\n */\nexport class MintApiKeyAction extends AppAction {\n constructor(spec) {\n super();\n this.spec = spec;\n }\n async execute({ app }) {\n app.apiKeys.set({ busy: 'mint', error: null });\n try {\n const { key, secret } = await app.platform.api.mintApiKey(this.spec);\n app.apiKeys.set({ minted: { key, secret }, busy: null });\n const res = await app.platform.api.apiKeys().catch(() => null);\n if (res) app.apiKeys.set({ keys: res.keys || [] });\n return key;\n } catch (err) {\n app.apiKeys.set({ busy: null, error: err?.message || 'Could not create the key' });\n app.platform.notifications.error(err?.message || 'Could not create the key');\n return null;\n }\n }\n}\n\nexport class RevokeApiKeyAction extends AppAction {\n constructor(id) {\n super();\n this.id = id;\n }\n async execute({ app }) {\n app.apiKeys.set({ busy: this.id, error: null });\n try {\n await app.platform.api.revokeApiKey(this.id);\n const res = await app.platform.api.apiKeys().catch(() => null);\n app.apiKeys.set({ busy: null, ...(res ? { keys: res.keys || [] } : {}) });\n app.platform.notifications.success('Key revoked');\n } catch (err) {\n app.apiKeys.set({ busy: null });\n app.platform.notifications.error(err?.message || 'Could not revoke the key');\n }\n }\n}\n",
71
+ "// ngin Actions — the workbench's business logic as thin, dispatchable verbs\n// (CQRS-style). Each depends on the `app` provider (platform + reactive\n// services) and performs one user intent: navigate, mutate the tree, upload,\n// search, open a file. Errors surface as notifications; the reactive services\n// they update flow straight back into the UI via `watch`.\n\nimport { Action } from '@3sln/ngin';\nimport { newId } from '@3sln/trove/core/util.js';\nimport { matchesTagFilters } from './tagQuery.js';\nimport { availableOpeners, rememberedOpenerId } from './openers.js';\n\nclass AppAction extends Action {\n static deps = ['app'];\n}\n\n/**\n * Load a collection's items. There is nothing to navigate INTO any more — a drive is\n * browsed by search and by following links — so this only ever switches which\n * collection is on screen, or refreshes the current one.\n */\nexport class NavigateAction extends AppAction {\n constructor(collectionId) {\n super();\n this.collectionId = collectionId;\n }\n async execute({ app }) {\n const { explorer, platform } = app;\n // No `|| 'default'`. Navigating nowhere in particular used to land on a collection\n // that may not exist and may not be readable; now it is a bug in the caller, said out\n // loud rather than papered over with a guess.\n const collectionId = this.collectionId || explorer.state.collectionId;\n if (!collectionId) {\n explorer.set({ loading: false, gate: 'choose' });\n return;\n }\n const switching = collectionId !== explorer.state.collectionId;\n // A collection's trash belongs to that collection. Carrying it across a switch\n // listed the OLD collection's deleted files under the new one — above an \"Empty\n // trash\" button that purges the new one, so the rows and the button disagreed\n // about which drive they were talking about.\n explorer.set({ loading: true, error: null, collectionId, ...(switching ? { trash: null } : {}) });\n try {\n const sort = platform.settings.get('explorer.sort');\n const order = platform.settings.get('explorer.sortOrder');\n const res = await platform.api.list(collectionId, { sort, order });\n explorer.set({\n items: res.items, loading: false, selection: [], sort, order,\n collectionId: res.collectionId || collectionId,\n // What the COLLECTION holds, as against the page we were handed. Reporting the\n // page length would tell someone with 3,000 files that they have 500.\n stats: res.stats || null,\n usage: res.usage || null,\n nextCursor: res.nextCursor || null,\n });\n // Remember where they were, so the next visit opens there rather than guessing.\n platform.settings.set?.('explorer.lastCollection', collectionId);\n explorer.set({ gate: null });\n // Explorer→context projection (collectionId/hasSelection) lives in bl/index.js\n // so it stays in sync with selection too — nothing to mirror here.\n } catch (err) {\n explorer.set({ loading: false, error: err.message });\n platform.notifications.error(`Couldn't load this collection: ${err.message}`);\n }\n }\n}\n\nexport class LoadCollectionsAction extends AppAction {\n async execute({ app }) {\n try {\n const res = await app.platform.api.collections();\n const collections = res.collections || [];\n app.explorer.set({ collections, canCreateCollection: !!res.canCreate });\n return collections;\n } catch { /* collections disabled */ return []; }\n }\n}\n\n/**\n * Open the drive the user should land on.\n *\n * NOT simply 'default'. On a multi-user deployment plenty of people have no access to\n * the default collection at all, and starting there shows them a permission error\n * instead of their own files — the drive appears broken to the exact users for whom it\n * is working correctly. So: keep the last collection if it is still readable, otherwise\n * take the first one they can actually see.\n */\nexport class OpenInitialCollectionAction extends AppAction {\n async execute({ app }) {\n // Calls the API directly rather than dispatching LoadCollectionsAction: ngin's\n // dispatch() returns an event feed, not the action's value, so awaiting it would\n // hand back an EventTarget and this would fail in a way nothing reports.\n let collections = [];\n let canCreate = false;\n try {\n const res = await app.platform.api.collections();\n collections = res.collections || [];\n canCreate = !!res.canCreate;\n app.explorer.set({ collections, canCreateCollection: canCreate });\n } catch (err) {\n app.explorer.set({ loading: false, error: `Couldn't load your collections: ${err.message}` });\n return;\n }\n\n const ids = collections.map((c) => c.id);\n const remembered = app.platform.settings.get('explorer.lastCollection');\n\n // Nothing exists yet. Two different situations that used to read as one:\n if (!ids.length) {\n app.explorer.set({\n loading: false, items: [], collections: [],\n // Someone who may create one is on a fresh drive and should be asked to. Someone\n // who may not has no grants, and telling them to create a collection they cannot\n // create is worse than telling them nothing.\n gate: canCreate ? 'create' : null,\n error: canCreate\n ? null\n : 'You do not have access to any collections yet. Ask an administrator to grant you one.',\n });\n return;\n }\n\n // There is no fallback to a first or a favourite. Landing somewhere the user did not\n // pick is how the old 'default' behaved, and on a shared drive it opened a collection\n // plenty of people could not read — a permission error presented as their drive.\n // A remembered choice is theirs; anything else is a question.\n if (!remembered || !ids.includes(remembered)) {\n app.explorer.set({ loading: false, items: [], gate: 'choose', error: null });\n return;\n }\n\n app.explorer.set({ gate: null });\n return app.engine.dispatch(new NavigateAction(remembered));\n }\n}\n\nexport class CreateCollectionAction extends AppAction {\n constructor(record) {\n super();\n this.record = record;\n }\n async execute({ app }) {\n try {\n const res = await app.platform.api.createCollection(this.record);\n app.platform.notifications.success(`Created collection “${res.collection.name}”`);\n await app.engine.dispatch(new LoadCollectionsAction());\n app.engine.dispatch(new NavigateAction(res.collection.id));\n } catch (err) {\n app.platform.notifications.error(`Couldn’t create collection: ${err.message}`);\n }\n }\n}\n\n/** Append the next page of a collection to what's already on screen. */\nexport class LoadMoreAction extends AppAction {\n async execute({ app }) {\n const { explorer, platform } = app;\n const cursor = explorer.state.nextCursor;\n if (!cursor || explorer.state.loadingMore) return;\n explorer.set({ loadingMore: true });\n try {\n const res = await platform.api.list(explorer.state.collectionId, {\n sort: explorer.state.sort, order: explorer.state.order, cursor,\n });\n explorer.set({\n items: [...explorer.state.items, ...res.items],\n nextCursor: res.nextCursor || null,\n loadingMore: false,\n });\n } catch (err) {\n explorer.set({ loadingMore: false });\n platform.notifications.error(`Couldn't load more: ${err.message}`);\n }\n }\n}\n\nexport class RefreshAction extends AppAction {\n async execute({ app }) {\n return app.engine.dispatch(new NavigateAction(app.explorer.state.collectionId));\n }\n}\n\n/** Show what's been deleted but not destroyed, and act on it. */\nexport class TrashAction extends AppAction {\n constructor(op = 'list', id = null) {\n super();\n this.op = op;\n this.id = id;\n }\n async execute({ app }) {\n const { explorer, platform } = app;\n const collection = explorer.state.collectionId;\n // Putting it away is one of the things you can do to the trash. Without this the\n // section, once opened, stayed on screen until a page reload — there was no way\n // back to a plain list of files.\n if (this.op === 'hide') {\n explorer.set({ trash: null });\n return;\n }\n try {\n if (this.op === 'restore') {\n const { node } = await platform.api.restore(this.id);\n platform.notifications.success(`Restored “${node.name}”`);\n } else if (this.op === 'purge') {\n await platform.api.purgeTrash({ id: this.id });\n } else if (this.op === 'empty') {\n const { purged } = await platform.api.purgeTrash({ collection });\n platform.notifications.success(`Deleted ${purged} item${purged === 1 ? '' : 's'} for good`);\n }\n const { items } = await platform.api.trash(collection);\n explorer.set({ trash: items });\n // Restoring puts something back in the drive, so the list on screen is now stale.\n if (this.op !== 'list') await app.engine.dispatch(new NavigateAction(collection));\n } catch (err) {\n platform.notifications.error(`Trash: ${err.message}`);\n }\n }\n}\n\nexport class DeleteAction extends AppAction {\n constructor(ids) {\n super();\n this.ids = ids;\n }\n async execute({ app }) {\n try {\n for (const id of this.ids) await app.platform.api.remove(id);\n app.platform.notifications.info(`Deleted ${this.ids.length} item${this.ids.length > 1 ? 's' : ''}`);\n for (const id of this.ids) app.platform.workbench.closeTab(id);\n } catch (err) {\n app.platform.notifications.error(`Couldn’t delete: ${err.message}`);\n }\n app.engine.dispatch(new RefreshAction());\n }\n}\n\nexport class RenameAction extends AppAction {\n constructor(id, newName) {\n super();\n this.id = id;\n this.newName = newName;\n }\n async execute({ app }) {\n try {\n const node = await app.platform.api.rename(this.id, this.newName);\n app.platform.workbench.updateTabNode(node.node);\n app.engine.dispatch(new RefreshAction());\n } catch (err) {\n app.platform.notifications.error(`Couldn’t rename: ${err.message}`);\n }\n }\n}\n\n\nexport class OpenFileAction extends AppAction {\n /** @param {object} node @param {{reset?:boolean}} [opts] reset → start a fresh stack (modal search) */\n constructor(node, opts = {}) {\n super();\n this.node = node;\n this.opts = opts;\n }\n async execute({ app }) {\n // Guard against being invoked with no target (e.g. a command fired with an empty\n // selection) — dereferencing a null node would throw an unhandled rejection.\n if (!this.node) return;\n const { platform } = app;\n const open = (openerId) => platform.workbench.openFile(this.node, openerId, { reset: !!this.opts.reset });\n\n // An explicit opener (e.g. the switch-opener control) wins outright.\n if (this.opts.openerId) return open(this.opts.openerId);\n\n // Only openers available right now (a plugin previewer needing the network while\n // offline is skipped, so we fall back to a built-in one).\n const avail = availableOpeners(platform, this.node);\n\n // A remembered choice for this file type, if that opener is still available.\n const remembered = rememberedOpenerId(platform, this.node);\n if (remembered && avail.some((o) => o.id === remembered)) return open(remembered);\n\n // Several openers and no saved preference → let the user choose (with an option to\n // remember). One or none → just open the best (or the download fallback).\n if (avail.length > 1) {\n return platform.workbench.showDialog({ kind: 'opener-chooser', node: this.node, openers: avail, reset: !!this.opts.reset });\n }\n open(avail[0]?.id || 'core.fallback');\n }\n}\n\nexport class UploadFilesAction extends AppAction {\n constructor(files, collectionId) {\n super();\n this.files = files;\n this.collectionId = collectionId;\n }\n async execute({ app }) {\n const collection = this.collectionId || app.explorer.state.collectionId;\n // Uploading with no collection open has nowhere to put the bytes. Refused visibly:\n // the old fallback sent them to whatever 'default' happened to be.\n if (!collection) {\n app.platform.notifications.error('Open a collection before uploading');\n return;\n }\n const concurrency = app.platform.settings.get('uploads.concurrency');\n const uploads = [...this.files].map((file) => this.#one(app, file, collection, concurrency));\n await Promise.allSettled(uploads);\n app.engine.dispatch(new NavigateAction(collection));\n }\n /**\n * One file, once — and again, on the same tray row, if the user asks.\n *\n * `existingTid` is what makes a manual retry a second attempt at the row already on\n * screen rather than a new entry beside it. The retry closes over the File, which is why\n * it can run at all without asking the user to find the file again; it is also why the\n * offer does not survive a reload, since nothing here is persisted.\n */\n async #one(app, file, collection, concurrency, existingTid = null) {\n const { transfers, platform } = app;\n const tid = existingTid || newId('xfer');\n const controller = new AbortController();\n if (existingTid) {\n transfers.restart(tid, controller);\n } else {\n transfers.start(tid, file.name, file.size, controller, {\n retry: () => this.#one(app, file, collection, concurrency, tid),\n });\n }\n let uploadId = null;\n try {\n const node = await platform.api.upload(file, {\n collection, concurrency, signal: controller.signal,\n onStart: (id) => { uploadId = id; },\n onProgress: (p) => transfers.progress(tid, p),\n });\n transfers.finish(tid, 'done');\n // The server disambiguates a same-name collision rather than overwriting — tell\n // the user when the saved name differs from what they dropped.\n if (node?.name && node.name !== file.name) {\n platform.notifications.info(`\"${file.name}\" already existed — saved as \"${node.name}\".`);\n }\n } catch (err) {\n // Release the server-side session so a cancelled/failed multipart upload doesn't\n // leak an open multipart object (best-effort; the server also sweeps stale ones).\n if (uploadId) platform.api.abortUpload(uploadId).catch(() => {});\n if (err.code === 'aborted') transfers.finish(tid, 'cancelled');\n else {\n transfers.finish(tid, 'error', err.message);\n // The toast says what happened; the tray row is where it can be acted on, and\n // pointing at it is the difference between a dead end and an offer.\n platform.notifications.error(`Upload failed: ${file.name} — ${err.message}. Retry it from the transfers tray.`);\n }\n }\n }\n}\n\n/** Drive-wide tag/property filter (`#tag`, `#key:op:value`), optionally narrowed\n * by free text. Falls back to filtering the loaded folder when offline. */\nexport class FilterAction extends AppAction {\n constructor(filters, text) {\n super();\n this.filters = filters || [];\n this.text = text || '';\n }\n async execute({ app }) {\n const { search, platform } = app;\n if (!this.filters.length) {\n search.set({ results: [], ran: false, filtered: false });\n return;\n }\n search.set({ query: this.text, loading: true, error: null, filtered: true });\n if (app.offline && !app.offline.state.online) {\n const items = (app.explorer.state.items || []).filter((n) => matchesTagFilters(n, this.filters));\n search.set({ results: items.map((node) => ({ node })), loading: false, ran: true, filtered: true, offline: true });\n return;\n }\n try {\n const res = await platform.api.tagSearch(this.filters, this.text.trim() || undefined, { limit: 100 });\n search.set({ results: (res.items || []).map((node) => ({ node })), loading: false, ran: true, filtered: true, offline: false });\n } catch (err) {\n search.set({ loading: false, error: err.message, ran: true, filtered: true });\n }\n }\n}\n\n/** Command-palette quick-open: a keyword file search whose results live in the search\n * service (state.se.paletteFiles) instead of ad-hoc state hung off the UI. */\nexport class QuickOpenAction extends AppAction {\n constructor(query) {\n super();\n this.query = query;\n }\n async execute({ app }) {\n const { search, platform } = app;\n const q = (this.query || '').trim();\n if (!q) { search.set({ paletteFiles: [], paletteQuery: '', paletteError: null, paletteLoading: false }); return; }\n // Keystrokes outrun the network: a slower request for an earlier query must not\n // land on top of a newer one's results. The query itself is the sequence token —\n // whatever the palette input holds now is the only answer worth showing.\n search.set({ paletteQuery: q, paletteLoading: true, paletteError: null });\n try {\n const res = await platform.api.search(q, { mode: 'keyword', limit: 30 });\n if (search.state.paletteQuery !== q) return; // superseded\n search.set({ paletteFiles: res.results || [], paletteLoading: false });\n } catch (err) {\n if (search.state.paletteQuery !== q) return;\n // A failed search must not look like \"no files matched\" — that reads as a fact\n // about the drive when it's actually a fact about the request.\n search.set({ paletteFiles: [], paletteLoading: false, paletteError: err?.message || 'Search failed' });\n }\n }\n}\n\nexport class SearchAction extends AppAction {\n constructor(query, mode) {\n super();\n this.query = query;\n this.mode = mode;\n }\n async execute({ app }) {\n const { search, platform } = app;\n const q = this.query.trim();\n if (!q) {\n search.set({ query: '', results: [], ran: false, error: null, resolved: null });\n return;\n }\n const mode = this.mode || platform.settings.get('search.mode');\n search.set({ query: this.query, mode, loading: true, error: null, resolved: null });\n const offline = app.offline;\n // Offline (or server unreachable) → search the pinned corpus locally.\n if (offline && !offline.state.online) {\n try {\n const results = await offline.searchOffline(q, { limit: 40 });\n search.set({ results, loading: false, ran: true, offline: true, resolved: null });\n } catch (err) {\n search.set({ results: [], loading: false, ran: true, offline: true, error: err.message });\n }\n return;\n }\n try {\n // The server transforms the raw query (parse/LLM) and tells us what it actually\n // searched — surfaced to the user via `resolved` so search is honest.\n //\n // We send the views we can draw with, because the transformer is the only thing in\n // the stack that read the sentence: \"photos from the trip last summer\" asks for a\n // gallery, and by the time the results are back all anyone can do is guess from\n // content types. It can only name a view from this list.\n const views = platform.contributions.ofType('view').map((v) => ({ id: v.id, title: v.title || v.id }));\n const res = await platform.api.query(q, { mode, limit: 40, views });\n search.set({ results: res.results, resolved: res.resolved || null, loading: false, ran: true, offline: false });\n } catch (err) {\n if (offline) {\n const results = await offline.searchOffline(q, { limit: 40 });\n search.set({ results, loading: false, ran: true, offline: true, error: results.length ? null : err.message });\n } else {\n search.set({ loading: false, error: err.message, ran: true });\n }\n }\n }\n}\n\n// --- API keys (admin) ----------------------------------------------------------\n\n/**\n * Load the key list.\n *\n * Silent on failure rather than noisy: this fires when Settings opens, and a non-admin\n * opening Settings gets a 403 that is the correct answer, not an error worth a toast.\n * The section simply does not render.\n */\nexport class LoadApiKeysAction extends AppAction {\n async execute({ app }) {\n app.apiKeys.set({ loading: true, error: null });\n try {\n const res = await app.platform.api.apiKeys();\n app.apiKeys.set({ keys: res.keys || [], loading: false, loaded: true, error: null });\n } catch (err) {\n app.apiKeys.set({ loading: false, loaded: true, error: err?.message || 'Could not load API keys' });\n }\n }\n}\n\n/**\n * Mint a key and hold the secret for display.\n *\n * The secret is the whole point of the round trip and cannot be fetched again, so it is\n * put into state before anything else can fail. A refresh of the list afterwards is a\n * convenience; losing the secret because the refresh threw would not be.\n */\nexport class MintApiKeyAction extends AppAction {\n constructor(spec) {\n super();\n this.spec = spec;\n }\n async execute({ app }) {\n app.apiKeys.set({ busy: 'mint', error: null });\n try {\n const { key, secret } = await app.platform.api.mintApiKey(this.spec);\n app.apiKeys.set({ minted: { key, secret }, busy: null });\n const res = await app.platform.api.apiKeys().catch(() => null);\n if (res) app.apiKeys.set({ keys: res.keys || [] });\n return key;\n } catch (err) {\n app.apiKeys.set({ busy: null, error: err?.message || 'Could not create the key' });\n app.platform.notifications.error(err?.message || 'Could not create the key');\n return null;\n }\n }\n}\n\nexport class RevokeApiKeyAction extends AppAction {\n constructor(id) {\n super();\n this.id = id;\n }\n async execute({ app }) {\n app.apiKeys.set({ busy: this.id, error: null });\n try {\n await app.platform.api.revokeApiKey(this.id);\n const res = await app.platform.api.apiKeys().catch(() => null);\n app.apiKeys.set({ busy: null, ...(res ? { keys: res.keys || [] } : {}) });\n app.platform.notifications.success('Key revoked');\n } catch (err) {\n app.apiKeys.set({ busy: null });\n app.platform.notifications.error(err?.message || 'Could not revoke the key');\n }\n }\n}\n",
70
72
  "// Install flow: turn an uploaded .zip or a URL into a parsed package, assess its\n// trust (signature + domain verification), and present the pre-install review so\n// the user can make an informed decision before any plugin code runs.\n\nimport { parsePackage, fetchPackage, reviewSummary, displayName } from '../platform/pluginPackage.js';\nimport { pluginId } from '@3sln/trove/core/plugins/identity.js';\n\nexport async function beginInstallFromFile(app, file) {\n try {\n const bytes = new Uint8Array(await file.arrayBuffer());\n await review(app, parsePackage(bytes));\n } catch (err) {\n app.platform.notifications.error(`Couldn't read the plugin: ${err.message}`);\n }\n}\n\nexport async function beginInstallFromUrl(app, url) {\n try {\n const pkg = await fetchPackage(url, (u, o) => fetch(u, o));\n await review(app, pkg);\n } catch (err) {\n app.platform.notifications.error(`Couldn't fetch the plugin: ${err.message}`);\n }\n}\n\nasync function review(app, pkg) {\n const label = displayName(pkg.manifest);\n if (app.platform.plugins.plugins.has(pluginId(pkg.manifest))) {\n app.platform.notifications.warn(`“${label}” is already installed.`);\n return;\n }\n // Trust assessment can hit the network (domain assetlinks); do it before review.\n let trust = { status: 'unverified' };\n try {\n trust = await app.platform.plugins.assessTrust(pkg);\n } catch { /* offline / unreachable */ }\n const summary = reviewSummary(pkg, trust);\n app.platform.workbench.showDialog({\n kind: 'plugin-review',\n summary,\n isAdmin: !!app.social.state.admin,\n onInstall: async (grants) => {\n app.platform.workbench.closeDialog();\n // Account installs upload the package + run a handshake that can take a while —\n // switch to the plugins view (which shows the plugin's loading state) and hold a\n // sticky \"Installing…\" toast so the user isn't left staring at nothing.\n app.platform.workbench.setActivity('plugins');\n const pending = app.platform.notifications.info(`Installing “${label}”…`, { sticky: true });\n try {\n await app.platform.plugins.install(pkg, { grants, trust });\n app.platform.notifications.dismiss(pending);\n app.platform.notifications.success(`Installed “${label}”`);\n } catch (err) {\n app.platform.notifications.dismiss(pending);\n app.platform.notifications.error(`Install failed: ${err.message}`);\n }\n },\n });\n}\n",
71
73
  "// Register the workbench's built-in commands. Commands are the single entry\n// point for every action — palette, keybindings, buttons, and menus all call\n// `commands.execute(id)`. Handlers here dispatch ngin Actions for anything that\n// touches data, and poke the reactive shell services for pure-UI toggles.\n\nimport {\n NavigateAction, RefreshAction, DeleteAction, RenameAction,\n UploadFilesAction, OpenFileAction, CreateCollectionAction, LoadMoreAction, TrashAction,\n SearchAction,\n LoadApiKeysAction, MintApiKeyAction, RevokeApiKeyAction,\n} from './actions.js';\nimport { beginInstallFromFile, beginInstallFromUrl } from './pluginInstall.js';\nimport { troveUri } from '@3sln/trove/core/links.js';\n\nexport function registerCommands(app) {\n const { platform, engine, explorer } = app;\n const { commands, workbench } = platform;\n const go = (a) => engine.dispatch(a);\n\n const cmd = (id, title, handler, extra = {}) => commands.register({ id, title, handler, ...extra });\n\n // --- navigation / views ----------------------------------------------------\n cmd('workbench.showCommandPalette', 'Show All Commands', () => workbench.openPalette('commands'), { category: 'View', icon: 'command' });\n cmd('workbench.quickOpen', 'Go to File…', () => workbench.openPalette('files'), { category: 'File', icon: 'search' });\n cmd('workbench.view.home', 'Go Home (search & browse)', () => workbench.showHome(), { category: 'View', icon: 'search' });\n cmd('workbench.view.plugins', 'Show Plugins', () => workbench.setActivity('plugins'), { category: 'View' });\n cmd('workbench.openSettings', 'Open Settings', () => workbench.setActivity('settings'), { category: 'Preferences', icon: 'gear' });\n cmd('workbench.closeOverlays', 'Close', () => workbench.closeOverlays(), { palette: false });\n\n // Speak to search.\n //\n // On a TV this is mostly NOT about recognising anything: a remote's mic dictates into\n // whatever text field the platform keyboard is attached to, and is swallowed by the\n // system assistant when there isn't one. So the command's first job is to put the\n // search field on screen and focused, which is a feature on every TV whether or not\n // the browser can transcribe. Where it can — on-device only, see platform/voice.js —\n // it also starts listening and types what it hears.\n cmd('search.voice', 'Search by Voice', async () => {\n await platform.voice.run({\n onText: (text, { final }) => {\n if (!text) return;\n workbench.setLaunchQuery(text);\n // Interim results keep the box in step with the speaker; only the settled\n // transcript is worth a round trip to the server.\n if (final) go(new SearchAction(text));\n },\n });\n }, { category: 'View', icon: 'search' });\n\n // --- background work + standing problems -----------------------------------\n cmd('workbench.showActivity', 'Show Activity (running work & problems)',\n () => app.activity.togglePanel(true), { category: 'View', icon: 'refresh' });\n // The manual scan the drive had no way to ask for. Reports as a task rather than\n // blocking, because on a large drive it takes minutes.\n cmd('workbench.rebuildIndex', 'Rebuild Search Index',\n () => app.activity.rebuildIndex().catch(() => {}), { category: 'View', icon: 'refresh' });\n // Trove is not the only thing that can write to the bucket. This is how files added,\n // replaced, or removed by something else get picked up.\n cmd('workbench.scanCollection', 'Scan Collection for Outside Changes',\n () => {\n // No collection means no scan. This used to fall back to one called 'default',\n // which on a drive that has none scanned a collection that does not exist and\n // reported the failure as a scan error.\n const id = explorer.state.collectionId;\n if (!id) return platform.notifications.info('Open a collection first — a scan is per collection.');\n return app.activity.scanCollection(id).catch(() => {});\n },\n { category: 'Explorer', icon: 'refresh' });\n // Whether the backing stores are usable from a browser at all. Separate from a scan:\n // a scan asks what the store HOLDS, this asks whether the store can be READ from here,\n // which is the failure that makes every file open to a spinner.\n cmd('workbench.checkStorage', 'Check Storage Configuration',\n () => app.activity.checkStorage().catch(() => {}), { category: 'View', icon: 'plug' });\n\n // --- explorer --------------------------------------------------------------\n cmd('explorer.refresh', 'Refresh', () => go(new RefreshAction()), { category: 'Explorer', icon: 'refresh' });\n cmd('explorer.loadMore', 'Show More Items', () => go(new LoadMoreAction()), { palette: false });\n cmd('explorer.upload', 'Upload Files…', () => {\n pickFiles((files) => files.length && go(new UploadFilesAction(files, explorer.state.collectionId)));\n }, { category: 'Explorer', icon: 'upload' });\n\n // Copy the item's trove: link, which is how one item references another in markdown.\n // \"Nothing is selected\" is a real answer, and it has to be said out loud: these used\n // to return silently, which is indistinguishable from a broken command.\n const subject = (fallbackNode) => {\n const node = fallbackNode || explorer.selectedNodes()[0] || workbench.activeTab()?.node;\n if (!node) platform.notifications.info('Pick a file first — highlight one in the list, or open it.');\n return node;\n };\n\n cmd('explorer.copyLink', 'Copy Link to Item', async () => {\n const node = subject();\n if (!node) return;\n const uri = troveUri(node);\n try {\n await navigator.clipboard.writeText(uri);\n platform.notifications.success(`Copied ${uri}`);\n } catch {\n // Clipboard access can be denied; showing the link is still useful.\n platform.notifications.info(uri, { sticky: true });\n }\n }, { category: 'Explorer', icon: 'link' });\n\n cmd('explorer.rename', 'Rename', () => {\n const node = subject();\n if (!node) return;\n workbench.showDialog({\n kind: 'prompt', title: 'Rename', label: 'New name', value: node.name, confirmLabel: 'Rename',\n onSubmit: (name) => {\n workbench.closeDialog();\n if (name?.trim() && name !== node.name) go(new RenameAction(node.id, name.trim()));\n },\n });\n }, { category: 'Explorer' });\n\n cmd('explorer.delete', 'Delete', () => {\n const nodes = explorer.selectedNodes();\n const fallback = nodes.length ? null : workbench.activeTab()?.node;\n if (fallback) nodes.push(fallback); // deleting the file you have open is the obvious intent\n if (!nodes.length) {\n platform.notifications.info('Pick a file first — highlight one in the list, or open it.');\n return;\n }\n const doDelete = () => go(new DeleteAction(nodes.map((n) => n.id)));\n if (platform.settings.get('explorer.confirmDelete')) {\n workbench.showDialog({\n kind: 'confirm', title: `Move ${nodes.length} item${nodes.length > 1 ? 's' : ''} to the trash?`,\n // Say what actually happens. Telling someone a file will be \"permanently\n // deleted\" when it goes to the trash trains them to fear a safe action; the\n // reverse — promising recovery that doesn't exist — is worse.\n body: nodes.length === 1\n ? `\"${nodes[0].name}\" leaves the drive but is kept, and can be restored from the trash.`\n : 'They leave the drive but are kept, and can be restored from the trash.',\n confirmLabel: 'Move to trash',\n onConfirm: () => {\n workbench.closeDialog();\n doDelete();\n },\n });\n } else doDelete();\n }, { category: 'Explorer', icon: 'trash' });\n\n cmd('explorer.showTrash', 'Show Trash', () => {\n go(new TrashAction('list'));\n workbench.showHome();\n }, { category: 'Explorer', icon: 'trash' });\n // --- API keys (admin) ---------------------------------------------------------\n // All `palette: false`: these are the settings screen's own buttons, not verbs anyone\n // would go looking for in the palette. Revoking a credential by fuzzy-searching for it\n // is not a thing to make easy.\n cmd('keys.load', 'Load API Keys', () => go(new LoadApiKeysAction()), { palette: false });\n cmd('keys.new', 'New API Key', () => app.apiKeys.startDraft(), { palette: false });\n cmd('keys.cancel', 'Cancel API Key', () => app.apiKeys.cancelDraft(), { palette: false });\n cmd('keys.dismissMinted', 'Dismiss API Key', () => app.apiKeys.clearMinted(), { palette: false });\n cmd('keys.revoke', 'Revoke API Key', (id) => id && go(new RevokeApiKeyAction(id)), { palette: false });\n cmd('keys.mint', 'Create API Key', () => {\n const draft = app.apiKeys.state.draft;\n const scopes = app.apiKeys.draftScopes();\n if (!draft?.name?.trim() || !scopes) return;\n // Days in the form, an absolute instant on the wire: the server compares against its\n // own clock, and \"30 days from whenever this arrives\" is not what was chosen.\n const days = Number(draft.expiresInDays);\n const expiresAt = draft.expiresInDays !== '' && Number.isFinite(days) && days > 0\n ? Date.now() + days * 86400_000\n : null;\n app.apiKeys.cancelDraft();\n return go(new MintApiKeyAction({ name: draft.name.trim(), scopes, expiresAt }));\n }, { palette: false });\n\n cmd('explorer.hideTrash', 'Hide Trash', () => go(new TrashAction('hide')), { palette: false });\n cmd('explorer.restore', 'Restore from Trash', (id) => id && go(new TrashAction('restore', id)), { palette: false });\n cmd('explorer.purgeOne', 'Delete Forever', (id) => id && go(new TrashAction('purge', id)), { palette: false });\n cmd('explorer.emptyTrash', 'Empty Trash', () => {\n workbench.showDialog({\n kind: 'confirm', title: 'Empty the trash?',\n body: 'Everything in the trash will be destroyed. This cannot be undone.',\n danger: true, confirmLabel: 'Delete forever',\n onConfirm: () => { workbench.closeDialog(); go(new TrashAction('empty')); },\n });\n }, { category: 'Explorer', icon: 'trash' });\n\n cmd('explorer.open', 'Open', (node) => go(new OpenFileAction(node || explorer.selectedNodes()[0])), { palette: false });\n cmd('explorer.download', 'Download', async (node) => {\n const target = node || explorer.selectedNodes()[0] || workbench.activeTab()?.node;\n if (!target?.id) return;\n try {\n const { url, revoke } = await platform.api.download(target.id, target.name);\n triggerDownload(url, target.name);\n // A blob URL pins the bytes until it is released; the click has already happened\n // by the time this runs.\n if (revoke) setTimeout(() => URL.revokeObjectURL(url), 60_000);\n } catch (err) {\n platform.notifications.error(`Couldn't download ${target.name}: ${err.message}`);\n }\n }, { category: 'Explorer', icon: 'download' });\n\n // --- offline ---------------------------------------------------------------\n cmd('offline.pin', 'Make Available Offline', (node) => {\n const target = node || explorer.selectedNodes()[0] || workbench.activeTab()?.node;\n if (target?.id) app.offline.pin(target);\n }, { category: 'Offline', icon: 'download' });\n cmd('offline.unpin', 'Remove from Offline', (node) => {\n const target = node || explorer.selectedNodes()[0] || workbench.activeTab()?.node;\n if (target) app.offline.unpin(target.id);\n }, { palette: false });\n\n // --- collections -----------------------------------------------------------\n // The menu of \"where else could I be\". Shared by the palette command and the status\n // bar's collection segment, so both offer the same list.\n const collectionMenu = () => {\n // No fallback: this only decides which row gets a tick, and with nothing open the\n // answer is that none of them do. `|| 'default'` ticked a collection the user had\n // not chosen, and on a drive with one actually called \"default\", the wrong one.\n const current = explorer.state.collectionId;\n const items = (explorer.state.collections || []).map((c) => ({\n label: c.name || c.id,\n icon: c.id === current ? 'check' : 'files',\n run: () => commands.execute('collections.switch', c.id),\n }));\n if (explorer.state.canCreateCollection) {\n if (items.length) items.push({ sep: true });\n items.push({ label: 'New collection…', icon: 'plus', run: () => commands.execute('collections.create') });\n }\n return items;\n };\n app.collectionMenu = collectionMenu;\n\n // `NavigateAction` takes a single collectionId. This passed ('/', cid) — a leftover\n // from a path+collection signature — so every switch navigated to a collection\n // literally named \"/\" and failed to load. It was also unreachable: no caller, and\n // hidden from the palette.\n cmd('collections.switch', 'Switch Collection…', (cid) => {\n if (cid) {\n go(new NavigateAction(cid));\n workbench.showHome();\n return;\n }\n // From the palette or a keybinding there is no pointer to anchor a menu to.\n const items = collectionMenu();\n if (!items.length) return platform.notifications.info('This drive has one collection.');\n const w = typeof window === 'undefined' ? 800 : window.innerWidth;\n workbench.showContextMenu(Math.max(12, Math.round(w / 2) - 110), 120, items);\n }, { category: 'Collections', icon: 'files' });\n cmd('collections.create', 'New Collection…', () => {\n workbench.showDialog({\n kind: 'collection', title: 'New collection',\n onSubmit: (record) => {\n workbench.closeDialog();\n if (record) go(new CreateCollectionAction(record));\n },\n });\n }, { category: 'Collections', icon: 'files' });\n\n // --- conversations & notifications -----------------------------------------\n // The details panel is a view OF a file. With nothing open there is nothing for it to\n // show, and flipping the flag silently was indistinguishable from a broken command.\n cmd('workbench.toggleInfoPanel', 'Toggle Details & Conversation', () => {\n if (!workbench.activeTab()) {\n platform.notifications.info('Open a file to see its details and conversation.');\n return;\n }\n workbench.toggleInfoPanel();\n }, { category: 'View', icon: 'info' });\n cmd('notifications.show', 'Show Notifications', () => app.social.toggleInbox(true), { category: 'View' });\n cmd('notifications.enablePush', 'Enable Push Notifications', () => app.social.enablePush(), { category: 'Notifications' });\n\n // --- plugins ---------------------------------------------------------------\n cmd('plugins.installFromUrl', 'Install Plugin from URL…', () => {\n workbench.showDialog({\n kind: 'prompt', title: 'Install plugin from URL', label: 'Plugin package (.zip) URL',\n placeholder: 'https://example.com/plugin.zip', confirmLabel: 'Fetch',\n onSubmit: (url) => { workbench.closeDialog(); if (url?.trim()) beginInstallFromUrl(app, url.trim()); },\n });\n }, { category: 'Plugins', icon: 'plug' });\n cmd('plugins.installFromFile', 'Install Plugin from File…', () => {\n pickZip((file) => file && beginInstallFromFile(app, file));\n }, { category: 'Plugins', icon: 'plug' });\n}\n\n// --- helpers ----------------------------------------------------------------\n\n// Open a native file picker. The hidden <input> is removed on selection AND on\n// cancel — cancelling fires no `change`, so we also clean up on the next window\n// focus (which the OS dialog returns) to avoid leaking a growing pile of inputs.\nfunction pick(cb, configure) {\n const input = document.createElement('input');\n input.type = 'file';\n configure(input);\n input.style.display = 'none';\n document.body.appendChild(input);\n const cleanup = () => { input.remove(); window.removeEventListener('focus', onFocus); };\n const onFocus = () => setTimeout(() => { if (!input.files.length) cleanup(); }, 300);\n input.addEventListener('change', () => { cb(input.files); cleanup(); }, { once: true });\n window.addEventListener('focus', onFocus);\n input.click();\n}\nfunction pickFiles(cb) {\n pick((files) => cb(files), (input) => { input.multiple = true; });\n}\nfunction pickZip(cb) {\n pick((files) => cb(files[0]), (input) => { input.accept = '.zip,application/zip'; });\n}\n\nfunction triggerDownload(url, name) {\n const a = document.createElement('a');\n a.href = url;\n a.download = name || '';\n document.body.appendChild(a);\n a.click();\n a.remove();\n}\n\nexport { pickFiles, triggerDownload };\n",
72
74
  "// Assemble the ngin engine and the reactive services into one `app` context,\n// register commands and built-in openers, and expose everything the UI needs.\n// The engine holds a single `app` singleton provider so Actions can reach the\n// platform and services; the app object also carries the engine so Actions can\n// dispatch follow-up Actions (the choreographer pattern).\n\nimport { Engine, Provider } from '@3sln/ngin';\nimport { effect } from '../runtime.js';\nimport { ExplorerService, SearchClientService, TransfersService, ApiKeysService } from './services.js';\nimport { SocialService } from './social.js';\nimport { OfflineService } from './offline.js';\nimport { ActivityService } from './activity.js';\nimport { registerCommands } from './commands.js';\nimport { NavigateAction, LoadCollectionsAction, OpenInitialCollectionAction } from './actions.js';\n\nexport function createApp(platform) {\n const explorer = new ExplorerService(platform.settings);\n const search = new SearchClientService();\n const apiKeys = new ApiKeysService();\n // One place for \"what's running\" and \"what's stuck\", covering both sides of the wire.\n const activity = new ActivityService(platform);\n const transfers = new TransfersService(activity);\n const social = new SocialService(platform);\n const offline = new OfflineService(platform);\n social.offline = offline; // social queues sidecar ops through offline when disconnected\n\n const app = { platform, explorer, search, transfers, social, offline, activity, apiKeys, engine: null };\n\n const engine = new Engine({\n providers: { app: Provider.fromSingleton(app) },\n });\n app.engine = engine;\n\n registerCommands(app);\n\n // Wire the plugin panel opener hook to the workbench.\n platform.openPluginPanel = (pluginId) => platform.workbench.openPluginPanel(pluginId);\n\n // Project explorer state → context keys in ONE place. These drive when-clauses\n // (e.g. the Delete keybinding needs `explorer.hasSelection`), and previously only\n // NavigateAction set them — so selecting a file never flipped hasSelection true and\n // Delete silently did nothing. Deriving them from the observable keeps them honest.\n //\n // `null` when no collection is open, never the string 'default'. A when-clause reading\n // this is asking which collection is open, and answering with the name of one that may\n // not exist made every such clause true before the user had chosen anything.\n platform.context.setMany({ 'explorer.collectionId': null, 'explorer.hasSelection': false });\n effect(explorer.observe(), (ex) => {\n platform.context.setMany({\n 'explorer.collectionId': ex.collectionId ?? null,\n 'explorer.hasSelection': (ex.selection?.length || 0) > 0,\n });\n });\n\n // Load a file's conversation/tags whenever the active viewer panel changes (the\n // panel stack lives in the navigation sub-service now).\n let lastTab = null;\n effect(platform.workbench.observeNav(), (nav) => {\n if (nav.activeTabId !== lastTab) {\n lastTab = nav.activeTabId;\n // Clear the sidecar when no file is active (last tab closed) so a stale\n // conversation from the previous file doesn't linger.\n social.loadSidecar(nav.activeFile ? nav.activeFile.id : null);\n }\n });\n\n social.init();\n offline.init();\n activity.init();\n engine.dispatch(new LoadCollectionsAction());\n\n return { engine, app };\n}\n\nexport { NavigateAction };\n",
@@ -91,14 +93,14 @@
91
93
  "// The viewer — the top of the panel stack (a file's opener), full-width, with a\n// nav bar: a Back button, a trail of the stacked panels (Search › A › B),\n// and details/close actions. The opener host returns a *stable* keyed alias per\n// panel so dodo reuses its DOM across unrelated workbench re-renders — critical for\n// any media opener, whose <audio>/<video> must keep playing while state churns; the\n// DOM persists as long as the panel stays in the stack.\n\nimport { dd } from '../../runtime.js';\nimport { icon, iconForNode } from '../icon.js';\nimport { renderOpener } from './openers/index.js';\nimport { availableOpeners } from '../../bl/openers.js';\n\nconst { div, span, button } = dd;\n\nconst openerFns = new Map(); // `${panelId}:${openerId}` -> stable render fn\n\nexport default function editorArea(state, ui) {\n const wb = state.wb;\n const files = state.nav.stack.filter((p) => p.kind === 'file');\n pruneOpeners(files);\n const active = files[files.length - 1];\n if (!active) return div({ className: 'editor' });\n return div({ className: 'editor' },\n navBar(files, active, ui),\n div({ className: 'stage' }, openerHost(active, ui)),\n );\n}\n\nfunction navBar(files, active, ui) {\n const w = ui.platform.workbench;\n return div({ className: 'viewer-nav' },\n button({ className: 'vn-back', title: 'Back (Esc)' }, icon('chevron-left', { size: 16 }))\n .on({ click: () => w.back() }),\n div({ className: 'vn-trail' },\n button({ className: 'vn-crumb' }, icon('search', { size: 13 }), span('Search'))\n .on({ click: () => w.showHome() }),\n ...files.map((p) =>\n button({ className: `vn-crumb ${p.id === active.id ? 'active' : ''}`, title: p.node.name },\n icon(iconForNode(p.node), { size: 13 }), span({ className: 'label' }, p.node.name))\n .on({ click: () => w.openFile(p.node, p.openerId) })),\n ),\n div({ className: 'vn-actions' },\n openerSwitch(active, ui),\n button({ className: 'iconbtn', title: 'Details & comments' }, icon('info', { size: 15 }))\n .on({ click: () => w.toggleInfoPanel() }),\n button({ className: 'iconbtn', title: 'Close (Esc)' }, icon('close', { size: 15 }))\n .on({ click: () => w.showHome() }),\n ),\n );\n}\n\n// \"Open with…\" — shown only when more than one opener can handle this file. Opens\n// the chooser (pre-selected to the current opener) so the user can switch viewers,\n// and optionally make the choice their default for this file type.\nfunction openerSwitch(active, ui) {\n const openers = availableOpeners(ui.platform, active.node);\n if (openers.length <= 1) return null;\n return button({ className: 'iconbtn', title: 'Open with…' }, icon('dots', { size: 15 }))\n .on({ click: () => ui.platform.workbench.showDialog({ kind: 'opener-chooser', node: active.node, openers, current: active.openerId }) });\n}\n\nfunction openerHost(panel, ui) {\n const key = `${panel.id}:${panel.openerId}`;\n let fn = openerFns.get(key);\n if (!fn) {\n fn = () => renderOpener(panel.node, panel.openerId, ui);\n openerFns.set(key, fn);\n }\n return dd.alias(fn)().key(panel.id);\n}\n\nfunction pruneOpeners(files) {\n const live = new Set(files.map((p) => `${p.id}:${p.openerId}`));\n for (const k of openerFns.keys()) if (!live.has(k)) openerFns.delete(k);\n}\n",
92
94
  "// Command palette + quick-open. Mode 'commands' fuzzy-filters registered\n// commands (respecting when-clauses); mode 'files' searches the drive by name\n// and opens the chosen file. Arrow keys move, Enter runs, Esc closes.\n\nimport { dd } from '../../runtime.js';\nimport { icon, iconForNode } from '../icon.js';\nimport { prettyKey } from '../../platform/keybindings.js';\nimport { OpenFileAction, QuickOpenAction } from '../../bl/actions.js';\n\nconst { div, input, span } = dd;\n\nexport default function commandPalette(state, ui) {\n const pal = state.overlay.palette;\n if (!pal) return null;\n const wb = ui.platform.workbench;\n // With no query there is nothing to show — and showing the PREVIOUS session's hits\n // would be worse than nothing, since they don't match what the field now says.\n const items = pal.mode === 'files'\n ? (pal.query.trim() ? state.se.paletteFiles || [] : [])\n : filterCommands(state, ui, pal.query);\n const index = Math.min(pal.index, Math.max(0, items.length - 1));\n\n const run = (item) => {\n if (!item) return;\n wb.closePalette();\n if (pal.mode === 'files') ui.go(new OpenFileAction(item.node));\n else ui.exec(item.id);\n };\n\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closePalette() }),\n div({ className: 'palette' },\n div({ className: 'search' },\n icon(pal.mode === 'files' ? 'search' : 'command', { size: 18 }),\n input({\n type: 'text', value: pal.query, autofocus: true,\n placeholder: pal.mode === 'files' ? 'Search files by name…' : 'Type a command…',\n }).on({\n // NOTE: the mode is read from live state inside onQuery, NOT captured here.\n // A listener belongs to the render that created it, and rendering is async —\n // a keystroke landing between `openPalette('files')` and the re-render would\n // otherwise be handled as a COMMANDS keystroke and silently do nothing.\n input: (e) => onQuery(ui, e.target.value),\n keydown: (e) => onKey(e, ui, items, index, run),\n $attach: (el) => {\n queueMicrotask(() => el.focus());\n // Same reason in reverse: dodo only patches `value` when the vnode prop\n // changed, so a reopened palette whose query is '' both times would keep\n // whatever text the previous session left in the live DOM node.\n if (el.value !== pal.query) el.value = pal.query;\n },\n }),\n ),\n div({ className: 'results' },\n items.length\n ? items.map((item, i) => {\n const hover = () => wb.setPaletteIndex(i);\n return pal.mode === 'files' ? fileOpt(item, i === index, run, hover) : cmdOpt(item, i === index, ui, run, hover);\n })\n : emptyResults(pal, state),\n ),\n ),\n );\n}\n\n// Nothing to show is three different situations, and saying \"No files found\" for all\n// three tells the user something false in two of them.\nfunction emptyResults(pal, state) {\n if (pal.mode !== 'files') return div({ className: 'none' }, 'No matching commands');\n if (state.se.paletteError) return div({ className: 'none error' }, icon('warn', { size: 14 }), ` ${state.se.paletteError}`);\n if (state.se.paletteLoading) return div({ className: 'none' }, div({ className: 'spinner' }), ' Searching…');\n return div({ className: 'none' }, pal.query.trim() ? 'No files found' : 'Type to search files by name');\n}\n\nfunction cmdOpt(cmd, active, ui, run, hover) {\n const key = ui.platform.keybindings.labelFor(cmd.id);\n const available = ui.platform.commands.isAvailable(cmd);\n return div({ className: `opt ${active ? 'active' : ''} ${available ? '' : 'unavailable'}` },\n span({ className: 'ico' }, icon(cmd.icon || 'command', { size: 16 })),\n cmd.category ? span({ className: 'cat' }, cmd.category + ' ›') : null,\n span({ className: 'title' }, cmd.title),\n !available ? span({ className: 'offline-tag' }, 'offline') : null,\n key ? span({ className: 'kbd' }, dd.h('kbd', prettyKey(keyRaw(ui, cmd.id)))) : null,\n ).on({ click: () => run(cmd), mouseenter: hover });\n}\n\nfunction keyRaw(ui, id) {\n const b = ui.platform.keybindings.resolved().find((x) => x.command === id);\n return b ? b.key : '';\n}\n\nfunction fileOpt(item, active, run, hover) {\n return div({ className: `opt ${active ? 'active' : ''}` },\n span({ className: 'ico' }, icon(iconForNode(item.node), { size: 16 })),\n span({ className: 'title' }, item.node.name),\n span({ className: 'sub' }, item.node.contentType || ''),\n ).on({ click: () => run(item), mouseenter: hover });\n}\n\nfunction filterCommands(state, ui, query) {\n const all = ui.platform.commands.paletteCommands();\n const q = query.trim().toLowerCase();\n if (!q) return all.slice(0, 60);\n const scored = [];\n for (const c of all) {\n const hay = `${c.category || ''} ${c.title}`.toLowerCase();\n const s = fuzzyScore(hay, q);\n if (s > 0) scored.push([s, c]);\n }\n return scored.sort((a, b) => b[0] - a[0]).slice(0, 60).map((x) => x[1]);\n}\n\nfunction fuzzyScore(hay, q) {\n let score = 0;\n let hi = 0;\n for (const ch of q) {\n const idx = hay.indexOf(ch, hi);\n if (idx < 0) return 0;\n score += idx === hi ? 3 : 1;\n hi = idx + 1;\n }\n if (hay.includes(q)) score += 10;\n return score;\n}\n\nfunction onKey(e, ui, items, index, run) {\n const wb = ui.platform.workbench;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n wb.movePalette(1, items.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n wb.movePalette(-1, items.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n run(items[index]);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n wb.closePalette();\n }\n}\n\nlet fileTimer = null;\nfunction onQuery(ui, value) {\n const wb = ui.platform.workbench;\n wb.setPaletteQuery(value);\n // The palette's CURRENT mode, not whichever one was on screen when this listener\n // was created — see the note at the input.\n clearTimeout(fileTimer);\n if (wb.overlay.state.palette?.mode !== 'files') return;\n // Route the file search through an action; results land in the reactive search\n // service (state.se.paletteFiles), so the palette re-renders without ad-hoc state.\n fileTimer = setTimeout(() => ui.go(new QuickOpenAction(value)), 200);\n}\n",
93
95
  "// The pre-install review — everything a user needs to decide whether to trust\n// and install a plugin: its identity + signature/domain-verified status, the\n// capabilities it wants (each explained, admin-only ones flagged), what it\n// contributes, and its settings. Capabilities are opt-in checkboxes; admin-only\n// ones are disabled for non-admins. No plugin code has run at this point.\n\nimport { dd } from '../../runtime.js';\nimport { icon } from '../icon.js';\nimport { bytes as fmtBytes } from '../format.js';\n\nconst { div, span, button, h3, p, label, input } = dd;\n\n// Grant selection persists across re-renders, keyed to the dialog instance.\nlet sel = { ref: null, grants: null };\n\nexport function pluginReview(d, ui) {\n const wb = ui.platform.workbench;\n const s = d.summary;\n if (sel.ref !== d) {\n // Default: request everything the user is allowed to grant.\n sel = { ref: d, grants: new Set(s.capabilities.filter((c) => !c.adminOnly || d.isAdmin).map((c) => c.id)) };\n }\n const toggle = (cap) => { sel.grants.has(cap) ? sel.grants.delete(cap) : sel.grants.add(cap); ui.rerender?.(); };\n\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog review', $styling: { width: 'min(560px, 96vw)' } },\n header(s),\n div({ className: 'review-body' },\n s.description ? p({ className: 'review-desc' }, s.description) : null,\n section('Capabilities it requests', s.capabilities.length\n ? div({ className: 'cap-list' }, ...s.capabilities.map((c) => capRow(c, d.isAdmin, sel.grants.has(c.id), () => toggle(c.id))))\n : muted('None — this plugin only runs in its sandbox.')),\n (s.network || []).length ? section('Network access', div({ className: 'contrib-list' }, ...s.network.map(endpointRow))) : null,\n (s.commands || []).length\n ? section('Commands it can run', div({ className: 'contrib-list' }, ...s.commands.map((id) => commandRow(id, ui))))\n : null,\n s.storage ? section('Storage', storageRows(s.storage)) : null,\n s.contributions.length ? section('What it adds', div({ className: 'contrib-list' }, ...s.contributions.map(contribRow))) : null,\n s.settings.length ? section('Settings', div({ className: 'contrib-list' }, ...s.settings.map(settingRow))) : null,\n div({ className: 'review-meta' }, `${s.fileCount} files · ${fmtBytes(s.sizeBytes)} · id ${s.id}`),\n ),\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: 'btn primary' }, icon('plug', { size: 15 }), 'Install').on({ click: () => d.onInstall([...sel.grants]) }),\n ),\n ),\n );\n}\n\nfunction header(s) {\n const t = s.trust || { status: 'unverified' };\n return div({ className: 'review-head' },\n div({ className: 'avatar' }, (s.name || '?')[0].toUpperCase()),\n div({ className: 'rh-main' },\n div({ className: 'rh-name' }, s.name, span({ className: 'rh-ver' }, 'v' + s.version)),\n div({ className: 'rh-author' }, 'by ' + s.author),\n ),\n trustBadge(t),\n );\n}\n\nfunction trustBadge(t) {\n if (t.status === 'verified') {\n return span({ className: 'trust verified', title: `Signed by a key published at ${t.domain}` }, icon('check', { size: 13 }), 'Verified · ' + t.domain);\n }\n if (t.status === 'signed') {\n return span({ className: 'trust signed', title: t.reason || 'Signed, but the domain does not vouch for the key' }, icon('info', { size: 13 }), 'Signed');\n }\n if (t.status === 'invalid') {\n return span({ className: 'trust invalid', title: t.reason || 'Invalid signature — the package may have been tampered with' }, icon('warn', { size: 13 }), 'Invalid signature');\n }\n return span({ className: 'trust unverified', title: t.reason || 'This plugin is not signed' }, icon('warn', { size: 13 }), 'Unverified');\n}\n\nfunction capRow(cap, isAdmin, checked, onToggle) {\n const blocked = cap.adminOnly && !isAdmin;\n return label({ className: `cap-row ${blocked ? 'blocked' : ''}` },\n input({ type: 'checkbox', checked: checked && !blocked, disabled: blocked }).on({ change: () => !blocked && onToggle() }),\n div({ className: 'cap-info' },\n div({ className: 'cap-name' }, cap.id, cap.adminOnly ? span({ className: 'pf-badge', $styling: { color: 'var(--warn)', 'margin-left': '6px' } }, 'admin only') : null),\n div({ className: 'cap-desc' }, cap.description + (blocked ? ' — requires an administrator' : '')),\n ),\n );\n}\n\nfunction contribRow(c) {\n const kindIcon = { command: 'command', opener: 'file', indexer: 'search', statusItem: 'info', register: 'info', keymap: 'command' }[c.kind] || 'command';\n return div({ className: 'contrib-row' },\n icon(kindIcon, { size: 13 }),\n span({ className: 'cr-title' }, c.title),\n c.detail ? span({ className: 'cr-detail' }, c.detail) : null,\n c.offline ? span({ className: 'pf-badge offline-ok' }, 'offline') : null,\n span({ className: 'pf-kind' }, c.kind),\n );\n}\n\n// One command the plugin may ask the host to run. Resolved against the live registry\n// so the user sees the human title and where it comes from (built-in vs another\n// plugin) — an id like \"explorer.delete\" alone doesn't convey what it does.\nfunction commandRow(id, ui) {\n const cmd = ui?.platform?.contributions?.get?.(id);\n const source = cmd?.pluginId ? 'plugin' : cmd ? 'built-in' : 'not installed';\n return div({ className: `contrib-row ${cmd ? '' : 'blocked'}` },\n icon('command', { size: 13 }),\n span({ className: 'cr-title' }, cmd?.title || id),\n span({ className: 'cr-detail' }, id),\n span({ className: 'pf-kind' }, source),\n );\n}\n\nfunction endpointRow(ep) {\n return div({ className: 'contrib-row' },\n icon('plug', { size: 13 }),\n span({ className: 'cr-title' }, ep.host),\n ep.path ? span({ className: 'cr-detail' }, ep.path) : null,\n span({ className: 'pf-kind' }, ep.scheme),\n );\n}\n\nfunction storageRows(st) {\n const rows = [];\n if (st.plugin) rows.push(storageRow('Private database', 'A SQLite store just for this plugin (server + this device).', false));\n if (st.domain) rows.push(storageRow('Shared database', `Shared with other plugins from ${'its domain'} (SQLite).`, st.domainBlocked));\n return div({ className: 'contrib-list' }, ...rows);\n}\nfunction storageRow(title, detail, blocked) {\n return div({ className: `contrib-row ${blocked ? 'blocked' : ''}` },\n icon('plug', { size: 13 }),\n span({ className: 'cr-title' }, title),\n span({ className: 'cr-detail' }, blocked ? detail + ' — needs a verified domain' : detail),\n blocked ? span({ className: 'pf-badge', $styling: { color: 'var(--warn)' } }, 'unavailable') : null,\n );\n}\n\nfunction settingRow(st) {\n return div({ className: 'contrib-row' },\n icon('gear', { size: 13 }),\n span({ className: 'cr-title' }, st.title),\n st.secret\n ? span({ className: 'pf-badge', $styling: { color: 'var(--warn)' } }, 'secret')\n : span({ className: 'pf-kind' }, st.type),\n );\n}\n\nfunction section(title, content) {\n return div({ className: 'review-section' }, div({ className: 'rs-title' }, title), content);\n}\nfunction muted(t) {\n return div({ className: 'muted', $styling: { 'font-size': '12.5px' } }, t);\n}\n",
94
- "// Small transient overlays: modal dialog (prompt/confirm), right-click context\n// menu, toast notifications, the upload/transfer tray, and the plugin popup\n// panel (which hosts a plugin's own iframe, Chrome-extension style).\n\nimport { dd } from '../../runtime.js';\nimport { icon, iconForNode } from '../icon.js';\nimport { bytes } from '../format.js';\nimport { pluginReview } from './pluginReview.js';\nimport { typeKeyFor, typeLabelFor, rememberOpener, openerSource } from '../../bl/openers.js';\n\nconst { div, span, button, input, h3, p, select, option, label, textarea } = dd;\n\n// ---- Dialog ----------------------------------------------------------------\nexport function dialog(state, ui) {\n const d = state.overlay.dialog;\n if (!d) return null;\n if (d.kind === 'collection') return collectionDialog(d, ui);\n if (d.kind === 'plugin-review') return pluginReview(d, ui);\n if (d.kind === 'opener-chooser') return openerChooserDialog(d, ui);\n const wb = ui.platform.workbench;\n let value = d.value ?? '';\n const submit = () => (d.kind === 'confirm' ? d.onConfirm?.() : d.onSubmit?.(value));\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog' },\n h3(d.title),\n d.body ? div({ className: 'body' }, d.body) : null,\n d.kind === 'prompt'\n ? div({ className: 'field' },\n d.label ? span({ $styling: { 'font-size': '12px', color: 'var(--text-dim)' } }, d.label) : null,\n input({ className: 'input', value: d.value ?? '', placeholder: d.placeholder || '', autofocus: true })\n .on({\n input: (e) => { value = e.target.value; },\n keydown: (e) => { if (e.key === 'Enter') submit(); if (e.key === 'Escape') wb.closeDialog(); },\n $attach: (el) => queueMicrotask(() => { el.focus(); el.select(); }),\n }),\n )\n : null,\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: `btn ${d.danger ? 'danger' : 'primary'}` }, d.confirmLabel || 'OK').on({ click: submit }),\n ),\n ),\n );\n}\n\n// Choose which viewer opens a file when several openers match. Reactive via the\n// workbench dialog state (updateDialog), so radio/checkbox selection survives\n// re-renders. \"Remember\" persists a per-file-type association in settings.\nfunction openerChooserDialog(d, ui) {\n const wb = ui.platform.workbench;\n const platform = ui.platform;\n const selected = d.openerId || d.current || d.openers[0]?.id;\n const remember = !!d.remember;\n const confirm = () => {\n if (remember && selected) rememberOpener(platform, typeKeyFor(d.node), selected);\n wb.closeDialog();\n wb.openFile(d.node, selected, { reset: !!d.reset });\n };\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog opener-chooser' },\n h3(`Open “${d.node.name}” with…`),\n div({ className: 'opener-list' },\n ...d.openers.map((o) =>\n label({ className: `opener-opt ${o.id === selected ? 'sel' : ''}` },\n input({ type: 'radio', name: 'opener-choice', checked: o.id === selected })\n .on({ change: () => wb.updateDialog({ openerId: o.id }) }),\n icon(o.icon || iconForNode(d.node), { size: 18 }),\n div({ className: 'oo-main' },\n span({ className: 'oo-title' }, o.title || o.id),\n span({ className: 'oo-src' }, openerSource(platform, o)),\n ),\n ).on({ click: () => wb.updateDialog({ openerId: o.id }) }),\n ),\n ),\n label({ className: 'opener-remember' },\n input({ type: 'checkbox', checked: remember }).on({ change: (e) => wb.updateDialog({ remember: e.target.checked }) }),\n span(`Always use this for ${typeLabelFor(d.node)}`),\n ),\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: 'btn primary' }, 'Open').on({ click: confirm }),\n ),\n ),\n );\n}\n\n// A collection is a backing-store config, and which stores exist is the SERVER's answer.\n//\n// This form used to hardcode its own list — Filesystem / NAS, S3, Memory — and the fields\n// for each. On Cloudflare Workers that offered a filesystem the runtime cannot provide, so\n// the form could produce a collection the server would refuse to build. Now the drivers and\n// their fields come from /api/capabilities, which reports what was actually registered.\n//\n// The form persists across re-renders (keyed to the dialog instance) so switching driver\n// keeps what has been typed.\nlet colState = { ref: null, form: null };\nfunction collectionDialog(d, ui) {\n const wb = ui.platform.workbench;\n const drivers = ui.platform.capabilities?.storageDrivers || [];\n\n if (colState.ref !== d) {\n colState = { ref: d, form: { name: '', description: '', driver: drivers[0]?.key || '' } };\n }\n const form = colState.form;\n const driver = drivers.find((x) => x.key === form.driver) || drivers[0];\n const set = (k) => (e) => {\n form[k] = e.target.type === 'checkbox' ? e.target.checked : e.target.value;\n if (k === 'driver') ui.rerender?.();\n };\n\n const submit = () => {\n // Only the fields this driver declared, so a leftover value from a driver the user\n // switched away from is not smuggled into the store config.\n const store = { driver: form.driver };\n for (const f of driver?.fields || []) {\n const v = form[f.name];\n if (v !== undefined && v !== '') store[f.name] = f.type === 'number' ? Number(v) : v;\n }\n d.onSubmit?.({ name: form.name, description: form.description, store });\n };\n\n const field = (lbl, k, ph = '') => div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label(lbl), input({ className: 'input', placeholder: ph }).on({ input: set(k) }));\n\n const ready = !!form.name.trim() && !!form.driver\n && (driver?.fields || []).every((f) => !f.required || String(form[f.name] ?? '').trim());\n\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog', $styling: { width: 'min(480px, 94vw)' } },\n h3('New collection'),\n div({ className: 'body' }, 'A collection is a backing store you own. Configure where its files live.'),\n field('Name', 'name', 'Team Vault'),\n drivers.length\n ? div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label('Backing store'),\n select({ className: 'input' },\n ...drivers.map((x) => option({ value: x.key, selected: form.driver === x.key }, x.label)),\n ).on({ change: set('driver') }))\n // No drivers at all means the deployment registered none, which is a server\n // misconfiguration — saying so beats an empty dropdown.\n : div({ className: 'body' }, 'This server has no storage drivers registered, so a collection cannot be created.'),\n driver ? storeFields(driver, form, set) : null,\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: 'btn primary', $attrs: ready ? {} : { disabled: 'true' } }, 'Create collection')\n .on({ click: () => ready && submit() }),\n ),\n ),\n );\n}\n\n/** The chosen driver's declared fields, rendered from its descriptor. */\nfunction storeFields(driver, form, set) {\n if (!driver.fields.length) {\n return div({ className: 'body', $styling: { 'font-size': '12px' } },\n driver.description || 'This store needs no configuration.');\n }\n return div({},\n driver.description\n ? div({ className: 'body', $styling: { 'font-size': '12px', 'margin-bottom': '10px' } }, driver.description)\n : null,\n ...driver.fields.map((f) => (f.type === 'boolean'\n ? div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label({}, input({ type: 'checkbox' }).on({ change: set(f.name) }), ` ${f.label}`),\n f.help ? div({ className: 'body', $styling: { 'font-size': '11.5px' } }, f.help) : null)\n : div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label(f.label + (f.required ? '' : ' (optional)')),\n input({\n className: 'input', placeholder: f.placeholder, autocomplete: 'off',\n // A field the driver marked secret is a password field, so a shoulder or a\n // screen share does not read an access key out of the form.\n type: f.type === 'password' || f.secret ? 'password' : (f.type === 'number' ? 'number' : 'text'),\n }).on({ input: set(f.name) }),\n f.help ? div({ className: 'body', $styling: { 'font-size': '11.5px' } }, f.help) : null))),\n );\n}\n\n// ---- Context menu ----------------------------------------------------------\nexport function contextMenu(state, ui) {\n const m = state.overlay.contextMenu;\n if (!m || !m.items?.length) return null;\n const wb = ui.platform.workbench;\n // Clamp on both edges. Anchoring a menu ABOVE its trigger (the status bar opens\n // upward) produces a negative top, and only the far edge used to be clamped.\n // The height is whatever the menu needs OR whatever the window allows, whichever is\n // smaller — past that the menu scrolls (see `.menu`), so pushing it further up buys\n // nothing and would just leave a gap at the bottom.\n const wanted = Math.min(m.items.length * 34 + 20, window.innerHeight - 24);\n const x = Math.max(8, Math.min(m.x, window.innerWidth - 220));\n const y = Math.max(8, Math.min(m.y, window.innerHeight - wanted));\n return div({},\n div({ className: 'scrim', $styling: { background: 'transparent' } }).on({ click: () => wb.closeContextMenu(), contextmenu: (e) => { e.preventDefault(); wb.closeContextMenu(); } }),\n div({ className: 'menu', $styling: { left: x + 'px', top: y + 'px' } },\n ...m.items.map((it, i) =>\n it.sep\n ? div({ className: 'sep' })\n // A real <button>, not a click-handling div: menu entries were unreachable by\n // keyboard and invisible to the TV shell's spatial navigation, which only\n // considers focusable elements.\n : button({ className: `mi ${it.danger ? 'danger' : ''}`, autofocus: i === 0 },\n it.icon ? icon(it.icon, { size: 15 }) : null,\n span(it.label),\n it.kbd ? span({ className: 'kbd' }, it.kbd) : null,\n ).on({\n click: () => { wb.closeContextMenu(); it.run?.(); },\n // The first item is focused on open, so Escape has to get you back out.\n keydown: (e) => { if (e.key === 'Escape') { e.preventDefault(); wb.closeContextMenu(); } },\n $attach: (el) => { if (i === 0) queueMicrotask(() => el.focus()); },\n }),\n ),\n ),\n );\n}\n\n// ---- Toasts ----------------------------------------------------------------\nexport function toasts(state, ui) {\n const list = state.notif || [];\n if (!list.length) return null;\n return div({ className: 'toasts' },\n ...list.slice(-5).map((n) =>\n div({ className: `toast ${n.level}` },\n div({ className: 'bar' }),\n div({ className: 'msg' }, n.message),\n button({ className: 'x' }, icon('close', { size: 14 })).on({ click: () => ui.platform.notifications.dismiss(n.id) }),\n ).key(n.id),\n ),\n );\n}\n\n// ---- Transfer tray ---------------------------------------------------------\nexport function transferTray(state, ui) {\n const items = state.tr.items;\n if (!items.length) return null;\n return div({ className: 'tray' },\n div({ className: 'head' },\n icon('upload', { size: 14 }),\n span({ $styling: { 'margin-left': '6px' } }, 'Transfers'),\n div({ className: 'actions' },\n button({ className: 'iconbtn', title: 'Clear finished' }, icon('check', { size: 14 }))\n .on({ click: () => ui.app.transfers.clearDone() }),\n ),\n ),\n div({ className: 'items' },\n ...items.map((t) =>\n div({ className: `xfer ${t.status}` },\n div({ className: 'top' },\n icon(t.status === 'error' ? 'warn' : t.status === 'done' ? 'check' : 'upload', { size: 14 }),\n span({ className: 'name' }, t.name),\n t.status === 'active'\n ? button({ className: 'iconbtn', title: 'Cancel' }, icon('close', { size: 13 })).on({ click: () => ui.app.transfers.cancel(t.id) })\n : span({ className: 'pct' }, t.status === 'done' ? bytes(t.total) : t.status),\n ),\n t.status === 'active'\n ? div({ className: 'progress' }, div({ $styling: { width: `${Math.round(t.ratio * 100)}%` } }))\n : t.error ? div({ $styling: { 'font-size': '11px', color: 'var(--danger)', 'margin-top': '4px' } }, t.error) : null,\n t.status === 'active' ? div({ className: 'pct', $styling: { 'margin-top': '4px' } }, `${bytes(t.loaded)} / ${bytes(t.total)}`) : null,\n ).key(t.id),\n ),\n ),\n );\n}\n\n// ---- Plugin popup panel ----------------------------------------------------\nexport function pluginPanel(state, ui) {\n const pid = state.overlay.pluginPanel;\n if (!pid) return null;\n const plugin = (state.plugins || []).find((p) => p.id === pid);\n return div({ className: 'plugin-panel', $styling: { width: '380px' } },\n div({ className: 'head' },\n icon('plug', { size: 14 }),\n span(plugin?.name || pid),\n button({ className: 'iconbtn x' }, icon('close', { size: 14 })).on({ click: () => ui.platform.workbench.closePluginPanel() }),\n ),\n // The host mounts the plugin's iframe into this element on attach.\n div({ className: 'host' }).on({\n $attach: (el) => {\n el._detach = ui.platform.plugins.mountPanel(pid, el, { width: 380, height: 460 });\n },\n $detach: (el) => el._detach?.(),\n }),\n );\n}\n",
96
+ "// Small transient overlays: modal dialog (prompt/confirm), right-click context\n// menu, toast notifications, the upload/transfer tray, and the plugin popup\n// panel (which hosts a plugin's own iframe, Chrome-extension style).\n\nimport { dd } from '../../runtime.js';\nimport { icon, iconForNode } from '../icon.js';\nimport { bytes } from '../format.js';\nimport { pluginReview } from './pluginReview.js';\nimport { typeKeyFor, typeLabelFor, rememberOpener, openerSource } from '../../bl/openers.js';\n\nconst { div, span, button, input, h3, p, select, option, label, textarea } = dd;\n\n// ---- Dialog ----------------------------------------------------------------\nexport function dialog(state, ui) {\n const d = state.overlay.dialog;\n if (!d) return null;\n if (d.kind === 'collection') return collectionDialog(d, ui);\n if (d.kind === 'plugin-review') return pluginReview(d, ui);\n if (d.kind === 'opener-chooser') return openerChooserDialog(d, ui);\n const wb = ui.platform.workbench;\n let value = d.value ?? '';\n const submit = () => (d.kind === 'confirm' ? d.onConfirm?.() : d.onSubmit?.(value));\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog' },\n h3(d.title),\n d.body ? div({ className: 'body' }, d.body) : null,\n d.kind === 'prompt'\n ? div({ className: 'field' },\n d.label ? span({ $styling: { 'font-size': '12px', color: 'var(--text-dim)' } }, d.label) : null,\n input({ className: 'input', value: d.value ?? '', placeholder: d.placeholder || '', autofocus: true })\n .on({\n input: (e) => { value = e.target.value; },\n keydown: (e) => { if (e.key === 'Enter') submit(); if (e.key === 'Escape') wb.closeDialog(); },\n $attach: (el) => queueMicrotask(() => { el.focus(); el.select(); }),\n }),\n )\n : null,\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: `btn ${d.danger ? 'danger' : 'primary'}` }, d.confirmLabel || 'OK').on({ click: submit }),\n ),\n ),\n );\n}\n\n// Choose which viewer opens a file when several openers match. Reactive via the\n// workbench dialog state (updateDialog), so radio/checkbox selection survives\n// re-renders. \"Remember\" persists a per-file-type association in settings.\nfunction openerChooserDialog(d, ui) {\n const wb = ui.platform.workbench;\n const platform = ui.platform;\n const selected = d.openerId || d.current || d.openers[0]?.id;\n const remember = !!d.remember;\n const confirm = () => {\n if (remember && selected) rememberOpener(platform, typeKeyFor(d.node), selected);\n wb.closeDialog();\n wb.openFile(d.node, selected, { reset: !!d.reset });\n };\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog opener-chooser' },\n h3(`Open “${d.node.name}” with…`),\n div({ className: 'opener-list' },\n ...d.openers.map((o) =>\n label({ className: `opener-opt ${o.id === selected ? 'sel' : ''}` },\n input({ type: 'radio', name: 'opener-choice', checked: o.id === selected })\n .on({ change: () => wb.updateDialog({ openerId: o.id }) }),\n icon(o.icon || iconForNode(d.node), { size: 18 }),\n div({ className: 'oo-main' },\n span({ className: 'oo-title' }, o.title || o.id),\n span({ className: 'oo-src' }, openerSource(platform, o)),\n ),\n ).on({ click: () => wb.updateDialog({ openerId: o.id }) }),\n ),\n ),\n label({ className: 'opener-remember' },\n input({ type: 'checkbox', checked: remember }).on({ change: (e) => wb.updateDialog({ remember: e.target.checked }) }),\n span(`Always use this for ${typeLabelFor(d.node)}`),\n ),\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: 'btn primary' }, 'Open').on({ click: confirm }),\n ),\n ),\n );\n}\n\n// A collection is a backing-store config, and which stores exist is the SERVER's answer.\n//\n// This form used to hardcode its own list — Filesystem / NAS, S3, Memory — and the fields\n// for each. On Cloudflare Workers that offered a filesystem the runtime cannot provide, so\n// the form could produce a collection the server would refuse to build. Now the drivers and\n// their fields come from /api/capabilities, which reports what was actually registered.\n//\n// The form persists across re-renders (keyed to the dialog instance) so switching driver\n// keeps what has been typed.\nlet colState = { ref: null, form: null };\nfunction collectionDialog(d, ui) {\n const wb = ui.platform.workbench;\n const drivers = ui.platform.capabilities?.storageDrivers || [];\n\n if (colState.ref !== d) {\n colState = { ref: d, form: { name: '', description: '', driver: drivers[0]?.key || '' } };\n }\n const form = colState.form;\n const driver = drivers.find((x) => x.key === form.driver) || drivers[0];\n const set = (k) => (e) => {\n form[k] = e.target.type === 'checkbox' ? e.target.checked : e.target.value;\n if (k === 'driver') ui.rerender?.();\n };\n\n const submit = () => {\n // Only the fields this driver declared, so a leftover value from a driver the user\n // switched away from is not smuggled into the store config.\n const store = { driver: form.driver };\n for (const f of driver?.fields || []) {\n const v = form[f.name];\n if (v !== undefined && v !== '') store[f.name] = f.type === 'number' ? Number(v) : v;\n }\n d.onSubmit?.({ name: form.name, description: form.description, store });\n };\n\n const field = (lbl, k, ph = '') => div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label(lbl), input({ className: 'input', placeholder: ph }).on({ input: set(k) }));\n\n const ready = !!form.name.trim() && !!form.driver\n && (driver?.fields || []).every((f) => !f.required || String(form[f.name] ?? '').trim());\n\n return div({},\n div({ className: 'scrim' }).on({ click: () => wb.closeDialog() }),\n div({ className: 'dialog', $styling: { width: 'min(480px, 94vw)' } },\n h3('New collection'),\n div({ className: 'body' }, 'A collection is a backing store you own. Configure where its files live.'),\n field('Name', 'name', 'Team Vault'),\n drivers.length\n ? div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label('Backing store'),\n select({ className: 'input' },\n ...drivers.map((x) => option({ value: x.key, selected: form.driver === x.key }, x.label)),\n ).on({ change: set('driver') }))\n // No drivers at all means the deployment registered none, which is a server\n // misconfiguration — saying so beats an empty dropdown.\n : div({ className: 'body' }, 'This server has no storage drivers registered, so a collection cannot be created.'),\n driver ? storeFields(driver, form, set) : null,\n div({ className: 'row-actions' },\n button({ className: 'btn' }, 'Cancel').on({ click: () => wb.closeDialog() }),\n button({ className: 'btn primary', $attrs: ready ? {} : { disabled: 'true' } }, 'Create collection')\n .on({ click: () => ready && submit() }),\n ),\n ),\n );\n}\n\n/** The chosen driver's declared fields, rendered from its descriptor. */\nfunction storeFields(driver, form, set) {\n if (!driver.fields.length) {\n return div({ className: 'body', $styling: { 'font-size': '12px' } },\n driver.description || 'This store needs no configuration.');\n }\n return div({},\n driver.description\n ? div({ className: 'body', $styling: { 'font-size': '12px', 'margin-bottom': '10px' } }, driver.description)\n : null,\n ...driver.fields.map((f) => (f.type === 'boolean'\n ? div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label({}, input({ type: 'checkbox' }).on({ change: set(f.name) }), ` ${f.label}`),\n f.help ? div({ className: 'body', $styling: { 'font-size': '11.5px' } }, f.help) : null)\n : div({ className: 'field', $styling: { 'margin-bottom': '10px' } },\n label(f.label + (f.required ? '' : ' (optional)')),\n input({\n className: 'input', placeholder: f.placeholder, autocomplete: 'off',\n // A field the driver marked secret is a password field, so a shoulder or a\n // screen share does not read an access key out of the form.\n type: f.type === 'password' || f.secret ? 'password' : (f.type === 'number' ? 'number' : 'text'),\n }).on({ input: set(f.name) }),\n f.help ? div({ className: 'body', $styling: { 'font-size': '11.5px' } }, f.help) : null))),\n );\n}\n\n// ---- Context menu ----------------------------------------------------------\nexport function contextMenu(state, ui) {\n const m = state.overlay.contextMenu;\n if (!m || !m.items?.length) return null;\n const wb = ui.platform.workbench;\n // Clamp on both edges. Anchoring a menu ABOVE its trigger (the status bar opens\n // upward) produces a negative top, and only the far edge used to be clamped.\n // The height is whatever the menu needs OR whatever the window allows, whichever is\n // smaller — past that the menu scrolls (see `.menu`), so pushing it further up buys\n // nothing and would just leave a gap at the bottom.\n const wanted = Math.min(m.items.length * 34 + 20, window.innerHeight - 24);\n const x = Math.max(8, Math.min(m.x, window.innerWidth - 220));\n const y = Math.max(8, Math.min(m.y, window.innerHeight - wanted));\n return div({},\n div({ className: 'scrim', $styling: { background: 'transparent' } }).on({ click: () => wb.closeContextMenu(), contextmenu: (e) => { e.preventDefault(); wb.closeContextMenu(); } }),\n div({ className: 'menu', $styling: { left: x + 'px', top: y + 'px' } },\n ...m.items.map((it, i) =>\n it.sep\n ? div({ className: 'sep' })\n // A real <button>, not a click-handling div: menu entries were unreachable by\n // keyboard and invisible to the TV shell's spatial navigation, which only\n // considers focusable elements.\n : button({ className: `mi ${it.danger ? 'danger' : ''}`, autofocus: i === 0 },\n it.icon ? icon(it.icon, { size: 15 }) : null,\n span(it.label),\n it.kbd ? span({ className: 'kbd' }, it.kbd) : null,\n ).on({\n click: () => { wb.closeContextMenu(); it.run?.(); },\n // The first item is focused on open, so Escape has to get you back out.\n keydown: (e) => { if (e.key === 'Escape') { e.preventDefault(); wb.closeContextMenu(); } },\n $attach: (el) => { if (i === 0) queueMicrotask(() => el.focus()); },\n }),\n ),\n ),\n );\n}\n\n// ---- Toasts ----------------------------------------------------------------\nexport function toasts(state, ui) {\n const list = state.notif || [];\n if (!list.length) return null;\n return div({ className: 'toasts' },\n ...list.slice(-5).map((n) =>\n div({ className: `toast ${n.level}` },\n div({ className: 'bar' }),\n div({ className: 'msg' }, n.message),\n button({ className: 'x' }, icon('close', { size: 14 })).on({ click: () => ui.platform.notifications.dismiss(n.id) }),\n ).key(n.id),\n ),\n );\n}\n\n// ---- Transfer tray ---------------------------------------------------------\nexport function transferTray(state, ui) {\n const items = state.tr.items;\n if (!items.length) return null;\n return div({ className: 'tray' },\n div({ className: 'head' },\n icon('upload', { size: 14 }),\n span({ $styling: { 'margin-left': '6px' } }, 'Transfers'),\n div({ className: 'actions' },\n button({ className: 'iconbtn', title: 'Clear finished' }, icon('check', { size: 14 }))\n .on({ click: () => ui.app.transfers.clearDone() }),\n ),\n ),\n div({ className: 'items' },\n ...items.map((t) =>\n div({ className: `xfer ${t.status}` },\n div({ className: 'top' },\n icon(t.status === 'error' ? 'warn' : t.status === 'done' ? 'check' : 'upload', { size: 14 }),\n span({ className: 'name' }, t.name),\n t.status === 'active'\n ? button({ className: 'iconbtn', title: 'Cancel' }, icon('close', { size: 13 })).on({ click: () => ui.app.transfers.cancel(t.id) })\n : span({ className: 'pct' }, t.status === 'done' ? bytes(t.total) : t.status),\n ),\n t.status === 'active'\n ? div({ className: 'progress' }, div({ $styling: { width: `${Math.round(t.ratio * 100)}%` } }))\n : t.error ? div({ $styling: { 'font-size': '11px', color: 'var(--danger)', 'margin-top': '4px' } }, t.error) : null,\n t.status === 'active' ? div({ className: 'pct', $styling: { 'margin-top': '4px' } }, `${bytes(t.loaded)} / ${bytes(t.total)}`) : null,\n // Offered on anything that stopped short, cancelled included — the transport\n // already retries what is worth retrying on its own, so a row that reached this\n // state failed for a reason another automatic attempt would not fix. A lost\n // upload session is the case in point: correctly non-retryable, and correctly\n // something the user can choose to start over.\n (t.status === 'error' || t.status === 'cancelled') && t.retryable\n ? div({ className: 'xfer-actions' },\n button({ className: 'btn small' }, icon('refresh', { size: 12 }), span('Retry'))\n .on({ click: () => ui.app.transfers.retry(t.id) }),\n button({ className: 'btn small ghost' }, 'Dismiss')\n .on({ click: () => ui.app.transfers.dismiss(t.id) }),\n )\n : null,\n ).key(t.id),\n ),\n ),\n );\n}\n\n// ---- Plugin popup panel ----------------------------------------------------\nexport function pluginPanel(state, ui) {\n const pid = state.overlay.pluginPanel;\n if (!pid) return null;\n const plugin = (state.plugins || []).find((p) => p.id === pid);\n return div({ className: 'plugin-panel', $styling: { width: '380px' } },\n div({ className: 'head' },\n icon('plug', { size: 14 }),\n span(plugin?.name || pid),\n button({ className: 'iconbtn x' }, icon('close', { size: 14 })).on({ click: () => ui.platform.workbench.closePluginPanel() }),\n ),\n // The host mounts the plugin's iframe into this element on attach.\n div({ className: 'host' }).on({\n $attach: (el) => {\n el._detach = ui.platform.plugins.mountPanel(pid, el, { width: 380, height: 460 });\n },\n $detach: (el) => el._detach?.(),\n }),\n );\n}\n",
95
97
  "// The Activity panel — what is running, and what is stuck.\n//\n// Two sections, because they are two different kinds of fact and the user acts on them\n// differently. Running work is watched and possibly cancelled; a standing problem is\n// retried or dismissed. Merging them into one \"notifications\" list would lose that:\n// a task that finished is over, while an issue that is listed is still true right now.\n//\n// A task that doesn't know its total renders as an indeterminate bar rather than a\n// guess. Nothing here fabricates a percentage.\n\nimport { dd } from '../../runtime.js';\nimport { icon } from '../icon.js';\nimport { bytes } from '../format.js';\n\nconst { div, button, span, h3, p, pre } = dd;\n\nconst STATUS_ICON = { running: 'refresh', done: 'check', failed: 'close', cancelled: 'close' };\n\n/**\n * Clipboard, with the value shown if the write is refused.\n *\n * Clipboard permission is denied often enough that a button which silently does nothing\n * reads as broken — and the remedy is the one thing on this panel the user has to get out\n * of the app and into a terminal.\n */\nfunction copyText(text, ui) {\n navigator.clipboard?.writeText(text)\n .then(() => ui.platform.notifications.success('Copied'))\n .catch(() => ui.platform.notifications.info(text, { sticky: true }));\n}\n\nfunction amount(task) {\n if (task.total == null) return null;\n return task.unit === 'bytes'\n ? `${bytes(task.done || 0)} of ${bytes(task.total)}`\n : `${task.done || 0} of ${task.total}${task.unit ? ` ${task.unit}` : ''}`;\n}\n\nfunction taskRow(task, ui) {\n const running = task.status === 'running';\n const determinate = running && task.total != null && task.total > 0;\n const pct = determinate ? Math.min(100, Math.round(((task.done || 0) / task.total) * 100)) : 0;\n return div({ className: `act-task act-${task.status}`, 'data-task-id': task.id },\n div({ className: 'act-row' },\n running\n ? div({ className: 'spinner', $styling: { width: '12px', height: '12px' } })\n : icon(STATUS_ICON[task.status] || 'info', { size: 13 }),\n div({ className: 'act-body' },\n div({ className: 'act-title' }, task.title),\n task.detail ? div({ className: 'act-detail' }, task.detail) : null,\n task.error ? div({ className: 'act-error' }, task.error) : null,\n ),\n running && task.cancellable\n ? button({ className: 'act-action', title: 'Cancel' }, icon('close', { size: 12 })).on({ click: () => ui.app.activity.cancel(task.id) })\n : !running\n ? button({ className: 'act-action', title: 'Dismiss' }, icon('close', { size: 12 })).on({ click: () => ui.app.activity.dismiss(task.id) })\n : null,\n ),\n running\n // An indeterminate bar animates without claiming a position. The alternative —\n // picking a number — would be a lie dressed as information.\n ? div({ className: `act-bar ${determinate ? '' : 'indeterminate'}` },\n div({ className: 'act-fill', $styling: determinate ? { width: `${pct}%` } : {} }))\n : null,\n running && amount(task) ? div({ className: 'act-amount' }, amount(task)) : null,\n );\n}\n\nfunction issueRow(issue, ui) {\n const since = new Date(issue.firstAt || issue.lastAt).toLocaleString();\n return div({ className: `act-issue act-sev-${issue.severity || 'error'}`, 'data-issue-id': issue.id },\n div({ className: 'act-row' },\n icon(issue.severity === 'warning' ? 'info' : 'close', { size: 13 }),\n div({ className: 'act-body' },\n div({ className: 'act-title' }, issue.title),\n issue.detail ? div({ className: 'act-detail' }, issue.detail) : null,\n // The fix, kept apart from the description and rendered as-is. A remedy is often\n // a policy document or a shell command, and a problem report that describes the\n // fix in prose leaves the reader to retype it.\n issue.remedy ? pre({ className: 'act-remedy' }, issue.remedy) : null,\n div({ className: 'act-meta' }, issue.count > 1 ? `${issue.count} times, since ${since}` : `since ${since}`),\n ),\n ),\n div({ className: 'act-actions' },\n issue.remedy\n ? button({ className: 'btn small ghost' }, 'Copy fix')\n .on({ click: () => copyText(issue.remedy, ui) })\n : null,\n // Retry only when the server said pressing it will actually do something.\n issue.retryable\n ? button({ className: 'btn small act-retry' }, icon('refresh', { size: 12 }), span('Retry'))\n .on({ click: () => ui.app.activity.retryIssue(issue.id) })\n : null,\n button({ className: 'btn small ghost act-dismiss' }, 'Dismiss')\n .on({ click: () => ui.app.activity.dismissIssue(issue.id) }),\n ),\n );\n}\n\nexport default function activityPanel(state, ui) {\n const act = state.act || { tasks: [], issues: [] };\n if (!act.open) return null;\n const running = act.tasks.filter((t) => t.status === 'running');\n const recent = act.tasks.filter((t) => t.status !== 'running');\n\n return div({ className: 'activity-panel' },\n div({ className: 'act-head' },\n h3('Activity'),\n button({ className: 'act-action', title: 'Close' }, icon('close', { size: 13 }))\n .on({ click: () => ui.app.activity.togglePanel(false) }),\n ),\n\n // \"Nothing is wrong\" and \"we couldn't ask\" look identical unless one says so. Both\n // loads are reported, because either can fail alone.\n act.tasksError || act.issuesError\n ? div({ className: 'act-offline' }, icon('info', { size: 12 }),\n span(`Couldn't reach the server — this list may be out of date (${act.issuesError || act.tasksError})`))\n : null,\n\n div({ className: 'act-section' },\n div({ className: 'act-section-title' }, 'Running'),\n running.length\n ? div(...running.map((t) => taskRow(t, ui)))\n : p({ className: 'act-empty' }, 'Nothing running.'),\n ),\n\n act.issues.length\n ? div({ className: 'act-section' },\n div({ className: 'act-section-title' }, `Needs attention (${act.issues.length})`),\n div(...act.issues.map((i) => issueRow(i, ui))),\n )\n : div({ className: 'act-section' },\n div({ className: 'act-section-title' }, 'Needs attention'),\n // An unreadable list is not an empty one, and must never render as \"all clear\".\n p({ className: 'act-empty' },\n act.issuesError ? 'Could not load the list of problems.' : act.issuesLoading ? 'Checking…' : 'No standing problems.'),\n ),\n\n recent.length\n ? div({ className: 'act-section' },\n div({ className: 'act-section-title' }, 'Recently finished'),\n div(...recent.map((t) => taskRow(t, ui))),\n )\n : null,\n\n div({ className: 'act-foot act-actions' },\n button({ className: 'btn small ghost act-rebuild' }, icon('refresh', { size: 12 }), span('Rebuild search index'))\n .on({ click: () => ui.exec('workbench.rebuildIndex') }),\n button({ className: 'btn small ghost act-scan' }, icon('refresh', { size: 12 }), span('Scan for outside changes'))\n .on({ click: () => ui.exec('workbench.scanCollection') }),\n // On demand as well as on a schedule, because the moment an admin wants to know\n // whether they fixed the bucket is right after they changed it — not up to five\n // minutes later. It also checks against THIS browser's origin, which the scheduled\n // run can only do if the deployment configured one.\n button({ className: 'btn small ghost act-storage' }, icon('plug', { size: 12 }), span('Check storage'))\n .on({ click: () => ui.exec('workbench.checkStorage') }),\n ),\n );\n}\n",
96
98
  "// The phone shell: a thin top bar, a bottom tab bar, and two sheets.\n//\n// A left rail costs 52px of a 390px-wide screen and a status bar costs a row of chrome\n// that is unreadable at that size anyway — on a phone both are worse than useless. So\n// the rail's destinations become bottom tabs (thumb-reachable, which the top of the\n// screen is not), everything past the first few becomes one \"More\" sheet, and the whole\n// status bar folds behind a single icon in the top bar.\n//\n// The icon is not decoration: it changes to say what is happening. Work running shows a\n// spinner, a standing problem shows a badge, and neither is something the user has to go\n// looking for. Everything else — item counts, free space, backend — is a tap away rather\n// than permanently on screen, because on a phone it is reference material, not status.\n\nimport { dd } from '../../runtime.js';\nimport { icon } from '../icon.js';\nimport { bytes } from '../format.js';\nimport { statusFacts, usageChip } from './statusBar.js';\n\nconst { div, button, span, img } = dd;\n\n// The tabs that earn a permanent slot. Everything else lives in More — a bottom bar with\n// six items is a bottom bar nobody can hit.\nconst TABS = [\n { id: 'home', icon: 'search', label: 'Files', command: 'workbench.view.home' },\n { id: 'upload', icon: 'upload', label: 'Upload', command: 'explorer.upload' },\n { id: 'plugins', icon: 'plug', label: 'Plugins', command: 'workbench.view.plugins' },\n];\n\n/** Which single glyph best describes the drive's state right now. */\nfunction statusGlyph(f) {\n if (!f.off.online) return { icon: 'info', tone: 'warn', label: 'Offline' };\n if (f.issues.length) return { icon: 'warn', tone: 'danger', label: `${f.issues.length} need attention`, badge: f.issues.length };\n if (f.running.length || f.uploading.length || f.off.syncing) return { spinner: true, tone: '', label: 'Working…' };\n if (f.usage?.total && f.usage.available / f.usage.total < 0.1) return { icon: 'info', tone: 'warn', label: 'Low on space' };\n return { icon: 'info', tone: '', label: 'Status' };\n}\n\nexport function phoneTopBar(state, ui) {\n const f = statusFacts(state, ui);\n const g = statusGlyph(f);\n // Where you are, at the coarsest level. Deliberately NOT the open file's name: the\n // viewer's own breadcrumb sits directly beneath this bar and already says that, and two\n // rows of chrome repeating \"notes.txt\" costs a fifth of the screen to say it twice.\n const title = state.wb.activity === 'settings' ? 'Settings'\n : state.wb.activity === 'plugins' ? 'Plugins'\n : f.collectionLabel;\n return div({ className: 'phonebar top' },\n button({ className: 'pb-brand', title: 'Trove — home' }, img({ src: '/icon.svg', alt: 'Trove' }))\n .on({ click: () => ui.exec('workbench.view.home') }),\n div({ className: 'pb-title' }, title),\n button({ className: `pb-status ${g.tone}`, title: g.label, $attrs: { 'aria-label': g.label } },\n g.spinner\n ? div({ className: 'spinner', $styling: { width: '15px', height: '15px' } })\n : icon(g.icon, { size: 18 }),\n g.badge ? span({ className: 'pb-badge' }, String(g.badge > 9 ? '9+' : g.badge)) : null,\n ).on({ click: () => ui.platform.workbench.openSheet('status') }),\n );\n}\n\nexport function phoneBottomBar(state, ui) {\n const active = state.wb.activity;\n const sheet = state.wb.sheet;\n const unread = state.so.notifications.unread;\n return div({ className: 'phonebar bottom' },\n ...TABS.map((t) => button({\n className: `pb-tab ${!sheet && active === t.id ? 'active' : ''}`,\n $attrs: { 'aria-label': t.label },\n }, icon(t.icon, { size: 21 }), span({ className: 'pb-label' }, t.label))\n .on({ click: () => { ui.platform.workbench.closeSheet(); ui.exec(t.command); } })),\n // Settings is reached FROM the More sheet, so while you are in it \"More\" is where\n // you are — otherwise all four tabs read as inactive and the bar claims you are\n // nowhere.\n button({\n className: `pb-tab ${sheet === 'more' || (!sheet && !TABS.some((t) => t.id === active)) ? 'active' : ''}`,\n $attrs: { 'aria-label': 'More' },\n },\n icon('dots', { size: 21 }),\n unread ? span({ className: 'pb-badge' }, String(unread > 9 ? '9+' : unread)) : null,\n span({ className: 'pb-label' }, 'More'),\n ).on({ click: () => ui.platform.workbench.openSheet('more') }),\n );\n}\n\n/** A row in a sheet: an icon, a label, and either a value or a chevron. */\nfunction sheetRow({ icon: name, label, value, danger, onClick }) {\n const body = [\n icon(name, { size: 18 }),\n span({ className: 'sr-label' }, label),\n value != null ? span({ className: 'sr-value' }, value) : null,\n onClick ? icon('chevron-right', { size: 16, className: 'sr-go' }) : null,\n ];\n return onClick\n ? button({ className: `sheet-row ${danger ? 'danger' : ''}` }, ...body).on({ click: onClick })\n : div({ className: 'sheet-row static' }, ...body);\n}\n\nexport function phoneSheet(state, ui) {\n const which = state.wb.sheet;\n if (!which) return null;\n const wb = ui.platform.workbench;\n return div({ className: 'sheet-wrap' },\n div({ className: 'scrim' }).on({ click: () => wb.closeSheet() }),\n div({ className: 'sheet' },\n div({ className: 'sheet-grip' }).on({ click: () => wb.closeSheet() }),\n which === 'status' ? statusSheet(state, ui) : moreSheet(state, ui),\n ),\n );\n}\n\nfunction statusSheet(state, ui) {\n const f = statusFacts(state, ui);\n const wb = ui.platform.workbench;\n const go = (cmd) => () => { wb.closeSheet(); ui.exec(cmd); };\n return div({ className: 'sheet-body' },\n div({ className: 'sheet-title' }, f.collectionLabel),\n\n // Problems and running work first: they are the reason someone opened this.\n f.issues.length\n ? sheetRow({\n icon: 'warn', danger: true,\n label: `${f.issues.length} need${f.issues.length === 1 ? 's' : ''} attention`,\n onClick: () => { wb.closeSheet(); ui.app.activity.togglePanel(true); },\n })\n : null,\n f.running.length || f.uploading.length\n ? sheetRow({\n icon: 'refresh',\n label: `${f.running.length + f.uploading.length} running`,\n onClick: () => { wb.closeSheet(); ui.app.activity.togglePanel(true); },\n })\n : null,\n !f.off.online ? sheetRow({ icon: 'info', label: 'Offline', value: `${f.off.pins.length} pinned` }) : null,\n f.off.queued ? sheetRow({ icon: 'upload', label: 'Waiting to sync', value: String(f.off.queued) }) : null,\n\n sheetRow({\n icon: 'files',\n label: 'Items',\n value: f.partial\n ? `${f.shown.toLocaleString()} of ${f.totalKnown ? f.totalItems.toLocaleString() : 'more'}`\n : f.totalItems.toLocaleString(),\n }),\n // `+` where the figure covers only what has loaded, matching the desktop bar.\n sheetRow({ icon: 'file', label: 'Size', value: `${bytes(f.totalBytes)}${f.totalKnown || !f.partial ? '' : '+'}` }),\n // Only where the backend can actually answer — see usageChip.\n f.usage?.total\n ? div({ className: 'sheet-row static usage' },\n icon('download', { size: 18 }),\n span({ className: 'sr-label' }, 'Free space'),\n usageChip({ usage: f.usage }))\n : null,\n f.caps ? sheetRow({\n icon: f.caps.storage?.presignDownload ? 'download' : 'files',\n label: 'Transfers',\n value: f.caps.storage?.presignDownload ? 'Direct to storage' : 'Through the server',\n }) : null,\n f.caps?.features?.semanticSearch ? sheetRow({ icon: 'star', label: 'Search', value: 'Semantic + keyword' }) : null,\n\n div({ className: 'sheet-actions' },\n button({ className: 'btn small ghost' }, icon('refresh', { size: 13 }), span('Scan for changes')).on({ click: go('workbench.scanCollection') }),\n button({ className: 'btn small ghost' }, icon('refresh', { size: 13 }), span('Activity'))\n .on({ click: () => { ui.platform.workbench.closeSheet(); ui.app.activity.togglePanel(true); } }),\n ),\n );\n}\n\nfunction moreSheet(state, ui) {\n const wb = ui.platform.workbench;\n const go = (cmd) => () => { wb.closeSheet(); ui.exec(cmd); };\n const me = state.so.me;\n const unread = state.so.notifications.unread;\n return div({ className: 'sheet-body' },\n // No identity, no profile row — the same rule the desktop rail follows. An anonymous\n // deployment has no account to show and nothing to sign into.\n me && !me.anonymous\n ? div({ className: 'sheet-me' },\n me.picture ? img({ src: me.picture, alt: '', className: 'avatar-img' }) : span({ className: 'avatar-txt' }, (me.name || me.id || '?')[0].toUpperCase()),\n div({}, div({ className: 'sm-name' }, me.name || me.id), me.email ? div({ className: 'sm-sub' }, me.email) : null))\n : null,\n\n sheetRow({ icon: 'bell', label: unread ? `Notifications (${unread})` : 'Notifications', onClick: () => { wb.closeSheet(); ui.app.social.toggleInbox(true); } }),\n sheetRow({ icon: 'refresh', label: 'Activity & problems', onClick: () => { wb.closeSheet(); ui.app.activity.togglePanel(true); } }),\n sheetRow({ icon: 'info', label: 'Details & conversation', onClick: go('workbench.toggleInfoPanel') }),\n sheetRow({ icon: 'trash', label: 'Trash', onClick: go('explorer.showTrash') }),\n sheetRow({ icon: 'refresh', label: 'Refresh', onClick: go('explorer.refresh') }),\n sheetRow({ icon: 'command', label: 'All commands', onClick: go('workbench.showCommandPalette') }),\n sheetRow({ icon: 'gear', label: 'Settings', onClick: go('workbench.openSettings') }),\n );\n}\n",
97
99
  "// Root composition. Assembles the `ui` helper (stable for the app's life),\n// zips every reactive slice the shell needs into one snapshot, and renders the\n// full workbench from it. Components stay pure — they receive (state, ui) and\n// either call ui.exec(commandId) or ui.go(action). This is the only module that\n// knows about every service at once.\n\nimport { dd, cell, derive, constant } from '../../runtime.js';\nimport { NavigateAction } from '../../bl/actions.js';\nimport activityBar from '../components/activityBar.js';\nimport statusBar from '../components/statusBar.js';\nimport launcher from '../components/launcher.js';\nimport settingsView from '../components/settingsView.js';\nimport collectionGate from '../components/collectionGate.js';\nimport pluginsView from '../components/pluginsView.js';\nimport editorArea from '../components/editorArea.js';\nimport commandPalette from '../components/commandPalette.js';\nimport { dialog, contextMenu, toasts, transferTray, pluginPanel } from '../components/overlays.js';\nimport activityPanel from '../components/activityPanel.js';\nimport { infoPanel } from '../components/social.js';\nimport { phoneTopBar, phoneBottomBar, phoneSheet } from '../components/phoneChrome.js';\n\nconst { alias, div } = dd;\n\nexport default function workbench({ engine, app, platform, plugins }) {\n // A counter rather than a timestamp: a cell drops a write of the value it already\n // holds, and two `rerender()` calls in the same millisecond would have compared equal.\n const bump = cell(0);\n const ui = {\n engine, app, platform,\n go: (action) => engine.dispatch(action),\n exec: (id, ...args) => platform.commands.execute(id, ...args),\n rerender: () => bump.update((n) => n + 1),\n uninstallPlugin: (id) => plugins?.uninstall(id),\n };\n\n const { watch } = platform.reactive;\n // One derived snapshot of every slice the shell reads. `derive` invalidates when any\n // of them does and recomputes once on the next read, so fifteen changes in a frame\n // still cost one render.\n const combined = derive(\n [\n platform.workbench.observe(),\n platform.workbench.observeOverlay(),\n platform.workbench.observeNav(),\n app.explorer.observe(),\n app.search.observe(),\n app.apiKeys.observe(),\n app.transfers.observe(),\n platform.notifications.observe(),\n platform.context.observe(),\n platform.settings.observe(),\n platform.plugins.observe() ?? constant([]),\n platform.contributions.observeType('statusItem'),\n app.social.observe(),\n app.offline.observe(),\n app.activity.observe(),\n platform.viewport.observe(),\n platform.voice.observe(),\n bump,\n ],\n // `_bump` is IN the snapshot, unlike before. `watch` skips a render whose value is\n // shallow-equal to the last one, so a forced re-render that left no trace in the\n // object would be discarded as \"nothing changed\" — which is the opposite of what\n // asking for one means.\n (wb, overlay, nav, ex, se, keys, tr, notif, ctx, settings, pluginList, statusItems, so, off, act, vp, voice, _bump) =>\n ({ wb, overlay, nav, ex, se, keys, tr, notif, ctx, settings, plugins: pluginList, statusItems, so, off, act, vp, voice, _bump }),\n );\n\n return alias(() => watch(combined, (state) => view(state, ui)));\n}\n\nfunction view(state, ui) {\n const mode = state.vp?.mode || 'desktop';\n const phone = mode === 'phone';\n return div({ className: `shell ${mode} ${state.settings['workbench.density'] === 'compact' ? 'compact' : ''}` },\n // On a phone the rail becomes a bottom bar and the status bar folds behind one icon\n // in a top bar — see phoneChrome. Everything between them is identical, which is the\n // point: only the chrome changes shape, not the app.\n phone ? phoneTopBar(state, ui) : null,\n div({ className: 'body' },\n phone ? null : activityBar(state, ui),\n mainArea(state, ui),\n ),\n phone ? phoneBottomBar(state, ui) : statusBar(state, ui),\n phone ? phoneSheet(state, ui) : null,\n // Overlays.\n searchModal(state, ui),\n commandPalette(state, ui),\n dialog(state, ui),\n contextMenu(state, ui),\n pluginPanel(state, ui),\n toasts(state, ui),\n transferTray(state, ui),\n activityPanel(state, ui),\n );\n}\n\nfunction mainArea(state, ui) {\n // Before a collection is known there is nothing to draw: every scoped request names one\n // in its path, so a file list, a search box and an Upload button would all be lying.\n // Settings stays reachable — an admin with no collections still needs to get at it.\n if (state.ex?.gate && state.wb.activity !== 'settings') return collectionGate(state, ui);\n\n switch (state.wb.activity) {\n case 'settings': return settingsView(state, ui);\n case 'plugins': return pluginsView(state, ui);\n default: {\n // Home: the top of the panel stack — the launcher (base search) or, once a\n // file is open, its opener full-width (optionally split with the info panel).\n if (!state.nav.activeTabId) return launcher(state, ui);\n if (!state.wb.infoPanel) return editorArea(state, ui);\n // A 340px rail beside a 390px screen leaves nothing on either side. On a phone the\n // details panel takes the whole panel instead — it has its own close button, so\n // there is still a way back to the file.\n return state.vp?.mode === 'phone'\n ? infoPanel(state, ui)\n : div({ className: 'editor-split' }, editorArea(state, ui), infoPanel(state, ui));\n }\n }\n}\n\n// Double-shift search: the launcher as a modal overlay. Picking an item resets the\n// viewer stack (starts over) — the launcher reads state.wb.searchModal to know.\nfunction searchModal(state, ui) {\n if (!state.wb.searchModal) return div();\n return div({ className: 'search-modal' },\n div({ className: 'scrim' }).on({ click: () => ui.platform.workbench.closeSearchModal() }),\n div({ className: 'search-modal-panel' }, launcher(state, ui, { modal: true })),\n );\n}\n\nexport { NavigateAction };\n",
98
100
  "// Booting a workbench — the whole client, as a function you call with what you want\n// added to it.\n//\n// This used to be `main.js`: a fixed sequence that registered a fixed set of openers\n// and mounted. Which is fine until someone wants to SHIP a different drive — a hosted\n// build with a rich media player, an image-caption indexer and a gallery view — and\n// finds the only way in is to fork the package. Every contribution the built-ins use\n// goes through the same registry a plugin's does, so there was never a technical reason\n// for that; there was only a hard-coded list.\n//\n// import { createWorkbench } from '@3sln/trove/web/workbench.js';\n//\n// createWorkbench({\n// openers: [{ id: 'acme.player', title: 'Player', priority: 60,\n// match: { mime: ['video/*'] }, component: player }],\n// views: [{ id: 'acme.gallery', title: 'Gallery', icon: 'grid', priority: 70,\n// match: { mime: ['image/*'] }, render: gallery }],\n// });\n//\n// Two ways to displace a built-in, both falling out of how the registry already works:\n// register a HIGHER PRIORITY (selection sorts by it, and the user can still pick the\n// plain one from the chooser), or register the SAME ID (the registry is a map, so it is\n// replaced outright). Prefer the first — it leaves the original reachable.\n//\n// These openers and views run IN PROCESS. That is the difference between a build of the\n// app and a plugin, and it cuts both ways: full access to the platform, and no sandbox\n// to catch a mistake. Anything a user installs is a plugin and stays in its frame.\n\nimport { dd, effect } from './runtime.js';\nimport { createPlatform } from './platform/index.js';\nimport { createApp } from './bl/index.js';\nimport { NavigateAction, UploadFilesAction, OpenInitialCollectionAction } from './bl/actions.js';\nimport { parsePackage } from './platform/pluginPackage.js';\nimport workbenchComposition from './ui/compositions/workbench.js';\nimport { registerBuiltinOpeners } from './ui/components/openers/index.js';\nimport { registerBuiltinViews } from './ui/components/views/index.js';\nimport { attachMedia } from './ui/media.js';\n\n/**\n * Build the platform, mount the workbench, and wire the cross-cutting behaviours that\n * belong to no single component — theme, global keybindings, OS drag-and-drop upload,\n * capability probing, the plugin catalog.\n *\n * @param {object} [options]\n * @param {Element} [options.root] where to mount (default `.workbench`)\n * @param {string} [options.baseUrl] API origin (default same-origin)\n * @param {Array} [options.openers] extra openers: `{ id, title, match, priority?, component }`\n * @param {Array} [options.views] extra views: `{ id, title, icon?, match?, priority?, render, move? }`\n * @param {Array} [options.settings] extra setting schemas, for whatever those contribute\n * @param {boolean} [options.serviceWorker] register /sw.js (default true)\n * @returns {{platform: object, engine: object, app: object}}\n */\nexport function createWorkbench({\n root = document.querySelector('.workbench'),\n baseUrl = '',\n openers = [],\n views = [],\n settings = [],\n serviceWorker = true,\n} = {}) {\n const platform = createPlatform({ baseUrl });\n const { engine, app } = createApp(platform);\n\n // Built-in openers and views are UI, so they register from the composition layer\n // (which is allowed to know both platform and ui) rather than from bl/.\n registerBuiltinOpeners(platform);\n registerBuiltinViews(platform);\n // Then whatever this build adds, so a same-id registration replaces the built-in\n // rather than being replaced by it.\n register(platform, 'opener', openers);\n register(platform, 'view', views);\n if (settings.length) platform.settings.register(settings);\n\n // Plugins are installed by the user (from a .zip or a URL) and persisted locally;\n // restore any that were installed on this device, then run.\n platform.plugins.restore();\n\n const plugins = { uninstall: (id) => platform.plugins.uninstall(id) };\n\n // --- mount ----------------------------------------------------------------\n const App = workbenchComposition({ engine, app, platform, plugins });\n dd.reconcile(root, [App()]);\n\n // --- theme ----------------------------------------------------------------\n const applyTheme = () => {\n document.documentElement.dataset.theme = platform.settings.get('workbench.theme') || 'dark';\n };\n applyTheme();\n effect(platform.settings.observe(), () => applyTheme());\n\n // --- form factor ----------------------------------------------------------\n // Watch the window so rotating a phone, or dragging a desktop window narrow, re-picks\n // the shell. Also stamps data-layout on <html> for the CSS half of the same decision.\n platform.viewport.install();\n // Ask once whether this browser can transcribe on-device, so the launcher knows\n // whether to offer a microphone. Nothing is downloaded and no permission is requested\n // — see platform/voice.js.\n platform.voice.refresh().catch(() => {});\n // Remote-control navigation, which switches itself on and off with the TV layout.\n platform.spatialNav.install();\n\n // --- keybindings ----------------------------------------------------------\n platform.keybindings.install(window);\n\n // --- viewer stack ↔ browser history ---------------------------------------\n window.addEventListener('popstate', (e) => platform.workbench.onPopState(e));\n installDoubleShift(platform);\n\n // --- service worker (offline shell + pinned files + push) -----------------\n if (serviceWorker && 'serviceWorker' in navigator) {\n window.addEventListener('load', () => navigator.serviceWorker.register('/sw.js').catch(() => {}));\n }\n\n installDragAndDrop(engine, app);\n\n // --- initial load ---------------------------------------------------------\n (async () => {\n try {\n platform.capabilities = await platform.api.capabilities();\n // What the server can do is read straight off `platform`, not held in a store, so\n // nothing invalidated when it arrived. Re-pushing the same state object will not\n // do it either: a cell compares with Object.is and drops a write of what it\n // already holds. Saying \"this changed under you\" is the store's job.\n platform.workbench.touch(); // the status bar reads capabilities\n } catch (err) {\n platform.notifications.error(`Cannot reach the Trove server: ${err.message}`);\n }\n // Land on a collection the user can actually read — see OpenInitialCollectionAction.\n engine.dispatch(new OpenInitialCollectionAction());\n })();\n\n // Expose for debugging / e2e.\n window.__trove = {\n platform, engine, app,\n // Test/automation hook: install a package from raw zip bytes.\n test: {\n parsePackage,\n assessTrust: (pkg) => platform.plugins.assessTrust(pkg),\n install: (pkg, opts) => platform.plugins.install(pkg, opts),\n NavigateAction,\n // Keeping a media element pointed at a URL that still works is the half of signed\n // URLs that only shows up over time, so it is drivable from a probe.\n attachMedia,\n },\n };\n\n return { platform, engine, app };\n}\n\n/**\n * Register a build's own contributions.\n *\n * `id` is required and it is not a formality: an unaddressed contribution cannot be\n * remembered as someone's default opener, cannot be pinned as their view, and cannot be\n * named in a keymap. Failing here is far better than shipping a build whose media\n * player silently forgets which one the user chose.\n */\nfunction register(platform, type, list) {\n for (const c of list) {\n if (!c?.id) throw new Error(`A ${type} passed to createWorkbench needs an \"id\"`);\n const { id, ...spec } = c;\n platform.contributions.register(id, { type, ...spec });\n }\n}\n\n// Double-shift → modal search overlay (Raycast-style). Two Shift presses within 400ms,\n// with no other key between, open it.\nfunction installDoubleShift(platform) {\n let lastShift = 0;\n window.addEventListener('keydown', (e) => {\n if (e.key === 'Shift' && !e.repeat) {\n const now = Date.now();\n if (now - lastShift < 400) { platform.workbench.openSearchModal(); lastShift = 0; }\n else lastShift = now;\n } else if (e.key !== 'Shift') {\n lastShift = 0;\n }\n });\n}\n\n// Dropping files anywhere on the window uploads them to the open collection.\nfunction installDragAndDrop(engine, app) {\n let dragDepth = 0;\n window.addEventListener('dragenter', (e) => {\n if (!e.dataTransfer?.types.includes('Files')) return;\n dragDepth++;\n document.body.classList.add('dragging-file');\n });\n window.addEventListener('dragover', (e) => {\n if (e.dataTransfer?.types.includes('Files')) e.preventDefault();\n });\n window.addEventListener('dragleave', () => {\n if (--dragDepth <= 0) {\n dragDepth = 0;\n document.body.classList.remove('dragging-file');\n }\n });\n window.addEventListener('drop', (e) => {\n if (!e.dataTransfer?.files?.length) return;\n e.preventDefault();\n dragDepth = 0;\n document.body.classList.remove('dragging-file');\n engine.dispatch(new UploadFilesAction(e.dataTransfer.files, app.explorer.state.collectionId));\n });\n}\n",
99
101
  "// The open-source build's entry point: a workbench with nothing added to it.\n//\n// Everything that used to live here is `createWorkbench` (./workbench.js), which takes\n// the openers and views a build wants to ship. A hosted or bespoke build imports that\n// instead of this file and passes its own — no fork, and the same registry the plugins\n// use.\n\nimport { createWorkbench } from './workbench.js';\n\ncreateWorkbench();\n"
100
102
  ],
101
- "mappings": "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SACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,OACA,WACA,cACA,MACA,OACA,MACA,MACA,cACA,UACA,MACA,MACA,MACA,KACA,OACA,MACA,KACA,QACA,KACA,MACA,QACA,QACA,QACA,OACA,OACA,MACA,KACA,OACA,OACA,QACA,KACA,KACA,QACA,SACA,QACA,UACA,OACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,UACA,UACA,OACA,QACA,UACA,WACA,OACA,YACA,SACA,SACA,MACA,SACA,MACA,SACA,MACA,UACA,YACA,YACA,QACA,SACA,SACA,UACA,SACA,YACA,UACA,UACA,YACA,UACA,YACA,WACA,UACA,WACA,QACA,YACA,YACA,SACA,UACE,GC/GJ,SAAS,EAAiB,CAAC,GAAK,UAAU,CAAC,EAAG,CAC5C,eAAe,IAAM,CACnB,GAAI,CAAC,GAAQ,QAAS,EAAG,EAC1B,EAGH,SAAS,EAAkB,CAAC,EAAG,CAC7B,MAAO,KACL,EACE,MACA,CACE,SAAU,CACR,mBAAoB,OACpB,MAAO,OACP,QAAS,MACT,cAAe,UACjB,CACF,EACA,EAAE,SAAU,KAAM,UAAU,GAAO,SAAW,OAAO,CAAK,GAAG,EAC7D;AAAA;AAAA,EACA,GAAO,OAAS,EAClB,EAGJ,SAAS,EAAa,CAAC,EAAO,CAC5B,OACE,GAAS,MAAQ,OAAO,EAAM,UAAY,YAAc,OAAO,EAAM,YAAc,WAahF,SAAS,EAAQ,CAAC,EAAc,CACrC,IAAM,EAAS,GAAc,CAAY,EAAI,CAAC,KAAM,CAAY,EAAI,EAC9D,EAAO,GAAQ,KACrB,GAAI,CAAC,GAAc,CAAI,EACrB,MAAU,MAAM,qEAAqE,EAGvF,MAAO,CAIL,SAAU,OAAO,EAAK,WAAa,WAAa,EAAK,SAAW,GAChE,YAAa,GAAmB,EAAK,CAAC,KACnC,EACH,UAIG,EAAK,QACV,ECpDK,IAAM,GAAU,OAAO,uBAAuB,EAE/C,GAAU,OAAO,uBAAuB,EAGvC,SAA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",
102
- "debugId": "B4E40DB6D02BBBB864756E2164756E21",
103
+ "mappings": "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SACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,OACA,WACA,cACA,MACA,OACA,MACA,MACA,cACA,UACA,MACA,MACA,MACA,KACA,OACA,MACA,KACA,QACA,KACA,MACA,QACA,QACA,QACA,OACA,OACA,MACA,KACA,OACA,OACA,QACA,KACA,KACA,QACA,SACA,QACA,UACA,OACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,UACA,UACA,OACA,QACA,UACA,WACA,OACA,YACA,SACA,SACA,MACA,SACA,MACA,SACA,MACA,UACA,YACA,YACA,QACA,SACA,SACA,UACA,SACA,YACA,UACA,UACA,YACA,UACA,YACA,WACA,UACA,WACA,QACA,YACA,YACA,SACA,UACE,GC/GJ,SAAS,EAAiB,CAAC,GAAK,UAAU,CAAC,EAAG,CAC5C,eAAe,IAAM,CACnB,GAAI,CAAC,GAAQ,QAAS,EAAG,EAC1B,EAGH,SAAS,EAAkB,CAAC,EAAG,CAC7B,MAAO,KACL,EACE,MACA,CACE,SAAU,CACR,mBAAoB,OACpB,MAAO,OACP,QAAS,MACT,cAAe,UACjB,CACF,EACA,EAAE,SAAU,KAAM,UAAU,GAAO,SAAW,OAAO,CAAK,GAAG,EAC7D;AAAA;AAAA,EACA,GAAO,OAAS,EAClB,EAGJ,SAAS,EAAa,CAAC,EAAO,CAC5B,OACE,GAAS,MAAQ,OAAO,EAAM,UAAY,YAAc,OAAO,EAAM,YAAc,WAahF,SAAS,EAAQ,CAAC,EAAc,CACrC,IAAM,EAAS,GAAc,CAAY,EAAI,CAAC,KAAM,CAAY,EAAI,EAC9D,EAAO,GAAQ,KACrB,GAAI,CAAC,GAAc,CAAI,EACrB,MAAU,MAAM,qEAAqE,EAGvF,MAAO,CAIL,SAAU,OAAO,EAAK,WAAa,WAAa,EAAK,SAAW,GAChE,YAAa,GAAmB,EAAK,CAAC,KACnC,EACH,UAIG,EAAK,QACV,ECpDK,IAAM,GAAU,OAAO,uBAAuB,EAE/C,GAAU,OAAO,uBAAuB,EAGvC,SAA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",
104
+ "debugId": "73AFCABD9F7F7A4C64756E2164756E21",
103
105
  "names": []
104
106
  }