@opengeni/artifact-tool 0.2.8 → 0.3.4-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-ZCJYRJGB.js → chunk-4XJE7NRA.js} +2 -2
- package/dist/{chunk-N2IHNWBS.js → chunk-4YYYUZQH.js} +15 -6
- package/dist/chunk-4YYYUZQH.js.map +1 -0
- package/dist/{chunk-U5G2BKM2.js → chunk-LMLPFF3S.js} +12 -6
- package/dist/{chunk-U5G2BKM2.js.map → chunk-LMLPFF3S.js.map} +1 -1
- package/dist/{chunk-B2ZJRZDA.js → chunk-LVPFJH2Z.js} +7 -5
- package/dist/chunk-LVPFJH2Z.js.map +1 -0
- package/dist/{chunk-QZI5POCC.js → chunk-OVXX4G35.js} +2 -2
- package/dist/{chunk-6PBM7FKI.js → chunk-QA3NXBAG.js} +8 -7
- package/dist/chunk-QA3NXBAG.js.map +1 -0
- package/dist/{chunk-XT2EJFCU.js → chunk-SYFNJGH5.js} +30 -8
- package/dist/chunk-SYFNJGH5.js.map +1 -0
- package/dist/{chunk-RU5G3HNF.js → chunk-XAZTHG6W.js} +20 -9
- package/dist/chunk-XAZTHG6W.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/kernel.d.ts +0 -19
- package/dist/materializer-cli-entry.js +7 -7
- package/dist/materializer-cli.d.ts +4 -3
- package/dist/materializer-cli.js +7 -7
- package/dist/native.d.ts +1 -1
- package/dist/native.js +2 -2
- package/dist/office-import.d.ts +15 -5
- package/dist/office-import.js +25 -8
- package/dist/office-import.js.map +1 -1
- package/dist/production-document.js +4 -4
- package/dist/production-presentation.js +4 -4
- package/dist/production-spreadsheet.js +4 -4
- package/dist/reference.js +1 -365
- package/dist/reference.js.map +1 -1
- package/dist/runtime-cli-entry.js +3 -3
- package/dist/runtime-cli.js +2 -2
- package/dist/runtime-development.js +3 -3
- package/dist/runtime-receipt.d.ts +3 -2
- package/dist/runtime.d.ts +8 -6
- package/dist/runtime.js +1 -1
- package/dist/snapshot.d.ts +13 -6
- package/dist/snapshot.js +23 -11
- package/dist/snapshot.js.map +1 -1
- package/dist/spreadsheet-xlsx-codec.js +2 -2
- package/dist/spreadsheet.js +1 -1
- package/package.json +5 -5
- package/src/kernel.ts +1 -397
- package/src/materializer-cli.ts +20 -9
- package/src/native.ts +7 -5
- package/src/office-import.ts +47 -18
- package/src/production-spreadsheet-native.ts +4 -3
- package/src/runtime-receipt.ts +16 -5
- package/src/runtime.ts +22 -10
- package/src/snapshot.ts +39 -17
- package/src/spreadsheet-formula.ts +35 -7
- package/dist/chunk-6PBM7FKI.js.map +0 -1
- package/dist/chunk-B2ZJRZDA.js.map +0 -1
- package/dist/chunk-N2IHNWBS.js.map +0 -1
- package/dist/chunk-RU5G3HNF.js.map +0 -1
- package/dist/chunk-XT2EJFCU.js.map +0 -1
- /package/dist/{chunk-ZCJYRJGB.js.map → chunk-4XJE7NRA.js.map} +0 -0
- /package/dist/{chunk-QZI5POCC.js.map → chunk-OVXX4G35.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/production-sha256.ts","../src/production-native-codecs.ts","../src/production-spreadsheet-native.ts","../src/production.ts"],"sourcesContent":["const ROUND_CONSTANTS = Uint32Array.of(\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2,\n);\n\nconst INITIAL_STATE = Uint32Array.of(\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n);\n\n/** Browser-safe synchronous SHA-256 for bounded native projection payloads. */\nexport function sha256Bytes(input: Uint8Array): Uint8Array {\n const paddedLength = Math.ceil((input.byteLength + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n padded.set(input);\n padded[input.byteLength] = 0x80;\n const bitLength = input.byteLength * 8;\n const paddedView = new DataView(padded.buffer);\n paddedView.setUint32(paddedLength - 8, Math.floor(bitLength / 0x1_0000_0000), false);\n paddedView.setUint32(paddedLength - 4, bitLength >>> 0, false);\n\n const state = Uint32Array.from(INITIAL_STATE);\n const schedule = new Uint32Array(64);\n for (let offset = 0; offset < paddedLength; offset += 64) {\n for (let index = 0; index < 16; index += 1) {\n schedule[index] = paddedView.getUint32(offset + index * 4, false);\n }\n for (let index = 16; index < 64; index += 1) {\n const previous15 = schedule[index - 15]!;\n const previous2 = schedule[index - 2]!;\n const sigma0 =\n (rotateRight(previous15, 7) ^ rotateRight(previous15, 18) ^ (previous15 >>> 3)) >>> 0;\n const sigma1 =\n (rotateRight(previous2, 17) ^ rotateRight(previous2, 19) ^ (previous2 >>> 10)) >>> 0;\n schedule[index] = (schedule[index - 16]! + sigma0 + schedule[index - 7]! + sigma1) >>> 0;\n }\n\n let a = state[0]!;\n let b = state[1]!;\n let c = state[2]!;\n let d = state[3]!;\n let e = state[4]!;\n let f = state[5]!;\n let g = state[6]!;\n let h = state[7]!;\n for (let index = 0; index < 64; index += 1) {\n const sum1 = (rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25)) >>> 0;\n const choose = ((e & f) ^ (~e & g)) >>> 0;\n const temporary1 = (h + sum1 + choose + ROUND_CONSTANTS[index]! + schedule[index]!) >>> 0;\n const sum0 = (rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22)) >>> 0;\n const majority = ((a & b) ^ (a & c) ^ (b & c)) >>> 0;\n const temporary2 = (sum0 + majority) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d + temporary1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temporary1 + temporary2) >>> 0;\n }\n state[0] = (state[0]! + a) >>> 0;\n state[1] = (state[1]! + b) >>> 0;\n state[2] = (state[2]! + c) >>> 0;\n state[3] = (state[3]! + d) >>> 0;\n state[4] = (state[4]! + e) >>> 0;\n state[5] = (state[5]! + f) >>> 0;\n state[6] = (state[6]! + g) >>> 0;\n state[7] = (state[7]! + h) >>> 0;\n }\n\n const output = new Uint8Array(32);\n const outputView = new DataView(output.buffer);\n for (let index = 0; index < state.length; index += 1) {\n outputView.setUint32(index * 4, state[index]!, false);\n }\n return output;\n}\n\nfunction rotateRight(value: number, bits: number): number {\n return ((value >>> bits) | (value << (32 - bits))) >>> 0;\n}\n","import type {\n DocumentPageGeometry,\n DocumentParagraphFormat,\n DocumentParagraphStyle,\n DocumentTableStyle,\n DocumentTextStyle,\n SerializedDocument,\n SerializedDocumentBlock,\n SerializedDocumentComment,\n SerializedDocumentSection,\n SerializedParagraph,\n SerializedStory,\n SerializedTable,\n SerializedTextRun,\n SerializedTrackedChange,\n} from \"./document\";\nimport {\n Presentation,\n PresentationChart,\n PresentationGroup,\n PresentationImage,\n PresentationShape,\n PresentationTable,\n presentationColorValue,\n type PresentationElement,\n type PresentationFill,\n type PresentationLine,\n type PresentationPosition,\n type PresentationTemplateElement,\n type PresentationText,\n type PresentationTextStyle,\n} from \"./presentation\";\nimport { UnsupportedArtifactFeatureError } from \"./errors\";\nimport { decodeRasterBase64, inspectRasterImage } from \"./raster-image\";\nimport { sha256Bytes } from \"./production-sha256\";\n\nconst textEncoder = new TextEncoder();\nconst DOCUMENT_COMMAND_MAX_BYTES = 64 * 1024 * 1024;\nconst DOCUMENT_COMMAND_MAX_COUNT = 4_096;\nconst PRESENTATION_COMMAND_MAX_BYTES = 4 * 1024 * 1024;\nconst PRESENTATION_COMMAND_MAX_COUNT = 10_000;\nconst HEADER_BYTES = 24;\nconst CHECKSUM_BYTES = 8;\nconst EMU_PER_CSS_PIXEL = 9_525;\nconst PRESENTATION_MAX_COORDINATE_EMU = 9_525_000_000_000;\n\nexport function encodeDocumentProjectionCommands(snapshot: SerializedDocument): Uint8Array {\n const payload = new ByteWriter(DOCUMENT_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES);\n let commandCount = 0;\n const command = (write: () => void): void => {\n commandCount += 1;\n if (commandCount > DOCUMENT_COMMAND_MAX_COUNT) {\n throw new RangeError(\"Document projection exceeds the native command-count limit\");\n }\n write();\n };\n\n const firstSection = snapshot.sections[0];\n if (!firstSection || firstSection.startBlockIndex !== 0) {\n throw new Error(\"Document projection requires one initial section at body offset zero\");\n }\n assertInitialDocumentSectionIds(firstSection, snapshot.idNamespace);\n\n if (snapshot.evenAndOddHeaders !== undefined || snapshot.trackRevisions !== undefined) {\n command(() => {\n payload.u8(0);\n payload.u8(optionalOptionalBool(snapshot.evenAndOddHeaders));\n payload.u8(optionalOptionalBool(snapshot.trackRevisions));\n });\n }\n if (firstSection.titlePage !== undefined) {\n command(() => {\n payload.u8(9);\n payload.documentId(firstSection.id, \"sec\");\n payload.u8(optionalBool(firstSection.titlePage));\n });\n }\n if (!isDefaultNativeDocumentPage(firstSection.page)) {\n command(() => {\n payload.u8(14);\n payload.documentId(firstSection.id, \"sec\");\n payload.pageWithExtras(firstSection.page);\n });\n }\n\n const laterSections = new Map<number, SerializedDocumentSection>();\n for (const section of snapshot.sections.slice(1)) {\n if (laterSections.has(section.startBlockIndex)) {\n throw new Error(\"Document projection contains adjacent sections without a body block\");\n }\n laterSections.set(section.startBlockIndex, section);\n }\n for (let index = 0; index <= snapshot.blocks.length; index += 1) {\n const section = laterSections.get(index);\n if (section) {\n command(() => writeAddSection(payload, section));\n if (hasNonDefaultDocumentPageExtras(section.page)) {\n command(() => {\n payload.u8(14);\n payload.documentId(section.id, \"sec\");\n payload.pageWithExtras(section.page);\n });\n }\n }\n const block = snapshot.blocks[index];\n if (block) command(() => writeDocumentBlock(payload, block, { kind: \"body\" }));\n }\n if ([...laterSections.keys()].some((index) => index > snapshot.blocks.length)) {\n throw new Error(\"Document section starts beyond the body block list\");\n }\n\n for (const section of snapshot.sections) {\n writeDocumentStoryCommands(\n payload,\n command,\n section,\n \"header\",\n \"default\",\n section.headers.default,\n );\n writeDocumentStoryCommands(payload, command, section, \"header\", \"first\", section.headers.first);\n writeDocumentStoryCommands(payload, command, section, \"header\", \"even\", section.headers.even);\n writeDocumentStoryCommands(\n payload,\n command,\n section,\n \"footer\",\n \"default\",\n section.footers.default,\n );\n writeDocumentStoryCommands(payload, command, section, \"footer\", \"first\", section.footers.first);\n writeDocumentStoryCommands(payload, command, section, \"footer\", \"even\", section.footers.even);\n }\n\n for (const thread of snapshot.comments) {\n const root = thread.replies[0];\n if (!root) throw new Error(`Document comment ${thread.id} has no root reply`);\n command(() => {\n payload.u8(10);\n payload.documentId(thread.id, \"dc\");\n payload.documentId(thread.blockId, \"p\");\n payload.u32(thread.start);\n payload.u32(thread.end);\n payload.bool(thread.resolved);\n payload.commentReply(root);\n });\n for (const reply of thread.replies.slice(1)) {\n command(() => {\n payload.u8(11);\n payload.documentId(thread.id, \"dc\");\n payload.commentReply(reply);\n });\n }\n }\n for (const change of snapshot.changes) {\n command(() => {\n payload.u8(13);\n payload.documentId(change.id, \"chg\");\n payload.documentId(change.blockId, \"p\");\n payload.u32(change.start);\n payload.u32(change.end);\n payload.u8(change.kind === \"insert\" ? 1 : 2);\n payload.string(change.author);\n payload.string(change.createdAt);\n });\n }\n\n return envelope(\"OGADC001\", commandCount, payload.finish(), DOCUMENT_COMMAND_MAX_BYTES);\n}\n\nexport type DocumentProjectionTarget =\n | { kind: \"body\" }\n | {\n kind: \"story\";\n sectionId: string;\n storyKind: \"header\" | \"footer\";\n variant: \"default\" | \"first\" | \"even\";\n };\n\nexport type DocumentIncrementalCommand =\n | { kind: \"block.add\"; target: DocumentProjectionTarget; block: SerializedDocumentBlock }\n | {\n kind: \"paragraph.edit\";\n id: string;\n start: number;\n end: number;\n text: string;\n style?: DocumentTextStyle;\n }\n | { kind: \"paragraph.format\"; id: string; format: DocumentParagraphFormat }\n | { kind: \"paragraph.style\"; id: string; style: DocumentParagraphStyle }\n | { kind: \"table.style\"; id: string; style: DocumentTableStyle }\n | { kind: \"document.flags\"; evenAndOddHeaders?: boolean; trackRevisions?: boolean }\n | { kind: \"section.add\"; section: SerializedDocumentSection }\n | { kind: \"section.title\"; id: string; titlePage?: boolean }\n | { kind: \"comment.add\"; comment: SerializedDocumentComment }\n | { kind: \"comment.reply\"; id: string; reply: SerializedDocumentComment[\"replies\"][number] }\n | { kind: \"comment.resolved\"; id: string; resolved: boolean }\n | { kind: \"tracked.add\"; change: SerializedTrackedChange };\n\n/** Encodes only touched document nodes using the existing OGADC001 protocol. */\nexport function encodeDocumentIncrementalCommands(\n commands: readonly DocumentIncrementalCommand[],\n): Uint8Array {\n const payload = new ByteWriter(DOCUMENT_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES);\n if (commands.length === 0 || commands.length > DOCUMENT_COMMAND_MAX_COUNT) {\n throw new RangeError(\"Document incremental command count is outside its limit\");\n }\n for (const command of commands) {\n switch (command.kind) {\n case \"block.add\":\n writeDocumentBlock(payload, command.block, command.target);\n break;\n case \"paragraph.edit\":\n payload.u8(2);\n payload.documentId(command.id, \"p\");\n payload.u32(command.start);\n payload.u32(command.end);\n payload.string(command.text);\n payload.bool(command.style !== undefined);\n if (command.style) payload.textStyle(command.style);\n break;\n case \"paragraph.format\":\n payload.u8(3);\n payload.documentId(command.id, \"p\");\n payload.u32(command.format.start);\n payload.u32(command.format.end);\n payload.textStylePatch(command.format.style);\n break;\n case \"paragraph.style\":\n payload.u8(4);\n payload.documentId(command.id, \"p\");\n payload.paragraphStyle(command.style);\n break;\n case \"table.style\":\n payload.u8(6);\n payload.documentId(command.id, \"dt\");\n payload.tableStyle(command.style);\n break;\n case \"document.flags\":\n payload.u8(0);\n payload.u8(optionalOptionalBool(command.evenAndOddHeaders));\n payload.u8(optionalOptionalBool(command.trackRevisions));\n break;\n case \"section.add\":\n writeAddSection(payload, command.section);\n if (hasNonDefaultDocumentPageExtras(command.section.page)) {\n payload.u8(14);\n payload.documentId(command.section.id, \"sec\");\n payload.pageWithExtras(command.section.page);\n }\n break;\n case \"section.title\":\n payload.u8(9);\n payload.documentId(command.id, \"sec\");\n payload.u8(optionalBool(command.titlePage));\n break;\n case \"comment.add\": {\n const root = command.comment.replies[0];\n if (!root) throw new Error(`Document comment ${command.comment.id} has no root reply`);\n payload.u8(10);\n payload.documentId(command.comment.id, \"dc\");\n payload.documentId(command.comment.blockId, \"p\");\n payload.u32(command.comment.start);\n payload.u32(command.comment.end);\n payload.bool(command.comment.resolved);\n payload.commentReply(root);\n break;\n }\n case \"comment.reply\":\n payload.u8(11);\n payload.documentId(command.id, \"dc\");\n payload.commentReply(command.reply);\n break;\n case \"comment.resolved\":\n payload.u8(12);\n payload.documentId(command.id, \"dc\");\n payload.bool(command.resolved);\n break;\n case \"tracked.add\":\n payload.u8(13);\n payload.documentId(command.change.id, \"chg\");\n payload.documentId(command.change.blockId, \"p\");\n payload.u32(command.change.start);\n payload.u32(command.change.end);\n payload.u8(command.change.kind === \"insert\" ? 1 : 2);\n payload.string(command.change.author);\n payload.string(command.change.createdAt);\n break;\n }\n }\n // Section page extras are a second command in the same atomic batch.\n const commandCount =\n commands.length +\n commands.filter(\n (command) =>\n command.kind === \"section.add\" && hasNonDefaultDocumentPageExtras(command.section.page),\n ).length;\n return envelope(\"OGADC001\", commandCount, payload.finish(), DOCUMENT_COMMAND_MAX_BYTES);\n}\n\nexport function encodePresentationProjectionCommands(\n presentation: Presentation,\n namespace: bigint,\n): Uint8Array {\n const hasCustomSlideSize =\n presentation.slideSize.width !== 1_280 || presentation.slideSize.height !== 720;\n if (hasCustomSlideSize) {\n assertFinitePositive(presentation.slideSize.width, \"presentation slide width\");\n assertFinitePositive(presentation.slideSize.height, \"presentation slide height\");\n }\n const payload = new ByteWriter(PRESENTATION_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES);\n let commandCount = 0;\n const command = (write: () => void): void => {\n commandCount += 1;\n if (commandCount > PRESENTATION_COMMAND_MAX_COUNT) {\n throw new RangeError(\"Presentation projection exceeds the native command-count limit\");\n }\n write();\n };\n if (hasCustomSlideSize) {\n command(() => {\n payload.u8(15);\n payload.i64(presentationSizeEmu(presentation.slideSize.width, \"presentation slide width\"));\n payload.i64(presentationSizeEmu(presentation.slideSize.height, \"presentation slide height\"));\n });\n }\n let templateElementCounter = 0xffff_ffff_ffff_ffffn;\n const nextTemplateElementId = (): string => {\n if (templateElementCounter === 0n) {\n throw new RangeError(\"Presentation template element id space is exhausted\");\n }\n return `sh/${templateElementCounter--}`;\n };\n\n for (const master of presentation.masters.items) {\n command(() => {\n payload.u8(0);\n payload.presentationId(master.id, namespace);\n payload.string(master.name);\n payload.fill(master.background);\n });\n for (const [index, template] of master.elements.entries()) {\n const element = materializeTemplateElement(template);\n writePresentationElement(\n payload,\n command,\n element,\n namespace,\n { tag: 0, id: master.id },\n undefined,\n index,\n nextTemplateElementId(),\n );\n }\n }\n for (const layout of presentation.layouts.items) {\n command(() => {\n payload.u8(1);\n payload.presentationId(layout.id, namespace);\n payload.string(layout.name);\n payload.optionalPresentationId(layout.masterId, namespace);\n payload.fill(layout.background);\n });\n for (const [index, template] of layout.elements.entries()) {\n const element = materializeTemplateElement(template);\n writePresentationElement(\n payload,\n command,\n element,\n namespace,\n { tag: 1, id: layout.id },\n undefined,\n index,\n nextTemplateElementId(),\n );\n }\n }\n for (const [slideIndex, slide] of presentation.slides.items.entries()) {\n command(() => {\n payload.u8(2);\n payload.presentationId(slide.id, namespace);\n payload.u32(slideIndex);\n payload.string(slide.title);\n payload.optionalPresentationId(slide.layout?.id, namespace);\n payload.fill(slide.background.fill);\n });\n if (slide.notes.toString().length > 0) {\n command(() => {\n payload.u8(8);\n payload.presentationId(slide.id, namespace);\n payload.richText(slide.notes);\n });\n }\n for (const [index, element] of slide.elements.entries()) {\n writePresentationElement(\n payload,\n command,\n element,\n namespace,\n { tag: 2, id: slide.id },\n undefined,\n index,\n );\n }\n }\n return envelope(\"OGAPC001\", commandCount, payload.finish(), PRESENTATION_COMMAND_MAX_BYTES);\n}\n\nexport type PresentationIncrementalCommand =\n | { kind: \"slide.create\"; slide: Presentation[\"slides\"][\"items\"][number]; index: number }\n | { kind: \"slide.title\"; id: string; title: string }\n | { kind: \"slide.layout\"; id: string; layoutId?: string }\n | { kind: \"slide.notes\"; id: string; notes: PresentationText }\n | { kind: \"node.insert\"; slideId: string; index: number; element: PresentationElement }\n | { kind: \"node.update\"; element: PresentationElement }\n | { kind: \"presentation.size\"; width: number; height: number };\n\n/** Encodes touched presentation nodes using the existing OGAPC001 protocol. */\nexport function encodePresentationIncrementalCommands(\n commands: readonly PresentationIncrementalCommand[],\n namespace: bigint,\n): Uint8Array {\n const payload = new ByteWriter(PRESENTATION_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES);\n let commandCount = 0;\n const command = (write: () => void): void => {\n commandCount += 1;\n if (commandCount > PRESENTATION_COMMAND_MAX_COUNT) {\n throw new RangeError(\"Presentation incremental command count is outside its limit\");\n }\n write();\n };\n for (const entry of commands) {\n switch (entry.kind) {\n case \"slide.create\":\n command(() => {\n payload.u8(2);\n payload.presentationId(entry.slide.id, namespace);\n payload.u32(entry.index);\n payload.string(entry.slide.title);\n payload.optionalPresentationId(entry.slide.layout?.id, namespace);\n payload.fill(entry.slide.background.fill);\n });\n break;\n case \"slide.title\":\n command(() => {\n payload.u8(6);\n payload.presentationId(entry.id, namespace);\n payload.string(entry.title);\n });\n break;\n case \"slide.layout\":\n command(() => {\n payload.u8(7);\n payload.presentationId(entry.id, namespace);\n payload.optionalPresentationId(entry.layoutId, namespace);\n });\n break;\n case \"slide.notes\":\n command(() => {\n payload.u8(8);\n payload.presentationId(entry.id, namespace);\n payload.richText(entry.notes);\n });\n break;\n case \"node.insert\":\n writePresentationElement(\n payload,\n command,\n entry.element,\n namespace,\n { tag: 2, id: entry.slideId },\n undefined,\n entry.index,\n );\n break;\n case \"node.update\":\n command(() => {\n payload.u8(12);\n payload.presentationId(entry.element.id, namespace);\n payload.presentationRect(entry.element.position);\n });\n command(() => {\n payload.u8(13);\n payload.presentationId(entry.element.id, namespace);\n payload.presentationTransform(\n \"rotation\" in entry.element ? entry.element.rotation : 0,\n \"flipHorizontal\" in entry.element ? entry.element.flipHorizontal : false,\n \"flipVertical\" in entry.element ? entry.element.flipVertical : false,\n );\n });\n command(() => {\n payload.u8(14);\n payload.presentationId(entry.element.id, namespace);\n payload.presentationNode(entry.element);\n });\n break;\n case \"presentation.size\":\n command(() => {\n payload.u8(15);\n payload.i64(presentationSizeEmu(entry.width, \"presentation slide width\"));\n payload.i64(presentationSizeEmu(entry.height, \"presentation slide height\"));\n });\n break;\n }\n }\n if (commandCount === 0) throw new RangeError(\"Presentation incremental command batch is empty\");\n return envelope(\"OGAPC001\", commandCount, payload.finish(), PRESENTATION_COMMAND_MAX_BYTES);\n}\n\ntype NativePresentationSceneOwner = Readonly<{ tag: 0 | 1 | 2; id: string }>;\n\n/**\n * Template configs intentionally are not scene objects in the public model.\n * Materialize them through the same constructors used by ordinary slides so\n * native projection receives the exact same validation and normalization.\n */\nfunction materializeTemplateElement(template: PresentationTemplateElement): PresentationElement {\n const scratch = Presentation.create();\n const slide = scratch.slides.add();\n switch (template.kind) {\n case \"shape\":\n return slide.shapes.add(template.config);\n case \"chart\":\n return slide.charts.add(template.type, template.config);\n case \"image\":\n return slide.images.add(template.config);\n case \"table\":\n return slide.tables.add(template.config);\n }\n}\n\nfunction writeDocumentStoryCommands(\n writer: ByteWriter,\n command: (write: () => void) => void,\n section: SerializedDocumentSection,\n kind: \"header\" | \"footer\",\n variant: \"default\" | \"first\" | \"even\",\n story: SerializedStory,\n): void {\n const expectedPrefix = kind === \"header\" ? \"hdr\" : \"ftr\";\n writer.assertDocumentId(story.id, expectedPrefix);\n for (const block of story.blocks) {\n command(() =>\n writeDocumentBlock(writer, block, {\n kind: \"story\",\n sectionId: section.id,\n storyKind: kind,\n variant,\n }),\n );\n }\n}\n\ntype DocumentTarget = DocumentProjectionTarget;\n\nfunction writeDocumentBlock(\n writer: ByteWriter,\n block: SerializedDocumentBlock | SerializedParagraph | SerializedTable,\n target: DocumentTarget,\n): void {\n if (block.kind === \"paragraph\") {\n writer.u8(1);\n writer.documentTarget(target);\n writer.documentId(block.id, \"p\");\n writer.textRuns(block.runs);\n writer.paragraphStyle(block.style);\n return;\n }\n if (block.kind === \"table\") {\n writer.u8(5);\n writer.documentTarget(target);\n writer.documentId(block.id, \"dt\");\n writer.u32(block.rows.length);\n for (const row of block.rows) {\n writer.u32(row.length);\n for (const cell of row) writer.textRuns(cell);\n }\n writer.tableStyle(block.style);\n return;\n }\n if (target.kind !== \"body\") {\n throw new Error(\"Document story cannot contain a page break\");\n }\n writer.u8(7);\n writer.documentId(block.id, \"pb\");\n}\n\nfunction writeAddSection(writer: ByteWriter, section: SerializedDocumentSection): void {\n writer.u8(8);\n writer.documentId(section.id, \"sec\");\n writer.documentId(section.headers.default.id, \"hdr\");\n writer.documentId(section.headers.first.id, \"hdr\");\n writer.documentId(section.headers.even.id, \"hdr\");\n writer.documentId(section.footers.default.id, \"ftr\");\n writer.documentId(section.footers.first.id, \"ftr\");\n writer.documentId(section.footers.even.id, \"ftr\");\n writer.page(section.page);\n writer.u8(optionalBool(section.titlePage));\n}\n\nfunction assertInitialDocumentSectionIds(\n section: SerializedDocumentSection,\n namespace: string,\n): void {\n const expected = [\n [section.id, \"sec\", 1n],\n [section.headers.default.id, \"hdr\", 2n],\n [section.headers.first.id, \"hdr\", 3n],\n [section.headers.even.id, \"hdr\", 4n],\n [section.footers.default.id, \"ftr\", 5n],\n [section.footers.first.id, \"ftr\", 6n],\n [section.footers.even.id, \"ftr\", 7n],\n ] as const;\n for (const [id, prefix, counter] of expected) {\n const parsed = parseDocumentId(id, prefix);\n if (parsed.namespace !== BigInt(`0x${namespace}`) || parsed.counter !== counter) {\n throw new Error(\"Initial document structural ids do not match the native document allocator\");\n }\n }\n}\n\nfunction isDefaultNativeDocumentPage(page: DocumentPageGeometry): boolean {\n return (\n page.widthPt === 612 &&\n page.heightPt === 792 &&\n page.marginTopPt === 72 &&\n page.marginRightPt === 72 &&\n page.marginBottomPt === 72 &&\n page.marginLeftPt === 72 &&\n !hasNonDefaultDocumentPageExtras(page)\n );\n}\n\nfunction hasNonDefaultDocumentPageExtras(page: DocumentPageGeometry): boolean {\n return (page.headerPt ?? 36) !== 36 || (page.footerPt ?? 36) !== 36 || (page.gutterPt ?? 0) !== 0;\n}\n\nfunction writePresentationElement(\n writer: ByteWriter,\n command: (write: () => void) => void,\n element: PresentationElement,\n namespace: bigint,\n owner: NativePresentationSceneOwner,\n parentId: string | undefined,\n index: number,\n idOverride?: string,\n): void {\n const elementId = idOverride ?? element.id;\n command(() => {\n writer.u8(9);\n writer.u8(owner.tag);\n writer.presentationId(owner.id, namespace);\n writer.optionalPresentationId(parentId, namespace);\n writer.u32(index);\n writer.presentationId(elementId, namespace);\n writer.string(element.name);\n writer.presentationRect(element.position);\n writer.presentationTransform(\n \"rotation\" in element ? element.rotation : 0,\n \"flipHorizontal\" in element ? element.flipHorizontal : false,\n \"flipVertical\" in element ? element.flipVertical : false,\n );\n writer.presentationNode(element);\n });\n if (element instanceof PresentationGroup) {\n for (const [childIndex, child] of element.children.entries()) {\n writePresentationElement(writer, command, child, namespace, owner, elementId, childIndex);\n }\n }\n}\n\nfunction unsupportedPresentation(feature: string): never {\n throw new UnsupportedArtifactFeatureError(\"presentation\", feature, \"native Rust projection\");\n}\n\nclass ByteWriter {\n readonly #bytes: number[] = [];\n constructor(private readonly maximum: number) {}\n\n finish(): Uint8Array {\n return Uint8Array.from(this.#bytes);\n }\n bytes(value: Uint8Array): void {\n if (this.#bytes.length + value.byteLength > this.maximum) {\n throw new RangeError(\"Native projection command envelope exceeds its byte limit\");\n }\n this.#bytes.push(...value);\n }\n u8(value: number): void {\n this.bytes(Uint8Array.of(value));\n }\n bool(value: boolean): void {\n this.u8(value ? 1 : 0);\n }\n u16(value: number): void {\n const bytes = new Uint8Array(2);\n new DataView(bytes.buffer).setUint16(0, value, true);\n this.bytes(bytes);\n }\n u32(value: number): void {\n if (!Number.isSafeInteger(value) || value < 0 || value > 0xffff_ffff) {\n throw new RangeError(\"Native projection integer is outside u32\");\n }\n const bytes = new Uint8Array(4);\n new DataView(bytes.buffer).setUint32(0, value, true);\n this.bytes(bytes);\n }\n i32(value: number): void {\n if (!Number.isSafeInteger(value) || value < -0x8000_0000 || value > 0x7fff_ffff) {\n throw new RangeError(\"Native projection integer is outside i32\");\n }\n const bytes = new Uint8Array(4);\n new DataView(bytes.buffer).setInt32(0, value, true);\n this.bytes(bytes);\n }\n u64(value: bigint): void {\n if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {\n throw new RangeError(\"Native projection integer is outside u64\");\n }\n const bytes = new Uint8Array(8);\n new DataView(bytes.buffer).setBigUint64(0, value, true);\n this.bytes(bytes);\n }\n i64(value: bigint): void {\n const bytes = new Uint8Array(8);\n new DataView(bytes.buffer).setBigInt64(0, value, true);\n this.bytes(bytes);\n }\n f64(value: number): void {\n if (!Number.isFinite(value) || Object.is(value, -0)) {\n throw new TypeError(\"Native projection numbers must be finite canonical doubles\");\n }\n const bytes = new Uint8Array(8);\n new DataView(bytes.buffer).setFloat64(0, value, true);\n this.bytes(bytes);\n }\n string(value: string): void {\n const encoded = textEncoder.encode(value);\n this.u32(encoded.byteLength);\n this.bytes(encoded);\n }\n optionalString(value: string | undefined): void {\n this.bool(value !== undefined);\n if (value !== undefined) this.string(value);\n }\n assertDocumentId(id: string, expectedPrefix: string): void {\n parseDocumentId(id, expectedPrefix);\n }\n documentId(id: string, expectedPrefix: string): void {\n const parsed = parseDocumentId(id, expectedPrefix);\n this.u8(documentKindTag(expectedPrefix));\n this.u64(parsed.namespace);\n this.u64(parsed.counter);\n }\n documentTarget(target: DocumentTarget): void {\n if (target.kind === \"body\") {\n this.u8(0);\n return;\n }\n this.u8(1);\n this.documentId(target.sectionId, \"sec\");\n this.u8(target.storyKind === \"header\" ? 1 : 2);\n this.u8(target.variant === \"default\" ? 1 : target.variant === \"first\" ? 2 : 3);\n }\n page(page: DocumentPageGeometry): void {\n this.f64(page.widthPt);\n this.f64(page.heightPt);\n this.f64(page.marginTopPt);\n this.f64(page.marginRightPt);\n this.f64(page.marginBottomPt);\n this.f64(page.marginLeftPt);\n }\n pageWithExtras(page: DocumentPageGeometry): void {\n this.page(page);\n this.f64(page.headerPt ?? 36);\n this.f64(page.footerPt ?? 36);\n this.f64(page.gutterPt ?? 0);\n }\n textRuns(runs: readonly SerializedTextRun[]): void {\n this.u32(runs.length);\n for (const run of runs) {\n this.string(run.text);\n this.textStyle(run.style);\n }\n }\n textStyle(style: DocumentTextStyle): void {\n const mask =\n Number(style.fontFamily !== undefined) |\n (Number(style.fontSizePt !== undefined) << 1) |\n (Number(style.color !== undefined) << 2) |\n (Number(style.bold !== undefined) << 3) |\n (Number(style.italic !== undefined) << 4) |\n (Number(style.underline !== undefined) << 5) |\n (Number(style.strike !== undefined) << 6);\n this.u8(mask);\n if (style.fontFamily !== undefined) this.string(style.fontFamily);\n if (style.fontSizePt !== undefined) this.f64(style.fontSizePt);\n if (style.color !== undefined) this.string(style.color);\n for (const value of [style.bold, style.italic, style.underline, style.strike]) {\n if (value !== undefined) this.bool(value);\n }\n }\n textStylePatch(style: DocumentParagraphFormat[\"style\"]): void {\n this.patchString(style.fontFamily);\n this.patchF64(style.fontSizePt);\n this.patchString(style.color);\n this.patchBool(style.bold);\n this.patchBool(style.italic);\n this.patchBool(style.underline);\n this.patchBool(style.strike);\n }\n private patchString(value: string | null | undefined): void {\n this.u8(value === undefined ? 0 : value === null ? 1 : 2);\n if (typeof value === \"string\") this.string(value);\n }\n private patchF64(value: number | null | undefined): void {\n this.u8(value === undefined ? 0 : value === null ? 1 : 2);\n if (typeof value === \"number\") this.f64(value);\n }\n private patchBool(value: boolean | null | undefined): void {\n this.u8(value === undefined ? 0 : value === null ? 1 : value ? 3 : 2);\n }\n paragraphStyle(style: DocumentParagraphStyle): void {\n const mask =\n Number(style.headingLevel !== undefined) |\n (Number(style.alignment !== undefined) << 1) |\n (Number(style.spaceBeforePt !== undefined) << 2) |\n (Number(style.spaceAfterPt !== undefined) << 3) |\n (Number(style.lineHeight !== undefined) << 4) |\n (Number(style.keepNext !== undefined) << 5) |\n (Number(style.pageBreakBefore !== undefined) << 6) |\n (Number(style.list !== undefined) << 7);\n this.u16(mask);\n if (style.headingLevel !== undefined) this.u8(style.headingLevel);\n if (style.alignment !== undefined) {\n this.u8({ left: 1, center: 2, right: 3, justify: 4 }[style.alignment]);\n }\n for (const value of [style.spaceBeforePt, style.spaceAfterPt, style.lineHeight]) {\n if (value !== undefined) this.f64(value);\n }\n for (const value of [style.keepNext, style.pageBreakBefore]) {\n if (value !== undefined) this.bool(value);\n }\n if (style.list) {\n this.u8(style.list.kind === \"bullet\" ? 1 : 2);\n this.bool(style.list.level !== undefined);\n if (style.list.level !== undefined) this.u8(style.list.level);\n this.optionalString(style.list.instanceId);\n }\n }\n tableStyle(style: DocumentTableStyle): void {\n const mask =\n Number(style.widthPt !== undefined) |\n (Number(style.columnWidthsPt !== undefined) << 1) |\n (Number(style.headerRows !== undefined) << 2) |\n (Number(style.cellPaddingPt !== undefined) << 3) |\n (Number(style.borderColor !== undefined) << 4) |\n (Number(style.headerFill !== undefined) << 5) |\n (Number(style.allowRowSplit !== undefined) << 6);\n this.u8(mask);\n if (style.widthPt !== undefined) this.f64(style.widthPt);\n if (style.columnWidthsPt !== undefined) {\n this.u32(style.columnWidthsPt.length);\n for (const width of style.columnWidthsPt) this.f64(width);\n }\n if (style.headerRows !== undefined) this.u32(style.headerRows);\n if (style.cellPaddingPt !== undefined) this.f64(style.cellPaddingPt);\n if (style.borderColor !== undefined) this.string(style.borderColor);\n if (style.headerFill !== undefined) this.string(style.headerFill);\n if (style.allowRowSplit !== undefined) this.bool(style.allowRowSplit);\n }\n commentReply(reply: { author: string; text: string; createdAt: string }): void {\n this.string(reply.author);\n this.string(reply.text);\n this.string(reply.createdAt);\n }\n presentationId(id: string, namespace: bigint): void {\n const counter = presentationCounter(id);\n this.u64(counter);\n this.u64(namespace);\n }\n optionalPresentationId(id: string | undefined, namespace: bigint): void {\n this.bool(id !== undefined);\n if (id !== undefined) this.presentationId(id, namespace);\n }\n fill(fill: PresentationFill): void {\n const value = presentationColorValue(fill);\n if (value === \"none\") {\n this.u8(0);\n return;\n }\n this.u8(1);\n const rgb = Number.parseInt(value.slice(1), 16);\n this.u32((rgb * 256 + 0xff) >>> 0);\n }\n line(line: PresentationLine): void {\n this.fill(line.fill ?? \"black\");\n this.i64(cssPixels(line.width ?? 1));\n this.u8(line.style === \"dash\" ? 1 : line.style === \"dot\" ? 2 : 0);\n }\n presentationRect(position: PresentationPosition): void {\n this.i64(cssPixels(position.left));\n this.i64(cssPixels(position.top));\n this.i64(cssPixels(position.width));\n this.i64(cssPixels(position.height));\n }\n presentationTransform(rotation: number, flipHorizontal: boolean, flipVertical: boolean): void {\n this.i32(Math.round(rotation * 60_000));\n this.bool(flipHorizontal);\n this.bool(flipVertical);\n }\n richText(text: PresentationText, fallbackStyle: PresentationTextStyle = {}): void {\n const style = { ...fallbackStyle, ...text.style };\n this.u8(\n style.verticalAlignment === \"middle\" ? 1 : style.verticalAlignment === \"bottom\" ? 2 : 0,\n );\n this.u32(1);\n this.u8(\n style.alignment === \"center\"\n ? 1\n : style.alignment === \"right\"\n ? 2\n : style.alignment === \"justify\"\n ? 3\n : 0,\n );\n this.u32(1);\n this.string(text.toString());\n this.presentationTextStyle(style);\n }\n plainRichText(value: string, style: PresentationTextStyle = {}): void {\n this.u8(\n style.verticalAlignment === \"middle\" ? 1 : style.verticalAlignment === \"bottom\" ? 2 : 0,\n );\n this.u32(1);\n this.u8(\n style.alignment === \"center\"\n ? 1\n : style.alignment === \"right\"\n ? 2\n : style.alignment === \"justify\"\n ? 3\n : 0,\n );\n this.u32(1);\n this.string(value);\n this.presentationTextStyle(style);\n }\n presentationTextStyle(style: PresentationTextStyle): void {\n this.string(style.fontFamily ?? \"Arial\");\n this.u32(Math.round((style.fontSize ?? 18) * 100));\n const color = presentationColorValue(style.color ?? \"black\");\n const rgb = color === \"none\" ? 0 : Number.parseInt(color.slice(1), 16);\n this.u32((rgb * 256 + (color === \"none\" ? 0 : 0xff)) >>> 0);\n this.bool(style.bold ?? false);\n this.bool(style.italic ?? false);\n this.bool(style.underline ?? false);\n this.bool(false);\n }\n presentationNode(element: PresentationElement): void {\n if (element instanceof PresentationShape) {\n this.u8(0);\n this.u8(\n { textbox: 0, rect: 1, roundRect: 2, ellipse: 3, triangle: 4, rightArrow: 5, line: 6 }[\n element.geometry\n ],\n );\n this.fill(element.fill);\n this.line(element.line);\n const hasText = element.text.toString().length > 0;\n this.bool(hasText);\n if (hasText) this.richText(element.text);\n this.bool(element.placeholder !== undefined);\n if (element.placeholder) {\n this.string(element.placeholder.type);\n this.bool(element.placeholder.index !== undefined);\n if (element.placeholder.index !== undefined) this.u32(element.placeholder.index);\n }\n return;\n }\n if (element instanceof PresentationGroup) {\n this.u8(1);\n this.i64(cssPixels(element.childOffset.left));\n this.i64(cssPixels(element.childOffset.top));\n this.i64(cssPixels(element.childExtent.width));\n this.i64(cssPixels(element.childExtent.height));\n this.u32(0);\n return;\n }\n if (element instanceof PresentationChart) {\n this.u8(3);\n this.u8(\n { bar: 0, line: 1, area: 2, pie: 3, doughnut: 4, scatter: 5, bubble: 6, radar: 7 }[\n element.type\n ],\n );\n this.plainRichText(element.title);\n this.u32(element.series.items.length);\n for (const series of element.series.items) {\n this.string(series.name);\n this.stringVector(series.categories.length > 0 ? series.categories : element.categories);\n this.numberVector(series.values);\n this.numberVector(series.xValues);\n this.numberVector(series.bubbleSizes);\n }\n this.bool(element.hasLegend);\n return;\n }\n if (element instanceof PresentationTable) {\n this.u8(4);\n this.u32(element.rows.length);\n this.u32(element.rows[0]?.length ?? 0);\n for (const row of element.rows) {\n for (const cell of row) {\n this.bool(cell !== null);\n if (cell) {\n this.richText(cell.text, element.textStyle);\n this.fill(cell.fill);\n this.u16(cell.rowSpan);\n this.u16(cell.colSpan);\n }\n }\n }\n this.u32(element.columnWidths.length);\n for (const width of element.columnWidths) this.i64(cssPixels(width));\n this.u32(element.rowHeights.length);\n for (const height of element.rowHeights) this.i64(cssPixels(height));\n this.line(element.line);\n return;\n }\n if (element instanceof PresentationImage) {\n const source = element.sourceForSvg();\n if (!source) {\n unsupportedPresentation(\"prompt-only raster image scene nodes\");\n }\n const match = /^data:([^;,]+);base64,([A-Za-z0-9+/]*={0,2})$/u.exec(source);\n if (!match) throw new Error(`Presentation image ${element.id} has a non-canonical source`);\n const bytes = decodeRasterBase64(match[2]!);\n const metadata = inspectRasterImage(bytes);\n if (metadata.contentType !== match[1] || metadata.contentType !== element.contentType) {\n throw new Error(`Presentation image ${element.id} MIME metadata diverged`);\n }\n this.u8(5);\n this.bytes(sha256Bytes(bytes));\n this.string(metadata.contentType);\n this.string(element.alt);\n this.u8(element.fit === \"contain\" ? 0 : 1);\n this.u32(metadata.width);\n this.u32(metadata.height);\n return;\n }\n unsupportedPresentation(\"unknown scene node\");\n }\n stringVector(values: readonly string[]): void {\n this.u32(values.length);\n for (const value of values) this.string(value);\n }\n numberVector(values: readonly number[]): void {\n this.u32(values.length);\n for (const value of values) this.f64(value);\n }\n}\n\nfunction envelope(magic: string, count: number, payload: Uint8Array, maximum: number): Uint8Array {\n const output = new Uint8Array(HEADER_BYTES + payload.byteLength + CHECKSUM_BYTES);\n if (output.byteLength > maximum) throw new RangeError(`${magic} envelope exceeds its byte limit`);\n output.set(textEncoder.encode(magic), 0);\n const view = new DataView(output.buffer);\n view.setUint16(8, 1, true);\n view.setUint32(12, count, true);\n view.setBigUint64(16, BigInt(payload.byteLength), true);\n output.set(payload, HEADER_BYTES);\n view.setBigUint64(HEADER_BYTES + payload.byteLength, fnv1a64(output.subarray(0, -8)), true);\n return output;\n}\n\nfunction parseDocumentId(\n id: string,\n expectedPrefix: string,\n): { namespace: bigint; counter: bigint } {\n const match = /^([a-z]{1,8})\\/([0-9a-f]{16})([0-9a-f]{16})$/u.exec(id);\n if (!match || match[1] !== expectedPrefix) {\n throw new Error(`Document id ${id} is not a canonical ${expectedPrefix} id`);\n }\n const counter = BigInt(`0x${match[3]}`);\n if (counter === 0n) throw new Error(`Document id ${id} uses the reserved zero counter`);\n return { namespace: BigInt(`0x${match[2]}`), counter };\n}\n\nfunction documentKindTag(prefix: string): number {\n const tag = { p: 1, dt: 2, pb: 3, sec: 4, hdr: 5, ftr: 6, dc: 7, chg: 8 }[prefix];\n if (!tag) throw new Error(`Unknown document id prefix: ${prefix}`);\n return tag;\n}\n\nfunction presentationCounter(id: string): bigint {\n const match = /^[a-z]{2}\\/([1-9][0-9]*)$/u.exec(id);\n if (!match) throw new Error(`Presentation object id is not canonical: ${id}`);\n const counter = BigInt(match[1]!);\n if (counter > 0xffff_ffff_ffff_ffffn) throw new RangeError(\"Presentation object id is exhausted\");\n return counter;\n}\n\nfunction optionalBool(value: boolean | undefined): number {\n return value === undefined ? 0 : value ? 2 : 1;\n}\n\nfunction optionalOptionalBool(value: boolean | undefined): number {\n return value === undefined ? 0 : value ? 3 : 2;\n}\n\nfunction cssPixels(value: number): bigint {\n if (!Number.isFinite(value) || Object.is(value, -0)) {\n throw new TypeError(\"Presentation geometry must contain finite canonical numbers\");\n }\n return BigInt(Math.round(value * EMU_PER_CSS_PIXEL));\n}\n\nfunction assertFinitePositive(value: number, label: string): void {\n if (!Number.isFinite(value) || value <= 0)\n throw new TypeError(`${label} must be positive and finite`);\n}\n\nfunction presentationSizeEmu(value: number, label: string): bigint {\n assertFinitePositive(value, label);\n const rounded = Math.round(value * EMU_PER_CSS_PIXEL);\n if (!Number.isSafeInteger(rounded) || rounded <= 0 || rounded > PRESENTATION_MAX_COORDINATE_EMU) {\n throw new RangeError(`${label} exceeds the native presentation-coordinate bound`);\n }\n return BigInt(rounded);\n}\n\nfunction fnv1a64(bytes: Uint8Array): bigint {\n let hash = 0xcbf29ce484222325n;\n for (const byte of bytes) {\n hash ^= BigInt(byte);\n hash = BigInt.asUintN(64, hash * 0x100000001b3n);\n }\n return hash;\n}\n","import {\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS,\n decodeSpreadsheetMetadataKernelProjection,\n decodeSpreadsheetViewportKernelProjection,\n editableArtifactStableId,\n encodeSpreadsheetMetadataKernelQuery,\n encodeSpreadsheetViewportKernelQuery,\n spreadsheetSheetId,\n type SpreadsheetArtifactCommand,\n type SpreadsheetArtifactProjectedCellValue,\n type SpreadsheetArtifactSheetMetadata,\n type SpreadsheetCellInput,\n type SpreadsheetSheetGeneration,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport { NativeSpreadsheetSession } from \"./native\";\nimport type {\n CompositeMutationPreparer,\n CompositeArtifactState,\n CompositePropertyRead,\n CompositeReconciliation,\n PreparedCompositeMutation,\n} from \"./production-composite\";\nimport type { ArtifactKernelRuntime } from \"./runtime\";\nimport {\n Workbook as ReferenceWorkbook,\n type SerializedWorkbook,\n type Workbook,\n} from \"./spreadsheet\";\nimport type { FormulaResult } from \"./spreadsheet-types\";\n\ntype SerializedWorksheet = SerializedWorkbook[\"worksheets\"][number];\ntype SerializedCell = SerializedWorksheet[\"cells\"][number];\n\ntype SpreadsheetNativeData = {\n readonly sheetIds: Map<string, ReturnType<typeof spreadsheetSheetId>>;\n readonly generations: Map<string, SpreadsheetSheetGeneration>;\n readonly author: SpreadsheetProjectionAuthor;\n metadata: ReadonlyMap<string, SpreadsheetArtifactSheetMetadata> | null;\n};\n\ntype RangeLike = Readonly<{\n worksheet: Readonly<{ id: string }>;\n address: Readonly<{ row: number; col: number; rowCount: number; colCount: number }>;\n}>;\n\nconst textEncoder = new TextEncoder();\n\nexport function reconcileSpreadsheetProjection(\n workbook: Workbook,\n runtime: ArtifactKernelRuntime,\n namespace: bigint,\n): CompositeReconciliation {\n const snapshot = workbook.toJSON();\n const session = NativeSpreadsheetSession.create(runtime, namespace);\n const sheetIds = new Map<string, ReturnType<typeof spreadsheetSheetId>>();\n const generations = new Map<string, SpreadsheetSheetGeneration>();\n const author = new SpreadsheetProjectionAuthor(session, namespace);\n\n try {\n let previous: SpreadsheetSheetGeneration | null = null;\n let offset = 0;\n const maximumCommands = Math.max(1, Math.min(session.capabilities.maxCommands, 1_024));\n while (offset < snapshot.worksheets.length) {\n const chunk = snapshot.worksheets.slice(offset, offset + maximumCommands);\n const commands: SpreadsheetArtifactCommand[] = [];\n for (let relativeIndex = 0; relativeIndex < chunk.length; relativeIndex += 1) {\n const worksheet = chunk[relativeIndex]!;\n const sheetId = nativeSheetId(namespace, worksheet.id);\n sheetIds.set(worksheet.id, sheetId);\n const after =\n relativeIndex === 0\n ? previous\n : {\n kind: \"created-in-batch\" as const,\n sheetId: sheetIds.get(chunk[relativeIndex - 1]!.id)!,\n createCommandIndex: relativeIndex - 1,\n };\n commands.push({ kind: \"sheet.create\", sheetId, name: worksheet.name, after });\n }\n author.author(commands);\n const metadata = querySpreadsheetMetadata(session, sheetIds.size);\n const metadataById = new Map(metadata.map((sheet) => [sheet.sheetId, sheet]));\n for (let index = 0; index < chunk.length; index += 1) {\n const worksheet = chunk[index]!;\n const sheetId = sheetIds.get(worksheet.id)!;\n const operationId = metadataById.get(sheetId)?.generationId;\n if (!operationId) throw new Error(\"Native kernel omitted a sheet generation id\");\n const generation: SpreadsheetSheetGeneration = Object.freeze({\n kind: \"generation\",\n sheetId,\n creationOperationId: editableArtifactStableId(operationId),\n });\n generations.set(worksheet.id, generation);\n previous = generation;\n }\n offset += chunk.length;\n }\n\n const batch = new SpreadsheetCommandBatcher(author, session);\n for (const worksheet of snapshot.worksheets) {\n const generation = generations.get(worksheet.id);\n if (!generation) throw new Error(`Missing native generation for worksheet ${worksheet.id}`);\n for (const command of cellCommands(worksheet, generation)) batch.add(command);\n }\n batch.finish();\n return {\n session,\n data: {\n sheetIds,\n generations,\n author,\n metadata: null,\n } satisfies SpreadsheetNativeData,\n };\n } catch (cause) {\n session.dispose();\n throw cause;\n }\n}\n\n/**\n * Converts the public hot spreadsheet mutations directly into the existing\n * OGASC/OGATX protocol. The retained native session stays authoritative; rare\n * non-cell features continue through the complete reconciliation path.\n */\nexport const prepareSpreadsheetMutation: CompositeMutationPreparer<Workbook> = (\n mutation,\n state,\n): PreparedCompositeMutation | null => {\n const data = spreadsheetData(state);\n const root = state.rawRoot();\n if (mutation.owner === root.worksheets && mutation.member === \"add\") {\n const previousHostId = root.worksheets.items.at(-1)?.id;\n const after = previousHostId ? (data.generations.get(previousHostId) ?? null) : null;\n return {\n commit(result) {\n if (!isWorksheet(result)) throw new Error(\"Worksheet add did not return a worksheet\");\n const sheetId = nativeSheetId(state.namespace, result.id);\n data.author.author([{ kind: \"sheet.create\", sheetId, name: result.name, after }]);\n const operationId = querySpreadsheetMetadata(\n state.native as NativeSpreadsheetSession,\n data.sheetIds.size + 1,\n ).find((sheet) => sheet.sheetId === sheetId)?.generationId;\n if (!operationId) throw new Error(\"Native kernel omitted a sheet generation id\");\n data.sheetIds.set(result.id, sheetId);\n data.generations.set(\n result.id,\n Object.freeze({\n kind: \"generation\",\n sheetId,\n creationOperationId: editableArtifactStableId(operationId),\n }),\n );\n data.metadata = null;\n return true;\n },\n };\n }\n\n if (isWorksheet(mutation.owner) && mutation.member === \"name\") {\n const generation = requiredGeneration(data, mutation.owner.id);\n const name = normalizedSheetName(mutation.arguments?.[0]);\n return commitSpreadsheetCommands(data, [{ kind: \"sheet.rename\", sheet: generation, name }]);\n }\n\n if (!isRange(mutation.owner)) return null;\n const range = mutation.owner;\n const generation = requiredGeneration(data, range.worksheet.id);\n if (mutation.member === \"values\" || mutation.member === \"formulas\") {\n return commitSpreadsheetCommands(data, [\n rectangularWriteCommand(generation, range.address, mutation.arguments?.[0], mutation.member),\n ]);\n }\n if (mutation.member === \"writeValues\") {\n const matrix = rectangularMatrix(mutation.arguments?.[0], \"spreadsheet values\");\n if (matrix.rows === 0 || matrix.columns === 0) return { commit: () => false };\n return commitSpreadsheetCommands(data, [\n rectangularWriteCommand(\n generation,\n { ...range.address, rowCount: matrix.rows, colCount: matrix.columns },\n matrix.values,\n \"values\",\n ),\n ]);\n }\n if (mutation.member === \"clear\") {\n const options = mutation.arguments?.[0] as { applyTo?: unknown } | undefined;\n if (options?.applyTo === \"formats\") {\n // The canonical Rust spreadsheet model intentionally has no formatting\n // state. Preserve the facade revision without fabricating a kernel edit.\n return { commit: () => true };\n }\n return commitSpreadsheetCommands(data, [\n {\n kind: \"range.clear\",\n sheet: generation,\n range: {\n start: { row: range.address.row, column: range.address.col },\n end: {\n row: range.address.row + range.address.rowCount - 1,\n column: range.address.col + range.address.colCount - 1,\n },\n },\n },\n ]);\n }\n return null;\n};\n\nfunction commitSpreadsheetCommands(\n data: SpreadsheetNativeData,\n commands: readonly SpreadsheetArtifactCommand[],\n): PreparedCompositeMutation {\n return {\n commit() {\n data.author.author(commands);\n data.metadata = null;\n return true;\n },\n };\n}\n\nfunction requiredGeneration(\n data: SpreadsheetNativeData,\n hostSheetId: string,\n): SpreadsheetSheetGeneration {\n const generation = data.generations.get(hostSheetId);\n if (!generation) throw new Error(`Spreadsheet native generation is missing: ${hostSheetId}`);\n return generation;\n}\n\nfunction rectangularWriteCommand(\n sheet: SpreadsheetSheetGeneration,\n address: RangeLike[\"address\"],\n input: unknown,\n kind: \"values\" | \"formulas\",\n): SpreadsheetArtifactCommand {\n const matrix = rectangularMatrix(input, `spreadsheet ${kind}`);\n if (matrix.rows !== address.rowCount || matrix.columns !== address.colCount) {\n throw new Error(\n `Matrix shape ${matrix.rows}x${matrix.columns} does not match range ${address.rowCount}x${address.colCount}`,\n );\n }\n const cells: SpreadsheetCellInput[] = [];\n for (const row of matrix.values) {\n for (const value of row) {\n cells.push(kind === \"values\" ? nativeInputValue(value) : nativeFormula(value));\n }\n }\n return {\n kind: \"cells.set\",\n sheet,\n anchor: { row: address.row, column: address.col },\n rows: address.rowCount,\n columns: address.colCount,\n cells,\n };\n}\n\nfunction rectangularMatrix(\n input: unknown,\n label: string,\n): { values: readonly (readonly unknown[])[]; rows: number; columns: number } {\n if (!Array.isArray(input)) throw new TypeError(`${label} must be a matrix`);\n const columns = input[0]?.length ?? 0;\n if (!input.every((row) => Array.isArray(row) && row.length === columns)) {\n throw new Error(`${label} must be rectangular`);\n }\n return { values: input, rows: input.length, columns };\n}\n\nfunction nativeInputValue(value: unknown): SpreadsheetCellInput {\n if (value instanceof Date) {\n const milliseconds = Date.prototype.getTime.call(value);\n if (!Number.isSafeInteger(milliseconds)) {\n throw new TypeError(\"Spreadsheet cell dates must be valid ECMAScript instants\");\n }\n return { date: new Date(milliseconds).toISOString() };\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) throw new TypeError(\"Spreadsheet cell numbers must be finite\");\n return value;\n }\n throw new TypeError(\"Spreadsheet cell value is not supported by the native kernel\");\n}\n\nfunction nativeFormula(value: unknown): SpreadsheetCellInput {\n if (value === null) return null;\n if (typeof value !== \"string\")\n throw new TypeError(\"Spreadsheet formulas must be strings or null\");\n const trimmed = value.trim();\n if (trimmed.length === 0) return null;\n return { formula: trimmed.startsWith(\"=\") ? trimmed : `=${trimmed}`, cached: null };\n}\n\nfunction normalizedSheetName(value: unknown): string {\n if (typeof value !== \"string\") throw new TypeError(\"Worksheet name must be a string\");\n const name = value.trim();\n if (!name || name.length > 31 || /[\\\\/?*[\\]:]/u.test(name)) {\n throw new Error(`Invalid worksheet name: ${value}`);\n }\n return name;\n}\n\nexport function installSpreadsheetProjection(\n workbook: Workbook,\n state: CompositeArtifactState<Workbook>,\n): void {\n Object.defineProperty(workbook, \"valueAt\", {\n configurable: true,\n writable: true,\n value: (\n sheet: Parameters<Workbook[\"valueAt\"]>[0],\n address: Parameters<Workbook[\"valueAt\"]>[1],\n ): FormulaResult => {\n if (state.inMutation) {\n return ReferenceWorkbook.prototype.valueAt.call(workbook, sheet, address);\n }\n return readSpreadsheetMatrix(state, sheet.id, {\n row: address.row,\n col: address.col,\n rowCount: 1,\n colCount: 1,\n }).values[0]![0]!;\n },\n });\n}\n\nexport function readSpreadsheetProperty(\n owner: unknown,\n member: PropertyKey,\n state: CompositeArtifactState<Workbook>,\n): CompositePropertyRead {\n if (state.inMutation) return { handled: false };\n if (member === \"values\" && isRange(owner)) {\n return {\n handled: true,\n value: readSpreadsheetMatrix(state, owner.worksheet.id, owner.address).values,\n };\n }\n if (member === \"formulas\" && isRange(owner)) {\n return {\n handled: true,\n value: readSpreadsheetMatrix(state, owner.worksheet.id, owner.address).formulas,\n };\n }\n if (member === \"name\" && isWorksheet(owner)) {\n const metadata = spreadsheetMetadata(state).get(owner.id);\n if (!metadata) throw new Error(`Native worksheet is missing: ${owner.id}`);\n return { handled: true, value: metadata.name };\n }\n return { handled: false };\n}\n\nfunction readSpreadsheetMatrix(\n state: CompositeArtifactState<Workbook>,\n hostSheetId: string,\n address: RangeLike[\"address\"],\n): { values: FormulaResult[][]; formulas: Array<Array<string | null>> } {\n const data = spreadsheetData(state);\n const nativeSheetIdValue = data.sheetIds.get(hostSheetId);\n if (!nativeSheetIdValue) throw new Error(`Native worksheet mapping is missing: ${hostSheetId}`);\n const cells = address.rowCount * address.colCount;\n if (!Number.isSafeInteger(cells) || cells > SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS) {\n throw new RangeError(\n `Spreadsheet read exceeds the native viewport limit (${SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS} cells)`,\n );\n }\n const maxBytes = Math.min(\n state.native.capabilities.maxQueryResponseBytes,\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n );\n const query = {\n sheetId: nativeSheetIdValue,\n startRow: address.row,\n startColumn: address.col,\n rowCount: address.rowCount,\n columnCount: address.colCount,\n maxCells: cells,\n maxBytes,\n } as const;\n const projection = decodeSpreadsheetViewportKernelProjection(\n (state.native as NativeSpreadsheetSession).query(encodeSpreadsheetViewportKernelQuery(query)),\n query,\n );\n const values: FormulaResult[][] = Array.from({ length: address.rowCount }, () =>\n Array<FormulaResult>(address.colCount).fill(null),\n );\n const formulas: Array<Array<string | null>> = Array.from({ length: address.rowCount }, () =>\n Array<string | null>(address.colCount).fill(null),\n );\n for (const cell of projection.cells) {\n const row = cell.row - address.row;\n const column = cell.column - address.col;\n values[row]![column] = projectedCellValue(cell.value);\n formulas[row]![column] = cell.formula;\n }\n return { values, formulas };\n}\n\nfunction spreadsheetMetadata(\n state: CompositeArtifactState<Workbook>,\n): ReadonlyMap<string, SpreadsheetArtifactSheetMetadata> {\n const data = spreadsheetData(state);\n if (data.metadata) return data.metadata;\n const sheets = querySpreadsheetMetadata(\n state.native as NativeSpreadsheetSession,\n data.sheetIds.size,\n );\n const hostByNative = new Map([...data.sheetIds].map(([host, native]) => [native, host]));\n const metadata = new Map<string, SpreadsheetArtifactSheetMetadata>();\n for (const sheet of sheets) {\n const host = hostByNative.get(sheet.sheetId);\n if (host) metadata.set(host, sheet);\n }\n data.metadata = metadata;\n return metadata;\n}\n\nfunction querySpreadsheetMetadata(\n session: NativeSpreadsheetSession,\n maxSheets: number,\n): readonly SpreadsheetArtifactSheetMetadata[] {\n const query = {\n maxSheets: Math.max(1, maxSheets),\n maxBytes: Math.min(\n session.capabilities.maxQueryResponseBytes,\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n ),\n } as const;\n return decodeSpreadsheetMetadataKernelProjection(\n session.query(encodeSpreadsheetMetadataKernelQuery(query)),\n query,\n ).sheets;\n}\n\nfunction spreadsheetData(state: CompositeArtifactState<Workbook>): SpreadsheetNativeData {\n if (state.native.modality !== \"spreadsheet\")\n throw new TypeError(\"Expected native spreadsheet session\");\n const data = state.nativeData as Partial<SpreadsheetNativeData> | undefined;\n if (\n !(data?.sheetIds instanceof Map) ||\n !(data.generations instanceof Map) ||\n !(data.author instanceof SpreadsheetProjectionAuthor)\n ) {\n throw new Error(\"Spreadsheet native mapping is unavailable\");\n }\n return data as SpreadsheetNativeData;\n}\n\nclass SpreadsheetProjectionAuthor {\n readonly #session: NativeSpreadsheetSession;\n readonly #replicaId: string;\n readonly #artifactId: string;\n #transactionCounter = 0;\n #previousTransactionId: string | null = null;\n\n constructor(session: NativeSpreadsheetSession, namespace: bigint) {\n this.#session = session;\n this.#replicaId = u64Hex(namespace);\n this.#artifactId = `${this.#replicaId}ffffffffffffffff`;\n }\n\n author(commands: readonly SpreadsheetArtifactCommand[]): void {\n if (commands.length === 0) return;\n const counter = this.#transactionCounter + 1;\n const clientTransactionId = `projection.${this.#replicaId}.${counter}`;\n const revision = this.#session.revision();\n if (revision > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new RangeError(\"Native spreadsheet revision exceeds the JavaScript safe-integer range\");\n }\n this.#session.authorCommands({\n intent: {\n artifactId: this.#artifactId,\n clientTransactionId,\n replicaId: this.#replicaId,\n replicaCounter: counter,\n previousLocalTransactionId: this.#previousTransactionId,\n observedHeadSequence: Number(revision),\n causalBase:\n this.#transactionCounter === 0\n ? []\n : [{ replicaId: this.#replicaId, counter: this.#transactionCounter }],\n selectiveUndoOperationIds: [],\n },\n commands: { version: 1, commands },\n resolvedBaseBytes: this.#session.frontier(),\n });\n this.#transactionCounter = counter;\n this.#previousTransactionId = clientTransactionId;\n }\n}\n\nclass SpreadsheetCommandBatcher {\n readonly #author: SpreadsheetProjectionAuthor;\n readonly #maxCommands: number;\n readonly #maxCells: number;\n readonly #maxEstimatedBytes: number;\n #commands: SpreadsheetArtifactCommand[] = [];\n #cells = 0;\n #estimatedBytes = 0;\n\n constructor(author: SpreadsheetProjectionAuthor, session: NativeSpreadsheetSession) {\n this.#author = author;\n this.#maxCommands = Math.max(1, Math.min(session.capabilities.maxCommands, 1_000));\n this.#maxCells = Math.max(1, Math.min(session.capabilities.maxCellsPerBatch, 100_000));\n this.#maxEstimatedBytes = Math.max(\n 16_384,\n Math.min(session.capabilities.maxSpreadsheetCommandBytes - 4_096, 2 * 1024 * 1024),\n );\n }\n\n add(command: SpreadsheetArtifactCommand): void {\n const cells = command.kind === \"cells.set\" ? command.cells.length : 0;\n const estimatedBytes = estimateCommandBytes(command);\n if (\n this.#commands.length > 0 &&\n (this.#commands.length + 1 > this.#maxCommands ||\n this.#cells + cells > this.#maxCells ||\n this.#estimatedBytes + estimatedBytes > this.#maxEstimatedBytes)\n ) {\n this.flush();\n }\n this.#commands.push(command);\n this.#cells += cells;\n this.#estimatedBytes += estimatedBytes;\n if (estimatedBytes > this.#maxEstimatedBytes) this.flush();\n }\n\n finish(): void {\n this.flush();\n }\n\n private flush(): void {\n if (this.#commands.length === 0) return;\n this.#author.author(this.#commands);\n this.#commands = [];\n this.#cells = 0;\n this.#estimatedBytes = 0;\n }\n}\n\nfunction* cellCommands(\n worksheet: SerializedWorksheet,\n generation: SpreadsheetSheetGeneration,\n): Iterable<SpreadsheetArtifactCommand> {\n const cells = [...worksheet.cells].sort(\n (left, right) => left.row - right.row || left.col - right.col,\n );\n let index = 0;\n while (index < cells.length) {\n const first = cells[index]!;\n const rowCells: SpreadsheetCellInput[] = [nativeCell(first)];\n let nextColumn = first.col + 1;\n index += 1;\n while (\n index < cells.length &&\n cells[index]!.row === first.row &&\n cells[index]!.col === nextColumn &&\n rowCells.length < 4_096 &&\n estimateCellsBytes(rowCells) < 512 * 1024\n ) {\n rowCells.push(nativeCell(cells[index]!));\n nextColumn += 1;\n index += 1;\n }\n yield {\n kind: \"cells.set\",\n sheet: generation,\n anchor: { row: first.row, column: first.col },\n rows: 1,\n columns: rowCells.length,\n cells: rowCells,\n };\n }\n}\n\nfunction nativeCell(cell: SerializedCell): SpreadsheetCellInput {\n if (cell.formula !== null) return { formula: cell.formula, cached: null };\n const value = cell.value;\n if (typeof value === \"object\" && value !== null) {\n if (\"type\" in value && value.type === \"date\") {\n return { date: value.value };\n }\n throw new TypeError(\"Serialized spreadsheet cell value is not supported by the native kernel\");\n }\n if (typeof value === \"number\" && !Number.isFinite(value)) {\n throw new TypeError(\"Spreadsheet cell numbers must be finite\");\n }\n return value;\n}\n\nfunction nativeSheetId(namespace: bigint, hostId: string): ReturnType<typeof spreadsheetSheetId> {\n const match = /^ws\\/(\\d+)$/u.exec(hostId);\n if (!match) throw new Error(`Worksheet id cannot be mapped to the native kernel: ${hostId}`);\n // Counter 1 is the native workbook object itself. Reference worksheet ids\n // begin at ws/1, so their exact collision-free native mapping is N + 1.\n const counter = BigInt(match[1]!) + 1n;\n if (counter <= 1n || counter > 0xffff_ffff_ffff_ffffn) {\n throw new RangeError(`Worksheet id counter is outside the native range: ${hostId}`);\n }\n return spreadsheetSheetId(`${u64Hex(namespace)}${u64Hex(counter)}`);\n}\n\nfunction projectedCellValue(value: SpreadsheetArtifactProjectedCellValue): FormulaResult {\n switch (value.kind) {\n case \"empty\":\n return null;\n case \"boolean\":\n case \"number\":\n case \"text\":\n return value.value;\n case \"date\":\n return new Date(value.value);\n case \"error\": {\n if (typeof value.value === \"object\") return value.value.custom;\n const errors: Readonly<Record<string, string>> = {\n null: \"#NULL!\",\n divide_by_zero: \"#DIV/0!\",\n value: \"#VALUE!\",\n reference: \"#REF!\",\n name: \"#NAME?\",\n number: \"#NUM!\",\n not_available: \"#N/A\",\n spill: \"#SPILL!\",\n calculation: \"#CALC!\",\n };\n const projected = errors[value.value];\n if (!projected) throw new Error(`Unknown native formula error: ${value.value}`);\n return projected;\n }\n }\n throw new Error(\"Unknown native spreadsheet cell value\");\n}\n\nfunction estimateCommandBytes(command: SpreadsheetArtifactCommand): number {\n if (command.kind !== \"cells.set\") return 256;\n return 256 + estimateCellsBytes(command.cells);\n}\n\nfunction estimateCellsBytes(cells: readonly SpreadsheetCellInput[]): number {\n let bytes = cells.length * 16;\n for (const cell of cells) {\n if (typeof cell === \"string\") bytes += textEncoder.encode(cell).byteLength;\n else if (typeof cell === \"object\" && cell !== null) {\n if (\"formula\" in cell) bytes += textEncoder.encode(cell.formula).byteLength;\n else if (\"error\" in cell) bytes += textEncoder.encode(cell.error).byteLength;\n }\n }\n return bytes;\n}\n\nfunction isRange(value: unknown): value is RangeLike {\n if (typeof value !== \"object\" || value === null) return false;\n const worksheet = Reflect.get(value, \"worksheet\");\n const address = Reflect.get(value, \"address\");\n return (\n typeof worksheet === \"object\" &&\n worksheet !== null &&\n typeof Reflect.get(worksheet, \"id\") === \"string\" &&\n typeof address === \"object\" &&\n address !== null &&\n Number.isInteger(Reflect.get(address, \"row\")) &&\n Number.isInteger(Reflect.get(address, \"col\"))\n );\n}\n\nfunction isWorksheet(value: unknown): value is { id: string; name: string } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof Reflect.get(value, \"id\") === \"string\" &&\n typeof Reflect.get(value, \"name\") === \"string\" &&\n String(Reflect.get(value, \"id\")).startsWith(\"ws/\") &&\n typeof Reflect.get(value, \"getRangeByIndexes\") === \"function\"\n );\n}\n\nfunction u64Hex(value: bigint): string {\n if (value <= 0n || value > 0xffff_ffff_ffff_ffffn) {\n throw new RangeError(\"Artifact namespace must be a nonzero u64\");\n }\n return value.toString(16).padStart(16, \"0\");\n}\n","import type { FileBlob } from \"./file-blob\";\nimport {\n Document as ReferenceDocument,\n DocumentBlockCollection,\n DocumentCommentThread,\n DocumentComments,\n DocumentFile as ReferenceDocumentFile,\n DocumentParagraph,\n DocumentSection,\n DocumentSections,\n DocumentStory,\n DocumentTable,\n TrackedChanges,\n type DocumentCreateOptions,\n type SerializedDocument,\n type SerializedDocumentBlock,\n type DocumentTextStyle,\n} from \"./document\";\nimport { DOCUMENT_LOSS_PRESERVATION } from \"./document-docx-state\";\nimport { NativeDocumentSession, NativePresentationSession } from \"./native\";\nimport {\n Presentation as ReferencePresentation,\n PresentationChart,\n PresentationChartCollection,\n PresentationFile as ReferencePresentationFile,\n PresentationGroup,\n PresentationGroupCollection,\n PresentationImage,\n PresentationImageCollection,\n PresentationShape,\n PresentationShapeCollection,\n PresentationTable,\n PresentationTableCollection,\n PresentationText,\n Slide,\n SlideCollection,\n type PresentationCreateOptions,\n type PresentationElement,\n} from \"./presentation\";\nimport { presentationLossState, setPresentationLossState } from \"./presentation-pptx-state\";\nimport {\n CompositeArtifactState,\n requireCompositeState,\n type CompositeMutation,\n type CompositeReconciliation,\n type PreparedCompositeMutation,\n} from \"./production-composite\";\nimport {\n encodeDocumentIncrementalCommands,\n encodeDocumentProjectionCommands,\n encodePresentationIncrementalCommands,\n encodePresentationProjectionCommands,\n type DocumentProjectionTarget,\n} from \"./production-native-codecs\";\nimport {\n installSpreadsheetProjection,\n prepareSpreadsheetMutation,\n readSpreadsheetProperty,\n reconcileSpreadsheetProjection,\n} from \"./production-spreadsheet-native\";\nimport { ArtifactKernelRuntime, ArtifactRuntimeError } from \"./runtime\";\nimport {\n Workbook as ReferenceWorkbook,\n type SerializedWorkbook,\n type WorkbookOptions,\n} from \"./spreadsheet\";\nimport { SpreadsheetFile as ReferenceSpreadsheetFile } from \"./spreadsheet-file\";\nimport { LOSS_PRESERVATION } from \"./spreadsheet-xlsx-state\";\n\nexport {\n SPREADSHEET_RECALCULATION_LIMITS,\n SPREADSHEET_SNAPSHOT_LIMITS,\n ChartSeriesCollection,\n CommentThread,\n ConditionalFormattingCollection,\n DataValidationCollection,\n FreezePanes,\n ImageCollection,\n Range,\n RangeConditionalFormats,\n RangeFormat,\n RangeSparklines,\n ShapeCollection,\n SparklineGroup,\n SparklineGroupCollection,\n SpreadsheetChart,\n SpreadsheetChartSeries,\n SpreadsheetImage,\n SpreadsheetShape,\n Table,\n TableCollection,\n WorkbookComments,\n Worksheet,\n WorksheetCollection,\n validateSerializedWorkbook,\n} from \"./spreadsheet\";\nexport type {\n RangeSparklineConfig,\n RangeWritePayload,\n SerializedWorkbook,\n SparklineConfig,\n SpreadsheetRecalculationLimits,\n WorkbookChange,\n WorkbookOptions,\n} from \"./spreadsheet\";\nexport {\n DocumentBlockCollection,\n DocumentCommentThread,\n DocumentComments,\n DocumentPageBreak,\n DocumentParagraph,\n DocumentSection,\n DocumentSectionStories,\n DocumentSections,\n DocumentStory,\n DocumentTable,\n DocumentTextRun,\n TrackedChange,\n TrackedChanges,\n} from \"./document\";\nexport type {\n DocumentBlock,\n DocumentCreateOptions,\n DocumentPageGeometry,\n DocumentParagraphEdit,\n DocumentParagraphFormat,\n DocumentParagraphStyle,\n DocumentRenderOptions,\n DocumentStoryBlock,\n DocumentTableStyle,\n DocumentTextStyle,\n DocumentTextStylePatch,\n SerializedDocument,\n SerializedDocumentBlock,\n SerializedDocumentComment,\n SerializedDocumentSection,\n SerializedPageBreak,\n SerializedParagraph,\n SerializedStory,\n SerializedTable,\n SerializedTextRun,\n SerializedTrackedChange,\n} from \"./document\";\nexport {\n InvalidPresentationInputError,\n PresentationChart,\n PresentationChartCollection,\n PresentationChartSeries,\n PresentationChartSeriesCollection,\n PresentationGroup,\n PresentationGroupCollection,\n PresentationImage,\n PresentationImageCollection,\n PresentationLayout,\n PresentationLayoutCollection,\n PresentationMaster,\n PresentationMasterCollection,\n PresentationShape,\n PresentationShapeCollection,\n PresentationTable,\n PresentationTableCell,\n PresentationTableCollection,\n PresentationText,\n Slide,\n SlideCollection,\n SlidePlaceholderCollection,\n UnsupportedPresentationFeatureError,\n assertPresentationRenderPixelBudget,\n presentationColorValue,\n truncatePresentationText,\n} from \"./presentation\";\nexport type {\n PresentationChartConfig,\n PresentationChartSeriesConfig,\n PresentationChartType,\n PresentationCreateOptions,\n PresentationElement,\n PresentationExportOptions,\n PresentationFill,\n PresentationGroupChild,\n PresentationGroupChildConfig,\n PresentationGroupConfig,\n PresentationImageConfig,\n PresentationImageResolution,\n PresentationImageResolver,\n PresentationInspectOptions,\n PresentationInspectResult,\n PresentationLayoutConfig,\n PresentationLine,\n PresentationMasterConfig,\n PresentationPosition,\n PresentationRasterImageContentType,\n PresentationResolvedObject,\n PresentationShapeConfig,\n PresentationShapeGeometry,\n PresentationTableCellConfig,\n PresentationTableCellInput,\n PresentationTableConfig,\n PresentationTemplateElement,\n PresentationTextStyle,\n} from \"./presentation\";\nexport { SpreadsheetFidelityError, SpreadsheetSecurityError } from \"./spreadsheet-file\";\nexport type {\n SpreadsheetFidelityIssue,\n SpreadsheetLossPreservationEnvelope,\n SpreadsheetXlsxExportOptions,\n SpreadsheetXlsxImportLimits,\n SpreadsheetXlsxImportOptions,\n} from \"./spreadsheet-file\";\n\nexport type ArtifactBatchControls<Root> = Readonly<{\n /** One atomic host/native transaction; nested edits reconcile exactly once. */\n batch<Result>(callback: (artifact: Root) => Result): Result;\n /** Idempotently releases the owned exact native session. */\n dispose(): void;\n}>;\n\nexport type Workbook = ReferenceWorkbook & ArtifactBatchControls<ReferenceWorkbook>;\nexport type Document = ReferenceDocument & ArtifactBatchControls<ReferenceDocument>;\nexport type Presentation = ReferencePresentation & ArtifactBatchControls<ReferencePresentation>;\n\nexport type WorkbookFactory = Readonly<{\n prototype: ReferenceWorkbook;\n [Symbol.hasInstance](value: unknown): boolean;\n create(options?: WorkbookOptions): Workbook;\n fromCSV(csvText: string, options?: { sheetName?: string; delimiter?: string }): Promise<Workbook>;\n fromJSON(input: unknown): Workbook;\n}>;\n\nexport type DocumentFactory = Readonly<{\n prototype: ReferenceDocument;\n [Symbol.hasInstance](value: unknown): boolean;\n create(options?: DocumentCreateOptions): Document;\n fromJSON(input: unknown): Document;\n}>;\n\nexport type PresentationFactory = Readonly<{\n prototype: ReferencePresentation;\n [Symbol.hasInstance](value: unknown): boolean;\n create(options?: PresentationCreateOptions): Presentation;\n}>;\n\nlet configuredRuntime: ArtifactKernelRuntime | null = null;\n\n/**\n * Installs the one exact native runtime selected by host bootstrap. Runtime\n * replacement is deliberately forbidden: a process that needs another target\n * must use an isolated worker/process and configure it once.\n */\nexport function configureArtifactRuntime(runtime: ArtifactKernelRuntime): void {\n if (runtime.kind !== \"native\" || runtime.target === \"wasm-web\") {\n throw new ArtifactRuntimeError(\n \"ARTIFACT_RUNTIME_UNAVAILABLE\",\n \"The synchronous artifact facade requires an exact native N-API runtime\",\n );\n }\n if (configuredRuntime && configuredRuntime !== runtime) {\n throw new ArtifactRuntimeError(\n \"ARTIFACT_RUNTIME_INCOMPATIBLE\",\n \"A different artifact runtime is already configured in this process\",\n );\n }\n configuredRuntime = runtime;\n}\n\n/** Exact configured runtime, or null before the host bootstrap runs. */\nexport function getConfiguredArtifactRuntime(): ArtifactKernelRuntime | null {\n return configuredRuntime;\n}\n\nconst WorkbookFacade = createStaticFacade(ReferenceWorkbook, \"Workbook\", {\n create(options: WorkbookOptions = {}): Workbook {\n return attachWorkbook(ReferenceWorkbook.create(options), randomNamespace());\n },\n async fromCSV(\n csvText: string,\n options: { sheetName?: string; delimiter?: string } = {},\n ): Promise<Workbook> {\n return attachWorkbook(await ReferenceWorkbook.fromCSV(csvText, options), randomNamespace());\n },\n fromJSON(input: unknown): Workbook {\n return attachWorkbook(ReferenceWorkbook.fromJSON(input), randomNamespace());\n },\n});\n\nconst DocumentFacade = createStaticFacade(ReferenceDocument, \"Document\", {\n create(options: DocumentCreateOptions = {}): Document {\n const document = ReferenceDocument.create(options);\n return attachDocument(document, BigInt(`0x${document.idNamespace}`));\n },\n fromJSON(input: unknown): Document {\n const document = ReferenceDocument.fromJSON(input);\n return attachDocument(document, BigInt(`0x${document.idNamespace}`));\n },\n});\n\nconst PresentationFacade = createStaticFacade(ReferencePresentation, \"Presentation\", {\n create(options: PresentationCreateOptions = {}): Presentation {\n return attachPresentation(ReferencePresentation.create(options), randomNamespace());\n },\n});\n\n/** Skill-compatible factory; returned objects are exact native composites. */\nexport const Workbook = WorkbookFacade as unknown as WorkbookFactory;\n/** Skill-compatible factory; returned objects are exact native composites. */\nexport const Document = DocumentFacade as unknown as DocumentFactory;\n/** Skill-compatible factory; returned objects are exact native composites. */\nexport const Presentation = PresentationFacade as unknown as PresentationFactory;\n\n// eslint-disable-next-line typescript/no-extraneous-class -- stable skill facade.\nexport class SpreadsheetFile {\n static async importXlsx(\n ...args: Parameters<typeof ReferenceSpreadsheetFile.importXlsx>\n ): Promise<Workbook> {\n requireConfiguredRuntime();\n const workbook = await ReferenceSpreadsheetFile.importXlsx(...args);\n return attachWorkbook(workbook, randomNamespace());\n }\n\n static async exportXlsx(\n workbook: ReferenceWorkbook,\n options: Parameters<typeof ReferenceSpreadsheetFile.exportXlsx>[1] = {},\n ): Promise<FileBlob> {\n const raw = rawArtifact<ReferenceWorkbook>(workbook, \"spreadsheet\");\n return await ReferenceSpreadsheetFile.exportXlsx(raw, options);\n }\n\n static fidelityReport(\n workbook: ReferenceWorkbook,\n ): ReturnType<typeof ReferenceSpreadsheetFile.fidelityReport> {\n return ReferenceSpreadsheetFile.fidelityReport(rawArtifact(workbook, \"spreadsheet\"));\n }\n\n static lossPreservationEnvelope(\n workbook: ReferenceWorkbook,\n ): ReturnType<typeof ReferenceSpreadsheetFile.lossPreservationEnvelope> {\n return ReferenceSpreadsheetFile.lossPreservationEnvelope(rawArtifact(workbook, \"spreadsheet\"));\n }\n\n static async attachLossPreservationEnvelope(\n workbook: ReferenceWorkbook,\n envelope: Parameters<typeof ReferenceSpreadsheetFile.attachLossPreservationEnvelope>[1],\n options: Parameters<typeof ReferenceSpreadsheetFile.attachLossPreservationEnvelope>[2] = {},\n ): Promise<void> {\n const state = requireCompositeState(workbook, \"spreadsheet\");\n await state.mutate(\n () =>\n ReferenceSpreadsheetFile.attachLossPreservationEnvelope(\n state.rawRoot() as ReferenceWorkbook,\n envelope,\n options,\n ),\n { member: \"attachLossPreservationEnvelope\", owner: state.rawRoot() },\n );\n }\n}\n\n// eslint-disable-next-line typescript/no-extraneous-class -- stable skill facade.\nexport class DocumentFile {\n static async importDocx(\n ...args: Parameters<typeof ReferenceDocumentFile.importDocx>\n ): Promise<Document> {\n requireConfiguredRuntime();\n const document = await ReferenceDocumentFile.importDocx(...args);\n return attachDocument(document, BigInt(`0x${document.idNamespace}`));\n }\n\n static async exportDocx(document: ReferenceDocument): Promise<FileBlob> {\n return await ReferenceDocumentFile.exportDocx(rawArtifact(document, \"document\"));\n }\n}\n\n// eslint-disable-next-line typescript/no-extraneous-class -- stable skill facade.\nexport class PresentationFile {\n static async importPptx(\n ...args: Parameters<typeof ReferencePresentationFile.importPptx>\n ): Promise<Presentation> {\n requireConfiguredRuntime();\n const presentation = await ReferencePresentationFile.importPptx(...args);\n return attachPresentation(presentation, randomNamespace());\n }\n\n static async exportPptx(\n presentation: ReferencePresentation,\n options: Parameters<typeof ReferencePresentationFile.exportPptx>[1] = {},\n ): Promise<FileBlob> {\n return await ReferencePresentationFile.exportPptx(\n rawArtifact(presentation, \"presentation\"),\n options,\n );\n }\n\n static fidelityReport(\n presentation: ReferencePresentation,\n ): ReturnType<typeof ReferencePresentationFile.fidelityReport> {\n return ReferencePresentationFile.fidelityReport(rawArtifact(presentation, \"presentation\"));\n }\n\n static lossPreservationEnvelope(\n presentation: ReferencePresentation,\n ): ReturnType<typeof ReferencePresentationFile.lossPreservationEnvelope> {\n return ReferencePresentationFile.lossPreservationEnvelope(\n rawArtifact(presentation, \"presentation\"),\n );\n }\n}\n\nexport type ArtifactCompositeDiagnostics = Readonly<{\n version: 1;\n modality: \"spreadsheet\" | \"document\" | \"presentation\";\n namespace: string;\n runtimeTarget: string;\n runtimeBuildIdentity: string;\n nativeRevision: bigint;\n nativeStateHash: string;\n nativeSnapshot: Uint8Array;\n hostProjection: SerializedWorkbook | SerializedDocument | Record<string, unknown>;\n}>;\n\n/**\n * Point-in-time diagnostics only. This is deliberately not a persistence,\n * restore, or provenance envelope: presentation layout snapshots omit media\n * bytes and host capabilities, and the two projections are not cryptographically\n * bound. Durable state uses canonical collaboration snapshots plus the owned\n * format-loss envelope instead of pretending this view is restorable.\n */\nexport function getArtifactCompositeDiagnostics(\n artifact: ReferenceWorkbook | ReferenceDocument | ReferencePresentation,\n): ArtifactCompositeDiagnostics {\n const state = requireCompositeState(artifact);\n const root = state.rawRoot() as ReferenceWorkbook | ReferenceDocument | ReferencePresentation;\n const hostProjection =\n state.modality === \"presentation\"\n ? (root as ReferencePresentation).layoutSnapshot()\n : (root as ReferenceWorkbook | ReferenceDocument).toJSON();\n return Object.freeze({\n version: 1,\n modality: state.modality,\n namespace: u64Hex(state.namespace),\n runtimeTarget: state.native.target,\n runtimeBuildIdentity: state.native.buildIdentity,\n nativeRevision: state.native.revision(),\n nativeStateHash: state.native.stateHash(),\n nativeSnapshot: state.native.snapshot().slice(),\n hostProjection: structuredClone(hostProjection),\n });\n}\n\n/** Idempotently closes the exact native session owned by a facade artifact. */\nexport function disposeArtifact(\n artifact: ReferenceWorkbook | ReferenceDocument | ReferencePresentation,\n): void {\n requireCompositeState(artifact).dispose();\n}\n\nfunction attachWorkbook(workbook: ReferenceWorkbook, namespace: bigint): Workbook {\n const runtime = requireConfiguredRuntime();\n const reconcile = (root: ReferenceWorkbook) =>\n reconcileSpreadsheetProjection(root, runtime, namespace);\n const reconciliation = reconcile(workbook);\n const state = new CompositeArtifactState({\n modality: \"spreadsheet\",\n namespace,\n root: workbook,\n reconciliation,\n reconcile,\n prepareMutation: prepareSpreadsheetMutation,\n installProjection: installSpreadsheetProjection,\n readProperty: readSpreadsheetProperty,\n captureAuxiliary: captureSpreadsheetAuxiliary,\n restoreAuxiliary: restoreSpreadsheetAuxiliary,\n });\n return state.proxy() as Workbook;\n}\n\nfunction attachDocument(document: ReferenceDocument, namespace: bigint): Document {\n const runtime = requireConfiguredRuntime();\n const reconcile = (root: ReferenceDocument) =>\n reconcileDocumentProjection(root, runtime, namespace);\n const reconciliation = reconcile(document);\n const state = new CompositeArtifactState({\n modality: \"document\",\n namespace,\n root: document,\n reconciliation,\n reconcile,\n prepareMutation: prepareDocumentMutation,\n captureAuxiliary: captureDocumentAuxiliary,\n restoreAuxiliary: restoreDocumentAuxiliary,\n });\n return state.proxy() as Document;\n}\n\nfunction attachPresentation(presentation: ReferencePresentation, namespace: bigint): Presentation {\n const runtime = requireConfiguredRuntime();\n const reconcile = (root: ReferencePresentation) =>\n reconcilePresentationProjection(root, runtime, namespace);\n const reconciliation = reconcile(presentation);\n const state = new CompositeArtifactState({\n modality: \"presentation\",\n namespace,\n root: presentation,\n reconciliation,\n reconcile,\n prepareMutation: preparePresentationMutation,\n captureAuxiliary: capturePresentationAuxiliary,\n restoreAuxiliary: restorePresentationAuxiliary,\n });\n return state.proxy() as Presentation;\n}\n\nfunction reconcileDocumentProjection(\n document: ReferenceDocument,\n runtime: ArtifactKernelRuntime,\n namespace: bigint,\n): CompositeReconciliation {\n const session = NativeDocumentSession.create(runtime, namespace);\n try {\n const commands = encodeDocumentProjectionCommands(document.toJSON());\n if (envelopeCommandCount(commands) > 0) session.applyCommands(commands);\n return { session };\n } catch (cause) {\n session.dispose();\n throw cause;\n }\n}\n\nfunction prepareDocumentMutation(\n mutation: CompositeMutation,\n state: CompositeArtifactState<ReferenceDocument>,\n): PreparedCompositeMutation | null {\n const root = state.rawRoot();\n const owner = mutation.owner;\n const member = mutation.member;\n\n if (owner instanceof DocumentBlockCollection || owner instanceof DocumentStory) {\n if (\n member === \"addParagraph\" ||\n member === \"addHeading\" ||\n member === \"addTable\" ||\n member === \"addPageBreak\"\n ) {\n const target =\n owner instanceof DocumentStory\n ? documentStoryTarget(root, owner)\n : { kind: \"body\" as const };\n return commitDocumentMutation(state, (result) => {\n if (!isSerializedDocumentBlock(result)) {\n throw new Error(`${String(member)} did not return a document block`);\n }\n return [{ kind: \"block.add\", target, block: result.serialize() }];\n });\n }\n }\n\n if (owner instanceof DocumentParagraph) {\n if (member === \"setStyle\") {\n const style = mutation.arguments?.[0] as Parameters<DocumentParagraph[\"setStyle\"]>[0];\n return commitDocumentMutation(state, () => [\n { kind: \"paragraph.style\", id: owner.id, style },\n ]);\n }\n if (member === \"format\") {\n const format = mutation.arguments?.[0] as Parameters<DocumentParagraph[\"format\"]>[0];\n return commitDocumentMutation(state, () => [\n { kind: \"paragraph.format\", id: owner.id, format },\n ]);\n }\n if (member === \"edit\") {\n const edit = documentParagraphEdit(mutation.arguments ?? []);\n if (!edit) return null;\n return commitDocumentMutation(state, () => [\n { kind: \"paragraph.edit\", id: owner.id, ...edit },\n ]);\n }\n if (member === \"append\") {\n const text = mutation.arguments?.[0];\n const style = mutation.arguments?.[1] ?? {};\n if (typeof text !== \"string\" || typeof style !== \"object\" || style === null) return null;\n const start = owner.text.length;\n return commitDocumentMutation(state, () => [\n {\n kind: \"paragraph.edit\",\n id: owner.id,\n start,\n end: start,\n text,\n style: style as DocumentTextStyle,\n },\n ]);\n }\n if (member === \"text\") {\n const before = owner.text;\n return commitDocumentMutation(state, () => {\n const edit = minimalDocumentTextEdit(before, owner.text);\n return edit ? [{ kind: \"paragraph.edit\", id: owner.id, ...edit }] : [];\n });\n }\n if (member === \"replace\") {\n const search = mutation.arguments?.[0];\n const before = owner.text;\n if (\n typeof search !== \"string\" ||\n search.length === 0 ||\n before.indexOf(search) !== before.lastIndexOf(search)\n ) {\n return null;\n }\n return commitDocumentMutation(state, () => {\n const edit = minimalDocumentTextEdit(before, owner.text);\n return edit ? [{ kind: \"paragraph.edit\", id: owner.id, ...edit }] : [];\n });\n }\n }\n\n if (owner instanceof DocumentTable && member === \"setStyle\") {\n const style = mutation.arguments?.[0] as Parameters<DocumentTable[\"setStyle\"]>[0];\n return commitDocumentMutation(state, () => [{ kind: \"table.style\", id: owner.id, style }]);\n }\n if (owner === root && (member === \"setEvenAndOddHeaders\" || member === \"setTrackRevisions\")) {\n const enabled = mutation.arguments?.[0];\n if (typeof enabled !== \"boolean\") return null;\n return commitDocumentMutation(state, () => [\n {\n kind: \"document.flags\",\n ...(member === \"setEvenAndOddHeaders\"\n ? { evenAndOddHeaders: enabled }\n : { trackRevisions: enabled }),\n },\n ]);\n }\n if (owner instanceof DocumentSections && member === \"add\") {\n return commitDocumentMutation(state, (result) => {\n if (!(result instanceof DocumentSection))\n throw new Error(\"Section add did not return a section\");\n return [{ kind: \"section.add\", section: result.serialize() }];\n });\n }\n if (owner instanceof DocumentSection && member === \"setTitlePage\") {\n const enabled = mutation.arguments?.[0];\n if (typeof enabled !== \"boolean\") return null;\n return commitDocumentMutation(state, () => [\n { kind: \"section.title\", id: owner.id, titlePage: enabled },\n ]);\n }\n if (owner instanceof DocumentComments) {\n if (member === \"setSelf\") return { commit: () => false };\n if (member === \"addThread\") {\n return commitDocumentMutation(state, (result) => {\n if (!(result instanceof DocumentCommentThread))\n throw new Error(\"Comment add did not return a thread\");\n return [{ kind: \"comment.add\", comment: result.serialize() }];\n });\n }\n }\n if (owner instanceof DocumentCommentThread) {\n if (member === \"addReply\") {\n const before = owner.replies.length;\n return commitDocumentMutation(state, () => {\n const reply = owner.serialize().replies[before];\n return reply ? [{ kind: \"comment.reply\", id: owner.id, reply }] : [];\n });\n }\n if (member === \"resolve\" || member === \"reopen\") {\n const before = owner.resolved;\n return commitDocumentMutation(state, () =>\n before === owner.resolved\n ? []\n : [{ kind: \"comment.resolved\", id: owner.id, resolved: owner.resolved }],\n );\n }\n }\n if (owner instanceof TrackedChanges && member === \"add\") {\n return commitDocumentMutation(state, (result) => {\n if (\n !result ||\n typeof result !== \"object\" ||\n typeof Reflect.get(result, \"serialize\") !== \"function\"\n ) {\n throw new Error(\"Tracked-change add did not return a change\");\n }\n return [\n {\n kind: \"tracked.add\",\n change: (\n Reflect.get(result, \"serialize\") as () => ReturnType<\n ReferenceDocument[\"toJSON\"]\n >[\"changes\"][number]\n ).call(result),\n },\n ];\n });\n }\n return null;\n}\n\nfunction commitDocumentMutation(\n state: CompositeArtifactState<ReferenceDocument>,\n commands: (result: unknown) => Parameters<typeof encodeDocumentIncrementalCommands>[0],\n): PreparedCompositeMutation {\n return {\n commit(result) {\n const batch = commands(result);\n if (batch.length === 0) return false;\n const session = state.native;\n if (!(session instanceof NativeDocumentSession))\n throw new TypeError(\"Expected native document session\");\n const before = session.revision();\n session.applyCommands(encodeDocumentIncrementalCommands(batch));\n return session.revision() > before;\n },\n };\n}\n\nfunction documentStoryTarget(\n document: ReferenceDocument,\n story: DocumentStory,\n): DocumentProjectionTarget {\n for (const section of document.sections.items) {\n for (const storyKind of [\"header\", \"footer\"] as const) {\n const collection = storyKind === \"header\" ? section.headers : section.footers;\n for (const variant of [\"default\", \"first\", \"even\"] as const) {\n if (collection[variant] === story)\n return { kind: \"story\", sectionId: section.id, storyKind, variant };\n }\n }\n }\n throw new Error(`Document story is not attached: ${story.id}`);\n}\n\nfunction isSerializedDocumentBlock(value: unknown): value is {\n serialize(): SerializedDocumentBlock;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof Reflect.get(value, \"serialize\") === \"function\"\n );\n}\n\nfunction documentParagraphEdit(\n args: readonly unknown[],\n): { start: number; end: number; text: string; style?: DocumentTextStyle } | null {\n if (typeof args[0] === \"number\") {\n if (typeof args[1] !== \"number\" || typeof args[2] !== \"string\") return null;\n return {\n start: args[0],\n end: args[1],\n text: args[2],\n ...(args[3] && typeof args[3] === \"object\" ? { style: args[3] as DocumentTextStyle } : {}),\n };\n }\n const edit = args[0] as\n | { start?: unknown; end?: unknown; text?: unknown; style?: unknown }\n | undefined;\n if (\n !edit ||\n typeof edit.start !== \"number\" ||\n typeof edit.end !== \"number\" ||\n typeof edit.text !== \"string\"\n ) {\n return null;\n }\n return {\n start: edit.start,\n end: edit.end,\n text: edit.text,\n ...(edit.style && typeof edit.style === \"object\"\n ? { style: edit.style as DocumentTextStyle }\n : {}),\n };\n}\n\nfunction minimalDocumentTextEdit(\n before: string,\n after: string,\n): { start: number; end: number; text: string } | null {\n if (before === after) return null;\n let start = 0;\n while (start < before.length && start < after.length && before[start] === after[start])\n start += 1;\n let beforeEnd = before.length;\n let afterEnd = after.length;\n while (beforeEnd > start && afterEnd > start && before[beforeEnd - 1] === after[afterEnd - 1]) {\n beforeEnd -= 1;\n afterEnd -= 1;\n }\n return { start, end: beforeEnd, text: after.slice(start, afterEnd) };\n}\n\nfunction reconcilePresentationProjection(\n presentation: ReferencePresentation,\n runtime: ArtifactKernelRuntime,\n namespace: bigint,\n): CompositeReconciliation {\n const session = NativePresentationSession.create(runtime, namespace);\n try {\n const commands = encodePresentationProjectionCommands(presentation, namespace);\n if (envelopeCommandCount(commands) > 0) session.applyCommands(commands);\n return { session };\n } catch (cause) {\n session.dispose();\n throw cause;\n }\n}\n\nfunction preparePresentationMutation(\n mutation: CompositeMutation,\n state: CompositeArtifactState<ReferencePresentation>,\n): PreparedCompositeMutation | null {\n const root = state.rawRoot();\n const owner = mutation.owner;\n const member = mutation.member;\n\n if (owner instanceof SlideCollection && member === \"add\") {\n const index = root.slides.items.length;\n return commitPresentationMutation(state, (result) => {\n if (!(result instanceof Slide)) throw new Error(\"Slide add did not return a slide\");\n return [{ kind: \"slide.create\", slide: result, index }];\n });\n }\n\n if (\n (owner instanceof PresentationShapeCollection ||\n owner instanceof PresentationChartCollection ||\n owner instanceof PresentationImageCollection ||\n owner instanceof PresentationTableCollection ||\n owner instanceof PresentationGroupCollection) &&\n member === \"add\"\n ) {\n return commitPresentationMutation(state, (result) => {\n if (!isPresentationElement(result))\n throw new Error(\"Presentation add did not return an element\");\n const index = result.slide.elements.indexOf(result);\n if (index < 0) throw new Error(\"Presentation element was not attached to its slide\");\n return [{ kind: \"node.insert\", slideId: result.slide.id, index, element: result }];\n });\n }\n\n if (owner instanceof Slide) {\n if (member === \"title\") {\n return commitPresentationMutation(state, () => [\n { kind: \"slide.title\", id: owner.id, title: owner.title },\n ]);\n }\n if (member === \"setLayout\") {\n return commitPresentationMutation(state, () => [\n {\n kind: \"slide.layout\",\n id: owner.id,\n ...(owner.layout ? { layoutId: owner.layout.id } : {}),\n },\n ]);\n }\n }\n\n if (owner === root.slideSize && (member === \"width\" || member === \"height\")) {\n return commitPresentationMutation(state, () => [\n {\n kind: \"presentation.size\",\n width: root.slideSize.width,\n height: root.slideSize.height,\n },\n ]);\n }\n\n if (owner instanceof PresentationText) {\n const target = findPresentationTextOwner(root, owner);\n if (!target) return null;\n return commitPresentationMutation(state, () =>\n target.kind === \"notes\"\n ? [{ kind: \"slide.notes\", id: target.slide.id, notes: owner }]\n : [{ kind: \"node.update\", element: target.element }],\n );\n }\n\n if (isPresentationElement(owner)) {\n return commitPresentationMutation(state, () => [{ kind: \"node.update\", element: owner }]);\n }\n return null;\n}\n\nfunction commitPresentationMutation(\n state: CompositeArtifactState<ReferencePresentation>,\n commands: (result: unknown) => Parameters<typeof encodePresentationIncrementalCommands>[0],\n): PreparedCompositeMutation {\n return {\n commit(result) {\n const batch = commands(result);\n if (batch.length === 0) return false;\n const session = state.native;\n if (!(session instanceof NativePresentationSession)) {\n throw new TypeError(\"Expected native presentation session\");\n }\n const before = session.revision();\n session.applyCommands(encodePresentationIncrementalCommands(batch, state.namespace));\n return session.revision() > before;\n },\n };\n}\n\nfunction isPresentationElement(value: unknown): value is PresentationElement {\n return (\n value instanceof PresentationShape ||\n value instanceof PresentationChart ||\n value instanceof PresentationImage ||\n value instanceof PresentationTable ||\n value instanceof PresentationGroup\n );\n}\n\nfunction findPresentationTextOwner(\n presentation: ReferencePresentation,\n text: PresentationText,\n): { kind: \"notes\"; slide: Slide } | { kind: \"node\"; element: PresentationElement } | null {\n const visit = (element: PresentationElement): PresentationElement | null => {\n if (element instanceof PresentationShape && element.text === text) return element;\n if (element instanceof PresentationGroup) {\n for (const child of element.children) {\n const match = visit(child);\n if (match) return match;\n }\n }\n if (element instanceof PresentationTable) {\n if (element.rows.some((row) => row.some((cell) => cell?.text === text))) return element;\n }\n return null;\n };\n for (const slide of presentation.slides.items) {\n if (slide.notes === text) return { kind: \"notes\", slide };\n for (const element of slide.elements) {\n const match = visit(element);\n if (match) return { kind: \"node\", element: match };\n }\n }\n return null;\n}\n\nfunction captureSpreadsheetAuxiliary(workbook: ReferenceWorkbook): unknown {\n const value = LOSS_PRESERVATION.get(workbook);\n return value ? structuredClone(value) : undefined;\n}\n\nfunction restoreSpreadsheetAuxiliary(workbook: ReferenceWorkbook, value: unknown): void {\n if (value)\n LOSS_PRESERVATION.set(workbook, value as NonNullable<ReturnType<typeof LOSS_PRESERVATION.get>>);\n}\n\nfunction captureDocumentAuxiliary(document: ReferenceDocument): unknown {\n const value = DOCUMENT_LOSS_PRESERVATION.get(document);\n return value ? structuredClone(value) : undefined;\n}\n\nfunction restoreDocumentAuxiliary(document: ReferenceDocument, value: unknown): void {\n if (value) {\n DOCUMENT_LOSS_PRESERVATION.set(\n document,\n value as NonNullable<ReturnType<typeof DOCUMENT_LOSS_PRESERVATION.get>>,\n );\n }\n}\n\nfunction capturePresentationAuxiliary(presentation: ReferencePresentation): unknown {\n const value = presentationLossState(presentation);\n return value ? structuredClone(value) : undefined;\n}\n\nfunction restorePresentationAuxiliary(presentation: ReferencePresentation, value: unknown): void {\n setPresentationLossState(presentation, value as ReturnType<typeof presentationLossState>);\n}\n\nfunction rawArtifact<Root extends object>(\n artifact: Root,\n modality: \"spreadsheet\" | \"document\" | \"presentation\",\n): Root {\n return requireCompositeState(artifact, modality).rawRoot() as Root;\n}\n\nfunction createStaticFacade<Constructor extends Function>(\n reference: Constructor,\n name: string,\n statics: Readonly<Record<string, (...args: never[]) => unknown>>,\n): Constructor {\n const facade = function ArtifactFacade(): never {\n throw new TypeError(`${name} cannot be constructed directly; use ${name}.create()`);\n };\n Object.setPrototypeOf(facade, reference);\n Object.defineProperty(facade, \"name\", { configurable: true, value: name });\n Object.defineProperty(facade, \"prototype\", { value: reference.prototype });\n for (const [key, value] of Object.entries(statics)) {\n Object.defineProperty(facade, key, { configurable: false, enumerable: false, value });\n }\n return facade as unknown as Constructor;\n}\n\nfunction requireConfiguredRuntime(): ArtifactKernelRuntime {\n if (!configuredRuntime) {\n throw new ArtifactRuntimeError(\n \"ARTIFACT_RUNTIME_UNAVAILABLE\",\n \"No exact artifact runtime is configured; host bootstrap must call configureArtifactRuntime()\",\n );\n }\n return configuredRuntime;\n}\n\nfunction envelopeCommandCount(bytes: Uint8Array): number {\n if (bytes.byteLength < 16) throw new TypeError(\"Native command envelope is truncated\");\n return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(12, true);\n}\n\nfunction randomNamespace(): bigint {\n const words = crypto.getRandomValues(new Uint32Array(2));\n const namespace = (BigInt(words[0]!) << 32n) | BigInt(words[1]!);\n return namespace === 0n ? randomNamespace() : namespace;\n}\n\nfunction u64Hex(value: bigint): string {\n if (value <= 0n || value > 0xffff_ffff_ffff_ffffn) {\n throw new RangeError(\"Artifact namespace must be a nonzero u64\");\n }\n return value.toString(16).padStart(16, \"0\");\n}\n"],"mappings":"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","names":["textEncoder","generation","Workbook","Document","Presentation","SpreadsheetFile","envelope","DocumentFile","PresentationFile","u64Hex"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/native.ts"],"sourcesContent":["import {\n EDITABLE_ARTIFACT_INTENT_VERSION,\n SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n assertCanonicalSpreadsheetArtifactCommandBytes,\n decodeEditableArtifactMutationIntent,\n encodeEditableArtifactMutationIntent,\n encodeSpreadsheetArtifactCommandBatch,\n hashEditableArtifactMutationIntentBytes,\n type EditableArtifactMutationIntent,\n type SpreadsheetArtifactCommandBatch,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport {\n ArtifactCollaborationSession,\n ArtifactDocumentSession,\n ArtifactKernelRuntime,\n ArtifactPresentationSession,\n ArtifactRuntimeError,\n ArtifactTextLayoutSession,\n type ArtifactKernelCapabilities,\n type NativeArtifactRuntimeTarget,\n} from \"./runtime\";\n\nexport {\n SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n assertCanonicalSpreadsheetArtifactCommandBytes,\n decodeSpreadsheetArtifactCommandBatch,\n editableArtifactStableId,\n encodeSpreadsheetArtifactCommandBatch,\n spreadsheetSheetId,\n} from \"@opengeni/contracts/editable-artifacts\";\nexport type {\n EditableArtifactStableId,\n SpreadsheetArtifactCommand,\n SpreadsheetArtifactCommandBatch,\n SpreadsheetCellInput,\n SpreadsheetCellPoint,\n SpreadsheetCellRange,\n SpreadsheetSheetGeneration,\n SpreadsheetSheetPrecondition,\n} from \"@opengeni/contracts/editable-artifacts\";\n\nexport type NativeArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type NativeSpreadsheetIntentFields = Omit<\n EditableArtifactMutationIntent,\n | \"envelopeVersion\"\n | \"protocolVersion\"\n | \"modelSchemaVersion\"\n | \"commandProtocolVersion\"\n | \"commandBytes\"\n>;\n\nexport type NativeSpreadsheetAuthorCommandsInput = Readonly<{\n intent: NativeSpreadsheetIntentFields;\n commands: SpreadsheetArtifactCommandBatch;\n /** Exact authoritative OGACF001 base selected for this apply attempt. */\n resolvedBaseBytes: Uint8Array;\n}>;\n\nexport type NativeSpreadsheetAuthoredTransaction = Readonly<{\n /** Exact canonical OGATX001 bytes passed to Rust. */\n intentBytes: Uint8Array;\n requestHash: string;\n /** One whole canonical OGACO001 transaction returned by Rust. */\n committedTransactionBytes: Uint8Array;\n}>;\n\nexport type CreateNativeArtifactSessionInput = Readonly<{\n modality: NativeArtifactModality;\n replicaNamespace: bigint;\n}>;\n\nexport type OpenNativeArtifactSessionInput = Readonly<{\n modality: NativeArtifactModality;\n snapshot: Uint8Array;\n}>;\n\nexport type NativeArtifactSession =\n | NativeSpreadsheetSession\n | NativeDocumentSession\n | NativePresentationSession;\n\n/**\n * Synchronous Node/Bun production spreadsheet session backed only by the\n * verified Rust N-API collaboration kernel. It never selects the TypeScript\n * reference model and deliberately rejects a browser/WASM runtime; browsers\n * use the asynchronous `@opengeni/sdk/editable-artifacts` Worker API.\n */\nexport class NativeSpreadsheetSession {\n readonly kind = \"native\" as const;\n readonly modality = \"spreadsheet\" as const;\n readonly target: NativeArtifactRuntimeTarget;\n readonly capabilities: ArtifactKernelCapabilities;\n readonly buildIdentity: string;\n\n private constructor(\n private readonly runtime: ArtifactKernelRuntime,\n private readonly session: ArtifactCollaborationSession,\n ) {\n requireNativeSpreadsheetRuntime(runtime);\n this.target = runtime.target as NativeArtifactRuntimeTarget;\n this.capabilities = runtime.capabilities;\n this.buildIdentity = runtime.buildIdentity;\n }\n\n static create(\n runtime: ArtifactKernelRuntime,\n replicaNamespace: bigint,\n ): NativeSpreadsheetSession {\n requireNativeSpreadsheetRuntime(runtime);\n return new NativeSpreadsheetSession(\n runtime,\n runtime.createCollaborationSession(replicaNamespace),\n );\n }\n\n static open(runtime: ArtifactKernelRuntime, snapshot: Uint8Array): NativeSpreadsheetSession {\n requireNativeSpreadsheetRuntime(runtime);\n return new NativeSpreadsheetSession(runtime, runtime.openCollaborationSession(snapshot));\n }\n\n /**\n * Authors one already-canonical mutation. Rust independently validates the\n * exact OGATX/OGASC bytes, resolves typed operations, applies atomically, and\n * returns the whole canonical OGACO transaction.\n */\n authorTransaction(intentBytes: Uint8Array, resolvedBaseBytes: Uint8Array): Uint8Array {\n assertSpreadsheetIntent(intentBytes);\n return this.session.authorTransaction(intentBytes, resolvedBaseBytes);\n }\n\n /** Encodes one identity-free typed command batch and authors it atomically. */\n authorCommands(\n input: NativeSpreadsheetAuthorCommandsInput,\n ): NativeSpreadsheetAuthoredTransaction {\n const commandBytes = encodeSpreadsheetArtifactCommandBatch(input.commands);\n const intentBytes = encodeEditableArtifactMutationIntent({\n ...input.intent,\n envelopeVersion: EDITABLE_ARTIFACT_INTENT_VERSION,\n protocolVersion: 1,\n modelSchemaVersion: 1,\n commandProtocolVersion: SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n commandBytes,\n });\n const requestHash = hashEditableArtifactMutationIntentBytes(intentBytes);\n const committedTransactionBytes = this.authorTransaction(intentBytes, input.resolvedBaseBytes);\n return Object.freeze({ intentBytes, requestHash, committedTransactionBytes });\n }\n\n /** Replays one whole authoritative OGACO transaction atomically. */\n applyCommitted(committedTransactionBytes: Uint8Array): void {\n this.session.applyCommitted(committedTransactionBytes);\n }\n\n /**\n * Executes one canonical OGAKQ request. Typed viewport/metadata helpers use\n * the shared contract codec; this raw method remains useful at server byte\n * boundaries and never exposes a Rust object layout.\n */\n query(queryBytes: Uint8Array): Uint8Array {\n return this.session.query(queryBytes);\n }\n\n snapshot(): Uint8Array {\n return this.session.snapshot();\n }\n\n frontier(): Uint8Array {\n return this.session.frontier();\n }\n\n stateHash(): string {\n return this.session.stateHash();\n }\n\n revision(): bigint {\n return this.session.revision();\n }\n\n fork(): NativeSpreadsheetSession {\n return new NativeSpreadsheetSession(this.runtime, this.session.fork());\n }\n\n isClosed(): boolean {\n return this.session.isClosed();\n }\n\n dispose(): void {\n this.session.dispose();\n }\n}\n\n/** Exact synchronous N-API structured-document byte session. */\nexport class NativeDocumentSession {\n readonly kind = \"native\" as const;\n readonly modality = \"document\" as const;\n readonly target: NativeArtifactRuntimeTarget;\n readonly capabilities: ArtifactKernelCapabilities;\n readonly buildIdentity: string;\n\n private constructor(\n private readonly runtime: ArtifactKernelRuntime,\n private readonly session: ArtifactDocumentSession,\n ) {\n requireNativeRuntime(runtime);\n this.target = runtime.target as NativeArtifactRuntimeTarget;\n this.capabilities = runtime.capabilities;\n this.buildIdentity = runtime.buildIdentity;\n }\n\n static create(runtime: ArtifactKernelRuntime, namespace: bigint): NativeDocumentSession {\n requireNativeRuntime(runtime);\n return new NativeDocumentSession(runtime, runtime.createDocumentSession(namespace));\n }\n\n static open(runtime: ArtifactKernelRuntime, snapshot: Uint8Array): NativeDocumentSession {\n requireNativeRuntime(runtime);\n return new NativeDocumentSession(runtime, runtime.openDocumentSession(snapshot));\n }\n\n applyCommands(commands: Uint8Array): Uint8Array {\n return this.session.applyCommands(commands);\n }\n query(request: Uint8Array): Uint8Array {\n return this.session.query(request);\n }\n snapshot(): Uint8Array {\n return this.session.snapshot();\n }\n revision(): bigint {\n return this.session.revision();\n }\n stateHash(): string {\n return this.session.stateHash();\n }\n fork(): NativeDocumentSession {\n return new NativeDocumentSession(this.runtime, this.session.fork());\n }\n isClosed(): boolean {\n return this.session.isClosed();\n }\n dispose(): void {\n this.session.dispose();\n }\n}\n\n/** Exact synchronous N-API presentation byte session. */\nexport class NativePresentationSession {\n readonly kind = \"native\" as const;\n readonly modality = \"presentation\" as const;\n readonly target: NativeArtifactRuntimeTarget;\n readonly capabilities: ArtifactKernelCapabilities;\n readonly buildIdentity: string;\n\n private constructor(\n private readonly runtime: ArtifactKernelRuntime,\n private readonly session: ArtifactPresentationSession,\n ) {\n requireNativeRuntime(runtime);\n this.target = runtime.target as NativeArtifactRuntimeTarget;\n this.capabilities = runtime.capabilities;\n this.buildIdentity = runtime.buildIdentity;\n }\n\n static create(runtime: ArtifactKernelRuntime, namespace: bigint): NativePresentationSession {\n requireNativeRuntime(runtime);\n return new NativePresentationSession(runtime, runtime.createPresentationSession(namespace));\n }\n\n static open(runtime: ArtifactKernelRuntime, snapshot: Uint8Array): NativePresentationSession {\n requireNativeRuntime(runtime);\n return new NativePresentationSession(runtime, runtime.openPresentationSession(snapshot));\n }\n\n applyCommands(commands: Uint8Array): Uint8Array {\n return this.session.applyCommands(commands);\n }\n query(request: Uint8Array): Uint8Array {\n return this.session.query(request);\n }\n snapshot(): Uint8Array {\n return this.session.snapshot();\n }\n revision(): bigint {\n return this.session.revision();\n }\n stateHash(): string {\n return this.session.stateHash();\n }\n fork(): NativePresentationSession {\n return new NativePresentationSession(this.runtime, this.session.fork());\n }\n isClosed(): boolean {\n return this.session.isClosed();\n }\n dispose(): void {\n this.session.dispose();\n }\n}\n\n/** Exact synchronous N-API retained-font text-layout session. */\nexport class NativeTextLayoutSession {\n readonly kind = \"native\" as const;\n readonly modality = \"text-layout\" as const;\n readonly target: NativeArtifactRuntimeTarget;\n readonly capabilities: ArtifactKernelCapabilities;\n readonly buildIdentity: string;\n\n private constructor(\n private readonly session: ArtifactTextLayoutSession,\n runtime: ArtifactKernelRuntime,\n ) {\n requireNativeRuntime(runtime);\n this.target = runtime.target as NativeArtifactRuntimeTarget;\n this.capabilities = runtime.capabilities;\n this.buildIdentity = runtime.buildIdentity;\n }\n\n static open(runtime: ArtifactKernelRuntime, fontBundle: Uint8Array): NativeTextLayoutSession {\n requireNativeRuntime(runtime);\n return new NativeTextLayoutSession(runtime.openTextLayoutSession(fontBundle), runtime);\n }\n\n layout(request: Uint8Array): Uint8Array {\n return this.session.layout(request);\n }\n isClosed(): boolean {\n return this.session.isClosed();\n }\n dispose(): void {\n this.session.dispose();\n }\n}\n\n/** Creates a production modality session; unsupported Rust modes fail closed. */\nexport function createNativeArtifactSession(\n runtime: ArtifactKernelRuntime,\n input: CreateNativeArtifactSessionInput,\n): NativeArtifactSession {\n if (input.modality === \"spreadsheet\") {\n return NativeSpreadsheetSession.create(runtime, input.replicaNamespace);\n }\n if (input.modality === \"document\") {\n return NativeDocumentSession.create(runtime, input.replicaNamespace);\n }\n return NativePresentationSession.create(runtime, input.replicaNamespace);\n}\n\n/** Opens a production modality session; unsupported Rust modes fail closed. */\nexport function openNativeArtifactSession(\n runtime: ArtifactKernelRuntime,\n input: OpenNativeArtifactSessionInput,\n): NativeArtifactSession {\n if (input.modality === \"spreadsheet\")\n return NativeSpreadsheetSession.open(runtime, input.snapshot);\n if (input.modality === \"document\") return NativeDocumentSession.open(runtime, input.snapshot);\n return NativePresentationSession.open(runtime, input.snapshot);\n}\n\nfunction assertSpreadsheetIntent(intentBytes: Uint8Array): void {\n const intent = decodeEditableArtifactMutationIntent(intentBytes);\n if (\n intent.envelopeVersion !== EDITABLE_ARTIFACT_INTENT_VERSION ||\n intent.protocolVersion !== 1 ||\n intent.modelSchemaVersion !== 1 ||\n intent.commandProtocolVersion !== SPREADSHEET_ARTIFACT_COMMAND_VERSION\n ) {\n throw new ArtifactRuntimeError(\n \"ARTIFACT_RUNTIME_INCOMPATIBLE\",\n \"Spreadsheet intent versions do not match the loaded production kernel\",\n );\n }\n assertCanonicalSpreadsheetArtifactCommandBytes(intent.commandBytes);\n // Hashing decodes again by design and proves the exact outer bytes are an\n // acceptable canonical request before they cross the native boundary.\n hashEditableArtifactMutationIntentBytes(intentBytes);\n}\n\nfunction requireNativeSpreadsheetRuntime(runtime: ArtifactKernelRuntime): void {\n requireNativeRuntime(runtime);\n}\n\nfunction requireNativeRuntime(runtime: ArtifactKernelRuntime): void {\n if (runtime.kind !== \"native\" || runtime.target === \"wasm-web\") {\n throw new ArtifactRuntimeError(\n \"ARTIFACT_RUNTIME_UNAVAILABLE\",\n \"NativeSpreadsheetSession requires an exact local N-API kernel; browser editing uses @opengeni/sdk/editable-artifacts\",\n );\n }\n}\n"],"mappings":"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","names":["SPREADSHEET_ARTIFACT_COMMAND_VERSION","assertCanonicalSpreadsheetArtifactCommandBytes","encodeSpreadsheetArtifactCommandBatch"]}
|