@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
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SpreadsheetFile
|
|
3
|
+
} from "./chunk-VOJHMSM3.js";
|
|
4
|
+
import {
|
|
5
|
+
Document,
|
|
6
|
+
DocumentBlockCollection,
|
|
7
|
+
DocumentCommentThread,
|
|
8
|
+
DocumentComments,
|
|
9
|
+
DocumentFile,
|
|
10
|
+
DocumentPageBreak,
|
|
11
|
+
DocumentParagraph,
|
|
12
|
+
DocumentSection,
|
|
13
|
+
DocumentSectionStories,
|
|
14
|
+
DocumentSections,
|
|
15
|
+
DocumentStory,
|
|
16
|
+
DocumentTable,
|
|
17
|
+
DocumentTextRun,
|
|
18
|
+
TrackedChange,
|
|
19
|
+
TrackedChanges
|
|
20
|
+
} from "./chunk-66CT2ZRP.js";
|
|
21
|
+
import "./chunk-J6N7IR44.js";
|
|
22
|
+
import {
|
|
23
|
+
ChartCollection,
|
|
24
|
+
ChartSeriesCollection,
|
|
25
|
+
CommentThread,
|
|
26
|
+
ConditionalFormattingCollection,
|
|
27
|
+
DataValidationCollection,
|
|
28
|
+
FreezePanes,
|
|
29
|
+
ImageCollection,
|
|
30
|
+
Range,
|
|
31
|
+
RangeConditionalFormats,
|
|
32
|
+
RangeFormat,
|
|
33
|
+
RangeSparklines,
|
|
34
|
+
SPREADSHEET_RECALCULATION_LIMITS,
|
|
35
|
+
SPREADSHEET_SNAPSHOT_LIMITS,
|
|
36
|
+
ShapeCollection,
|
|
37
|
+
SparklineGroup,
|
|
38
|
+
SparklineGroupCollection,
|
|
39
|
+
SpreadsheetChart,
|
|
40
|
+
SpreadsheetChartSeries,
|
|
41
|
+
SpreadsheetImage,
|
|
42
|
+
SpreadsheetShape,
|
|
43
|
+
Table,
|
|
44
|
+
TableCollection,
|
|
45
|
+
Workbook,
|
|
46
|
+
WorkbookComments,
|
|
47
|
+
Worksheet,
|
|
48
|
+
WorksheetCollection,
|
|
49
|
+
validateSerializedWorkbook
|
|
50
|
+
} from "./chunk-IYFXZQ34.js";
|
|
51
|
+
import {
|
|
52
|
+
InvalidSpreadsheetImageError
|
|
53
|
+
} from "./chunk-4FRFNNBM.js";
|
|
54
|
+
import {
|
|
55
|
+
ArtifactLimitError,
|
|
56
|
+
UnsupportedArtifactFeatureError
|
|
57
|
+
} from "./chunk-O24KTEGP.js";
|
|
58
|
+
import {
|
|
59
|
+
InvalidPresentationInputError,
|
|
60
|
+
PPTX_MEDIA_TYPE,
|
|
61
|
+
Presentation,
|
|
62
|
+
PresentationChart,
|
|
63
|
+
PresentationChartCollection,
|
|
64
|
+
PresentationChartSeries,
|
|
65
|
+
PresentationChartSeriesCollection,
|
|
66
|
+
PresentationFidelityError,
|
|
67
|
+
PresentationFile,
|
|
68
|
+
PresentationGroup,
|
|
69
|
+
PresentationGroupCollection,
|
|
70
|
+
PresentationImage,
|
|
71
|
+
PresentationImageCollection,
|
|
72
|
+
PresentationLayout,
|
|
73
|
+
PresentationLayoutCollection,
|
|
74
|
+
PresentationMaster,
|
|
75
|
+
PresentationMasterCollection,
|
|
76
|
+
PresentationSecurityError,
|
|
77
|
+
PresentationShape,
|
|
78
|
+
PresentationShapeCollection,
|
|
79
|
+
PresentationTable,
|
|
80
|
+
PresentationTableCell,
|
|
81
|
+
PresentationTableCollection,
|
|
82
|
+
PresentationText,
|
|
83
|
+
Slide,
|
|
84
|
+
SlideCollection,
|
|
85
|
+
SlidePlaceholderCollection,
|
|
86
|
+
UnsupportedPresentationFeatureError,
|
|
87
|
+
assertRenderPixelBudget,
|
|
88
|
+
colorValue,
|
|
89
|
+
truncate
|
|
90
|
+
} from "./chunk-PI2AZVGK.js";
|
|
91
|
+
import "./chunk-FGZM4FQ6.js";
|
|
92
|
+
import "./chunk-4BSENMAE.js";
|
|
93
|
+
import "./chunk-Q2FFHEY7.js";
|
|
94
|
+
import "./chunk-VUNV25KB.js";
|
|
95
|
+
|
|
96
|
+
// src/kernel.ts
|
|
97
|
+
var ArtifactKernelRegistry = class {
|
|
98
|
+
kernels = /* @__PURE__ */ new Map();
|
|
99
|
+
register(kernel) {
|
|
100
|
+
if (this.kernels.has(kernel.kind))
|
|
101
|
+
throw new Error(`Artifact ${kernel.kind} kernel already registered`);
|
|
102
|
+
this.kernels.set(kernel.kind, kernel);
|
|
103
|
+
return () => {
|
|
104
|
+
if (this.kernels.get(kernel.kind) === kernel) this.kernels.delete(kernel.kind);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
select(modality, required = {}, order = defaultKernelOrder()) {
|
|
108
|
+
for (const kind of order) {
|
|
109
|
+
const kernel = this.kernels.get(kind);
|
|
110
|
+
if (!kernel) continue;
|
|
111
|
+
const capabilities = kernel.capabilities(modality);
|
|
112
|
+
if (required.calculate === true && !capabilities.calculate) continue;
|
|
113
|
+
if (required.layout === true && !capabilities.layout) continue;
|
|
114
|
+
if (required.collaboration === true && !capabilities.collaboration) continue;
|
|
115
|
+
return { kernel, capabilities };
|
|
116
|
+
}
|
|
117
|
+
throw new UnsupportedArtifactFeatureError(
|
|
118
|
+
modality,
|
|
119
|
+
"required kernel capabilities",
|
|
120
|
+
"available"
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
available() {
|
|
124
|
+
return [...this.kernels.values()];
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
var ARTIFACT_OPERATION_MAX_BYTES = 1024 * 1024;
|
|
128
|
+
var ARTIFACT_OPERATION_MAX_COMMANDS = 1e4;
|
|
129
|
+
var ARTIFACT_OPERATION_MAX_VECTOR_ACTORS = 1024;
|
|
130
|
+
var ARTIFACT_OPERATION_MAX_STRING_BYTES = 256 * 1024;
|
|
131
|
+
var ARTIFACT_OPERATION_MAX_JSON_DEPTH = 64;
|
|
132
|
+
var ARTIFACT_OPERATION_MAX_JSON_NODES = 1e5;
|
|
133
|
+
var OPERATION_MAGIC = new Uint8Array([79, 71, 65, 82]);
|
|
134
|
+
var textEncoder = new TextEncoder();
|
|
135
|
+
var textDecoder = new TextDecoder("utf-8", { fatal: true });
|
|
136
|
+
var ArtifactCommandBatchCodec = {
|
|
137
|
+
encode(batch) {
|
|
138
|
+
validateBatch(batch);
|
|
139
|
+
const writer = new BinaryWriter(ARTIFACT_OPERATION_MAX_BYTES);
|
|
140
|
+
writer.bytes(OPERATION_MAGIC);
|
|
141
|
+
writer.varint(batch.schemaVersion);
|
|
142
|
+
writer.varint(modalityCode(batch.modality));
|
|
143
|
+
writer.string(batch.artifactId);
|
|
144
|
+
writer.string(batch.transactionId);
|
|
145
|
+
writer.string(batch.actorId);
|
|
146
|
+
writer.varint(batch.baseSequence);
|
|
147
|
+
const vector = Object.entries(batch.baseVector).sort(
|
|
148
|
+
([left], [right]) => left < right ? -1 : left > right ? 1 : 0
|
|
149
|
+
);
|
|
150
|
+
writer.varint(vector.length);
|
|
151
|
+
for (const [actor, counter] of vector) {
|
|
152
|
+
writer.string(actor);
|
|
153
|
+
writer.varint(counter);
|
|
154
|
+
}
|
|
155
|
+
writer.varint(batch.commands.length);
|
|
156
|
+
for (const command of batch.commands) {
|
|
157
|
+
writer.string(command.code);
|
|
158
|
+
writer.string(command.targetId ?? "");
|
|
159
|
+
let flags = 0;
|
|
160
|
+
if (command.precondition?.objectRevision !== void 0) flags |= 1;
|
|
161
|
+
if (command.precondition?.exists !== void 0) flags |= 2;
|
|
162
|
+
if (command.payload !== void 0) flags |= 4;
|
|
163
|
+
writer.byte(flags);
|
|
164
|
+
if ((flags & 1) !== 0) writer.varint(command.precondition.objectRevision);
|
|
165
|
+
if ((flags & 2) !== 0) writer.byte(command.precondition.exists ? 1 : 0);
|
|
166
|
+
if ((flags & 4) !== 0) writer.string(canonicalJson(command.payload));
|
|
167
|
+
}
|
|
168
|
+
return writer.finish();
|
|
169
|
+
},
|
|
170
|
+
decode(bytes) {
|
|
171
|
+
if (bytes.byteLength > ARTIFACT_OPERATION_MAX_BYTES) {
|
|
172
|
+
throw new ArtifactLimitError(
|
|
173
|
+
"operation bytes",
|
|
174
|
+
bytes.byteLength,
|
|
175
|
+
ARTIFACT_OPERATION_MAX_BYTES
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
const reader = new BinaryReader(bytes);
|
|
179
|
+
const magic = reader.bytes(OPERATION_MAGIC.length);
|
|
180
|
+
if (!magic.every((value, index) => value === OPERATION_MAGIC[index])) {
|
|
181
|
+
throw new Error("Invalid artifact operation magic");
|
|
182
|
+
}
|
|
183
|
+
const schemaVersion = reader.varint();
|
|
184
|
+
if (schemaVersion !== 1)
|
|
185
|
+
throw new Error(`Unsupported artifact operation schema: ${schemaVersion}`);
|
|
186
|
+
const modality = modalityFromCode(reader.varint());
|
|
187
|
+
const artifactId = reader.string();
|
|
188
|
+
const transactionId = reader.string();
|
|
189
|
+
const actorId = reader.string();
|
|
190
|
+
const baseSequence = reader.varint();
|
|
191
|
+
const vectorCount = reader.varint();
|
|
192
|
+
if (vectorCount > ARTIFACT_OPERATION_MAX_VECTOR_ACTORS) {
|
|
193
|
+
throw new ArtifactLimitError(
|
|
194
|
+
"causal vector actors",
|
|
195
|
+
vectorCount,
|
|
196
|
+
ARTIFACT_OPERATION_MAX_VECTOR_ACTORS
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
const vectorEntries = [];
|
|
200
|
+
let previousActor = "";
|
|
201
|
+
for (let index = 0; index < vectorCount; index += 1) {
|
|
202
|
+
const actor = reader.string();
|
|
203
|
+
if (actor <= previousActor) {
|
|
204
|
+
throw new Error("Causal vector actors must be unique and sorted");
|
|
205
|
+
}
|
|
206
|
+
previousActor = actor;
|
|
207
|
+
vectorEntries.push([actor, reader.varint()]);
|
|
208
|
+
}
|
|
209
|
+
const baseVector = Object.fromEntries(vectorEntries);
|
|
210
|
+
const commandCount = reader.varint();
|
|
211
|
+
if (commandCount > ARTIFACT_OPERATION_MAX_COMMANDS) {
|
|
212
|
+
throw new ArtifactLimitError(
|
|
213
|
+
"operation commands",
|
|
214
|
+
commandCount,
|
|
215
|
+
ARTIFACT_OPERATION_MAX_COMMANDS
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
const commands = [];
|
|
219
|
+
for (let index = 0; index < commandCount; index += 1) {
|
|
220
|
+
const code = reader.string();
|
|
221
|
+
const targetId = reader.string();
|
|
222
|
+
const flags = reader.byte();
|
|
223
|
+
if ((flags & ~7) !== 0) throw new Error("Unknown artifact command flags");
|
|
224
|
+
const objectRevision = (flags & 1) !== 0 ? reader.varint() : void 0;
|
|
225
|
+
let exists;
|
|
226
|
+
if ((flags & 2) !== 0) {
|
|
227
|
+
const encodedExists = reader.byte();
|
|
228
|
+
if (encodedExists > 1) {
|
|
229
|
+
throw new Error("Artifact command boolean uses a non-canonical encoding");
|
|
230
|
+
}
|
|
231
|
+
exists = encodedExists === 1;
|
|
232
|
+
}
|
|
233
|
+
const payload = (flags & 4) !== 0 ? parseCanonicalJson(reader.string()) : void 0;
|
|
234
|
+
commands.push({
|
|
235
|
+
code,
|
|
236
|
+
...targetId ? { targetId } : {},
|
|
237
|
+
...objectRevision !== void 0 || exists !== void 0 ? {
|
|
238
|
+
precondition: {
|
|
239
|
+
...objectRevision !== void 0 ? { objectRevision } : {},
|
|
240
|
+
...exists !== void 0 ? { exists } : {}
|
|
241
|
+
}
|
|
242
|
+
} : {},
|
|
243
|
+
...payload !== void 0 ? { payload } : {}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
reader.done();
|
|
247
|
+
const batch = {
|
|
248
|
+
schemaVersion: 1,
|
|
249
|
+
artifactId,
|
|
250
|
+
modality,
|
|
251
|
+
transactionId,
|
|
252
|
+
actorId,
|
|
253
|
+
baseSequence,
|
|
254
|
+
baseVector,
|
|
255
|
+
commands
|
|
256
|
+
};
|
|
257
|
+
validateBatch(batch);
|
|
258
|
+
return batch;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
function validateBatch(batch) {
|
|
262
|
+
if (batch.schemaVersion !== 1) throw new Error("Artifact operation schema must be 1");
|
|
263
|
+
for (const [label, value] of [
|
|
264
|
+
["artifactId", batch.artifactId],
|
|
265
|
+
["transactionId", batch.transactionId],
|
|
266
|
+
["actorId", batch.actorId]
|
|
267
|
+
]) {
|
|
268
|
+
if (!value || value.length > 512) throw new Error(`${label} must contain 1-512 characters`);
|
|
269
|
+
}
|
|
270
|
+
assertSafeInteger(batch.baseSequence, "baseSequence");
|
|
271
|
+
const vector = Object.entries(batch.baseVector);
|
|
272
|
+
if (vector.length > ARTIFACT_OPERATION_MAX_VECTOR_ACTORS) {
|
|
273
|
+
throw new ArtifactLimitError(
|
|
274
|
+
"causal vector actors",
|
|
275
|
+
vector.length,
|
|
276
|
+
ARTIFACT_OPERATION_MAX_VECTOR_ACTORS
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
for (const [actor, counter] of vector) {
|
|
280
|
+
if (!actor || actor.length > 512)
|
|
281
|
+
throw new Error("Causal vector actor must contain 1-512 characters");
|
|
282
|
+
assertSafeInteger(counter, `baseVector.${actor}`);
|
|
283
|
+
}
|
|
284
|
+
if (batch.commands.length > ARTIFACT_OPERATION_MAX_COMMANDS) {
|
|
285
|
+
throw new ArtifactLimitError(
|
|
286
|
+
"operation commands",
|
|
287
|
+
batch.commands.length,
|
|
288
|
+
ARTIFACT_OPERATION_MAX_COMMANDS
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
if (batch.commands.length === 0) throw new Error("Artifact command batch must not be empty");
|
|
292
|
+
for (const command of batch.commands) {
|
|
293
|
+
if (!/^[a-z][a-z0-9_.-]{0,127}$/.test(command.code))
|
|
294
|
+
throw new Error(`Invalid artifact command code: ${command.code}`);
|
|
295
|
+
if (command.targetId !== void 0 && (command.targetId.length === 0 || command.targetId.length > 512)) {
|
|
296
|
+
throw new Error("Artifact command target id must contain 1-512 characters");
|
|
297
|
+
}
|
|
298
|
+
if (command.precondition?.objectRevision !== void 0) {
|
|
299
|
+
assertSafeInteger(command.precondition.objectRevision, "objectRevision");
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function defaultKernelOrder() {
|
|
304
|
+
return typeof window === "undefined" ? ["native"] : [];
|
|
305
|
+
}
|
|
306
|
+
function modalityCode(modality) {
|
|
307
|
+
return { spreadsheet: 1, presentation: 2, document: 3 }[modality];
|
|
308
|
+
}
|
|
309
|
+
function modalityFromCode(value) {
|
|
310
|
+
if (value === 1) return "spreadsheet";
|
|
311
|
+
if (value === 2) return "presentation";
|
|
312
|
+
if (value === 3) return "document";
|
|
313
|
+
throw new Error(`Unknown artifact modality code: ${value}`);
|
|
314
|
+
}
|
|
315
|
+
function assertSafeInteger(value, label) {
|
|
316
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
317
|
+
throw new Error(`${label} must be a non-negative safe integer`);
|
|
318
|
+
}
|
|
319
|
+
function canonicalJson(value) {
|
|
320
|
+
return JSON.stringify(canonicalValue(value, { nodes: 0 }, 0));
|
|
321
|
+
}
|
|
322
|
+
function canonicalValue(value, state, depth) {
|
|
323
|
+
state.nodes += 1;
|
|
324
|
+
if (state.nodes > ARTIFACT_OPERATION_MAX_JSON_NODES) {
|
|
325
|
+
throw new ArtifactLimitError(
|
|
326
|
+
"operation JSON nodes",
|
|
327
|
+
state.nodes,
|
|
328
|
+
ARTIFACT_OPERATION_MAX_JSON_NODES
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
if (depth > ARTIFACT_OPERATION_MAX_JSON_DEPTH) {
|
|
332
|
+
throw new ArtifactLimitError("operation JSON depth", depth, ARTIFACT_OPERATION_MAX_JSON_DEPTH);
|
|
333
|
+
}
|
|
334
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") return value;
|
|
335
|
+
if (typeof value === "number") {
|
|
336
|
+
if (!Number.isFinite(value))
|
|
337
|
+
throw new Error("Artifact command JSON cannot contain non-finite numbers");
|
|
338
|
+
return Object.is(value, -0) ? 0 : value;
|
|
339
|
+
}
|
|
340
|
+
if (Array.isArray(value)) {
|
|
341
|
+
if (Object.keys(value).length !== value.length || Object.getOwnPropertySymbols(value).length) {
|
|
342
|
+
throw new Error("Artifact command payload arrays must be dense JSON arrays");
|
|
343
|
+
}
|
|
344
|
+
const output = [];
|
|
345
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
346
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
347
|
+
if (!descriptor || !("value" in descriptor) || !descriptor.enumerable) {
|
|
348
|
+
throw new Error("Artifact command payload arrays must contain data properties");
|
|
349
|
+
}
|
|
350
|
+
output.push(canonicalValue(descriptor.value, state, depth + 1));
|
|
351
|
+
}
|
|
352
|
+
return output;
|
|
353
|
+
}
|
|
354
|
+
if (typeof value === "object") {
|
|
355
|
+
if (Object.getPrototypeOf(value) !== Object.prototype)
|
|
356
|
+
throw new Error("Artifact command payload must be plain JSON");
|
|
357
|
+
const record = value;
|
|
358
|
+
const keys = Reflect.ownKeys(record);
|
|
359
|
+
if (keys.some((key) => typeof key !== "string")) {
|
|
360
|
+
throw new Error("Artifact command payload cannot contain symbol properties");
|
|
361
|
+
}
|
|
362
|
+
return Object.fromEntries(
|
|
363
|
+
keys.sort().map((key) => {
|
|
364
|
+
const descriptor = Object.getOwnPropertyDescriptor(record, key);
|
|
365
|
+
if (!descriptor || !("value" in descriptor) || !descriptor.enumerable) {
|
|
366
|
+
throw new Error("Artifact command payload properties must be enumerable data properties");
|
|
367
|
+
}
|
|
368
|
+
return [key, canonicalValue(descriptor.value, state, depth + 1)];
|
|
369
|
+
})
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
throw new Error(`Artifact command payload contains unsupported ${typeof value}`);
|
|
373
|
+
}
|
|
374
|
+
function parseCanonicalJson(value) {
|
|
375
|
+
const parsed = JSON.parse(value);
|
|
376
|
+
if (canonicalJson(parsed) !== value)
|
|
377
|
+
throw new Error("Artifact command payload is not canonical JSON");
|
|
378
|
+
return parsed;
|
|
379
|
+
}
|
|
380
|
+
var BinaryWriter = class {
|
|
381
|
+
constructor(maximum) {
|
|
382
|
+
this.maximum = maximum;
|
|
383
|
+
}
|
|
384
|
+
buffer = new Uint8Array(1024);
|
|
385
|
+
length = 0;
|
|
386
|
+
byte(value) {
|
|
387
|
+
this.ensure(1);
|
|
388
|
+
this.buffer[this.length++] = value;
|
|
389
|
+
}
|
|
390
|
+
bytes(value) {
|
|
391
|
+
this.ensure(value.byteLength);
|
|
392
|
+
this.buffer.set(value, this.length);
|
|
393
|
+
this.length += value.byteLength;
|
|
394
|
+
}
|
|
395
|
+
varint(value) {
|
|
396
|
+
assertSafeInteger(value, "varint");
|
|
397
|
+
let remaining = BigInt(value);
|
|
398
|
+
do {
|
|
399
|
+
let byte = Number(remaining & 0x7fn);
|
|
400
|
+
remaining >>= 7n;
|
|
401
|
+
if (remaining > 0n) byte |= 128;
|
|
402
|
+
this.byte(byte);
|
|
403
|
+
} while (remaining > 0n);
|
|
404
|
+
}
|
|
405
|
+
string(value) {
|
|
406
|
+
const bytes = textEncoder.encode(value);
|
|
407
|
+
if (bytes.byteLength > ARTIFACT_OPERATION_MAX_STRING_BYTES) {
|
|
408
|
+
throw new ArtifactLimitError(
|
|
409
|
+
"operation string bytes",
|
|
410
|
+
bytes.byteLength,
|
|
411
|
+
ARTIFACT_OPERATION_MAX_STRING_BYTES
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
this.varint(bytes.byteLength);
|
|
415
|
+
this.bytes(bytes);
|
|
416
|
+
}
|
|
417
|
+
finish() {
|
|
418
|
+
return this.buffer.slice(0, this.length);
|
|
419
|
+
}
|
|
420
|
+
ensure(extra) {
|
|
421
|
+
const required = this.length + extra;
|
|
422
|
+
if (required > this.maximum)
|
|
423
|
+
throw new ArtifactLimitError("operation bytes", required, this.maximum);
|
|
424
|
+
if (required <= this.buffer.byteLength) return;
|
|
425
|
+
let nextSize = this.buffer.byteLength;
|
|
426
|
+
while (nextSize < required) nextSize = Math.min(this.maximum, nextSize * 2);
|
|
427
|
+
const next = new Uint8Array(nextSize);
|
|
428
|
+
next.set(this.buffer);
|
|
429
|
+
this.buffer = next;
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
var BinaryReader = class {
|
|
433
|
+
constructor(input) {
|
|
434
|
+
this.input = input;
|
|
435
|
+
}
|
|
436
|
+
offset = 0;
|
|
437
|
+
byte() {
|
|
438
|
+
const value = this.input[this.offset];
|
|
439
|
+
if (value === void 0) throw new Error("Truncated artifact operation");
|
|
440
|
+
this.offset += 1;
|
|
441
|
+
return value;
|
|
442
|
+
}
|
|
443
|
+
bytes(length) {
|
|
444
|
+
if (!Number.isSafeInteger(length) || length < 0 || this.offset + length > this.input.byteLength) {
|
|
445
|
+
throw new Error("Truncated artifact operation bytes");
|
|
446
|
+
}
|
|
447
|
+
const value = this.input.subarray(this.offset, this.offset + length);
|
|
448
|
+
this.offset += length;
|
|
449
|
+
return value;
|
|
450
|
+
}
|
|
451
|
+
varint() {
|
|
452
|
+
let value = 0n;
|
|
453
|
+
let shift = 0n;
|
|
454
|
+
for (let index = 0; index < 10; index += 1) {
|
|
455
|
+
const byte = this.byte();
|
|
456
|
+
value |= BigInt(byte & 127) << shift;
|
|
457
|
+
if ((byte & 128) === 0) {
|
|
458
|
+
if (index > 0 && byte === 0) {
|
|
459
|
+
throw new Error("Artifact operation varint is non-canonical");
|
|
460
|
+
}
|
|
461
|
+
const number = Number(value);
|
|
462
|
+
if (!Number.isSafeInteger(number))
|
|
463
|
+
throw new Error("Artifact operation varint exceeds safe integer");
|
|
464
|
+
return number;
|
|
465
|
+
}
|
|
466
|
+
shift += 7n;
|
|
467
|
+
}
|
|
468
|
+
throw new Error("Invalid artifact operation varint");
|
|
469
|
+
}
|
|
470
|
+
string() {
|
|
471
|
+
const length = this.varint();
|
|
472
|
+
if (length > ARTIFACT_OPERATION_MAX_STRING_BYTES) {
|
|
473
|
+
throw new ArtifactLimitError(
|
|
474
|
+
"operation string bytes",
|
|
475
|
+
length,
|
|
476
|
+
ARTIFACT_OPERATION_MAX_STRING_BYTES
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
return textDecoder.decode(this.bytes(length));
|
|
480
|
+
}
|
|
481
|
+
done() {
|
|
482
|
+
if (this.offset !== this.input.byteLength)
|
|
483
|
+
throw new Error("Artifact operation has trailing bytes");
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
export {
|
|
487
|
+
ARTIFACT_OPERATION_MAX_BYTES,
|
|
488
|
+
ARTIFACT_OPERATION_MAX_COMMANDS,
|
|
489
|
+
ARTIFACT_OPERATION_MAX_JSON_DEPTH,
|
|
490
|
+
ARTIFACT_OPERATION_MAX_JSON_NODES,
|
|
491
|
+
ARTIFACT_OPERATION_MAX_STRING_BYTES,
|
|
492
|
+
ARTIFACT_OPERATION_MAX_VECTOR_ACTORS,
|
|
493
|
+
ArtifactCommandBatchCodec,
|
|
494
|
+
ArtifactKernelRegistry,
|
|
495
|
+
ChartCollection,
|
|
496
|
+
ChartSeriesCollection,
|
|
497
|
+
CommentThread,
|
|
498
|
+
ConditionalFormattingCollection,
|
|
499
|
+
DataValidationCollection,
|
|
500
|
+
Document,
|
|
501
|
+
DocumentBlockCollection,
|
|
502
|
+
DocumentCommentThread,
|
|
503
|
+
DocumentComments,
|
|
504
|
+
DocumentFile,
|
|
505
|
+
DocumentPageBreak,
|
|
506
|
+
DocumentParagraph,
|
|
507
|
+
DocumentSection,
|
|
508
|
+
DocumentSectionStories,
|
|
509
|
+
DocumentSections,
|
|
510
|
+
DocumentStory,
|
|
511
|
+
DocumentTable,
|
|
512
|
+
DocumentTextRun,
|
|
513
|
+
FreezePanes,
|
|
514
|
+
ImageCollection,
|
|
515
|
+
InvalidPresentationInputError,
|
|
516
|
+
InvalidSpreadsheetImageError,
|
|
517
|
+
PPTX_MEDIA_TYPE,
|
|
518
|
+
Presentation,
|
|
519
|
+
PresentationChart,
|
|
520
|
+
PresentationChartCollection,
|
|
521
|
+
PresentationChartSeries,
|
|
522
|
+
PresentationChartSeriesCollection,
|
|
523
|
+
PresentationFidelityError,
|
|
524
|
+
PresentationFile,
|
|
525
|
+
PresentationGroup,
|
|
526
|
+
PresentationGroupCollection,
|
|
527
|
+
PresentationImage,
|
|
528
|
+
PresentationImageCollection,
|
|
529
|
+
PresentationLayout,
|
|
530
|
+
PresentationLayoutCollection,
|
|
531
|
+
PresentationMaster,
|
|
532
|
+
PresentationMasterCollection,
|
|
533
|
+
PresentationSecurityError,
|
|
534
|
+
PresentationShape,
|
|
535
|
+
PresentationShapeCollection,
|
|
536
|
+
PresentationTable,
|
|
537
|
+
PresentationTableCell,
|
|
538
|
+
PresentationTableCollection,
|
|
539
|
+
PresentationText,
|
|
540
|
+
Range,
|
|
541
|
+
RangeConditionalFormats,
|
|
542
|
+
RangeFormat,
|
|
543
|
+
RangeSparklines,
|
|
544
|
+
Document as ReferenceDocument,
|
|
545
|
+
Presentation as ReferencePresentation,
|
|
546
|
+
Workbook as ReferenceWorkbook,
|
|
547
|
+
SPREADSHEET_RECALCULATION_LIMITS,
|
|
548
|
+
SPREADSHEET_SNAPSHOT_LIMITS,
|
|
549
|
+
ShapeCollection,
|
|
550
|
+
Slide,
|
|
551
|
+
SlideCollection,
|
|
552
|
+
SlidePlaceholderCollection,
|
|
553
|
+
SparklineGroup,
|
|
554
|
+
SparklineGroupCollection,
|
|
555
|
+
SpreadsheetChart,
|
|
556
|
+
SpreadsheetChartSeries,
|
|
557
|
+
SpreadsheetFile,
|
|
558
|
+
SpreadsheetImage,
|
|
559
|
+
SpreadsheetShape,
|
|
560
|
+
Table,
|
|
561
|
+
TableCollection,
|
|
562
|
+
TrackedChange,
|
|
563
|
+
TrackedChanges,
|
|
564
|
+
UnsupportedPresentationFeatureError,
|
|
565
|
+
Workbook,
|
|
566
|
+
WorkbookComments,
|
|
567
|
+
Worksheet,
|
|
568
|
+
WorksheetCollection,
|
|
569
|
+
assertRenderPixelBudget as assertPresentationRenderPixelBudget,
|
|
570
|
+
colorValue as presentationColorValue,
|
|
571
|
+
truncate as truncatePresentationText,
|
|
572
|
+
validateSerializedWorkbook
|
|
573
|
+
};
|
|
574
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/kernel.ts"],"sourcesContent":["import { ArtifactLimitError, UnsupportedArtifactFeatureError } from \"./errors\";\nimport { FileBlob } from \"./file-blob\";\n\nexport type ArtifactModality = \"spreadsheet\" | \"presentation\" | \"document\";\nexport type ArtifactKernelKind = \"native\" | \"wasm\" | \"reference\";\nexport type ArtifactObjectId = string & { readonly __artifactObjectId: unique symbol };\n\nexport type ArtifactKernelCapabilities = {\n modality: ArtifactModality;\n modelSchemaVersion: number;\n operationSchemaVersion: number;\n inspect: boolean;\n calculate: boolean;\n layout: boolean;\n renderFormats: readonly string[];\n importFormats: readonly string[];\n exportFormats: readonly string[];\n collaboration: boolean;\n};\n\nexport type ArtifactCausalVector = Readonly<Record<string, number>>;\n\nexport type ArtifactCommand = {\n code: string;\n targetId?: string;\n precondition?: {\n objectRevision?: number;\n exists?: boolean;\n };\n payload?: unknown;\n};\n\nexport type ArtifactCommandBatch = {\n schemaVersion: 1;\n artifactId: string;\n modality: ArtifactModality;\n transactionId: string;\n actorId: string;\n baseSequence: number;\n baseVector: ArtifactCausalVector;\n commands: readonly ArtifactCommand[];\n};\n\nexport type ArtifactApplyResult = {\n sequence: number;\n vector: ArtifactCausalVector;\n changedObjectIds: readonly string[];\n inverse?: ArtifactCommandBatch;\n};\n\nexport type ArtifactKernelOpenInput = {\n modality: ArtifactModality;\n snapshot?: Uint8Array;\n operationTail?: readonly Uint8Array[];\n};\n\nexport type ArtifactKernelDocument = {\n readonly modality: ArtifactModality;\n readonly revision: number;\n apply(batch: ArtifactCommandBatch): ArtifactApplyResult;\n snapshot(): Uint8Array;\n inspect(options: Record<string, unknown>): Promise<readonly Record<string, unknown>[]>;\n render(options: Record<string, unknown>): Promise<FileBlob>;\n materialize(format: string, options?: Record<string, unknown>): Promise<FileBlob>;\n close(): void;\n};\n\nexport interface ArtifactKernel {\n readonly kind: ArtifactKernelKind;\n readonly version: string;\n capabilities(modality: ArtifactModality): ArtifactKernelCapabilities;\n open(input: ArtifactKernelOpenInput): Promise<ArtifactKernelDocument>;\n}\n\nexport type ArtifactKernelSelection = {\n kernel: ArtifactKernel;\n capabilities: ArtifactKernelCapabilities;\n};\n\n/**\n * Kernel registry used by the universal facade. Hosts register loaders without\n * making application code depend on platform packages. Production selection is\n * deliberately fail-closed: Node/Bun selects only native. Browser editing goes\n * through the SDK's dedicated Worker/WASM session, and the reference backend is\n * selected only when a development/conformance caller explicitly asks for it.\n */\nexport class ArtifactKernelRegistry {\n private readonly kernels = new Map<ArtifactKernelKind, ArtifactKernel>();\n\n register(kernel: ArtifactKernel): () => void {\n if (this.kernels.has(kernel.kind))\n throw new Error(`Artifact ${kernel.kind} kernel already registered`);\n this.kernels.set(kernel.kind, kernel);\n return () => {\n if (this.kernels.get(kernel.kind) === kernel) this.kernels.delete(kernel.kind);\n };\n }\n\n select(\n modality: ArtifactModality,\n required: Partial<\n Pick<ArtifactKernelCapabilities, \"calculate\" | \"layout\" | \"collaboration\">\n > = {},\n order: readonly ArtifactKernelKind[] = defaultKernelOrder(),\n ): ArtifactKernelSelection {\n for (const kind of order) {\n const kernel = this.kernels.get(kind);\n if (!kernel) continue;\n const capabilities = kernel.capabilities(modality);\n if (required.calculate === true && !capabilities.calculate) continue;\n if (required.layout === true && !capabilities.layout) continue;\n if (required.collaboration === true && !capabilities.collaboration) continue;\n return { kernel, capabilities };\n }\n throw new UnsupportedArtifactFeatureError(\n modality,\n \"required kernel capabilities\",\n \"available\",\n );\n }\n\n available(): readonly ArtifactKernel[] {\n return [...this.kernels.values()];\n }\n}\n\nexport const ARTIFACT_OPERATION_MAX_BYTES = 1024 * 1024;\nexport const ARTIFACT_OPERATION_MAX_COMMANDS = 10_000;\nexport const ARTIFACT_OPERATION_MAX_VECTOR_ACTORS = 1_024;\nexport const ARTIFACT_OPERATION_MAX_STRING_BYTES = 256 * 1024;\nexport const ARTIFACT_OPERATION_MAX_JSON_DEPTH = 64;\nexport const ARTIFACT_OPERATION_MAX_JSON_NODES = 100_000;\nconst OPERATION_MAGIC = new Uint8Array([0x4f, 0x47, 0x41, 0x52]); // OGAR\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: true });\n\n/**\n * Deterministic codec retained only for historical TypeScript conformance\n * fixtures.\n *\n * @deprecated OGAR duplicates authored identity/causality and must never be\n * persisted, submitted, or lowered by a production runtime. Use the canonical\n * OGATX001 envelope with an identity-free OGASC001 command payload from\n * `@opengeni/contracts/editable-artifacts`.\n */\nexport const ArtifactCommandBatchCodec = {\n encode(batch: ArtifactCommandBatch): Uint8Array {\n validateBatch(batch);\n const writer = new BinaryWriter(ARTIFACT_OPERATION_MAX_BYTES);\n writer.bytes(OPERATION_MAGIC);\n writer.varint(batch.schemaVersion);\n writer.varint(modalityCode(batch.modality));\n writer.string(batch.artifactId);\n writer.string(batch.transactionId);\n writer.string(batch.actorId);\n writer.varint(batch.baseSequence);\n const vector = Object.entries(batch.baseVector).sort(([left], [right]) =>\n left < right ? -1 : left > right ? 1 : 0,\n );\n writer.varint(vector.length);\n for (const [actor, counter] of vector) {\n writer.string(actor);\n writer.varint(counter);\n }\n writer.varint(batch.commands.length);\n for (const command of batch.commands) {\n writer.string(command.code);\n writer.string(command.targetId ?? \"\");\n let flags = 0;\n if (command.precondition?.objectRevision !== undefined) flags |= 1;\n if (command.precondition?.exists !== undefined) flags |= 2;\n if (command.payload !== undefined) flags |= 4;\n writer.byte(flags);\n if ((flags & 1) !== 0) writer.varint(command.precondition!.objectRevision!);\n if ((flags & 2) !== 0) writer.byte(command.precondition!.exists ? 1 : 0);\n if ((flags & 4) !== 0) writer.string(canonicalJson(command.payload));\n }\n return writer.finish();\n },\n\n decode(bytes: Uint8Array): ArtifactCommandBatch {\n if (bytes.byteLength > ARTIFACT_OPERATION_MAX_BYTES) {\n throw new ArtifactLimitError(\n \"operation bytes\",\n bytes.byteLength,\n ARTIFACT_OPERATION_MAX_BYTES,\n );\n }\n const reader = new BinaryReader(bytes);\n const magic = reader.bytes(OPERATION_MAGIC.length);\n if (!magic.every((value, index) => value === OPERATION_MAGIC[index])) {\n throw new Error(\"Invalid artifact operation magic\");\n }\n const schemaVersion = reader.varint();\n if (schemaVersion !== 1)\n throw new Error(`Unsupported artifact operation schema: ${schemaVersion}`);\n const modality = modalityFromCode(reader.varint());\n const artifactId = reader.string();\n const transactionId = reader.string();\n const actorId = reader.string();\n const baseSequence = reader.varint();\n const vectorCount = reader.varint();\n if (vectorCount > ARTIFACT_OPERATION_MAX_VECTOR_ACTORS) {\n throw new ArtifactLimitError(\n \"causal vector actors\",\n vectorCount,\n ARTIFACT_OPERATION_MAX_VECTOR_ACTORS,\n );\n }\n const vectorEntries: Array<readonly [string, number]> = [];\n let previousActor = \"\";\n for (let index = 0; index < vectorCount; index += 1) {\n const actor = reader.string();\n if (actor <= previousActor) {\n throw new Error(\"Causal vector actors must be unique and sorted\");\n }\n previousActor = actor;\n vectorEntries.push([actor, reader.varint()]);\n }\n // Object.fromEntries defines data properties instead of invoking the legacy\n // `__proto__` setter. Actor identifiers therefore round-trip without\n // mutating the vector object's prototype or silently losing an entry.\n const baseVector = Object.fromEntries(vectorEntries);\n const commandCount = reader.varint();\n if (commandCount > ARTIFACT_OPERATION_MAX_COMMANDS) {\n throw new ArtifactLimitError(\n \"operation commands\",\n commandCount,\n ARTIFACT_OPERATION_MAX_COMMANDS,\n );\n }\n const commands: ArtifactCommand[] = [];\n for (let index = 0; index < commandCount; index += 1) {\n const code = reader.string();\n const targetId = reader.string();\n const flags = reader.byte();\n if ((flags & ~7) !== 0) throw new Error(\"Unknown artifact command flags\");\n const objectRevision = (flags & 1) !== 0 ? reader.varint() : undefined;\n let exists: boolean | undefined;\n if ((flags & 2) !== 0) {\n const encodedExists = reader.byte();\n if (encodedExists > 1) {\n throw new Error(\"Artifact command boolean uses a non-canonical encoding\");\n }\n exists = encodedExists === 1;\n }\n const payload = (flags & 4) !== 0 ? parseCanonicalJson(reader.string()) : undefined;\n commands.push({\n code,\n ...(targetId ? { targetId } : {}),\n ...(objectRevision !== undefined || exists !== undefined\n ? {\n precondition: {\n ...(objectRevision !== undefined ? { objectRevision } : {}),\n ...(exists !== undefined ? { exists } : {}),\n },\n }\n : {}),\n ...(payload !== undefined ? { payload } : {}),\n });\n }\n reader.done();\n const batch: ArtifactCommandBatch = {\n schemaVersion: 1,\n artifactId,\n modality,\n transactionId,\n actorId,\n baseSequence,\n baseVector,\n commands,\n };\n validateBatch(batch);\n return batch;\n },\n};\n\nfunction validateBatch(batch: ArtifactCommandBatch): void {\n if (batch.schemaVersion !== 1) throw new Error(\"Artifact operation schema must be 1\");\n for (const [label, value] of [\n [\"artifactId\", batch.artifactId],\n [\"transactionId\", batch.transactionId],\n [\"actorId\", batch.actorId],\n ] as const) {\n if (!value || value.length > 512) throw new Error(`${label} must contain 1-512 characters`);\n }\n assertSafeInteger(batch.baseSequence, \"baseSequence\");\n const vector = Object.entries(batch.baseVector);\n if (vector.length > ARTIFACT_OPERATION_MAX_VECTOR_ACTORS) {\n throw new ArtifactLimitError(\n \"causal vector actors\",\n vector.length,\n ARTIFACT_OPERATION_MAX_VECTOR_ACTORS,\n );\n }\n for (const [actor, counter] of vector) {\n if (!actor || actor.length > 512)\n throw new Error(\"Causal vector actor must contain 1-512 characters\");\n assertSafeInteger(counter, `baseVector.${actor}`);\n }\n if (batch.commands.length > ARTIFACT_OPERATION_MAX_COMMANDS) {\n throw new ArtifactLimitError(\n \"operation commands\",\n batch.commands.length,\n ARTIFACT_OPERATION_MAX_COMMANDS,\n );\n }\n if (batch.commands.length === 0) throw new Error(\"Artifact command batch must not be empty\");\n for (const command of batch.commands) {\n if (!/^[a-z][a-z0-9_.-]{0,127}$/.test(command.code))\n throw new Error(`Invalid artifact command code: ${command.code}`);\n if (\n command.targetId !== undefined &&\n (command.targetId.length === 0 || command.targetId.length > 512)\n ) {\n throw new Error(\"Artifact command target id must contain 1-512 characters\");\n }\n if (command.precondition?.objectRevision !== undefined) {\n assertSafeInteger(command.precondition.objectRevision, \"objectRevision\");\n }\n }\n}\n\nfunction defaultKernelOrder(): readonly ArtifactKernelKind[] {\n return typeof window === \"undefined\" ? [\"native\"] : [];\n}\n\nfunction modalityCode(modality: ArtifactModality): number {\n return { spreadsheet: 1, presentation: 2, document: 3 }[modality];\n}\n\nfunction modalityFromCode(value: number): ArtifactModality {\n if (value === 1) return \"spreadsheet\";\n if (value === 2) return \"presentation\";\n if (value === 3) return \"document\";\n throw new Error(`Unknown artifact modality code: ${value}`);\n}\n\nfunction assertSafeInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 0)\n throw new Error(`${label} must be a non-negative safe integer`);\n}\n\nfunction canonicalJson(value: unknown): string {\n return JSON.stringify(canonicalValue(value, { nodes: 0 }, 0));\n}\n\nfunction canonicalValue(value: unknown, state: { nodes: number }, depth: number): unknown {\n state.nodes += 1;\n if (state.nodes > ARTIFACT_OPERATION_MAX_JSON_NODES) {\n throw new ArtifactLimitError(\n \"operation JSON nodes\",\n state.nodes,\n ARTIFACT_OPERATION_MAX_JSON_NODES,\n );\n }\n if (depth > ARTIFACT_OPERATION_MAX_JSON_DEPTH) {\n throw new ArtifactLimitError(\"operation JSON depth\", depth, ARTIFACT_OPERATION_MAX_JSON_DEPTH);\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value))\n throw new Error(\"Artifact command JSON cannot contain non-finite numbers\");\n return Object.is(value, -0) ? 0 : value;\n }\n if (Array.isArray(value)) {\n if (Object.keys(value).length !== value.length || Object.getOwnPropertySymbols(value).length) {\n throw new Error(\"Artifact command payload arrays must be dense JSON arrays\");\n }\n const output: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (!descriptor || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw new Error(\"Artifact command payload arrays must contain data properties\");\n }\n output.push(canonicalValue(descriptor.value, state, depth + 1));\n }\n return output;\n }\n if (typeof value === \"object\") {\n if (Object.getPrototypeOf(value) !== Object.prototype)\n throw new Error(\"Artifact command payload must be plain JSON\");\n const record = value as Record<string, unknown>;\n const keys = Reflect.ownKeys(record);\n if (keys.some((key) => typeof key !== \"string\")) {\n throw new Error(\"Artifact command payload cannot contain symbol properties\");\n }\n return Object.fromEntries(\n (keys as string[]).sort().map((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(record, key);\n if (!descriptor || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw new Error(\"Artifact command payload properties must be enumerable data properties\");\n }\n return [key, canonicalValue(descriptor.value, state, depth + 1)];\n }),\n );\n }\n throw new Error(`Artifact command payload contains unsupported ${typeof value}`);\n}\n\nfunction parseCanonicalJson(value: string): unknown {\n const parsed: unknown = JSON.parse(value);\n if (canonicalJson(parsed) !== value)\n throw new Error(\"Artifact command payload is not canonical JSON\");\n return parsed;\n}\n\nclass BinaryWriter {\n private buffer = new Uint8Array(1_024);\n private length = 0;\n constructor(private readonly maximum: number) {}\n\n byte(value: number): void {\n this.ensure(1);\n this.buffer[this.length++] = value;\n }\n\n bytes(value: Uint8Array): void {\n this.ensure(value.byteLength);\n this.buffer.set(value, this.length);\n this.length += value.byteLength;\n }\n\n varint(value: number): void {\n assertSafeInteger(value, \"varint\");\n let remaining = BigInt(value);\n do {\n let byte = Number(remaining & 0x7fn);\n remaining >>= 7n;\n if (remaining > 0n) byte |= 0x80;\n this.byte(byte);\n } while (remaining > 0n);\n }\n\n string(value: string): void {\n const bytes = textEncoder.encode(value);\n if (bytes.byteLength > ARTIFACT_OPERATION_MAX_STRING_BYTES) {\n throw new ArtifactLimitError(\n \"operation string bytes\",\n bytes.byteLength,\n ARTIFACT_OPERATION_MAX_STRING_BYTES,\n );\n }\n this.varint(bytes.byteLength);\n this.bytes(bytes);\n }\n\n finish(): Uint8Array {\n return this.buffer.slice(0, this.length);\n }\n\n private ensure(extra: number): void {\n const required = this.length + extra;\n if (required > this.maximum)\n throw new ArtifactLimitError(\"operation bytes\", required, this.maximum);\n if (required <= this.buffer.byteLength) return;\n let nextSize = this.buffer.byteLength;\n while (nextSize < required) nextSize = Math.min(this.maximum, nextSize * 2);\n const next = new Uint8Array(nextSize);\n next.set(this.buffer);\n this.buffer = next;\n }\n}\n\nclass BinaryReader {\n private offset = 0;\n constructor(private readonly input: Uint8Array) {}\n\n byte(): number {\n const value = this.input[this.offset];\n if (value === undefined) throw new Error(\"Truncated artifact operation\");\n this.offset += 1;\n return value;\n }\n\n bytes(length: number): Uint8Array {\n if (\n !Number.isSafeInteger(length) ||\n length < 0 ||\n this.offset + length > this.input.byteLength\n ) {\n throw new Error(\"Truncated artifact operation bytes\");\n }\n const value = this.input.subarray(this.offset, this.offset + length);\n this.offset += length;\n return value;\n }\n\n varint(): number {\n let value = 0n;\n let shift = 0n;\n for (let index = 0; index < 10; index += 1) {\n const byte = this.byte();\n value |= BigInt(byte & 0x7f) << shift;\n if ((byte & 0x80) === 0) {\n if (index > 0 && byte === 0) {\n throw new Error(\"Artifact operation varint is non-canonical\");\n }\n const number = Number(value);\n if (!Number.isSafeInteger(number))\n throw new Error(\"Artifact operation varint exceeds safe integer\");\n return number;\n }\n shift += 7n;\n }\n throw new Error(\"Invalid artifact operation varint\");\n }\n\n string(): string {\n const length = this.varint();\n if (length > ARTIFACT_OPERATION_MAX_STRING_BYTES) {\n throw new ArtifactLimitError(\n \"operation string bytes\",\n length,\n ARTIFACT_OPERATION_MAX_STRING_BYTES,\n );\n }\n return textDecoder.decode(this.bytes(length));\n }\n\n done(): void {\n if (this.offset !== this.input.byteLength)\n throw new Error(\"Artifact operation has trailing bytes\");\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
runConfiguredArtifactRuntimeCli
|
|
4
|
+
} from "./chunk-U5G2BKM2.js";
|
|
5
|
+
import "./chunk-ZCJYRJGB.js";
|
|
6
|
+
import {
|
|
7
|
+
ArtifactRuntimeError
|
|
8
|
+
} from "./chunk-N2IHNWBS.js";
|
|
9
|
+
import "./chunk-VUNV25KB.js";
|
|
10
|
+
|
|
11
|
+
// src/runtime-cli-entry.ts
|
|
12
|
+
try {
|
|
13
|
+
process.stdout.write(await runConfiguredArtifactRuntimeCli(process.argv.slice(2)));
|
|
14
|
+
} catch (error) {
|
|
15
|
+
const code = error instanceof ArtifactRuntimeError ? error.code : "ARTIFACT_RUNTIME_UNAVAILABLE";
|
|
16
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
17
|
+
process.stderr.write(`${JSON.stringify({ error: { code, message } })}
|
|
18
|
+
`);
|
|
19
|
+
process.exitCode = 1;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=runtime-cli-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime-cli-entry.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { ArtifactRuntimeError } from \"./runtime\";\nimport { runConfiguredArtifactRuntimeCli } from \"./runtime-development\";\n\ntry {\n process.stdout.write(await runConfiguredArtifactRuntimeCli(process.argv.slice(2)));\n} catch (error) {\n const code = error instanceof ArtifactRuntimeError ? error.code : \"ARTIFACT_RUNTIME_UNAVAILABLE\";\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`${JSON.stringify({ error: { code, message } })}\\n`);\n process.exitCode = 1;\n}\n"],"mappings":";;;;;;;;;;;AAKA,IAAI;AACF,UAAQ,OAAO,MAAM,MAAM,gCAAgC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC;AACnF,SAAS,OAAO;AACd,QAAM,OAAO,iBAAiB,uBAAuB,MAAM,OAAO;AAClE,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE,CAAC,CAAC;AAAA,CAAI;AACxE,UAAQ,WAAW;AACrB;","names":[]}
|