@opengeni/artifact-tool 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +104 -0
- package/dist/bounded-zip.d.ts +28 -0
- package/dist/chunk-4BSENMAE.js +39 -0
- package/dist/chunk-4BSENMAE.js.map +1 -0
- package/dist/chunk-4FRFNNBM.js +276 -0
- package/dist/chunk-4FRFNNBM.js.map +1 -0
- package/dist/chunk-5XIA6KHZ.js +49 -0
- package/dist/chunk-5XIA6KHZ.js.map +1 -0
- package/dist/chunk-66CT2ZRP.js +2229 -0
- package/dist/chunk-66CT2ZRP.js.map +1 -0
- package/dist/chunk-72SYDU4O.js +319 -0
- package/dist/chunk-72SYDU4O.js.map +1 -0
- package/dist/chunk-B2ZJRZDA.js +279 -0
- package/dist/chunk-B2ZJRZDA.js.map +1 -0
- package/dist/chunk-DCTLTNPW.js +2458 -0
- package/dist/chunk-DCTLTNPW.js.map +1 -0
- package/dist/chunk-FGZM4FQ6.js +473 -0
- package/dist/chunk-FGZM4FQ6.js.map +1 -0
- package/dist/chunk-HTJBLBDE.js +591 -0
- package/dist/chunk-HTJBLBDE.js.map +1 -0
- package/dist/chunk-IYFXZQ34.js +5306 -0
- package/dist/chunk-IYFXZQ34.js.map +1 -0
- package/dist/chunk-J6N7IR44.js +172 -0
- package/dist/chunk-J6N7IR44.js.map +1 -0
- package/dist/chunk-N2IHNWBS.js +1002 -0
- package/dist/chunk-N2IHNWBS.js.map +1 -0
- package/dist/chunk-NAG44K67.js +549 -0
- package/dist/chunk-NAG44K67.js.map +1 -0
- package/dist/chunk-O24KTEGP.js +33 -0
- package/dist/chunk-O24KTEGP.js.map +1 -0
- package/dist/chunk-PI2AZVGK.js +2074 -0
- package/dist/chunk-PI2AZVGK.js.map +1 -0
- package/dist/chunk-Q2FFHEY7.js +40 -0
- package/dist/chunk-Q2FFHEY7.js.map +1 -0
- package/dist/chunk-RBGQADXA.js +57 -0
- package/dist/chunk-RBGQADXA.js.map +1 -0
- package/dist/chunk-U5G2BKM2.js +613 -0
- package/dist/chunk-U5G2BKM2.js.map +1 -0
- package/dist/chunk-VOJHMSM3.js +39 -0
- package/dist/chunk-VOJHMSM3.js.map +1 -0
- package/dist/chunk-VUNV25KB.js +16 -0
- package/dist/chunk-VUNV25KB.js.map +1 -0
- package/dist/chunk-XIFUNVBO.js +101 -0
- package/dist/chunk-XIFUNVBO.js.map +1 -0
- package/dist/chunk-ZCJYRJGB.js +489 -0
- package/dist/chunk-ZCJYRJGB.js.map +1 -0
- package/dist/chunk-ZZXPEE4S.js +2260 -0
- package/dist/chunk-ZZXPEE4S.js.map +1 -0
- package/dist/document-docx-api.d.ts +49 -0
- package/dist/document-docx-codec.d.ts +9 -0
- package/dist/document-docx-codec.js +4765 -0
- package/dist/document-docx-codec.js.map +1 -0
- package/dist/document-docx-import.d.ts +261 -0
- package/dist/document-docx-packer.d.ts +18 -0
- package/dist/document-docx-state.d.ts +12 -0
- package/dist/document-render.d.ts +3 -0
- package/dist/document-render.js +492 -0
- package/dist/document-render.js.map +1 -0
- package/dist/document.d.ts +432 -0
- package/dist/document.js +37 -0
- package/dist/document.js.map +1 -0
- package/dist/errors.d.ts +23 -0
- package/dist/file-blob.d.ts +11 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +186 -0
- package/dist/index.js.map +1 -0
- package/dist/inspection.d.ts +12 -0
- package/dist/kernel.d.ts +101 -0
- package/dist/lib-GQLPACFK.js +9746 -0
- package/dist/lib-GQLPACFK.js.map +1 -0
- package/dist/materializer-cli-entry.d.ts +2 -0
- package/dist/materializer-cli-entry.js +29 -0
- package/dist/materializer-cli-entry.js.map +1 -0
- package/dist/materializer-cli.d.ts +24 -0
- package/dist/materializer-cli.js +24 -0
- package/dist/materializer-cli.js.map +1 -0
- package/dist/native-raster.d.ts +10 -0
- package/dist/native.d.ts +129 -0
- package/dist/native.js +31 -0
- package/dist/native.js.map +1 -0
- package/dist/office-import.d.ts +48 -0
- package/dist/office-import.js +154 -0
- package/dist/office-import.js.map +1 -0
- package/dist/presentation-pptx-api.d.ts +60 -0
- package/dist/presentation-pptx-import.d.ts +5 -0
- package/dist/presentation-pptx-state-digest-765CZZED.js +10 -0
- package/dist/presentation-pptx-state-digest-765CZZED.js.map +1 -0
- package/dist/presentation-pptx-state-digest.d.ts +3 -0
- package/dist/presentation-pptx-state.d.ts +4 -0
- package/dist/presentation-pptx-xml.d.ts +29 -0
- package/dist/presentation-pptx.d.ts +5 -0
- package/dist/presentation-pptx.js +2365 -0
- package/dist/presentation-pptx.js.map +1 -0
- package/dist/presentation-render.d.ts +29 -0
- package/dist/presentation-render.js +375 -0
- package/dist/presentation-render.js.map +1 -0
- package/dist/presentation.d.ts +565 -0
- package/dist/presentation.js +71 -0
- package/dist/presentation.js.map +1 -0
- package/dist/production-composite.d.ts +68 -0
- package/dist/production-document.d.ts +2 -0
- package/dist/production-document.js +176 -0
- package/dist/production-document.js.map +1 -0
- package/dist/production-native-codecs.d.ts +94 -0
- package/dist/production-presentation.d.ts +2 -0
- package/dist/production-presentation.js +176 -0
- package/dist/production-presentation.js.map +1 -0
- package/dist/production-sha256.d.ts +2 -0
- package/dist/production-spreadsheet-native.d.ts +12 -0
- package/dist/production-spreadsheet.d.ts +2 -0
- package/dist/production-spreadsheet.js +176 -0
- package/dist/production-spreadsheet.js.map +1 -0
- package/dist/production.d.ts +96 -0
- package/dist/raster-image.d.ts +34 -0
- package/dist/reference.d.ts +17 -0
- package/dist/reference.js +574 -0
- package/dist/reference.js.map +1 -0
- package/dist/runtime-cli-entry.d.ts +2 -0
- package/dist/runtime-cli-entry.js +21 -0
- package/dist/runtime-cli-entry.js.map +1 -0
- package/dist/runtime-cli.d.ts +76 -0
- package/dist/runtime-cli.js +26 -0
- package/dist/runtime-cli.js.map +1 -0
- package/dist/runtime-development.d.ts +73 -0
- package/dist/runtime-development.js +30 -0
- package/dist/runtime-development.js.map +1 -0
- package/dist/runtime-receipt.d.ts +19 -0
- package/dist/runtime.d.ts +355 -0
- package/dist/runtime.js +42 -0
- package/dist/runtime.js.map +1 -0
- package/dist/snapshot.d.ts +26 -0
- package/dist/snapshot.js +61 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/spreadsheet-address.d.ts +18 -0
- package/dist/spreadsheet-file.d.ts +17 -0
- package/dist/spreadsheet-formula.d.ts +67 -0
- package/dist/spreadsheet-image.d.ts +17 -0
- package/dist/spreadsheet-render.d.ts +5 -0
- package/dist/spreadsheet-render.js +752 -0
- package/dist/spreadsheet-render.js.map +1 -0
- package/dist/spreadsheet-types.d.ts +155 -0
- package/dist/spreadsheet-xlsx-api.d.ts +88 -0
- package/dist/spreadsheet-xlsx-codec.d.ts +16 -0
- package/dist/spreadsheet-xlsx-codec.js +16 -0
- package/dist/spreadsheet-xlsx-codec.js.map +1 -0
- package/dist/spreadsheet-xlsx-state.d.ts +16 -0
- package/dist/spreadsheet.d.ts +724 -0
- package/dist/spreadsheet.js +67 -0
- package/dist/spreadsheet.js.map +1 -0
- package/package.json +129 -0
- package/src/bounded-zip.ts +450 -0
- package/src/document-docx-api.ts +64 -0
- package/src/document-docx-codec.ts +2253 -0
- package/src/document-docx-import.ts +3814 -0
- package/src/document-docx-packer.ts +72 -0
- package/src/document-docx-state.ts +59 -0
- package/src/document-render.ts +615 -0
- package/src/document.ts +2800 -0
- package/src/errors.ts +45 -0
- package/src/file-blob.ts +43 -0
- package/src/index.ts +4 -0
- package/src/inspection.ts +50 -0
- package/src/kernel.ts +525 -0
- package/src/materializer-cli-entry.ts +11 -0
- package/src/materializer-cli.ts +743 -0
- package/src/native-raster.ts +141 -0
- package/src/native.ts +390 -0
- package/src/office-import.ts +243 -0
- package/src/presentation-pptx-api.ts +107 -0
- package/src/presentation-pptx-import.ts +2065 -0
- package/src/presentation-pptx-state-digest.ts +46 -0
- package/src/presentation-pptx-state.ts +18 -0
- package/src/presentation-pptx-xml.ts +473 -0
- package/src/presentation-pptx.ts +447 -0
- package/src/presentation-render.ts +532 -0
- package/src/presentation.ts +2599 -0
- package/src/production-composite.ts +805 -0
- package/src/production-document.ts +2 -0
- package/src/production-native-codecs.ts +1141 -0
- package/src/production-presentation.ts +2 -0
- package/src/production-sha256.ts +150 -0
- package/src/production-spreadsheet-native.ts +686 -0
- package/src/production-spreadsheet.ts +2 -0
- package/src/production.ts +1022 -0
- package/src/raster-image.ts +586 -0
- package/src/reference.ts +17 -0
- package/src/runtime-cli-entry.ts +13 -0
- package/src/runtime-cli.ts +670 -0
- package/src/runtime-development.ts +689 -0
- package/src/runtime-receipt.ts +169 -0
- package/src/runtime.ts +1463 -0
- package/src/snapshot.ts +88 -0
- package/src/spreadsheet-address.ts +90 -0
- package/src/spreadsheet-file.ts +71 -0
- package/src/spreadsheet-formula.ts +1212 -0
- package/src/spreadsheet-image.ts +242 -0
- package/src/spreadsheet-render.ts +985 -0
- package/src/spreadsheet-types.ts +171 -0
- package/src/spreadsheet-xlsx-api.ts +123 -0
- package/src/spreadsheet-xlsx-codec.ts +3063 -0
- package/src/spreadsheet-xlsx-state.ts +191 -0
- package/src/spreadsheet.ts +5195 -0
package/dist/snapshot.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
requireCompositeState
|
|
3
|
+
} from "./chunk-HTJBLBDE.js";
|
|
4
|
+
import {
|
|
5
|
+
NativeDocumentSession,
|
|
6
|
+
NativePresentationSession,
|
|
7
|
+
NativeSpreadsheetSession
|
|
8
|
+
} from "./chunk-B2ZJRZDA.js";
|
|
9
|
+
import "./chunk-N2IHNWBS.js";
|
|
10
|
+
import "./chunk-VUNV25KB.js";
|
|
11
|
+
|
|
12
|
+
// src/snapshot.ts
|
|
13
|
+
import {
|
|
14
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
15
|
+
EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
16
|
+
EDITABLE_ARTIFACT_SNAPSHOT_VERSION
|
|
17
|
+
} from "@opengeni/contracts/editable-artifact-versions";
|
|
18
|
+
function createArtifactSnapshot(artifact) {
|
|
19
|
+
const state = requireCompositeState(artifact);
|
|
20
|
+
const native = state.native;
|
|
21
|
+
const common = {
|
|
22
|
+
schemaVersion: 1,
|
|
23
|
+
modality: state.modality,
|
|
24
|
+
runtimeTarget: native.target,
|
|
25
|
+
kernelVersion: native.buildIdentity,
|
|
26
|
+
modelSchemaVersion: EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
27
|
+
snapshotVersion: EDITABLE_ARTIFACT_SNAPSHOT_VERSION,
|
|
28
|
+
stateHash: native.stateHash(),
|
|
29
|
+
snapshotBytes: Uint8Array.from(native.snapshot())
|
|
30
|
+
};
|
|
31
|
+
if (state.modality === "spreadsheet") {
|
|
32
|
+
if (!(native instanceof NativeSpreadsheetSession)) {
|
|
33
|
+
throw new Error("Spreadsheet composite does not own a spreadsheet native session");
|
|
34
|
+
}
|
|
35
|
+
return Object.freeze({
|
|
36
|
+
...common,
|
|
37
|
+
modality: "spreadsheet",
|
|
38
|
+
coveredCausalFrontierBytes: Uint8Array.from(native.frontier()),
|
|
39
|
+
operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
40
|
+
crdtStateVersion: EDITABLE_ARTIFACT_SNAPSHOT_VERSION
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (!(native instanceof NativeDocumentSession) && !(native instanceof NativePresentationSession)) {
|
|
44
|
+
throw new Error("Serialized composite does not own its expected native session");
|
|
45
|
+
}
|
|
46
|
+
return Object.freeze({
|
|
47
|
+
...common,
|
|
48
|
+
modality: state.modality,
|
|
49
|
+
nativeRevision: safeNativeRevision(native.revision())
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function safeNativeRevision(value) {
|
|
53
|
+
if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
54
|
+
throw new RangeError("Artifact native revision exceeds the durable range");
|
|
55
|
+
}
|
|
56
|
+
return Number(value);
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
createArtifactSnapshot
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/snapshot.ts"],"sourcesContent":["import {\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,\n EDITABLE_ARTIFACT_SNAPSHOT_VERSION,\n} from \"@opengeni/contracts/editable-artifact-versions\";\nimport type { Document } from \"./document\";\nimport {\n NativeDocumentSession,\n NativePresentationSession,\n NativeSpreadsheetSession,\n} from \"./native\";\nimport type { Presentation } from \"./presentation\";\nimport { requireCompositeState } from \"./production-composite\";\nimport type { Workbook } from \"./spreadsheet\";\n\ntype ArtifactSnapshotCommon = Readonly<{\n schemaVersion: 1;\n modality: \"spreadsheet\" | \"document\" | \"presentation\";\n runtimeTarget: string;\n kernelVersion: string;\n modelSchemaVersion: 1;\n snapshotVersion: 1;\n stateHash: string;\n snapshotBytes: Uint8Array;\n}>;\n\n/** Exact native-canonical state at one durable artifact boundary. */\nexport type ArtifactSnapshot =\n | (ArtifactSnapshotCommon &\n Readonly<{\n modality: \"spreadsheet\";\n coveredCausalFrontierBytes: Uint8Array;\n operationProtocolVersion: 1;\n crdtStateVersion: 1;\n }>)\n | (ArtifactSnapshotCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n nativeRevision: number;\n }>);\n\n/** Capture one immutable native snapshot from an open artifact object. */\nexport function createArtifactSnapshot(\n artifact: Workbook | Document | Presentation,\n): ArtifactSnapshot {\n const state = requireCompositeState(artifact);\n const native = state.native;\n const common = {\n schemaVersion: 1 as const,\n modality: state.modality,\n runtimeTarget: native.target,\n kernelVersion: native.buildIdentity,\n modelSchemaVersion: EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,\n snapshotVersion: EDITABLE_ARTIFACT_SNAPSHOT_VERSION,\n stateHash: native.stateHash(),\n snapshotBytes: Uint8Array.from(native.snapshot()),\n };\n if (state.modality === \"spreadsheet\") {\n if (!(native instanceof NativeSpreadsheetSession)) {\n throw new Error(\"Spreadsheet composite does not own a spreadsheet native session\");\n }\n return Object.freeze({\n ...common,\n modality: \"spreadsheet\" as const,\n coveredCausalFrontierBytes: Uint8Array.from(native.frontier()),\n operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n crdtStateVersion: EDITABLE_ARTIFACT_SNAPSHOT_VERSION,\n });\n }\n if (\n !(native instanceof NativeDocumentSession) &&\n !(native instanceof NativePresentationSession)\n ) {\n throw new Error(\"Serialized composite does not own its expected native session\");\n }\n return Object.freeze({\n ...common,\n modality: state.modality,\n nativeRevision: safeNativeRevision(native.revision()),\n });\n}\n\nfunction safeNativeRevision(value: bigint): number {\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new RangeError(\"Artifact native revision exceeds the durable range\");\n }\n return Number(value);\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAsCA,SAAS,uBACd,UACkB;AAClB,QAAM,QAAQ,sBAAsB,QAAQ;AAC5C,QAAM,SAAS,MAAM;AACrB,QAAM,SAAS;AAAA,IACb,eAAe;AAAA,IACf,UAAU,MAAM;AAAA,IAChB,eAAe,OAAO;AAAA,IACtB,eAAe,OAAO;AAAA,IACtB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,WAAW,OAAO,UAAU;AAAA,IAC5B,eAAe,WAAW,KAAK,OAAO,SAAS,CAAC;AAAA,EAClD;AACA,MAAI,MAAM,aAAa,eAAe;AACpC,QAAI,EAAE,kBAAkB,2BAA2B;AACjD,YAAM,IAAI,MAAM,iEAAiE;AAAA,IACnF;AACA,WAAO,OAAO,OAAO;AAAA,MACnB,GAAG;AAAA,MACH,UAAU;AAAA,MACV,4BAA4B,WAAW,KAAK,OAAO,SAAS,CAAC;AAAA,MAC7D,0BAA0B;AAAA,MAC1B,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACA,MACE,EAAE,kBAAkB,0BACpB,EAAE,kBAAkB,4BACpB;AACA,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACjF;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG;AAAA,IACH,UAAU,MAAM;AAAA,IAChB,gBAAgB,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACtD,CAAC;AACH;AAEA,SAAS,mBAAmB,OAAuB;AACjD,MAAI,QAAQ,MAAM,QAAQ,OAAO,OAAO,gBAAgB,GAAG;AACzD,UAAM,IAAI,WAAW,oDAAoD;AAAA,EAC3E;AACA,SAAO,OAAO,KAAK;AACrB;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const EXCEL_MAX_ROWS = 1048576;
|
|
2
|
+
export declare const EXCEL_MAX_COLUMNS = 16384;
|
|
3
|
+
export type CellAddress = {
|
|
4
|
+
row: number;
|
|
5
|
+
col: number;
|
|
6
|
+
};
|
|
7
|
+
export type RangeAddress = CellAddress & {
|
|
8
|
+
rowCount: number;
|
|
9
|
+
colCount: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function columnNameToIndex(name: string): number;
|
|
12
|
+
export declare function columnIndexToName(index: number): string;
|
|
13
|
+
export declare function parseCellAddress(input: string): CellAddress;
|
|
14
|
+
export declare function parseRangeAddress(input: string): RangeAddress;
|
|
15
|
+
export declare function formatCellAddress(address: CellAddress): string;
|
|
16
|
+
export declare function formatRangeAddress(address: RangeAddress): string;
|
|
17
|
+
export declare function cellKey(row: number, col: number): number;
|
|
18
|
+
export declare function assertRange(address: RangeAddress): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FileBlob } from "./file-blob.js";
|
|
2
|
+
import type { Workbook } from "./spreadsheet.js";
|
|
3
|
+
import { SpreadsheetFidelityError, SpreadsheetSecurityError, type SpreadsheetFidelityIssue, type SpreadsheetLossPreservationEnvelope, type SpreadsheetXlsxExportOptions, type SpreadsheetXlsxImportLimits, type SpreadsheetXlsxImportOptions } from "./spreadsheet-xlsx-api.js";
|
|
4
|
+
export { SpreadsheetFidelityError, SpreadsheetSecurityError, type SpreadsheetFidelityIssue, type SpreadsheetLossPreservationEnvelope, type SpreadsheetXlsxExportOptions, type SpreadsheetXlsxImportLimits, type SpreadsheetXlsxImportOptions, };
|
|
5
|
+
/** Lazily loaded XLSX codec around the canonical Workbook model. */
|
|
6
|
+
export declare class SpreadsheetFile {
|
|
7
|
+
static importXlsx(input: FileBlob | Blob | ArrayBuffer | Uint8Array, options?: SpreadsheetXlsxImportOptions): Promise<Workbook>;
|
|
8
|
+
static exportXlsx(workbook: Workbook, options?: SpreadsheetXlsxExportOptions): Promise<FileBlob>;
|
|
9
|
+
static fidelityReport(workbook: Workbook): readonly SpreadsheetFidelityIssue[];
|
|
10
|
+
/**
|
|
11
|
+
* Returns a portable copy of the opaque original-package envelope.
|
|
12
|
+
* Persist it beside Workbook.toJSON(); the Workbook JSON intentionally does not contain Office bytes.
|
|
13
|
+
*/
|
|
14
|
+
static lossPreservationEnvelope(workbook: Workbook): SpreadsheetLossPreservationEnvelope | null;
|
|
15
|
+
/** Reattaches a separately persisted envelope to a restored canonical workbook snapshot. */
|
|
16
|
+
static attachLossPreservationEnvelope(workbook: Workbook, envelope: SpreadsheetLossPreservationEnvelope, options?: Pick<SpreadsheetXlsxImportOptions, "limits">): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type CellAddress } from "./spreadsheet-address.js";
|
|
2
|
+
import type { FormulaResult } from "./spreadsheet-types.js";
|
|
3
|
+
export type FormulaReference = {
|
|
4
|
+
sheetName: string | null;
|
|
5
|
+
start: CellAddress;
|
|
6
|
+
end: CellAddress;
|
|
7
|
+
};
|
|
8
|
+
export type FormulaEvaluationContext = {
|
|
9
|
+
currentSheetName: string;
|
|
10
|
+
getCell: (sheetName: string, address: CellAddress) => FormulaResult;
|
|
11
|
+
/** Reuse one budget across recursively evaluated dependency formulas. */
|
|
12
|
+
budget?: FormulaEvaluationBudget;
|
|
13
|
+
/** Applied only when `budget` is omitted. */
|
|
14
|
+
limits?: Partial<FormulaEvaluationLimits>;
|
|
15
|
+
};
|
|
16
|
+
export type FormulaEvaluationLimits = {
|
|
17
|
+
maxFormulaBytes: number;
|
|
18
|
+
maxTokens: number;
|
|
19
|
+
maxNestingDepth: number;
|
|
20
|
+
maxFunctionArguments: number;
|
|
21
|
+
maxRangeCells: number;
|
|
22
|
+
maxCellReads: number;
|
|
23
|
+
maxOperations: number;
|
|
24
|
+
maxDependencyDepth: number;
|
|
25
|
+
maxResultStringChars: number;
|
|
26
|
+
};
|
|
27
|
+
/** Conservative reference-engine boundaries. Native kernels must enforce equivalent or tighter caps. */
|
|
28
|
+
export declare const DEFAULT_FORMULA_LIMITS: Readonly<FormulaEvaluationLimits>;
|
|
29
|
+
/** Explicit, shareable fuel for one root formula evaluation. */
|
|
30
|
+
export declare class FormulaEvaluationBudget {
|
|
31
|
+
readonly limits: Readonly<FormulaEvaluationLimits>;
|
|
32
|
+
private operationsUsed;
|
|
33
|
+
private cellReadsUsed;
|
|
34
|
+
constructor(overrides?: Partial<FormulaEvaluationLimits>);
|
|
35
|
+
consumeOperations(count?: number): void;
|
|
36
|
+
consumeCellReads(count: number): void;
|
|
37
|
+
assertDependencyDepth(depth: number): void;
|
|
38
|
+
get usage(): Readonly<{
|
|
39
|
+
operations: number;
|
|
40
|
+
cellReads: number;
|
|
41
|
+
}>;
|
|
42
|
+
get operationCount(): number;
|
|
43
|
+
get cellReadCount(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Reuse this meter for one independent root without exposing a reset primitive. Re-entry is
|
|
46
|
+
* rejected, including from a hostile `getCell` callback during `evaluateFormula`.
|
|
47
|
+
*/
|
|
48
|
+
runIsolatedRoot<T>(evaluate: (budget: FormulaEvaluationBudget) => T): T;
|
|
49
|
+
/**
|
|
50
|
+
* Activate one trusted batch while retaining an independent fuel counter for every root.
|
|
51
|
+
* The scoped runner expires with the batch and cannot be used for active-root re-entry.
|
|
52
|
+
*/
|
|
53
|
+
runIsolatedRoots<T>(evaluateBatch: (runRoot: <R>(evaluate: (budget: FormulaEvaluationBudget) => R) => R) => T): T;
|
|
54
|
+
}
|
|
55
|
+
export declare function evaluateFormula(formula: string, context: FormulaEvaluationContext): FormulaResult;
|
|
56
|
+
/** Validate resource bounds without materializing ranges or reading workbook cells. */
|
|
57
|
+
export declare function validateFormulaLimits(formula: string, limits?: Partial<FormulaEvaluationLimits>): void;
|
|
58
|
+
/**
|
|
59
|
+
* Fail closed unless the complete formula is valid reference-engine syntax and every function
|
|
60
|
+
* belongs to the explicit bounded allowlist. Unlike `validateFormulaLimits`, syntax faults are
|
|
61
|
+
* rejected instead of being treated as ordinary spreadsheet error values.
|
|
62
|
+
*/
|
|
63
|
+
export declare function validateSupportedFormula(formula: string, limits?: Partial<FormulaEvaluationLimits>): void;
|
|
64
|
+
export declare function referencesInFormula(formula: string): FormulaReference[];
|
|
65
|
+
export declare function translateFormula(formula: string, rowDelta: number, colDelta: number): string;
|
|
66
|
+
export declare function formulaFromR1C1(formula: string, anchor: CellAddress): string;
|
|
67
|
+
export declare function formulaToR1C1(formula: string, anchor: CellAddress): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SpreadsheetImageConfig } from "./spreadsheet-types.js";
|
|
2
|
+
export type SpreadsheetRasterImageContentType = "image/png" | "image/jpeg" | "image/gif" | "image/webp";
|
|
3
|
+
/** Untrusted spreadsheet image input was rejected before render or file export. */
|
|
4
|
+
export declare class InvalidSpreadsheetImageError extends Error {
|
|
5
|
+
readonly field: string;
|
|
6
|
+
readonly code = "INVALID_SPREADSHEET_IMAGE";
|
|
7
|
+
constructor(field: string, detail: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Copies, validates, and freezes a spreadsheet image at the model boundary.
|
|
11
|
+
*
|
|
12
|
+
* Both byte and data-URL inputs become a canonical immutable data URL. This
|
|
13
|
+
* prevents later caller mutation and lets render/export reuse validation in O(1).
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeSpreadsheetImageConfig(input: SpreadsheetImageConfig): SpreadsheetImageConfig;
|
|
16
|
+
/** Returns a validated inline source and never fetches or reads external data. */
|
|
17
|
+
export declare function spreadsheetImageSource(input: SpreadsheetImageConfig): string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FileBlob } from "./file-blob.js";
|
|
2
|
+
import type { Workbook } from "./spreadsheet.js";
|
|
3
|
+
import type { RenderSpreadsheetOptions } from "./spreadsheet-types.js";
|
|
4
|
+
/** Render the canonical workbook model without requiring Excel or LibreOffice. */
|
|
5
|
+
export declare function renderWorkbook(workbook: Workbook, options?: RenderSpreadsheetOptions): Promise<FileBlob>;
|