@opengeni/artifact-tool 0.2.10 → 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,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfiguredArtifactKernelRuntime
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LMLPFF3S.js";
|
|
4
4
|
import {
|
|
5
5
|
NativeSpreadsheetSession
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LVPFJH2Z.js";
|
|
7
7
|
import {
|
|
8
8
|
SpreadsheetXlsxCodec
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-OVXX4G35.js";
|
|
10
10
|
import {
|
|
11
11
|
Workbook
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SYFNJGH5.js";
|
|
13
13
|
|
|
14
14
|
// src/materializer-cli.ts
|
|
15
15
|
import { createHash } from "crypto";
|
|
@@ -22,6 +22,11 @@ import {
|
|
|
22
22
|
encodeSpreadsheetMetadataKernelQuery,
|
|
23
23
|
encodeSpreadsheetViewportKernelQuery
|
|
24
24
|
} from "@opengeni/contracts/editable-artifacts";
|
|
25
|
+
import {
|
|
26
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
27
|
+
SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
28
|
+
SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
|
|
29
|
+
} from "@opengeni/contracts/editable-artifact-versions";
|
|
25
30
|
var IDENTITY_ARGUMENT = "--opengeni-materializer-identity-v1";
|
|
26
31
|
var MATERIALIZE_ARGUMENT = "--opengeni-materialize-v1";
|
|
27
32
|
var VERIFY_ARGUMENT = "--opengeni-verify-materialization-v1";
|
|
@@ -353,13 +358,19 @@ function editableArtifactMaterializerCapabilitiesForRuntime(runtime, packageVers
|
|
|
353
358
|
fontRegistryHash: EMPTY_FONT_REGISTRY_HASH,
|
|
354
359
|
policyHash: POLICY_HASH,
|
|
355
360
|
maxOutputBytes: MAX_OUTPUT_BYTES,
|
|
356
|
-
supportedModelSchemaVersions: Object.freeze([
|
|
357
|
-
|
|
358
|
-
|
|
361
|
+
supportedModelSchemaVersions: Object.freeze([
|
|
362
|
+
SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION
|
|
363
|
+
]),
|
|
364
|
+
supportedOperationProtocolVersions: Object.freeze([
|
|
365
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION
|
|
366
|
+
]),
|
|
367
|
+
supportedSnapshotProtocolVersions: Object.freeze([
|
|
368
|
+
SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
|
|
369
|
+
])
|
|
359
370
|
});
|
|
360
371
|
}
|
|
361
372
|
function assertManifestCompatibility(manifest, capabilities) {
|
|
362
|
-
if (manifest.modelSchemaVersion !==
|
|
373
|
+
if (manifest.modelSchemaVersion !== SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION || manifest.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION || manifest.snapshotProtocolVersion !== SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION || manifest.kernelVersion !== capabilities.kernelVersion || manifest.codecVersion !== capabilities.codecVersions[manifest.codecId] || manifest.fontRegistryHash !== capabilities.fontRegistryHash || manifest.policyHash !== capabilities.policyHash || Object.keys(manifest.normalizedOptions).length !== 0) {
|
|
363
374
|
throw incompatible();
|
|
364
375
|
}
|
|
365
376
|
}
|
|
@@ -546,4 +557,4 @@ export {
|
|
|
546
557
|
runArtifactMaterializerCli,
|
|
547
558
|
editableArtifactMaterializerCapabilitiesForRuntime
|
|
548
559
|
};
|
|
549
|
-
//# sourceMappingURL=chunk-
|
|
560
|
+
//# sourceMappingURL=chunk-XAZTHG6W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/materializer-cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { createHash } from \"node:crypto\";\nimport { once } from \"node:events\";\n\nimport {\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS,\n decodeSpreadsheetMetadataKernelProjection,\n decodeSpreadsheetViewportKernelProjection,\n encodeSpreadsheetMetadataKernelQuery,\n encodeSpreadsheetViewportKernelQuery,\n type SpreadsheetArtifactProjectedCellValue,\n type SpreadsheetArtifactFormulaError,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport {\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n} from \"@opengeni/contracts/editable-artifact-versions\";\n\nimport { NativeSpreadsheetSession } from \"./native\";\nimport { SpreadsheetXlsxCodec } from \"./spreadsheet-xlsx-codec\";\nimport { Workbook, type SerializedWorkbook } from \"./spreadsheet\";\nimport { loadConfiguredArtifactKernelRuntime } from \"./runtime-development\";\nimport type { ArtifactKernelRuntime } from \"./runtime\";\n\nconst IDENTITY_ARGUMENT = \"--opengeni-materializer-identity-v1\";\nconst MATERIALIZE_ARGUMENT = \"--opengeni-materialize-v1\";\nconst VERIFY_ARGUMENT = \"--opengeni-verify-materialization-v1\";\nconst INPUT_MAGIC = bytes(\"OGAMI001\");\nconst VERIFY_INPUT_MAGIC = bytes(\"OGAVI001\");\nconst OUTPUT_MAGIC = bytes(\"OGAMO001\");\nconst VERIFY_OUTPUT_MAGIC = bytes(\"OGAVO001\");\nconst ERROR_MAGIC = bytes(\"OGAME001\");\nconst MAX_METADATA_BYTES = 256 * 1024;\nconst MAX_SOURCE_BYTES = 512 * 1024 * 1024;\nconst MAX_OUTPUT_BYTES = 512 * 1024 * 1024;\nconst MAX_PROJECTED_RECTANGLE_CELLS = 1_000_000;\nconst VIEWPORT_EDGE = 128;\nconst XLSX_CODEC_ID = \"opengeni.xlsx\";\nconst EMPTY_FONT_REGISTRY_HASH = sha256(bytes(\"opengeni:no-font-registry:v1\"));\nconst POLICY_HASH = sha256(bytes(\"opengeni:materializer:xlsx-native-projection:v1\"));\n\nexport type EditableArtifactNativeMaterializerCapabilities = Readonly<{\n protocol: \"OGAMC001\";\n runtimeKind: \"native\";\n runtimeTarget: string;\n kernelVersion: string;\n codecVersions: Readonly<Record<typeof XLSX_CODEC_ID, string>>;\n fontRegistryHash: string;\n policyHash: string;\n maxOutputBytes: number;\n supportedModelSchemaVersions: readonly [typeof SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION];\n supportedOperationProtocolVersions: readonly [typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION];\n supportedSnapshotProtocolVersions: readonly [typeof SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION];\n}>;\n\ntype MaterializationManifest = Readonly<{\n protocol: \"OGAMJ001\";\n artifactId: string;\n jobId: string;\n versionId: string;\n modality: \"spreadsheet\" | \"document\" | \"presentation\";\n inputSnapshotId: string;\n targetHeadSequence: number;\n stateHash: string;\n sourceByteSize: number;\n sourceContentHash: string;\n modelSchemaVersion: number;\n operationProtocolVersion: number;\n snapshotProtocolVersion: number;\n format: \"xlsx\" | \"pptx\" | \"docx\" | \"pdf\" | \"png\" | \"webp\";\n codecId: string;\n normalizedOptions: Readonly<Record<string, never>>;\n optionsHash: string;\n codecVersion: string;\n kernelVersion: string;\n fontRegistryHash: string;\n policyHash: string;\n}>;\n\ntype SemanticCell = Readonly<{\n row: number;\n column: number;\n formula: string | null;\n value: SpreadsheetArtifactProjectedCellValue;\n}>;\n\ntype SemanticWorkbook = Readonly<{\n version: 1;\n sheets: readonly Readonly<{ name: string; cells: readonly SemanticCell[] }>[];\n}>;\n\ntype ProjectedWorkbook = Readonly<{\n workbook: Workbook;\n semanticHash: string;\n}>;\n\ntype NativeSourceDiagnosticSubcode = \"input_framing\" | \"snapshot_open\" | \"state_mismatch\";\n\nexport async function runArtifactMaterializerCli(\n args: readonly string[],\n environment: Readonly<Record<string, string | undefined>> = process.env,\n): Promise<void> {\n if (args.length !== 1) throw new Error(\"unsupported materializer command\");\n const command = args[0];\n if (command === IDENTITY_ARGUMENT) {\n const capabilities = await loadCapabilities(environment);\n process.stdout.write(JSON.stringify(capabilities));\n return;\n }\n if (command === MATERIALIZE_ARGUMENT) {\n try {\n await materialize(environment);\n } catch (error) {\n if (!(error instanceof MaterializerCliError)) throw error;\n await writeTypedError(error.code, error.diagnosticSubcode);\n }\n return;\n }\n if (command === VERIFY_ARGUMENT) {\n try {\n await verifyMaterialization(environment);\n } catch (error) {\n if (!(error instanceof MaterializerCliError)) throw error;\n await writeTypedError(error.code, error.diagnosticSubcode);\n }\n return;\n }\n throw new Error(\"unsupported materializer command\");\n}\n\nasync function loadCapabilities(\n environment: Readonly<Record<string, string | undefined>>,\n): Promise<EditableArtifactNativeMaterializerCapabilities> {\n const loaded = await loadRuntime(environment);\n return editableArtifactMaterializerCapabilitiesForRuntime(\n loaded.runtime,\n loaded.location.artifactTool.packageVersion,\n );\n}\n\nasync function materialize(\n environment: Readonly<Record<string, string | undefined>>,\n): Promise<void> {\n let manifest: MaterializationManifest;\n let source: Uint8Array;\n try {\n const reader = new InputReader(process.stdin);\n assertBytes(await reader.readExactly(INPUT_MAGIC.byteLength), INPUT_MAGIC, \"input protocol\");\n const header = await reader.readExactly(12);\n const headerView = new DataView(header.buffer, header.byteOffset, header.byteLength);\n const metadataLength = headerView.getUint32(0, true);\n const sourceLength = safeU64(headerView, 4, \"source length\");\n if (metadataLength < 2 || metadataLength > MAX_METADATA_BYTES) throw invalidSource();\n if (sourceLength <= 0 || sourceLength > MAX_SOURCE_BYTES) throw unsupported();\n manifest = decodeManifest(await reader.readExactly(metadataLength));\n if (sourceLength !== manifest.sourceByteSize) throw invalidSource();\n source = await reader.readExactly(sourceLength);\n await reader.assertEof();\n if (sha256(source) !== manifest.sourceContentHash) throw invalidSource();\n } catch (error) {\n throw classifyInvalidSource(error, \"input_framing\");\n }\n\n const loaded = await loadRuntime(environment);\n const capabilities = editableArtifactMaterializerCapabilitiesForRuntime(\n loaded.runtime,\n loaded.location.artifactTool.packageVersion,\n );\n assertManifestCompatibility(manifest, capabilities);\n if (manifest.modality !== \"spreadsheet\" || manifest.format !== \"xlsx\") throw unsupported();\n\n const projected = projectSpreadsheet(loaded.runtime, source, manifest);\n const outputBlob = await SpreadsheetXlsxCodec.exportXlsx(projected.workbook, {\n unsupportedContent: \"error\",\n fileName: \"workbook.xlsx\",\n });\n const output = new Uint8Array(await outputBlob.arrayBuffer());\n if (output.byteLength <= 0 || output.byteLength > MAX_OUTPUT_BYTES) throw unsupported();\n // Export/import equivalence is checked here for early failure and again by a\n // distinct verifier process after immutable object publication.\n const imported = await SpreadsheetXlsxCodec.importXlsx(output, { unsupportedContent: \"error\" });\n if (semanticHashForWorkbook(imported) !== projected.semanticHash) throw unsupported();\n\n const metadata = canonicalBytes({\n byteSize: output.byteLength,\n codecId: manifest.codecId,\n codecVersion: manifest.codecVersion,\n contentHash: sha256(output),\n fontRegistryHash: manifest.fontRegistryHash,\n format: manifest.format,\n headSequence: manifest.targetHeadSequence,\n kernelVersion: manifest.kernelVersion,\n mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n policyHash: manifest.policyHash,\n protocol: \"OGAMR001\",\n semanticHash: projected.semanticHash,\n stateHash: manifest.stateHash,\n });\n await writeFrame(OUTPUT_MAGIC, metadata, output);\n}\n\nasync function verifyMaterialization(\n environment: Readonly<Record<string, string | undefined>>,\n): Promise<void> {\n const reader = new InputReader(process.stdin);\n assertBytes(\n await reader.readExactly(VERIFY_INPUT_MAGIC.byteLength),\n VERIFY_INPUT_MAGIC,\n \"verification protocol\",\n );\n const header = await reader.readExactly(12);\n const view = new DataView(header.buffer, header.byteOffset, header.byteLength);\n const metadataLength = view.getUint32(0, true);\n const outputLength = safeU64(view, 4, \"verification output length\");\n if (metadataLength < 2 || metadataLength > MAX_METADATA_BYTES) throw invalidSource();\n if (outputLength <= 0 || outputLength > MAX_OUTPUT_BYTES) throw unsupported();\n const metadata = decodeVerificationManifest(await reader.readExactly(metadataLength));\n const output = await reader.readExactly(outputLength);\n await reader.assertEof();\n const loaded = await loadCapabilities(environment);\n if (\n metadata.format !== \"xlsx\" ||\n metadata.codecId !== XLSX_CODEC_ID ||\n loaded.codecVersions[XLSX_CODEC_ID] !== metadata.codecVersion\n ) {\n throw unsupported();\n }\n let semanticHash: string;\n try {\n const imported = await SpreadsheetXlsxCodec.importXlsx(output, { unsupportedContent: \"error\" });\n semanticHash = semanticHashForWorkbook(imported);\n } catch {\n throw invalidOutput();\n }\n if (semanticHash !== metadata.expectedSemanticHash) throw invalidOutput();\n await writeFrame(\n VERIFY_OUTPUT_MAGIC,\n canonicalBytes({ protocol: \"OGAVR001\", semanticHash }),\n new Uint8Array(0),\n );\n}\n\nfunction projectSpreadsheet(\n runtime: ArtifactKernelRuntime,\n source: Uint8Array,\n manifest: MaterializationManifest,\n): ProjectedWorkbook {\n let session: NativeSpreadsheetSession;\n try {\n session = NativeSpreadsheetSession.open(runtime, source);\n } catch {\n throw invalidSource(\"snapshot_open\");\n }\n try {\n if (session.stateHash() !== manifest.stateHash) throw invalidSource(\"state_mismatch\");\n const metadataLimit = Math.min(\n session.capabilities.maxQueryResponseBytes,\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n );\n const metadata = decodeSpreadsheetMetadataKernelProjection(\n session.query(\n encodeSpreadsheetMetadataKernelQuery({\n maxSheets: Math.max(1, session.capabilities.maxMetadataSheets),\n maxBytes: metadataLimit,\n }),\n ),\n {\n maxSheets: Math.max(1, session.capabilities.maxMetadataSheets),\n maxBytes: metadataLimit,\n },\n );\n if (\n metadata.modeledFeatures.dimensions !== false ||\n metadata.modeledFeatures.hidden !== false ||\n metadata.modeledFeatures.merges !== false\n ) {\n throw unsupported();\n }\n let projectedRectangleCells = 0;\n const semanticSheets: Array<{ name: string; cells: SemanticCell[] }> = [];\n for (const sheet of metadata.sheets) {\n const cells: SemanticCell[] = [];\n if (sheet.usedBounds) {\n const rows = sheet.usedBounds.endRow - sheet.usedBounds.startRow + 1;\n const columns = sheet.usedBounds.endColumn - sheet.usedBounds.startColumn + 1;\n const area = rows * columns;\n if (!Number.isSafeInteger(area) || area <= 0) throw invalidSource();\n projectedRectangleCells += area;\n if (projectedRectangleCells > MAX_PROJECTED_RECTANGLE_CELLS) throw unsupported();\n for (\n let row = sheet.usedBounds.startRow;\n row <= sheet.usedBounds.endRow;\n row += VIEWPORT_EDGE\n ) {\n const rowCount = Math.min(VIEWPORT_EDGE, sheet.usedBounds.endRow - row + 1);\n for (\n let column = sheet.usedBounds.startColumn;\n column <= sheet.usedBounds.endColumn;\n column += VIEWPORT_EDGE\n ) {\n const columnCount = Math.min(VIEWPORT_EDGE, sheet.usedBounds.endColumn - column + 1);\n const maxCells = rowCount * columnCount;\n if (maxCells > SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS) throw unsupported();\n const query = {\n sheetId: sheet.sheetId,\n startRow: row,\n startColumn: column,\n rowCount,\n columnCount,\n maxCells,\n maxBytes: metadataLimit,\n } as const;\n const viewport = decodeSpreadsheetViewportKernelProjection(\n session.query(encodeSpreadsheetViewportKernelQuery(query)),\n query,\n );\n for (const cell of viewport.cells) {\n assertRepresentableValue(cell.value);\n cells.push({\n row: cell.row,\n column: cell.column,\n formula: cell.formula,\n value: cell.value,\n });\n }\n }\n }\n }\n cells.sort((left, right) => left.row - right.row || left.column - right.column);\n semanticSheets.push({ name: sheet.name, cells });\n }\n const semantic: SemanticWorkbook = Object.freeze({ version: 1, sheets: semanticSheets });\n const workbook = Workbook.fromJSON(toSerializedWorkbook(semantic));\n const semanticHash = sha256(canonicalBytes(semantic));\n // Recalculation through the host projection must agree with every native\n // formula result before the Office codec is allowed to run.\n if (semanticHashForWorkbook(workbook) !== semanticHash) throw unsupported();\n return Object.freeze({ workbook, semanticHash });\n } finally {\n session.dispose();\n }\n}\n\nfunction toSerializedWorkbook(semantic: SemanticWorkbook): SerializedWorkbook {\n return {\n version: 1,\n worksheets: semantic.sheets.map((sheet, index) => ({\n id: `ws/native-${index + 1}`,\n name: sheet.name,\n showGridLines: true,\n freezePanes: { rows: 0, columns: 0 },\n cells: sheet.cells.map((cell) => ({\n row: cell.row,\n col: cell.column,\n value: cell.formula ? null : hostValue(cell.value),\n formula: cell.formula,\n format: {},\n })),\n merges: [],\n columnWidths: [],\n rowHeights: [],\n tables: [],\n charts: [],\n sparklines: [],\n dataValidations: [],\n conditionalFormattings: [],\n images: [],\n })),\n comments: [],\n } as SerializedWorkbook;\n}\n\nfunction semanticHashForWorkbook(workbook: Workbook): string {\n const sheets = workbook.worksheets.items.map((sheet) => {\n const cells: SemanticCell[] = [];\n for (const { row, col, data } of sheet.cellEntries()) {\n const value = data.formula ? workbook.valueAt(sheet, { row, col }) : data.value;\n cells.push({\n row,\n column: col,\n formula: data.formula,\n value: semanticValue(value, data.formula !== null),\n });\n }\n cells.sort((left, right) => left.row - right.row || left.column - right.column);\n return { name: sheet.name, cells };\n });\n return sha256(canonicalBytes({ version: 1, sheets } satisfies SemanticWorkbook));\n}\n\nfunction semanticValue(value: unknown, formula: boolean): SpreadsheetArtifactProjectedCellValue {\n if (value === null || value === undefined) return { kind: \"empty\" };\n if (typeof value === \"boolean\") return { kind: \"boolean\", value };\n if (typeof value === \"number\" && Number.isFinite(value)) return { kind: \"number\", value };\n if (value instanceof Date) {\n const milliseconds = Date.prototype.getTime.call(value);\n if (!Number.isSafeInteger(milliseconds)) throw unsupported();\n return { kind: \"date\", value: new Date(milliseconds).toISOString() };\n }\n if (typeof value === \"string\") {\n if (formula) {\n const error = FORMULA_ERROR_TO_NATIVE[value];\n if (error) return { kind: \"error\", value: error };\n if (value === \"#CYCLE!\") return { kind: \"error\", value: { custom: value } };\n }\n return { kind: \"text\", value };\n }\n throw unsupported();\n}\n\nfunction hostValue(\n value: SpreadsheetArtifactProjectedCellValue,\n): string | number | boolean | Date | null {\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 projected = NATIVE_ERROR_TO_FORMULA[value.value];\n if (!projected) throw unsupported();\n return projected;\n }\n }\n}\n\nfunction assertRepresentableValue(value: SpreadsheetArtifactProjectedCellValue): void {\n hostValue(value);\n}\n\nconst NATIVE_ERROR_TO_FORMULA: Readonly<Record<string, string>> = Object.freeze({\n divide_by_zero: \"#DIV/0!\",\n value: \"#VALUE!\",\n reference: \"#REF!\",\n name: \"#NAME?\",\n number: \"#NUM!\",\n not_available: \"#N/A\",\n});\nconst FORMULA_ERROR_TO_NATIVE: Readonly<Record<string, SpreadsheetArtifactFormulaError>> =\n Object.freeze({\n \"#DIV/0!\": \"divide_by_zero\",\n \"#VALUE!\": \"value\",\n \"#REF!\": \"reference\",\n \"#NAME?\": \"name\",\n \"#NUM!\": \"number\",\n \"#N/A\": \"not_available\",\n });\n\n/**\n * Exact producer profile derived from the same verified native runtime used by\n * the materializer child. The API uses this rather than accepting job identity\n * facts from clients.\n */\nexport function editableArtifactMaterializerCapabilitiesForRuntime(\n runtime: ArtifactKernelRuntime,\n packageVersion: string,\n): EditableArtifactNativeMaterializerCapabilities {\n return Object.freeze({\n protocol: \"OGAMC001\",\n runtimeKind: \"native\",\n runtimeTarget: runtime.target,\n kernelVersion: runtime.buildIdentity,\n codecVersions: Object.freeze({ [XLSX_CODEC_ID]: codecVersion(packageVersion) }),\n fontRegistryHash: EMPTY_FONT_REGISTRY_HASH,\n policyHash: POLICY_HASH,\n maxOutputBytes: MAX_OUTPUT_BYTES,\n supportedModelSchemaVersions: Object.freeze([\n SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n ] as const),\n supportedOperationProtocolVersions: Object.freeze([\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n ] as const),\n supportedSnapshotProtocolVersions: Object.freeze([\n SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n ] as const),\n });\n}\n\nfunction assertManifestCompatibility(\n manifest: MaterializationManifest,\n capabilities: EditableArtifactNativeMaterializerCapabilities,\n): void {\n if (\n manifest.modelSchemaVersion !== SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION ||\n manifest.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION ||\n manifest.snapshotProtocolVersion !== SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION ||\n manifest.kernelVersion !== capabilities.kernelVersion ||\n manifest.codecVersion !==\n (capabilities.codecVersions as Readonly<Record<string, string>>)[manifest.codecId] ||\n manifest.fontRegistryHash !== capabilities.fontRegistryHash ||\n manifest.policyHash !== capabilities.policyHash ||\n Object.keys(manifest.normalizedOptions).length !== 0\n ) {\n throw incompatible();\n }\n}\n\nfunction decodeManifest(value: Uint8Array): MaterializationManifest {\n const record = strictCanonicalRecord(value, [\n \"artifactId\",\n \"codecId\",\n \"codecVersion\",\n \"fontRegistryHash\",\n \"format\",\n \"inputSnapshotId\",\n \"jobId\",\n \"kernelVersion\",\n \"modality\",\n \"modelSchemaVersion\",\n \"normalizedOptions\",\n \"operationProtocolVersion\",\n \"optionsHash\",\n \"policyHash\",\n \"protocol\",\n \"snapshotProtocolVersion\",\n \"sourceByteSize\",\n \"sourceContentHash\",\n \"stateHash\",\n \"targetHeadSequence\",\n \"versionId\",\n ]);\n if (\n record.protocol !== \"OGAMJ001\" ||\n !positiveInteger(record.sourceByteSize) ||\n !positiveInteger(record.targetHeadSequence) ||\n !isHash(record.sourceContentHash) ||\n !isHash(record.stateHash) ||\n !isHash(record.optionsHash) ||\n !isHash(record.fontRegistryHash) ||\n !isHash(record.policyHash) ||\n !plainRecord(record.normalizedOptions)\n ) {\n throw invalidSource();\n }\n return record as MaterializationManifest;\n}\n\nfunction decodeVerificationManifest(value: Uint8Array): Readonly<{\n protocol: \"OGAVJ001\";\n format: string;\n codecId: string;\n codecVersion: string;\n expectedSemanticHash: string;\n}> {\n const record = strictCanonicalRecord(value, [\n \"codecId\",\n \"codecVersion\",\n \"expectedSemanticHash\",\n \"format\",\n \"protocol\",\n ]);\n if (record.protocol !== \"OGAVJ001\" || !isHash(record.expectedSemanticHash)) {\n throw invalidSource();\n }\n return record as never;\n}\n\nfunction strictCanonicalRecord(\n value: Uint8Array,\n keys: readonly string[],\n): Record<string, unknown> {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(value);\n const parsed = JSON.parse(text) as unknown;\n if (!plainRecord(parsed) || JSON.stringify(parsed) !== text) throw invalidSource();\n if (Object.keys(parsed).sort().join(\"\\0\") !== [...keys].sort().join(\"\\0\")) throw invalidSource();\n return parsed;\n}\n\nasync function writeTypedError(\n code: string,\n diagnosticSubcode?: NativeSourceDiagnosticSubcode,\n): Promise<void> {\n await writeFrame(\n ERROR_MAGIC,\n canonicalBytes({\n code,\n protocol: \"OGAMERR1\",\n ...(diagnosticSubcode ? { subcode: diagnosticSubcode } : {}),\n }),\n new Uint8Array(0),\n );\n}\n\nasync function writeFrame(\n magic: Uint8Array,\n metadata: Uint8Array,\n payload: Uint8Array,\n): Promise<void> {\n const header = new Uint8Array(12);\n const view = new DataView(header.buffer);\n view.setUint32(0, metadata.byteLength, true);\n view.setBigUint64(4, BigInt(payload.byteLength), true);\n await writeStdout(magic);\n await writeStdout(header);\n await writeStdout(metadata);\n for (let offset = 0; offset < payload.byteLength; offset += 1024 * 1024) {\n await writeStdout(payload.subarray(offset, Math.min(payload.byteLength, offset + 1024 * 1024)));\n }\n}\n\nasync function writeStdout(value: Uint8Array): Promise<void> {\n if (!process.stdout.write(value)) await once(process.stdout, \"drain\");\n}\n\nclass InputReader {\n readonly #iterator: AsyncIterator<Buffer | string>;\n #buffer = new Uint8Array(0);\n #done = false;\n\n constructor(stream: NodeJS.ReadableStream & AsyncIterable<Buffer | string>) {\n this.#iterator = stream[Symbol.asyncIterator]();\n }\n\n async readExactly(length: number): Promise<Uint8Array> {\n if (!Number.isSafeInteger(length) || length < 0 || length > MAX_SOURCE_BYTES)\n throw invalidSource();\n const result = new Uint8Array(length);\n let offset = 0;\n while (offset < length) {\n if (this.#buffer.byteLength === 0) await this.#fill();\n if (this.#buffer.byteLength === 0) throw invalidSource();\n const count = Math.min(length - offset, this.#buffer.byteLength);\n result.set(this.#buffer.subarray(0, count), offset);\n this.#buffer = this.#buffer.subarray(count);\n offset += count;\n }\n return result;\n }\n\n async assertEof(): Promise<void> {\n if (this.#buffer.byteLength > 0) throw invalidSource();\n if (!this.#done) await this.#fill();\n if (!this.#done || this.#buffer.byteLength > 0) throw invalidSource();\n }\n\n async #fill(): Promise<void> {\n const next = await this.#iterator.next();\n if (next.done) {\n this.#done = true;\n return;\n }\n if (typeof next.value === \"string\") throw invalidSource();\n this.#buffer = new Uint8Array(\n next.value.buffer,\n next.value.byteOffset,\n next.value.byteLength,\n ).slice();\n }\n}\n\nfunction codecVersion(packageVersion: string): string {\n return `xlsx-v1@${packageVersion}`;\n}\n\nfunction canonicalBytes(value: unknown): Uint8Array {\n return bytes(JSON.stringify(value));\n}\n\nfunction bytes(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\nfunction sha256(value: Uint8Array): string {\n return `sha256:${createHash(\"sha256\").update(value).digest(\"hex\")}`;\n}\n\nfunction safeU64(view: DataView, offset: number, label: string): number {\n const value = view.getBigUint64(offset, true);\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) throw new Error(`${label} exceeds safe integer`);\n return Number(value);\n}\n\nfunction assertBytes(actual: Uint8Array, expected: Uint8Array, label: string): void {\n if (\n actual.byteLength !== expected.byteLength ||\n !actual.every((byte, index) => byte === expected[index])\n ) {\n throw new Error(`${label} is invalid`);\n }\n}\n\nfunction plainRecord(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nfunction positiveInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction isHash(value: unknown): value is string {\n return typeof value === \"string\" && /^sha256:[0-9a-f]{64}$/u.test(value);\n}\n\nclass MaterializerCliError extends Error {\n readonly code:\n | \"unsupported_semantics\"\n | \"source_identity_mismatch\"\n | \"kernel_incompatible\"\n | \"output_verification_failed\";\n\n constructor(\n code: MaterializerCliError[\"code\"],\n readonly diagnosticSubcode?: NativeSourceDiagnosticSubcode,\n ) {\n super(code);\n this.name = \"MaterializerCliError\";\n this.code = code;\n }\n}\n\nfunction unsupported(): MaterializerCliError {\n return new MaterializerCliError(\"unsupported_semantics\");\n}\nfunction invalidSource(diagnosticSubcode?: NativeSourceDiagnosticSubcode): MaterializerCliError {\n return new MaterializerCliError(\"source_identity_mismatch\", diagnosticSubcode);\n}\nfunction incompatible(): MaterializerCliError {\n return new MaterializerCliError(\"kernel_incompatible\");\n}\nfunction invalidOutput(): MaterializerCliError {\n return new MaterializerCliError(\"output_verification_failed\");\n}\n\nfunction classifyInvalidSource(\n error: unknown,\n diagnosticSubcode: NativeSourceDiagnosticSubcode,\n): unknown {\n return error instanceof MaterializerCliError && error.code === \"source_identity_mismatch\"\n ? invalidSource(error.diagnosticSubcode ?? diagnosticSubcode)\n : error;\n}\n\nasync function loadRuntime(\n environment: Readonly<Record<string, string | undefined>>,\n): Promise<Awaited<ReturnType<typeof loadConfiguredArtifactKernelRuntime>>> {\n try {\n return await loadConfiguredArtifactKernelRuntime(environment);\n } catch {\n throw incompatible();\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
disposeArtifact,
|
|
10
10
|
getArtifactCompositeDiagnostics,
|
|
11
11
|
getConfiguredArtifactRuntime
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-QA3NXBAG.js";
|
|
13
13
|
import "./chunk-HTJBLBDE.js";
|
|
14
14
|
import "./chunk-VOJHMSM3.js";
|
|
15
15
|
import {
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
TrackedChange,
|
|
57
57
|
TrackedChanges
|
|
58
58
|
} from "./chunk-66CT2ZRP.js";
|
|
59
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-LVPFJH2Z.js";
|
|
60
60
|
import {
|
|
61
61
|
SpreadsheetFidelityError,
|
|
62
62
|
SpreadsheetSecurityError
|
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
Worksheet,
|
|
88
88
|
WorksheetCollection,
|
|
89
89
|
validateSerializedWorkbook
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-SYFNJGH5.js";
|
|
91
91
|
import "./chunk-4FRFNNBM.js";
|
|
92
92
|
import "./chunk-FGZM4FQ6.js";
|
|
93
93
|
import "./chunk-Q2FFHEY7.js";
|
|
@@ -99,7 +99,7 @@ import {
|
|
|
99
99
|
import {
|
|
100
100
|
FileBlob
|
|
101
101
|
} from "./chunk-4BSENMAE.js";
|
|
102
|
-
import "./chunk-
|
|
102
|
+
import "./chunk-4YYYUZQH.js";
|
|
103
103
|
import "./chunk-VUNV25KB.js";
|
|
104
104
|
export {
|
|
105
105
|
ArtifactConflictError,
|
package/dist/kernel.d.ts
CHANGED
|
@@ -80,22 +80,3 @@ export declare class ArtifactKernelRegistry {
|
|
|
80
80
|
select(modality: ArtifactModality, required?: Partial<Pick<ArtifactKernelCapabilities, "calculate" | "layout" | "collaboration">>, order?: readonly ArtifactKernelKind[]): ArtifactKernelSelection;
|
|
81
81
|
available(): readonly ArtifactKernel[];
|
|
82
82
|
}
|
|
83
|
-
export declare const ARTIFACT_OPERATION_MAX_BYTES: number;
|
|
84
|
-
export declare const ARTIFACT_OPERATION_MAX_COMMANDS = 10000;
|
|
85
|
-
export declare const ARTIFACT_OPERATION_MAX_VECTOR_ACTORS = 1024;
|
|
86
|
-
export declare const ARTIFACT_OPERATION_MAX_STRING_BYTES: number;
|
|
87
|
-
export declare const ARTIFACT_OPERATION_MAX_JSON_DEPTH = 64;
|
|
88
|
-
export declare const ARTIFACT_OPERATION_MAX_JSON_NODES = 100000;
|
|
89
|
-
/**
|
|
90
|
-
* Deterministic codec retained only for historical TypeScript conformance
|
|
91
|
-
* fixtures.
|
|
92
|
-
*
|
|
93
|
-
* @deprecated OGAR duplicates authored identity/causality and must never be
|
|
94
|
-
* persisted, submitted, or lowered by a production runtime. Use the canonical
|
|
95
|
-
* OGATX001 envelope with an identity-free OGASC001 command payload from
|
|
96
|
-
* `@opengeni/contracts/editable-artifacts`.
|
|
97
|
-
*/
|
|
98
|
-
export declare const ArtifactCommandBatchCodec: {
|
|
99
|
-
encode(batch: ArtifactCommandBatch): Uint8Array;
|
|
100
|
-
decode(bytes: Uint8Array): ArtifactCommandBatch;
|
|
101
|
-
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runArtifactMaterializerCli
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-XAZTHG6W.js";
|
|
5
|
+
import "./chunk-LMLPFF3S.js";
|
|
6
|
+
import "./chunk-LVPFJH2Z.js";
|
|
7
|
+
import "./chunk-OVXX4G35.js";
|
|
8
8
|
import "./chunk-J6N7IR44.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-SYFNJGH5.js";
|
|
10
10
|
import "./chunk-4FRFNNBM.js";
|
|
11
11
|
import "./chunk-FGZM4FQ6.js";
|
|
12
12
|
import "./chunk-72SYDU4O.js";
|
|
13
13
|
import "./chunk-Q2FFHEY7.js";
|
|
14
14
|
import "./chunk-O24KTEGP.js";
|
|
15
15
|
import "./chunk-4BSENMAE.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-4XJE7NRA.js";
|
|
17
|
+
import "./chunk-4YYYUZQH.js";
|
|
18
18
|
import "./chunk-VUNV25KB.js";
|
|
19
19
|
|
|
20
20
|
// src/materializer-cli-entry.ts
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { COMMITTED_TRANSACTION_PROTOCOL_VERSION, SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION, SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION } from "@opengeni/contracts/editable-artifact-versions";
|
|
2
3
|
import type { ArtifactKernelRuntime } from "./runtime.js";
|
|
3
4
|
declare const XLSX_CODEC_ID = "opengeni.xlsx";
|
|
4
5
|
export type EditableArtifactNativeMaterializerCapabilities = Readonly<{
|
|
@@ -10,9 +11,9 @@ export type EditableArtifactNativeMaterializerCapabilities = Readonly<{
|
|
|
10
11
|
fontRegistryHash: string;
|
|
11
12
|
policyHash: string;
|
|
12
13
|
maxOutputBytes: number;
|
|
13
|
-
supportedModelSchemaVersions: readonly [
|
|
14
|
-
supportedOperationProtocolVersions: readonly [
|
|
15
|
-
supportedSnapshotProtocolVersions: readonly [
|
|
14
|
+
supportedModelSchemaVersions: readonly [typeof SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION];
|
|
15
|
+
supportedOperationProtocolVersions: readonly [typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION];
|
|
16
|
+
supportedSnapshotProtocolVersions: readonly [typeof SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION];
|
|
16
17
|
}>;
|
|
17
18
|
export declare function runArtifactMaterializerCli(args: readonly string[], environment?: Readonly<Record<string, string | undefined>>): Promise<void>;
|
|
18
19
|
/**
|
package/dist/materializer-cli.js
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
import {
|
|
3
3
|
editableArtifactMaterializerCapabilitiesForRuntime,
|
|
4
4
|
runArtifactMaterializerCli
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-XAZTHG6W.js";
|
|
6
|
+
import "./chunk-LMLPFF3S.js";
|
|
7
|
+
import "./chunk-LVPFJH2Z.js";
|
|
8
|
+
import "./chunk-OVXX4G35.js";
|
|
9
9
|
import "./chunk-J6N7IR44.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-SYFNJGH5.js";
|
|
11
11
|
import "./chunk-4FRFNNBM.js";
|
|
12
12
|
import "./chunk-FGZM4FQ6.js";
|
|
13
13
|
import "./chunk-72SYDU4O.js";
|
|
14
14
|
import "./chunk-Q2FFHEY7.js";
|
|
15
15
|
import "./chunk-O24KTEGP.js";
|
|
16
16
|
import "./chunk-4BSENMAE.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-4XJE7NRA.js";
|
|
18
|
+
import "./chunk-4YYYUZQH.js";
|
|
19
19
|
import "./chunk-VUNV25KB.js";
|
|
20
20
|
export {
|
|
21
21
|
editableArtifactMaterializerCapabilitiesForRuntime,
|
package/dist/native.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export type NativeSpreadsheetAuthoredTransaction = Readonly<{
|
|
|
14
14
|
/** Exact canonical OGATX001 bytes passed to Rust. */
|
|
15
15
|
intentBytes: Uint8Array;
|
|
16
16
|
requestHash: string;
|
|
17
|
-
/** One whole canonical
|
|
17
|
+
/** One whole canonical OGACO002 transaction returned by Rust. */
|
|
18
18
|
committedTransactionBytes: Uint8Array;
|
|
19
19
|
}>;
|
|
20
20
|
export type CreateNativeArtifactSessionInput = Readonly<{
|
package/dist/native.js
CHANGED
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
encodeSpreadsheetArtifactCommandBatch,
|
|
12
12
|
openNativeArtifactSession,
|
|
13
13
|
spreadsheetSheetId
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-LVPFJH2Z.js";
|
|
15
|
+
import "./chunk-4YYYUZQH.js";
|
|
16
16
|
import "./chunk-VUNV25KB.js";
|
|
17
17
|
export {
|
|
18
18
|
NativeDocumentSession,
|
package/dist/office-import.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { COMMITTED_TRANSACTION_PROTOCOL_VERSION, DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION, PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION, SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION, SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION } from "@opengeni/contracts/editable-artifact-versions";
|
|
1
2
|
export type ArtifactOfficeModality = "spreadsheet" | "document" | "presentation";
|
|
2
3
|
export type ArtifactOfficeMimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/vnd.openxmlformats-officedocument.presentationml.presentation";
|
|
3
4
|
export type PreparedArtifactOfficeImport = Readonly<{
|
|
@@ -13,21 +14,30 @@ export type PreparedArtifactOfficeImport = Readonly<{
|
|
|
13
14
|
byteSize: number;
|
|
14
15
|
contentHash: `sha256:${string}`;
|
|
15
16
|
stateHash: `sha256:${string}`;
|
|
16
|
-
modelSchemaVersion:
|
|
17
|
+
modelSchemaVersion: typeof SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION;
|
|
17
18
|
kernelVersion: string;
|
|
18
19
|
coveredCausalFrontier: readonly Readonly<{
|
|
19
20
|
replicaId: string;
|
|
20
21
|
counter: number;
|
|
21
22
|
}>[];
|
|
22
|
-
operationProtocolVersion:
|
|
23
|
-
crdtStateVersion:
|
|
23
|
+
operationProtocolVersion: typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION;
|
|
24
|
+
crdtStateVersion: typeof SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION;
|
|
24
25
|
}> | Readonly<{
|
|
25
|
-
modality: "document"
|
|
26
|
+
modality: "document";
|
|
26
27
|
bytes: Uint8Array;
|
|
27
28
|
byteSize: number;
|
|
28
29
|
contentHash: `sha256:${string}`;
|
|
29
30
|
stateHash: `sha256:${string}`;
|
|
30
|
-
modelSchemaVersion:
|
|
31
|
+
modelSchemaVersion: typeof DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION;
|
|
32
|
+
kernelVersion: string;
|
|
33
|
+
nativeRevision: number;
|
|
34
|
+
}> | Readonly<{
|
|
35
|
+
modality: "presentation";
|
|
36
|
+
bytes: Uint8Array;
|
|
37
|
+
byteSize: number;
|
|
38
|
+
contentHash: `sha256:${string}`;
|
|
39
|
+
stateHash: `sha256:${string}`;
|
|
40
|
+
modelSchemaVersion: typeof PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION;
|
|
31
41
|
kernelVersion: string;
|
|
32
42
|
nativeRevision: number;
|
|
33
43
|
}>;
|
package/dist/office-import.js
CHANGED
|
@@ -3,7 +3,17 @@ import "./chunk-VUNV25KB.js";
|
|
|
3
3
|
// src/office-import.ts
|
|
4
4
|
import { createHash } from "crypto";
|
|
5
5
|
import { decodeEditableArtifactCausalFrontier } from "@opengeni/contracts/editable-artifact-causal-frontier";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES,
|
|
8
|
+
currentEditableArtifactCompatibility
|
|
9
|
+
} from "@opengeni/contracts/editable-artifacts";
|
|
10
|
+
import {
|
|
11
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
12
|
+
DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
13
|
+
PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
14
|
+
SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
15
|
+
SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
|
|
16
|
+
} from "@opengeni/contracts/editable-artifact-versions";
|
|
7
17
|
var ArtifactOfficeSourceUnsupportedError = class extends Error {
|
|
8
18
|
constructor(extension, options) {
|
|
9
19
|
super(`The ${extension} source could not be imported`, options);
|
|
@@ -63,7 +73,8 @@ async function prepareArtifactOfficeImport(input) {
|
|
|
63
73
|
}
|
|
64
74
|
function validateSnapshot(value, modality, expectedRuntimeTarget, expectedKernelVersion) {
|
|
65
75
|
const snapshot = exactNamespace(value, "artifact snapshot");
|
|
66
|
-
|
|
76
|
+
const current = currentEditableArtifactCompatibility(modality);
|
|
77
|
+
if (snapshot.schemaVersion !== 1 || snapshot.modality !== modality || snapshot.runtimeTarget !== expectedRuntimeTarget || snapshot.kernelVersion !== expectedKernelVersion || snapshot.modelSchemaVersion !== current.modelSchemaVersion || snapshot.snapshotVersion !== current.snapshotVersion || !/^sha256:[0-9a-f]{64}$/u.test(snapshot.stateHash)) {
|
|
67
78
|
throw new TypeError("Imported snapshot differs from the verified native runtime boundary");
|
|
68
79
|
}
|
|
69
80
|
if (!(snapshot.snapshotBytes instanceof Uint8Array) || snapshot.snapshotBytes.byteLength < 1 || snapshot.snapshotBytes.byteLength > EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES) {
|
|
@@ -75,29 +86,35 @@ function validateSnapshot(value, modality, expectedRuntimeTarget, expectedKernel
|
|
|
75
86
|
byteSize: bytes.byteLength,
|
|
76
87
|
contentHash: sha256(bytes),
|
|
77
88
|
stateHash: snapshot.stateHash,
|
|
78
|
-
modelSchemaVersion: 1,
|
|
79
89
|
kernelVersion: snapshot.kernelVersion
|
|
80
90
|
};
|
|
81
91
|
if (snapshot.modality === "spreadsheet") {
|
|
82
|
-
if (!(snapshot.coveredCausalFrontierBytes instanceof Uint8Array) || snapshot.operationProtocolVersion !==
|
|
92
|
+
if (!(snapshot.coveredCausalFrontierBytes instanceof Uint8Array) || snapshot.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION || snapshot.crdtStateVersion !== SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION) {
|
|
83
93
|
throw new TypeError("Imported spreadsheet snapshot coverage is invalid");
|
|
84
94
|
}
|
|
85
95
|
return Object.freeze({
|
|
86
96
|
...common,
|
|
87
97
|
modality: "spreadsheet",
|
|
98
|
+
modelSchemaVersion: SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
88
99
|
coveredCausalFrontier: decodeEditableArtifactCausalFrontier(
|
|
89
100
|
snapshot.coveredCausalFrontierBytes
|
|
90
101
|
),
|
|
91
|
-
operationProtocolVersion:
|
|
92
|
-
crdtStateVersion:
|
|
102
|
+
operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
103
|
+
crdtStateVersion: SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
|
|
93
104
|
});
|
|
94
105
|
}
|
|
95
106
|
if (!Number.isSafeInteger(snapshot.nativeRevision) || snapshot.nativeRevision < 0) {
|
|
96
107
|
throw new TypeError("Imported serialized snapshot revision is invalid");
|
|
97
108
|
}
|
|
98
|
-
return Object.freeze({
|
|
109
|
+
return snapshot.modality === "document" ? Object.freeze({
|
|
99
110
|
...common,
|
|
100
|
-
modality:
|
|
111
|
+
modality: "document",
|
|
112
|
+
modelSchemaVersion: DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
113
|
+
nativeRevision: snapshot.nativeRevision
|
|
114
|
+
}) : Object.freeze({
|
|
115
|
+
...common,
|
|
116
|
+
modality: "presentation",
|
|
117
|
+
modelSchemaVersion: PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
101
118
|
nativeRevision: snapshot.nativeRevision
|
|
102
119
|
});
|
|
103
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/office-import.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { decodeEditableArtifactCausalFrontier } from \"@opengeni/contracts/editable-artifact-causal-frontier\";\nimport { EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES } from \"@opengeni/contracts/editable-artifacts\";\nimport type { ArtifactSnapshot } from \"./snapshot\";\n\nexport type ArtifactOfficeModality = \"spreadsheet\" | \"document\" | \"presentation\";\nexport type ArtifactOfficeMimeType =\n | \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n | \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n | \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n\nexport type PreparedArtifactOfficeImport = Readonly<{\n source: Readonly<{\n filename: string;\n byteSize: number;\n contentHash: `sha256:${string}`;\n mimeType: ArtifactOfficeMimeType;\n }>;\n snapshot:\n | Readonly<{\n modality: \"spreadsheet\";\n bytes: Uint8Array;\n byteSize: number;\n contentHash: `sha256:${string}`;\n stateHash: `sha256:${string}`;\n modelSchemaVersion: 1;\n kernelVersion: string;\n coveredCausalFrontier: readonly Readonly<{ replicaId: string; counter: number }>[];\n operationProtocolVersion: 1;\n crdtStateVersion: 1;\n }>\n | Readonly<{\n modality: \"document\" | \"presentation\";\n bytes: Uint8Array;\n byteSize: number;\n contentHash: `sha256:${string}`;\n stateHash: `sha256:${string}`;\n modelSchemaVersion: 1;\n kernelVersion: string;\n nativeRevision: number;\n }>;\n}>;\n\n/** The Office container is valid input bytes but cannot be modeled safely. */\nexport class ArtifactOfficeSourceUnsupportedError extends Error {\n constructor(extension: \".xlsx\" | \".docx\" | \".pptx\", options: ErrorOptions) {\n super(`The ${extension} source could not be imported`, options);\n this.name = \"ArtifactOfficeSourceUnsupportedError\";\n }\n}\n\n/** Import bounded Office bytes through the exact verified facade, without a local path. */\nexport async function prepareArtifactOfficeImport(\n input: Readonly<{\n facade: unknown;\n modality: ArtifactOfficeModality;\n filename: string;\n mimeType: ArtifactOfficeMimeType;\n bytes: Uint8Array;\n expectedRuntimeTarget: string;\n expectedKernelVersion: string;\n }>,\n): Promise<PreparedArtifactOfficeImport> {\n const expected = officeFormat(input.modality);\n if (input.mimeType !== expected.mimeType) {\n throw new TypeError(\"Office MIME type does not match artifact modality\");\n }\n if (!input.filename.toLowerCase().endsWith(expected.extension)) {\n throw new TypeError(`Office filename must end with ${expected.extension}`);\n }\n if (!(input.bytes instanceof Uint8Array) || input.bytes.byteLength < 1) {\n throw new TypeError(\"Office source bytes must be a nonempty Uint8Array\");\n }\n if (input.bytes.byteLength > EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES) {\n throw new RangeError(\"Office source exceeds the editable artifact product limit\");\n }\n const sourceBytes = Uint8Array.from(input.bytes);\n const module = exactModule(input.facade);\n const fileBlob = exactNamespace(module.FileBlob, \"FileBlob\");\n const fromBytes = exactFunction(fileBlob.fromBytes, \"FileBlob.fromBytes\");\n const createSnapshot = exactFunction(module.createArtifactSnapshot, \"createArtifactSnapshot\");\n const disposeArtifact = exactFunction(module.disposeArtifact, \"disposeArtifact\");\n const importer = officeImporter(module, input.modality);\n const blob = Reflect.apply(fromBytes, fileBlob, [\n sourceBytes,\n { name: input.filename, type: input.mimeType },\n ]);\n let artifact: unknown;\n try {\n artifact = await importer(blob);\n } catch (cause) {\n throw new ArtifactOfficeSourceUnsupportedError(expected.extension, { cause });\n }\n try {\n const snapshot = validateSnapshot(\n Reflect.apply(createSnapshot, module, [artifact]),\n input.modality,\n input.expectedRuntimeTarget,\n input.expectedKernelVersion,\n );\n return Object.freeze({\n source: Object.freeze({\n filename: input.filename,\n byteSize: sourceBytes.byteLength,\n contentHash: sha256(sourceBytes),\n mimeType: input.mimeType,\n }),\n snapshot,\n });\n } finally {\n Reflect.apply(disposeArtifact, module, [artifact]);\n }\n}\n\nfunction validateSnapshot(\n value: unknown,\n modality: ArtifactOfficeModality,\n expectedRuntimeTarget: string,\n expectedKernelVersion: string,\n): PreparedArtifactOfficeImport[\"snapshot\"] {\n const snapshot = exactNamespace(value, \"artifact snapshot\") as unknown as ArtifactSnapshot;\n if (\n snapshot.schemaVersion !== 1 ||\n snapshot.modality !== modality ||\n snapshot.runtimeTarget !== expectedRuntimeTarget ||\n snapshot.kernelVersion !== expectedKernelVersion ||\n snapshot.modelSchemaVersion !== 1 ||\n snapshot.snapshotVersion !== 1 ||\n !/^sha256:[0-9a-f]{64}$/u.test(snapshot.stateHash)\n ) {\n throw new TypeError(\"Imported snapshot differs from the verified native runtime boundary\");\n }\n if (\n !(snapshot.snapshotBytes instanceof Uint8Array) ||\n snapshot.snapshotBytes.byteLength < 1 ||\n snapshot.snapshotBytes.byteLength > EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES\n ) {\n throw new TypeError(\"Imported snapshot bytes are outside the product limit\");\n }\n const bytes = Uint8Array.from(snapshot.snapshotBytes);\n const common = {\n bytes,\n byteSize: bytes.byteLength,\n contentHash: sha256(bytes),\n stateHash: snapshot.stateHash as `sha256:${string}`,\n modelSchemaVersion: 1 as const,\n kernelVersion: snapshot.kernelVersion,\n };\n if (snapshot.modality === \"spreadsheet\") {\n if (\n !(snapshot.coveredCausalFrontierBytes instanceof Uint8Array) ||\n snapshot.operationProtocolVersion !== 1 ||\n snapshot.crdtStateVersion !== 1\n ) {\n throw new TypeError(\"Imported spreadsheet snapshot coverage is invalid\");\n }\n return Object.freeze({\n ...common,\n modality: \"spreadsheet\" as const,\n coveredCausalFrontier: decodeEditableArtifactCausalFrontier(\n snapshot.coveredCausalFrontierBytes,\n ),\n operationProtocolVersion: 1 as const,\n crdtStateVersion: 1 as const,\n });\n }\n if (!Number.isSafeInteger(snapshot.nativeRevision) || snapshot.nativeRevision < 0) {\n throw new TypeError(\"Imported serialized snapshot revision is invalid\");\n }\n return Object.freeze({\n ...common,\n modality: snapshot.modality,\n nativeRevision: snapshot.nativeRevision,\n });\n}\n\nfunction officeImporter(\n module: Record<string, unknown>,\n modality: ArtifactOfficeModality,\n): (input: unknown) => Promise<unknown> {\n const namespaceName =\n modality === \"spreadsheet\"\n ? \"SpreadsheetFile\"\n : modality === \"document\"\n ? \"DocumentFile\"\n : \"PresentationFile\";\n const methodName =\n modality === \"spreadsheet\"\n ? \"importXlsx\"\n : modality === \"document\"\n ? \"importDocx\"\n : \"importPptx\";\n const namespace = exactNamespace(module[namespaceName], namespaceName);\n const method = exactFunction(namespace[methodName], `${namespaceName}.${methodName}`);\n return async (blob) => await Reflect.apply(method, namespace, [blob]);\n}\n\nfunction officeFormat(modality: ArtifactOfficeModality): Readonly<{\n extension: \".xlsx\" | \".docx\" | \".pptx\";\n mimeType: ArtifactOfficeMimeType;\n}> {\n if (modality === \"spreadsheet\") {\n return {\n extension: \".xlsx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n };\n }\n if (modality === \"document\") {\n return {\n extension: \".docx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n };\n }\n return {\n extension: \".pptx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n };\n}\n\nfunction exactModule(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Verified artifact facade must be a module namespace\");\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactNamespace(value: unknown, label: string): Record<string, unknown> {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null) {\n throw new TypeError(`Verified artifact facade is missing ${label}`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactFunction(value: unknown, label: string): (...args: unknown[]) => unknown {\n if (typeof value !== \"function\") {\n throw new TypeError(`Verified artifact facade is missing ${label}()`);\n }\n return value as (...args: unknown[]) => unknown;\n}\n\nfunction sha256(bytes: Uint8Array): `sha256:${string}` {\n return `sha256:${createHash(\"sha256\").update(bytes).digest(\"hex\")}`;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/office-import.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { decodeEditableArtifactCausalFrontier } from \"@opengeni/contracts/editable-artifact-causal-frontier\";\nimport {\n EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES,\n currentEditableArtifactCompatibility,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport {\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,\n PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,\n SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n} from \"@opengeni/contracts/editable-artifact-versions\";\nimport type { ArtifactSnapshot } from \"./snapshot\";\n\nexport type ArtifactOfficeModality = \"spreadsheet\" | \"document\" | \"presentation\";\nexport type ArtifactOfficeMimeType =\n | \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n | \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n | \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n\nexport type PreparedArtifactOfficeImport = Readonly<{\n source: Readonly<{\n filename: string;\n byteSize: number;\n contentHash: `sha256:${string}`;\n mimeType: ArtifactOfficeMimeType;\n }>;\n snapshot:\n | Readonly<{\n modality: \"spreadsheet\";\n bytes: Uint8Array;\n byteSize: number;\n contentHash: `sha256:${string}`;\n stateHash: `sha256:${string}`;\n modelSchemaVersion: typeof SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION;\n kernelVersion: string;\n coveredCausalFrontier: readonly Readonly<{ replicaId: string; counter: number }>[];\n operationProtocolVersion: typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION;\n crdtStateVersion: typeof SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION;\n }>\n | Readonly<{\n modality: \"document\";\n bytes: Uint8Array;\n byteSize: number;\n contentHash: `sha256:${string}`;\n stateHash: `sha256:${string}`;\n modelSchemaVersion: typeof DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION;\n kernelVersion: string;\n nativeRevision: number;\n }>\n | Readonly<{\n modality: \"presentation\";\n bytes: Uint8Array;\n byteSize: number;\n contentHash: `sha256:${string}`;\n stateHash: `sha256:${string}`;\n modelSchemaVersion: typeof PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION;\n kernelVersion: string;\n nativeRevision: number;\n }>;\n}>;\n\n/** The Office container is valid input bytes but cannot be modeled safely. */\nexport class ArtifactOfficeSourceUnsupportedError extends Error {\n constructor(extension: \".xlsx\" | \".docx\" | \".pptx\", options: ErrorOptions) {\n super(`The ${extension} source could not be imported`, options);\n this.name = \"ArtifactOfficeSourceUnsupportedError\";\n }\n}\n\n/** Import bounded Office bytes through the exact verified facade, without a local path. */\nexport async function prepareArtifactOfficeImport(\n input: Readonly<{\n facade: unknown;\n modality: ArtifactOfficeModality;\n filename: string;\n mimeType: ArtifactOfficeMimeType;\n bytes: Uint8Array;\n expectedRuntimeTarget: string;\n expectedKernelVersion: string;\n }>,\n): Promise<PreparedArtifactOfficeImport> {\n const expected = officeFormat(input.modality);\n if (input.mimeType !== expected.mimeType) {\n throw new TypeError(\"Office MIME type does not match artifact modality\");\n }\n if (!input.filename.toLowerCase().endsWith(expected.extension)) {\n throw new TypeError(`Office filename must end with ${expected.extension}`);\n }\n if (!(input.bytes instanceof Uint8Array) || input.bytes.byteLength < 1) {\n throw new TypeError(\"Office source bytes must be a nonempty Uint8Array\");\n }\n if (input.bytes.byteLength > EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES) {\n throw new RangeError(\"Office source exceeds the editable artifact product limit\");\n }\n const sourceBytes = Uint8Array.from(input.bytes);\n const module = exactModule(input.facade);\n const fileBlob = exactNamespace(module.FileBlob, \"FileBlob\");\n const fromBytes = exactFunction(fileBlob.fromBytes, \"FileBlob.fromBytes\");\n const createSnapshot = exactFunction(module.createArtifactSnapshot, \"createArtifactSnapshot\");\n const disposeArtifact = exactFunction(module.disposeArtifact, \"disposeArtifact\");\n const importer = officeImporter(module, input.modality);\n const blob = Reflect.apply(fromBytes, fileBlob, [\n sourceBytes,\n { name: input.filename, type: input.mimeType },\n ]);\n let artifact: unknown;\n try {\n artifact = await importer(blob);\n } catch (cause) {\n throw new ArtifactOfficeSourceUnsupportedError(expected.extension, { cause });\n }\n try {\n const snapshot = validateSnapshot(\n Reflect.apply(createSnapshot, module, [artifact]),\n input.modality,\n input.expectedRuntimeTarget,\n input.expectedKernelVersion,\n );\n return Object.freeze({\n source: Object.freeze({\n filename: input.filename,\n byteSize: sourceBytes.byteLength,\n contentHash: sha256(sourceBytes),\n mimeType: input.mimeType,\n }),\n snapshot,\n });\n } finally {\n Reflect.apply(disposeArtifact, module, [artifact]);\n }\n}\n\nfunction validateSnapshot(\n value: unknown,\n modality: ArtifactOfficeModality,\n expectedRuntimeTarget: string,\n expectedKernelVersion: string,\n): PreparedArtifactOfficeImport[\"snapshot\"] {\n const snapshot = exactNamespace(value, \"artifact snapshot\") as unknown as ArtifactSnapshot;\n const current = currentEditableArtifactCompatibility(modality);\n if (\n snapshot.schemaVersion !== 1 ||\n snapshot.modality !== modality ||\n snapshot.runtimeTarget !== expectedRuntimeTarget ||\n snapshot.kernelVersion !== expectedKernelVersion ||\n snapshot.modelSchemaVersion !== current.modelSchemaVersion ||\n snapshot.snapshotVersion !== current.snapshotVersion ||\n !/^sha256:[0-9a-f]{64}$/u.test(snapshot.stateHash)\n ) {\n throw new TypeError(\"Imported snapshot differs from the verified native runtime boundary\");\n }\n if (\n !(snapshot.snapshotBytes instanceof Uint8Array) ||\n snapshot.snapshotBytes.byteLength < 1 ||\n snapshot.snapshotBytes.byteLength > EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES\n ) {\n throw new TypeError(\"Imported snapshot bytes are outside the product limit\");\n }\n const bytes = Uint8Array.from(snapshot.snapshotBytes);\n const common = {\n bytes,\n byteSize: bytes.byteLength,\n contentHash: sha256(bytes),\n stateHash: snapshot.stateHash as `sha256:${string}`,\n kernelVersion: snapshot.kernelVersion,\n };\n if (snapshot.modality === \"spreadsheet\") {\n if (\n !(snapshot.coveredCausalFrontierBytes instanceof Uint8Array) ||\n snapshot.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION ||\n snapshot.crdtStateVersion !== SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION\n ) {\n throw new TypeError(\"Imported spreadsheet snapshot coverage is invalid\");\n }\n return Object.freeze({\n ...common,\n modality: \"spreadsheet\" as const,\n modelSchemaVersion: SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n coveredCausalFrontier: decodeEditableArtifactCausalFrontier(\n snapshot.coveredCausalFrontierBytes,\n ),\n operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n crdtStateVersion: SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n });\n }\n if (!Number.isSafeInteger(snapshot.nativeRevision) || snapshot.nativeRevision < 0) {\n throw new TypeError(\"Imported serialized snapshot revision is invalid\");\n }\n return snapshot.modality === \"document\"\n ? Object.freeze({\n ...common,\n modality: \"document\" as const,\n modelSchemaVersion: DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,\n nativeRevision: snapshot.nativeRevision,\n })\n : Object.freeze({\n ...common,\n modality: \"presentation\" as const,\n modelSchemaVersion: PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,\n nativeRevision: snapshot.nativeRevision,\n });\n}\n\nfunction officeImporter(\n module: Record<string, unknown>,\n modality: ArtifactOfficeModality,\n): (input: unknown) => Promise<unknown> {\n const namespaceName =\n modality === \"spreadsheet\"\n ? \"SpreadsheetFile\"\n : modality === \"document\"\n ? \"DocumentFile\"\n : \"PresentationFile\";\n const methodName =\n modality === \"spreadsheet\"\n ? \"importXlsx\"\n : modality === \"document\"\n ? \"importDocx\"\n : \"importPptx\";\n const namespace = exactNamespace(module[namespaceName], namespaceName);\n const method = exactFunction(namespace[methodName], `${namespaceName}.${methodName}`);\n return async (blob) => await Reflect.apply(method, namespace, [blob]);\n}\n\nfunction officeFormat(modality: ArtifactOfficeModality): Readonly<{\n extension: \".xlsx\" | \".docx\" | \".pptx\";\n mimeType: ArtifactOfficeMimeType;\n}> {\n if (modality === \"spreadsheet\") {\n return {\n extension: \".xlsx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n };\n }\n if (modality === \"document\") {\n return {\n extension: \".docx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n };\n }\n return {\n extension: \".pptx\",\n mimeType: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n };\n}\n\nfunction exactModule(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Verified artifact facade must be a module namespace\");\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactNamespace(value: unknown, label: string): Record<string, unknown> {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null) {\n throw new TypeError(`Verified artifact facade is missing ${label}`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactFunction(value: unknown, label: string): (...args: unknown[]) => unknown {\n if (typeof value !== \"function\") {\n throw new TypeError(`Verified artifact facade is missing ${label}()`);\n }\n return value as (...args: unknown[]) => unknown;\n}\n\nfunction sha256(bytes: Uint8Array): `sha256:${string}` {\n return `sha256:${createHash(\"sha256\").update(bytes).digest(\"hex\")}`;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
disposeArtifact,
|
|
10
10
|
getArtifactCompositeDiagnostics,
|
|
11
11
|
getConfiguredArtifactRuntime
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-QA3NXBAG.js";
|
|
13
13
|
import "./chunk-HTJBLBDE.js";
|
|
14
14
|
import "./chunk-VOJHMSM3.js";
|
|
15
15
|
import {
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
TrackedChange,
|
|
57
57
|
TrackedChanges
|
|
58
58
|
} from "./chunk-66CT2ZRP.js";
|
|
59
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-LVPFJH2Z.js";
|
|
60
60
|
import {
|
|
61
61
|
SpreadsheetFidelityError,
|
|
62
62
|
SpreadsheetSecurityError
|
|
@@ -87,13 +87,13 @@ import {
|
|
|
87
87
|
Worksheet,
|
|
88
88
|
WorksheetCollection,
|
|
89
89
|
validateSerializedWorkbook
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-SYFNJGH5.js";
|
|
91
91
|
import "./chunk-4FRFNNBM.js";
|
|
92
92
|
import "./chunk-FGZM4FQ6.js";
|
|
93
93
|
import "./chunk-Q2FFHEY7.js";
|
|
94
94
|
import "./chunk-O24KTEGP.js";
|
|
95
95
|
import "./chunk-4BSENMAE.js";
|
|
96
|
-
import "./chunk-
|
|
96
|
+
import "./chunk-4YYYUZQH.js";
|
|
97
97
|
import "./chunk-VUNV25KB.js";
|
|
98
98
|
export {
|
|
99
99
|
ChartSeriesCollection,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
disposeArtifact,
|
|
10
10
|
getArtifactCompositeDiagnostics,
|
|
11
11
|
getConfiguredArtifactRuntime
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-QA3NXBAG.js";
|
|
13
13
|
import "./chunk-HTJBLBDE.js";
|
|
14
14
|
import "./chunk-VOJHMSM3.js";
|
|
15
15
|
import {
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
TrackedChange,
|
|
57
57
|
TrackedChanges
|
|
58
58
|
} from "./chunk-66CT2ZRP.js";
|
|
59
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-LVPFJH2Z.js";
|
|
60
60
|
import {
|
|
61
61
|
SpreadsheetFidelityError,
|
|
62
62
|
SpreadsheetSecurityError
|
|
@@ -87,13 +87,13 @@ import {
|
|
|
87
87
|
Worksheet,
|
|
88
88
|
WorksheetCollection,
|
|
89
89
|
validateSerializedWorkbook
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-SYFNJGH5.js";
|
|
91
91
|
import "./chunk-4FRFNNBM.js";
|
|
92
92
|
import "./chunk-FGZM4FQ6.js";
|
|
93
93
|
import "./chunk-Q2FFHEY7.js";
|
|
94
94
|
import "./chunk-O24KTEGP.js";
|
|
95
95
|
import "./chunk-4BSENMAE.js";
|
|
96
|
-
import "./chunk-
|
|
96
|
+
import "./chunk-4YYYUZQH.js";
|
|
97
97
|
import "./chunk-VUNV25KB.js";
|
|
98
98
|
export {
|
|
99
99
|
ChartSeriesCollection,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
disposeArtifact,
|
|
10
10
|
getArtifactCompositeDiagnostics,
|
|
11
11
|
getConfiguredArtifactRuntime
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-QA3NXBAG.js";
|
|
13
13
|
import "./chunk-HTJBLBDE.js";
|
|
14
14
|
import "./chunk-VOJHMSM3.js";
|
|
15
15
|
import {
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
TrackedChange,
|
|
57
57
|
TrackedChanges
|
|
58
58
|
} from "./chunk-66CT2ZRP.js";
|
|
59
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-LVPFJH2Z.js";
|
|
60
60
|
import {
|
|
61
61
|
SpreadsheetFidelityError,
|
|
62
62
|
SpreadsheetSecurityError
|
|
@@ -87,13 +87,13 @@ import {
|
|
|
87
87
|
Worksheet,
|
|
88
88
|
WorksheetCollection,
|
|
89
89
|
validateSerializedWorkbook
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-SYFNJGH5.js";
|
|
91
91
|
import "./chunk-4FRFNNBM.js";
|
|
92
92
|
import "./chunk-FGZM4FQ6.js";
|
|
93
93
|
import "./chunk-Q2FFHEY7.js";
|
|
94
94
|
import "./chunk-O24KTEGP.js";
|
|
95
95
|
import "./chunk-4BSENMAE.js";
|
|
96
|
-
import "./chunk-
|
|
96
|
+
import "./chunk-4YYYUZQH.js";
|
|
97
97
|
import "./chunk-VUNV25KB.js";
|
|
98
98
|
export {
|
|
99
99
|
ChartSeriesCollection,
|