@opengeni/artifact-tool 0.2.2

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 (203) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +104 -0
  3. package/dist/bounded-zip.d.ts +28 -0
  4. package/dist/chunk-4BSENMAE.js +39 -0
  5. package/dist/chunk-4BSENMAE.js.map +1 -0
  6. package/dist/chunk-4FRFNNBM.js +276 -0
  7. package/dist/chunk-4FRFNNBM.js.map +1 -0
  8. package/dist/chunk-5XIA6KHZ.js +49 -0
  9. package/dist/chunk-5XIA6KHZ.js.map +1 -0
  10. package/dist/chunk-66CT2ZRP.js +2229 -0
  11. package/dist/chunk-66CT2ZRP.js.map +1 -0
  12. package/dist/chunk-72SYDU4O.js +319 -0
  13. package/dist/chunk-72SYDU4O.js.map +1 -0
  14. package/dist/chunk-B2ZJRZDA.js +279 -0
  15. package/dist/chunk-B2ZJRZDA.js.map +1 -0
  16. package/dist/chunk-DCTLTNPW.js +2458 -0
  17. package/dist/chunk-DCTLTNPW.js.map +1 -0
  18. package/dist/chunk-FGZM4FQ6.js +473 -0
  19. package/dist/chunk-FGZM4FQ6.js.map +1 -0
  20. package/dist/chunk-HTJBLBDE.js +591 -0
  21. package/dist/chunk-HTJBLBDE.js.map +1 -0
  22. package/dist/chunk-IYFXZQ34.js +5306 -0
  23. package/dist/chunk-IYFXZQ34.js.map +1 -0
  24. package/dist/chunk-J6N7IR44.js +172 -0
  25. package/dist/chunk-J6N7IR44.js.map +1 -0
  26. package/dist/chunk-N2IHNWBS.js +1002 -0
  27. package/dist/chunk-N2IHNWBS.js.map +1 -0
  28. package/dist/chunk-NAG44K67.js +549 -0
  29. package/dist/chunk-NAG44K67.js.map +1 -0
  30. package/dist/chunk-O24KTEGP.js +33 -0
  31. package/dist/chunk-O24KTEGP.js.map +1 -0
  32. package/dist/chunk-PI2AZVGK.js +2074 -0
  33. package/dist/chunk-PI2AZVGK.js.map +1 -0
  34. package/dist/chunk-Q2FFHEY7.js +40 -0
  35. package/dist/chunk-Q2FFHEY7.js.map +1 -0
  36. package/dist/chunk-RBGQADXA.js +57 -0
  37. package/dist/chunk-RBGQADXA.js.map +1 -0
  38. package/dist/chunk-U5G2BKM2.js +613 -0
  39. package/dist/chunk-U5G2BKM2.js.map +1 -0
  40. package/dist/chunk-VOJHMSM3.js +39 -0
  41. package/dist/chunk-VOJHMSM3.js.map +1 -0
  42. package/dist/chunk-VUNV25KB.js +16 -0
  43. package/dist/chunk-VUNV25KB.js.map +1 -0
  44. package/dist/chunk-XIFUNVBO.js +101 -0
  45. package/dist/chunk-XIFUNVBO.js.map +1 -0
  46. package/dist/chunk-ZCJYRJGB.js +489 -0
  47. package/dist/chunk-ZCJYRJGB.js.map +1 -0
  48. package/dist/chunk-ZZXPEE4S.js +2260 -0
  49. package/dist/chunk-ZZXPEE4S.js.map +1 -0
  50. package/dist/document-docx-api.d.ts +49 -0
  51. package/dist/document-docx-codec.d.ts +9 -0
  52. package/dist/document-docx-codec.js +4765 -0
  53. package/dist/document-docx-codec.js.map +1 -0
  54. package/dist/document-docx-import.d.ts +261 -0
  55. package/dist/document-docx-packer.d.ts +18 -0
  56. package/dist/document-docx-state.d.ts +12 -0
  57. package/dist/document-render.d.ts +3 -0
  58. package/dist/document-render.js +492 -0
  59. package/dist/document-render.js.map +1 -0
  60. package/dist/document.d.ts +432 -0
  61. package/dist/document.js +37 -0
  62. package/dist/document.js.map +1 -0
  63. package/dist/errors.d.ts +23 -0
  64. package/dist/file-blob.d.ts +11 -0
  65. package/dist/index.d.ts +4 -0
  66. package/dist/index.js +186 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/inspection.d.ts +12 -0
  69. package/dist/kernel.d.ts +101 -0
  70. package/dist/lib-GQLPACFK.js +9746 -0
  71. package/dist/lib-GQLPACFK.js.map +1 -0
  72. package/dist/materializer-cli-entry.d.ts +2 -0
  73. package/dist/materializer-cli-entry.js +29 -0
  74. package/dist/materializer-cli-entry.js.map +1 -0
  75. package/dist/materializer-cli.d.ts +24 -0
  76. package/dist/materializer-cli.js +24 -0
  77. package/dist/materializer-cli.js.map +1 -0
  78. package/dist/native-raster.d.ts +10 -0
  79. package/dist/native.d.ts +129 -0
  80. package/dist/native.js +31 -0
  81. package/dist/native.js.map +1 -0
  82. package/dist/office-import.d.ts +48 -0
  83. package/dist/office-import.js +154 -0
  84. package/dist/office-import.js.map +1 -0
  85. package/dist/presentation-pptx-api.d.ts +60 -0
  86. package/dist/presentation-pptx-import.d.ts +5 -0
  87. package/dist/presentation-pptx-state-digest-765CZZED.js +10 -0
  88. package/dist/presentation-pptx-state-digest-765CZZED.js.map +1 -0
  89. package/dist/presentation-pptx-state-digest.d.ts +3 -0
  90. package/dist/presentation-pptx-state.d.ts +4 -0
  91. package/dist/presentation-pptx-xml.d.ts +29 -0
  92. package/dist/presentation-pptx.d.ts +5 -0
  93. package/dist/presentation-pptx.js +2365 -0
  94. package/dist/presentation-pptx.js.map +1 -0
  95. package/dist/presentation-render.d.ts +29 -0
  96. package/dist/presentation-render.js +375 -0
  97. package/dist/presentation-render.js.map +1 -0
  98. package/dist/presentation.d.ts +565 -0
  99. package/dist/presentation.js +71 -0
  100. package/dist/presentation.js.map +1 -0
  101. package/dist/production-composite.d.ts +68 -0
  102. package/dist/production-document.d.ts +2 -0
  103. package/dist/production-document.js +176 -0
  104. package/dist/production-document.js.map +1 -0
  105. package/dist/production-native-codecs.d.ts +94 -0
  106. package/dist/production-presentation.d.ts +2 -0
  107. package/dist/production-presentation.js +176 -0
  108. package/dist/production-presentation.js.map +1 -0
  109. package/dist/production-sha256.d.ts +2 -0
  110. package/dist/production-spreadsheet-native.d.ts +12 -0
  111. package/dist/production-spreadsheet.d.ts +2 -0
  112. package/dist/production-spreadsheet.js +176 -0
  113. package/dist/production-spreadsheet.js.map +1 -0
  114. package/dist/production.d.ts +96 -0
  115. package/dist/raster-image.d.ts +34 -0
  116. package/dist/reference.d.ts +17 -0
  117. package/dist/reference.js +574 -0
  118. package/dist/reference.js.map +1 -0
  119. package/dist/runtime-cli-entry.d.ts +2 -0
  120. package/dist/runtime-cli-entry.js +21 -0
  121. package/dist/runtime-cli-entry.js.map +1 -0
  122. package/dist/runtime-cli.d.ts +76 -0
  123. package/dist/runtime-cli.js +26 -0
  124. package/dist/runtime-cli.js.map +1 -0
  125. package/dist/runtime-development.d.ts +73 -0
  126. package/dist/runtime-development.js +30 -0
  127. package/dist/runtime-development.js.map +1 -0
  128. package/dist/runtime-receipt.d.ts +19 -0
  129. package/dist/runtime.d.ts +355 -0
  130. package/dist/runtime.js +42 -0
  131. package/dist/runtime.js.map +1 -0
  132. package/dist/snapshot.d.ts +26 -0
  133. package/dist/snapshot.js +61 -0
  134. package/dist/snapshot.js.map +1 -0
  135. package/dist/spreadsheet-address.d.ts +18 -0
  136. package/dist/spreadsheet-file.d.ts +17 -0
  137. package/dist/spreadsheet-formula.d.ts +67 -0
  138. package/dist/spreadsheet-image.d.ts +17 -0
  139. package/dist/spreadsheet-render.d.ts +5 -0
  140. package/dist/spreadsheet-render.js +752 -0
  141. package/dist/spreadsheet-render.js.map +1 -0
  142. package/dist/spreadsheet-types.d.ts +155 -0
  143. package/dist/spreadsheet-xlsx-api.d.ts +88 -0
  144. package/dist/spreadsheet-xlsx-codec.d.ts +16 -0
  145. package/dist/spreadsheet-xlsx-codec.js +16 -0
  146. package/dist/spreadsheet-xlsx-codec.js.map +1 -0
  147. package/dist/spreadsheet-xlsx-state.d.ts +16 -0
  148. package/dist/spreadsheet.d.ts +724 -0
  149. package/dist/spreadsheet.js +67 -0
  150. package/dist/spreadsheet.js.map +1 -0
  151. package/package.json +129 -0
  152. package/src/bounded-zip.ts +450 -0
  153. package/src/document-docx-api.ts +64 -0
  154. package/src/document-docx-codec.ts +2253 -0
  155. package/src/document-docx-import.ts +3814 -0
  156. package/src/document-docx-packer.ts +72 -0
  157. package/src/document-docx-state.ts +59 -0
  158. package/src/document-render.ts +615 -0
  159. package/src/document.ts +2800 -0
  160. package/src/errors.ts +45 -0
  161. package/src/file-blob.ts +43 -0
  162. package/src/index.ts +4 -0
  163. package/src/inspection.ts +50 -0
  164. package/src/kernel.ts +525 -0
  165. package/src/materializer-cli-entry.ts +11 -0
  166. package/src/materializer-cli.ts +743 -0
  167. package/src/native-raster.ts +141 -0
  168. package/src/native.ts +390 -0
  169. package/src/office-import.ts +243 -0
  170. package/src/presentation-pptx-api.ts +107 -0
  171. package/src/presentation-pptx-import.ts +2065 -0
  172. package/src/presentation-pptx-state-digest.ts +46 -0
  173. package/src/presentation-pptx-state.ts +18 -0
  174. package/src/presentation-pptx-xml.ts +473 -0
  175. package/src/presentation-pptx.ts +447 -0
  176. package/src/presentation-render.ts +532 -0
  177. package/src/presentation.ts +2599 -0
  178. package/src/production-composite.ts +805 -0
  179. package/src/production-document.ts +2 -0
  180. package/src/production-native-codecs.ts +1141 -0
  181. package/src/production-presentation.ts +2 -0
  182. package/src/production-sha256.ts +150 -0
  183. package/src/production-spreadsheet-native.ts +686 -0
  184. package/src/production-spreadsheet.ts +2 -0
  185. package/src/production.ts +1022 -0
  186. package/src/raster-image.ts +586 -0
  187. package/src/reference.ts +17 -0
  188. package/src/runtime-cli-entry.ts +13 -0
  189. package/src/runtime-cli.ts +670 -0
  190. package/src/runtime-development.ts +689 -0
  191. package/src/runtime-receipt.ts +169 -0
  192. package/src/runtime.ts +1463 -0
  193. package/src/snapshot.ts +88 -0
  194. package/src/spreadsheet-address.ts +90 -0
  195. package/src/spreadsheet-file.ts +71 -0
  196. package/src/spreadsheet-formula.ts +1212 -0
  197. package/src/spreadsheet-image.ts +242 -0
  198. package/src/spreadsheet-render.ts +985 -0
  199. package/src/spreadsheet-types.ts +171 -0
  200. package/src/spreadsheet-xlsx-api.ts +123 -0
  201. package/src/spreadsheet-xlsx-codec.ts +3063 -0
  202. package/src/spreadsheet-xlsx-state.ts +191 -0
  203. package/src/spreadsheet.ts +5195 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/production-composite.ts"],"sourcesContent":["import type { WorkbookChange } from \"./spreadsheet\";\nimport type {\n NativeArtifactSession,\n NativeDocumentSession,\n NativePresentationSession,\n NativeSpreadsheetSession,\n} from \"./native\";\n\nconst ROOT_KEY = \"$root\";\nconst PROXY_METADATA = new WeakMap<object, ProxyMetadata>();\n\nexport type CompositeModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type CompositeReconciliation = Readonly<{\n session: NativeArtifactSession;\n data?: unknown;\n}>;\n\nexport type CompositeReconciler<Root extends object> = (root: Root) => CompositeReconciliation;\n\nexport type CompositePropertyRead = Readonly<{\n handled: boolean;\n value?: unknown;\n}>;\n\ntype Locator<Root extends object> = Readonly<{\n key: string;\n resolve(root: Root): unknown;\n}>;\n\ntype ProxyMetadata = Readonly<{\n state: CompositeArtifactState<object>;\n locator: Locator<object>;\n}>;\n\nexport type CompositeMutation = Readonly<{\n member: PropertyKey;\n owner: unknown;\n arguments?: readonly unknown[];\n}>;\n\nexport type PreparedCompositeMutation = Readonly<{\n /** Applies one already-prevalidated mutation to the retained native session. */\n commit(result: unknown): boolean;\n}>;\n\nexport type CompositeMutationPreparer<Root extends object> = (\n mutation: CompositeMutation,\n state: CompositeArtifactState<Root>,\n) => PreparedCompositeMutation | null;\n\nconst QUERY_METHODS = new Set<PropertyKey>([\n \"allStoryBlocks\",\n \"arrayBuffer\",\n \"at\",\n \"entries\",\n \"every\",\n \"export\",\n \"filter\",\n \"find\",\n \"findIndex\",\n \"findLast\",\n \"findLastIndex\",\n \"forBlock\",\n \"forEach\",\n \"getActiveWorksheet\",\n \"getCell\",\n \"getItem\",\n \"getItemAt\",\n \"getRange\",\n \"getRangeByIndexes\",\n \"getUsedRange\",\n \"help\",\n \"includes\",\n \"indexOf\",\n \"inspect\",\n \"inspectRecord\",\n \"join\",\n \"keys\",\n \"lastIndexOf\",\n \"layoutSnapshot\",\n \"map\",\n \"ownsObject\",\n \"reduce\",\n \"reduceRight\",\n \"render\",\n \"resolve\",\n \"resize\",\n \"serialize\",\n \"slice\",\n \"some\",\n \"summary\",\n \"text\",\n \"toJSON\",\n \"toLocaleString\",\n \"toProto\",\n \"toString\",\n \"trace\",\n \"values\",\n]);\n\nconst ARRAY_CALLBACK_METHODS = new Set<PropertyKey>([\n \"every\",\n \"filter\",\n \"find\",\n \"findIndex\",\n \"findLast\",\n \"findLastIndex\",\n \"flatMap\",\n \"forEach\",\n \"map\",\n \"reduce\",\n \"reduceRight\",\n \"some\",\n]);\n\nconst ARRAY_MUTATION_METHODS = new Set<PropertyKey>([\n \"copyWithin\",\n \"fill\",\n \"pop\",\n \"push\",\n \"reverse\",\n \"shift\",\n \"sort\",\n \"splice\",\n \"unshift\",\n]);\n\n/**\n * Owns one host projection and one exact native session. Public objects are\n * location proxies, not aliases to a particular projection instance. Rare\n * reconciliation mutations can therefore replace the host graph atomically;\n * hot mutations retain both the host graph and native session.\n */\nexport class CompositeArtifactState<Root extends object> {\n readonly modality: CompositeModality;\n readonly namespace: bigint;\n\n #root: Root;\n #native: NativeArtifactSession;\n #nativeData: unknown;\n #revision: number;\n readonly #disposedError: Error;\n #disposed = false;\n #mutationDepth = 0;\n #asyncMutation = false;\n readonly #reconcileProjection: CompositeReconciler<Root>;\n readonly #prepareMutation: CompositeMutationPreparer<Root> | undefined;\n readonly #proxies = new Map<string, object>();\n readonly #functions = new Map<string, (...args: unknown[]) => unknown>();\n readonly #changeListeners = new Set<(change: WorkbookChange) => void>();\n readonly #installProjection:\n | ((root: Root, state: CompositeArtifactState<Root>) => void)\n | undefined;\n readonly #readProperty:\n | ((\n owner: unknown,\n member: PropertyKey,\n state: CompositeArtifactState<Root>,\n ) => CompositePropertyRead)\n | undefined;\n readonly #captureAuxiliary: ((root: Root) => unknown) | undefined;\n readonly #restoreAuxiliary: ((root: Root, value: unknown) => void) | undefined;\n\n constructor(\n input: Readonly<{\n modality: CompositeModality;\n namespace: bigint;\n root: Root;\n reconciliation: CompositeReconciliation;\n reconcile: CompositeReconciler<Root>;\n prepareMutation?: CompositeMutationPreparer<Root>;\n installProjection?: (root: Root, state: CompositeArtifactState<Root>) => void;\n readProperty?: (\n owner: unknown,\n member: PropertyKey,\n state: CompositeArtifactState<Root>,\n ) => CompositePropertyRead;\n captureAuxiliary?: (root: Root) => unknown;\n restoreAuxiliary?: (root: Root, value: unknown) => void;\n }>,\n ) {\n this.modality = input.modality;\n this.namespace = input.namespace;\n this.#root = input.root;\n this.#native = input.reconciliation.session;\n this.#nativeData = input.reconciliation.data;\n this.#revision = safeRevision(this.#native.revision());\n this.#reconcileProjection = input.reconcile;\n this.#prepareMutation = input.prepareMutation;\n this.#installProjection = input.installProjection;\n this.#readProperty = input.readProperty;\n this.#captureAuxiliary = input.captureAuxiliary;\n this.#restoreAuxiliary = input.restoreAuxiliary;\n this.#disposedError = new Error(`${input.modality} artifact is disposed`);\n this.#installProjection?.(this.#root, this);\n }\n\n get root(): Root {\n this.assertUsable();\n return this.#root;\n }\n\n get native(): NativeArtifactSession {\n this.assertUsable();\n return this.#native;\n }\n\n get nativeData(): unknown {\n this.assertUsable();\n return this.#nativeData;\n }\n\n /** Monotonic facade revision across retained and rare replacement sessions. */\n get revision(): number {\n this.assertUsable();\n return this.#revision;\n }\n\n /** True only inside one explicit/public mutation transaction. */\n get inMutation(): boolean {\n return this.#mutationDepth > 0;\n }\n\n proxy(): Root {\n return this.wrap(rootLocator()) as Root;\n }\n\n rawRoot(): Root {\n this.assertUsable();\n return this.#root;\n }\n\n assertUsable(): void {\n if (this.#disposed) throw this.#disposedError;\n if (this.#asyncMutation && this.#mutationDepth === 0) {\n throw new Error(`${this.modality} artifact mutation is still in progress`);\n }\n }\n\n onWorkbookChange(listener: (change: WorkbookChange) => void): () => void {\n this.assertUsable();\n if (this.modality !== \"spreadsheet\") {\n throw new Error(\"Workbook change listeners are only available for spreadsheets\");\n }\n this.#changeListeners.add(listener);\n return () => this.#changeListeners.delete(listener);\n }\n\n dispose(): void {\n if (this.#disposed) return;\n this.#native.dispose();\n this.#changeListeners.clear();\n this.#proxies.clear();\n this.#functions.clear();\n this.#disposed = true;\n }\n\n mutate<Result>(operation: () => Result, hint: CompositeMutation): Result {\n this.assertUsable();\n if (this.#mutationDepth > 0) return operation();\n\n const prepared = this.#prepareMutation?.(hint, this) ?? null;\n const acceptedRoot = prepared ? null : cloneProjectionGraph(this.#root);\n const acceptedAuxiliary = prepared ? undefined : this.#captureAuxiliary?.(this.#root);\n this.#mutationDepth = 1;\n let result: Result;\n try {\n result = operation();\n } catch (cause) {\n if (acceptedRoot) this.#restoreProjection(acceptedRoot, acceptedAuxiliary);\n this.#mutationDepth = 0;\n throw cause;\n }\n\n if (isPromiseLike(result)) {\n this.#asyncMutation = true;\n return result.then(\n (value) => {\n try {\n this.#acceptProjection(hint, prepared, value);\n return value;\n } catch (cause) {\n if (acceptedRoot) this.#restoreProjection(acceptedRoot, acceptedAuxiliary);\n else this.#poisonAfterIncrementalFailure();\n throw cause;\n } finally {\n this.#mutationDepth = 0;\n this.#asyncMutation = false;\n }\n },\n (cause) => {\n if (acceptedRoot) this.#restoreProjection(acceptedRoot, acceptedAuxiliary);\n this.#mutationDepth = 0;\n this.#asyncMutation = false;\n throw cause;\n },\n ) as Result;\n }\n\n try {\n this.#acceptProjection(hint, prepared, result);\n return result;\n } catch (cause) {\n if (acceptedRoot) this.#restoreProjection(acceptedRoot, acceptedAuxiliary);\n else this.#poisonAfterIncrementalFailure();\n throw cause;\n } finally {\n this.#mutationDepth = 0;\n }\n }\n\n wrap(locator: Locator<Root>): unknown {\n this.assertUsable();\n const existing = this.#proxies.get(locator.key);\n if (existing) return existing;\n const current = locator.resolve(this.#root);\n if (!isProxyCandidate(current)) return current;\n\n const target: object = Array.isArray(current) ? [] : {};\n const proxy = new Proxy(target, this.#handler(locator));\n this.#proxies.set(locator.key, proxy);\n PROXY_METADATA.set(proxy, {\n state: this as unknown as CompositeArtifactState<object>,\n locator: locator as unknown as Locator<object>,\n });\n return proxy;\n }\n\n #handler(locator: Locator<Root>): ProxyHandler<object> {\n return {\n get: (_target, member) => {\n this.assertUsable();\n const owner = locator.resolve(this.#root);\n if (!isObject(owner)) return undefined;\n\n if (locator.key === ROOT_KEY) {\n if (member === \"batch\") {\n return this.#rootFunction(\"batch\", (callback: unknown) => {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"Artifact batch callback must be a function\");\n }\n return this.mutate(() => callback(this.proxy()), {\n member: \"batch\",\n owner: this.#root,\n arguments: [callback],\n });\n });\n }\n if (member === \"dispose\") return this.#rootFunction(\"dispose\", () => this.dispose());\n if (member === \"onChange\" && this.modality === \"spreadsheet\") {\n return this.#rootFunction(\"onChange\", (listener: unknown) => {\n if (typeof listener !== \"function\")\n throw new TypeError(\"Workbook listener must be a function\");\n return this.onWorkbookChange(listener as (change: WorkbookChange) => void);\n });\n }\n if (member === \"recalculate\" && this.modality === \"spreadsheet\") {\n return this.#rootFunction(\"recalculate\", () => undefined);\n }\n if (\n member === \"revision\" &&\n (this.modality === \"spreadsheet\" || this.modality === \"document\")\n ) {\n return this.#revision;\n }\n }\n\n if (Array.isArray(owner) && member === Symbol.iterator) {\n return this.#arrayIterator(locator, owner);\n }\n\n const projected = this.#readProperty?.(owner, member, this);\n const value =\n projected?.handled === true ? projected.value : Reflect.get(owner, member, owner);\n if (typeof value === \"function\") {\n const functionKey = `${locator.key}.${propertyKey(member)}`;\n const cached = this.#functions.get(functionKey);\n if (cached) return cached;\n const wrapped = (...args: unknown[]): unknown => {\n this.assertUsable();\n const currentOwner = locator.resolve(this.#root);\n if (!isObject(currentOwner)) throw new Error(\"Artifact object no longer exists\");\n const currentMethod = Reflect.get(currentOwner, member, currentOwner);\n if (typeof currentMethod !== \"function\")\n throw new TypeError(`${String(member)} is not callable`);\n const invocationArgs =\n Array.isArray(currentOwner) && ARRAY_CALLBACK_METHODS.has(member)\n ? this.#arrayCallbackArguments(locator, args)\n : args.map(unwrapArtifactValue);\n const invoke = () => currentMethod.apply(currentOwner, invocationArgs);\n const mutates = Array.isArray(currentOwner)\n ? ARRAY_MUTATION_METHODS.has(member)\n : !QUERY_METHODS.has(member);\n const result = mutates\n ? this.mutate(invoke, { member, owner: currentOwner, arguments: invocationArgs })\n : invoke();\n return this.#wrapReturn(locator, member, result);\n };\n this.#functions.set(functionKey, wrapped);\n return wrapped;\n }\n return this.#wrapProperty(locator, member, value);\n },\n set: (_target, member, value) => {\n this.assertUsable();\n const owner = locator.resolve(this.#root);\n if (!isObject(owner)) throw new Error(\"Artifact object no longer exists\");\n return this.mutate(() => Reflect.set(owner, member, unwrapArtifactValue(value), owner), {\n member,\n owner,\n arguments: [unwrapArtifactValue(value)],\n });\n },\n deleteProperty: (_target, member) => {\n this.assertUsable();\n const owner = locator.resolve(this.#root);\n if (!isObject(owner)) throw new Error(\"Artifact object no longer exists\");\n return this.mutate(() => Reflect.deleteProperty(owner, member), {\n member,\n owner,\n arguments: [],\n });\n },\n has: (_target, member) => {\n const owner = locator.resolve(this.#root);\n return isObject(owner) && member in owner;\n },\n getPrototypeOf: () => {\n const owner = locator.resolve(this.#root);\n return isObject(owner) ? Object.getPrototypeOf(owner) : null;\n },\n ownKeys: (target) => {\n const owner = locator.resolve(this.#root);\n const keys = isObject(owner) ? Reflect.ownKeys(owner) : [];\n if (Array.isArray(target) && !keys.includes(\"length\")) keys.push(\"length\");\n return keys;\n },\n getOwnPropertyDescriptor: (target, member) => {\n if (Array.isArray(target) && member === \"length\") {\n return Reflect.getOwnPropertyDescriptor(target, \"length\");\n }\n const owner = locator.resolve(this.#root);\n const descriptor = isObject(owner)\n ? Reflect.getOwnPropertyDescriptor(owner, member)\n : undefined;\n return descriptor ? { ...descriptor, configurable: true } : undefined;\n },\n };\n }\n\n #acceptProjection(\n hint: CompositeMutation,\n prepared: PreparedCompositeMutation | null,\n result: unknown,\n ): void {\n if (prepared) {\n const changed = prepared.commit(result);\n if (changed) {\n this.#revision = Math.max(this.#revision + 1, safeRevision(this.#native.revision()));\n this.#emitWorkbookChange(hint);\n }\n return;\n }\n const accepted = this.#reconcileProjection(this.#root);\n const previous = this.#native;\n this.#native = accepted.session;\n this.#nativeData = accepted.data;\n this.#revision = Math.max(this.#revision + 1, safeRevision(this.#native.revision()));\n try {\n previous.dispose();\n } catch {\n // The new session is already authoritative. Disposal is idempotent and\n // cannot be allowed to roll a successful atomic projection swap back.\n }\n this.#emitWorkbookChange(hint);\n }\n\n #poisonAfterIncrementalFailure(): void {\n try {\n this.#native.dispose();\n } finally {\n this.#disposed = true;\n this.#changeListeners.clear();\n }\n }\n\n #restoreProjection(root: Root, auxiliary: unknown): void {\n this.#root = root;\n this.#installProjection?.(this.#root, this);\n this.#restoreAuxiliary?.(this.#root, auxiliary);\n }\n\n #emitWorkbookChange(hint: CompositeMutation): void {\n if (this.modality !== \"spreadsheet\" || this.#changeListeners.size === 0) return;\n const root = this.#root as unknown as {\n worksheets?: { items?: ReadonlyArray<{ id?: string }> };\n };\n const owner = hint.owner as { id?: unknown; worksheet?: { id?: unknown } };\n const ownerSheet =\n typeof owner?.id === \"string\" && owner.id.startsWith(\"ws/\")\n ? owner.id\n : typeof owner?.worksheet?.id === \"string\"\n ? owner.worksheet.id\n : null;\n const sheetIds = ownerSheet\n ? [ownerSheet]\n : (root.worksheets?.items ?? [])\n .map((sheet) => sheet.id)\n .filter((id): id is string => typeof id === \"string\");\n const member = String(hint.member).toLowerCase();\n const reason: WorkbookChange[\"reason\"] =\n member.includes(\"format\") || member.includes(\"style\")\n ? \"format\"\n : member.includes(\"comment\") || member.includes(\"reply\")\n ? \"comment\"\n : member.includes(\"width\") || member.includes(\"height\")\n ? \"dimension\"\n : member.includes(\"chart\") ||\n member.includes(\"image\") ||\n member.includes(\"shape\") ||\n member.includes(\"sparkline\")\n ? \"drawing\"\n : member.includes(\"sheet\") || member === \"add\" || member === \"name\"\n ? \"structure\"\n : \"content\";\n const change: WorkbookChange = Object.freeze({\n revision: this.#revision,\n sheetIds: Object.freeze([...new Set(sheetIds)].sort()),\n reason,\n });\n for (const listener of this.#changeListeners) listener(change);\n }\n\n #rootFunction(\n name: string,\n implementation: (...args: unknown[]) => unknown,\n ): (...args: unknown[]) => unknown {\n const key = `${ROOT_KEY}.${name}`;\n const existing = this.#functions.get(key);\n if (existing) return existing;\n this.#functions.set(key, implementation);\n return implementation;\n }\n\n #wrapProperty(parent: Locator<Root>, member: PropertyKey, value: unknown): unknown {\n if (!isProxyCandidate(value)) return value;\n const stable = this.#stableLocator(value);\n return this.wrap(stable ?? propertyLocator(parent, member));\n }\n\n #wrapReturn(parent: Locator<Root>, member: PropertyKey, value: unknown): unknown {\n if (isPromiseLike(value)) {\n return value.then((resolved) => this.#wrapReturn(parent, member, resolved));\n }\n if (!isProxyCandidate(value)) return value;\n const stable = this.#stableLocator(value);\n if (stable) return this.wrap(stable);\n if (isRangeLike(value)) return this.wrap(rangeLocator(value));\n // Arrays and plain records returned by inspection/serialization are owned\n // copies, not live graph nodes. Only property traversal creates a locator\n // for such values.\n return value;\n }\n\n #stableLocator(value: object): Locator<Root> | null {\n const id = Reflect.get(value, \"id\");\n if (typeof id !== \"string\") return null;\n const root = this.#root as unknown as { resolve?: (id: string) => unknown };\n if (typeof root.resolve !== \"function\") return null;\n try {\n if (root.resolve(id) !== value) return null;\n } catch {\n return null;\n }\n return {\n key: `id:${id}`,\n resolve: (candidateRoot) => {\n const resolve = (candidateRoot as unknown as { resolve?: (objectId: string) => unknown })\n .resolve;\n if (typeof resolve !== \"function\") throw new Error(`Artifact cannot resolve ${id}`);\n return resolve.call(candidateRoot, id);\n },\n };\n }\n\n #arrayIterator(locator: Locator<Root>, owner: unknown[]): () => IterableIterator<unknown> {\n const current = () => locator.resolve(this.#root);\n const wrap = (index: number, value: unknown) =>\n this.#wrapProperty(locator, String(index), value);\n return function* iterator(): IterableIterator<unknown> {\n for (let index = 0; index < owner.length; index += 1) {\n const currentArray = current();\n if (!Array.isArray(currentArray) || index >= currentArray.length) return;\n yield wrap(index, currentArray[index]);\n }\n };\n }\n\n #arrayCallbackArguments(locator: Locator<Root>, args: readonly unknown[]): unknown[] {\n if (typeof args[0] !== \"function\") return args.map(unwrapArtifactValue);\n const callback = args[0] as (...callbackArgs: unknown[]) => unknown;\n const thisArg = args[1];\n const wrapChild = (index: number, value: unknown) =>\n this.#wrapProperty(locator, String(index), value);\n const wrappedArray = () => this.wrap(locator);\n const wrappedCallback = function (this: unknown, value: unknown, index: unknown) {\n const child = typeof index === \"number\" ? wrapChild(index, value) : value;\n return callback.call(thisArg ?? this, child, index, wrappedArray());\n };\n return [wrappedCallback, thisArg];\n }\n}\n\nexport function stateOf(value: unknown): CompositeArtifactState<object> | null {\n if (!isObject(value)) return null;\n return PROXY_METADATA.get(value)?.state ?? null;\n}\n\nexport function requireCompositeState(\n value: unknown,\n modality?: CompositeModality,\n): CompositeArtifactState<object> {\n const state = stateOf(value);\n if (!state) throw new TypeError(\"Expected an artifact created by the production facade\");\n state.assertUsable();\n if (modality && state.modality !== modality) {\n throw new TypeError(`Expected a ${modality} artifact`);\n }\n return state;\n}\n\nexport function unwrapArtifactValue(value: unknown): unknown {\n if (!isObject(value)) return value;\n const metadata = PROXY_METADATA.get(value);\n if (metadata) return metadata.locator.resolve(metadata.state.rawRoot());\n if (Array.isArray(value)) return value.map(unwrapArtifactValue);\n if (!isPlainObject(value)) return value;\n const output: Record<PropertyKey, unknown> = {};\n for (const key of Reflect.ownKeys(value))\n output[key] = unwrapArtifactValue(Reflect.get(value, key));\n return output;\n}\n\nexport function nativeSessionOf(\n state: CompositeArtifactState<object>,\n): NativeSpreadsheetSession | NativeDocumentSession | NativePresentationSession {\n return state.native;\n}\n\nfunction rootLocator<Root extends object>(): Locator<Root> {\n return { key: ROOT_KEY, resolve: (root) => root };\n}\n\nfunction propertyLocator<Root extends object>(\n parent: Locator<Root>,\n member: PropertyKey,\n): Locator<Root> {\n return {\n key: `${parent.key}.${propertyKey(member)}`,\n resolve(root) {\n const owner = parent.resolve(root);\n if (!isObject(owner)) throw new Error(\"Artifact parent object no longer exists\");\n return Reflect.get(owner, member, owner);\n },\n };\n}\n\nfunction rangeLocator<Root extends object>(range: object): Locator<Root> {\n const worksheet = Reflect.get(range, \"worksheet\") as { id?: unknown };\n const address = Reflect.get(range, \"address\") as {\n row?: unknown;\n col?: unknown;\n rowCount?: unknown;\n colCount?: unknown;\n };\n if (\n typeof worksheet?.id !== \"string\" ||\n !Number.isInteger(address?.row) ||\n !Number.isInteger(address?.col) ||\n !Number.isInteger(address?.rowCount) ||\n !Number.isInteger(address?.colCount)\n ) {\n throw new Error(\"Cannot locate spreadsheet range\");\n }\n const row = address.row as number;\n const col = address.col as number;\n const rowCount = address.rowCount as number;\n const colCount = address.colCount as number;\n const sheetId = worksheet.id;\n return {\n key: `range:${sheetId}:${row}:${col}:${rowCount}:${colCount}`,\n resolve(root) {\n const workbook = root as unknown as { resolve?: (id: string) => unknown };\n const sheet = workbook.resolve?.(sheetId) as {\n getRangeByIndexes?: (row: number, col: number, rows: number, columns: number) => unknown;\n };\n if (!sheet || typeof sheet.getRangeByIndexes !== \"function\") {\n throw new Error(`Worksheet no longer exists: ${sheetId}`);\n }\n return sheet.getRangeByIndexes(row, col, rowCount, colCount);\n },\n };\n}\n\nfunction isRangeLike(value: object): boolean {\n const address = Reflect.get(value, \"address\");\n const worksheet = Reflect.get(value, \"worksheet\");\n return (\n isObject(address) && isObject(worksheet) && typeof Reflect.get(worksheet, \"id\") === \"string\"\n );\n}\n\nfunction isProxyCandidate(value: unknown): value is object {\n if (!isObject(value)) return false;\n if (\n value instanceof Date ||\n value instanceof RegExp ||\n value instanceof ArrayBuffer ||\n ArrayBuffer.isView(value) ||\n value instanceof Blob ||\n value instanceof Map ||\n value instanceof Set ||\n value instanceof Promise ||\n Object.isFrozen(value)\n ) {\n return false;\n }\n return true;\n}\n\nfunction cloneProjectionGraph<Root extends object>(root: Root): Root {\n return cloneGraph(root, new Map()) as Root;\n}\n\nfunction cloneGraph(value: unknown, seen: Map<object, unknown>): unknown {\n if (!isObject(value) || typeof value === \"function\") return value;\n const known = seen.get(value);\n if (known !== undefined) return known;\n if (value instanceof Date) return new Date(value.getTime());\n if (value instanceof RegExp) return new RegExp(value.source, value.flags);\n if (value instanceof ArrayBuffer) return value.slice(0);\n if (ArrayBuffer.isView(value)) {\n if (value instanceof DataView) {\n return new DataView(\n value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength),\n );\n }\n const constructor = value.constructor as new (input: ArrayLike<number>) => ArrayBufferView;\n return new constructor(value as unknown as ArrayLike<number>);\n }\n if (value instanceof Blob) return value.slice(0, value.size, value.type);\n if (value instanceof Map) {\n const output = new Map();\n seen.set(value, output);\n for (const [key, entry] of value) output.set(cloneGraph(key, seen), cloneGraph(entry, seen));\n return output;\n }\n if (value instanceof Set) {\n const output = new Set();\n seen.set(value, output);\n for (const entry of value) output.add(cloneGraph(entry, seen));\n return output;\n }\n if (value instanceof WeakMap || value instanceof WeakSet || value instanceof Promise)\n return value;\n\n const output: object = Array.isArray(value) ? [] : Object.create(Object.getPrototypeOf(value));\n seen.set(value, output);\n for (const key of Reflect.ownKeys(value)) {\n if (Array.isArray(value) && key === \"length\") continue;\n const descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n if (!descriptor) continue;\n if (\"value\" in descriptor) descriptor.value = cloneGraph(descriptor.value, seen);\n Reflect.defineProperty(output, key, descriptor);\n }\n if (Object.isFrozen(value)) Object.freeze(output);\n else if (Object.isSealed(value)) Object.seal(output);\n else if (!Object.isExtensible(value)) Object.preventExtensions(output);\n return output;\n}\n\nfunction safeRevision(value: bigint): number {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new RangeError(\"Native artifact revision exceeds the JavaScript safe-integer range\");\n }\n return Number(value);\n}\n\nfunction propertyKey(value: PropertyKey): string {\n return typeof value === \"symbol\" ? `symbol:${value.description ?? \"\"}` : String(value);\n}\n\nfunction isPromiseLike<Result>(value: Result): value is Result & Promise<Awaited<Result>> {\n return isObject(value) && typeof Reflect.get(value, \"then\") === \"function\";\n}\n\nfunction isObject(value: unknown): value is object {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nfunction isPlainObject(value: object): boolean {\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n"],"mappings":"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","names":["output"]}