@bilig/workbook-domain 0.1.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/LICENSE ADDED
@@ -0,0 +1 @@
1
+ MIT
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # @bilig/workbook-domain
2
+
3
+ Transport-neutral workbook mutation language and batch types for bilig.
4
+
5
+ Use this package for workbook semantic types that should not depend on a transport,
6
+ runtime, or replica-state implementation, including:
7
+
8
+ - `WorkbookOp`
9
+ - `WorkbookTxn`
10
+ - `EngineOp`
11
+ - `EngineOpBatch`
12
+
13
+ Replica-state bookkeeping lives inside `@bilig/core`.
@@ -0,0 +1,4 @@
1
+ export declare function isWorkbookOp(value: unknown): value is import("./index.js").WorkbookOp;
2
+ export declare function isEngineOp(value: unknown): value is import("./index.js").EngineOp;
3
+ export declare function isEngineOps(value: unknown): value is import("./index.js").EngineOp[];
4
+ export declare function isEngineOpBatch(value: unknown): value is import("./index.js").EngineOpBatch;
package/dist/guards.js ADDED
@@ -0,0 +1,293 @@
1
+ import { isCellRangeRef, isLiteralInput } from "@bilig/protocol";
2
+ const HORIZONTAL_ALIGNMENT_VALUES = new Set(["general", "left", "center", "right"]);
3
+ const VERTICAL_ALIGNMENT_VALUES = new Set(["top", "middle", "bottom"]);
4
+ const BORDER_STYLE_VALUES = new Set(["solid", "dashed", "dotted", "double"]);
5
+ const BORDER_WEIGHT_VALUES = new Set(["thin", "medium", "thick"]);
6
+ const NUMBER_FORMAT_KIND_VALUES = new Set([
7
+ "general",
8
+ "number",
9
+ "currency",
10
+ "accounting",
11
+ "percent",
12
+ "date",
13
+ "time",
14
+ "datetime",
15
+ "text",
16
+ ]);
17
+ const COMPATIBILITY_MODE_VALUES = new Set(["excel-modern", "odf-1.4"]);
18
+ const SORT_DIRECTION_VALUES = new Set(["asc", "desc"]);
19
+ const PIVOT_AGGREGATION_VALUES = new Set(["sum", "count"]);
20
+ function isRecord(value) {
21
+ return typeof value === "object" && value !== null;
22
+ }
23
+ function isFiniteNumber(value) {
24
+ return typeof value === "number" && Number.isFinite(value);
25
+ }
26
+ function isStringArray(value) {
27
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string");
28
+ }
29
+ function isOptionalString(value) {
30
+ return value === undefined || typeof value === "string";
31
+ }
32
+ function isOptionalNumber(value) {
33
+ return value === undefined || isFiniteNumber(value);
34
+ }
35
+ function isOptionalNullableNumber(value) {
36
+ return value === undefined || value === null || isFiniteNumber(value);
37
+ }
38
+ function isOptionalBoolean(value) {
39
+ return value === undefined || typeof value === "boolean";
40
+ }
41
+ function isOptionalNullableBoolean(value) {
42
+ return value === undefined || value === null || typeof value === "boolean";
43
+ }
44
+ function hasString(value, key) {
45
+ return typeof value[key] === "string";
46
+ }
47
+ function hasFiniteNumber(value, key) {
48
+ return isFiniteNumber(value[key]);
49
+ }
50
+ function isWorkbookAxisEntry(value) {
51
+ return (isRecord(value) &&
52
+ hasString(value, "id") &&
53
+ hasFiniteNumber(value, "index") &&
54
+ isOptionalNullableNumber(value["size"]) &&
55
+ isOptionalNullableBoolean(value["hidden"]));
56
+ }
57
+ function isCellBorderSide(value) {
58
+ return (isRecord(value) &&
59
+ hasString(value, "color") &&
60
+ typeof value["style"] === "string" &&
61
+ BORDER_STYLE_VALUES.has(value["style"]) &&
62
+ typeof value["weight"] === "string" &&
63
+ BORDER_WEIGHT_VALUES.has(value["weight"]));
64
+ }
65
+ function isCellStyleRecord(value) {
66
+ if (!isRecord(value) || !hasString(value, "id")) {
67
+ return false;
68
+ }
69
+ const fill = value["fill"];
70
+ if (fill !== undefined && (!isRecord(fill) || typeof fill["backgroundColor"] !== "string")) {
71
+ return false;
72
+ }
73
+ const font = value["font"];
74
+ if (font !== undefined &&
75
+ (!isRecord(font) ||
76
+ !isOptionalString(font["family"]) ||
77
+ !isOptionalNumber(font["size"]) ||
78
+ !isOptionalBoolean(font["bold"]) ||
79
+ !isOptionalBoolean(font["italic"]) ||
80
+ !isOptionalBoolean(font["underline"]) ||
81
+ !isOptionalString(font["color"]))) {
82
+ return false;
83
+ }
84
+ const alignment = value["alignment"];
85
+ if (alignment !== undefined &&
86
+ (!isRecord(alignment) ||
87
+ !(alignment["horizontal"] === undefined ||
88
+ (typeof alignment["horizontal"] === "string" &&
89
+ HORIZONTAL_ALIGNMENT_VALUES.has(alignment["horizontal"]))) ||
90
+ !(alignment["vertical"] === undefined ||
91
+ (typeof alignment["vertical"] === "string" &&
92
+ VERTICAL_ALIGNMENT_VALUES.has(alignment["vertical"]))) ||
93
+ !isOptionalBoolean(alignment["wrap"]) ||
94
+ !isOptionalNumber(alignment["indent"]))) {
95
+ return false;
96
+ }
97
+ const borders = value["borders"];
98
+ if (borders !== undefined &&
99
+ (!isRecord(borders) ||
100
+ !(borders["top"] === undefined || isCellBorderSide(borders["top"])) ||
101
+ !(borders["right"] === undefined || isCellBorderSide(borders["right"])) ||
102
+ !(borders["bottom"] === undefined || isCellBorderSide(borders["bottom"])) ||
103
+ !(borders["left"] === undefined || isCellBorderSide(borders["left"])))) {
104
+ return false;
105
+ }
106
+ return true;
107
+ }
108
+ function isCellNumberFormatRecord(value) {
109
+ return (isRecord(value) &&
110
+ hasString(value, "id") &&
111
+ hasString(value, "code") &&
112
+ typeof value["kind"] === "string" &&
113
+ NUMBER_FORMAT_KIND_VALUES.has(value["kind"]));
114
+ }
115
+ function isWorkbookCalculationSettings(value) {
116
+ return (isRecord(value) &&
117
+ (value["mode"] === "automatic" || value["mode"] === "manual") &&
118
+ (value["compatibilityMode"] === undefined ||
119
+ (typeof value["compatibilityMode"] === "string" &&
120
+ COMPATIBILITY_MODE_VALUES.has(value["compatibilityMode"]))));
121
+ }
122
+ function isWorkbookVolatileContext(value) {
123
+ return isRecord(value) && hasFiniteNumber(value, "recalcEpoch");
124
+ }
125
+ function isWorkbookSortKey(value) {
126
+ return (isRecord(value) &&
127
+ hasString(value, "keyAddress") &&
128
+ typeof value["direction"] === "string" &&
129
+ SORT_DIRECTION_VALUES.has(value["direction"]));
130
+ }
131
+ function isWorkbookDefinedNameValue(value) {
132
+ if (isLiteralInput(value)) {
133
+ return true;
134
+ }
135
+ if (!isRecord(value) || typeof value["kind"] !== "string") {
136
+ return false;
137
+ }
138
+ switch (value["kind"]) {
139
+ case "scalar":
140
+ return isLiteralInput(value["value"]);
141
+ case "cell-ref":
142
+ return hasString(value, "sheetName") && hasString(value, "address");
143
+ case "range-ref":
144
+ return isCellRangeRef(value);
145
+ case "structured-ref":
146
+ return hasString(value, "tableName") && hasString(value, "columnName");
147
+ case "formula":
148
+ return hasString(value, "formula");
149
+ default:
150
+ return false;
151
+ }
152
+ }
153
+ function isWorkbookTableOp(value) {
154
+ return (isRecord(value) &&
155
+ hasString(value, "name") &&
156
+ hasString(value, "sheetName") &&
157
+ hasString(value, "startAddress") &&
158
+ hasString(value, "endAddress") &&
159
+ isStringArray(value["columnNames"]) &&
160
+ typeof value["headerRow"] === "boolean" &&
161
+ typeof value["totalsRow"] === "boolean");
162
+ }
163
+ function isWorkbookPivotValue(value) {
164
+ return (isRecord(value) &&
165
+ hasString(value, "sourceColumn") &&
166
+ typeof value["summarizeBy"] === "string" &&
167
+ PIVOT_AGGREGATION_VALUES.has(value["summarizeBy"]) &&
168
+ isOptionalString(value["outputLabel"]));
169
+ }
170
+ export function isWorkbookOp(value) {
171
+ if (!isRecord(value) || typeof value["kind"] !== "string") {
172
+ return false;
173
+ }
174
+ switch (value["kind"]) {
175
+ case "upsertWorkbook":
176
+ return hasString(value, "name");
177
+ case "setWorkbookMetadata":
178
+ return hasString(value, "key") && isLiteralInput(value["value"]);
179
+ case "setCalculationSettings":
180
+ return isWorkbookCalculationSettings(value["settings"]);
181
+ case "setVolatileContext":
182
+ return isWorkbookVolatileContext(value["context"]);
183
+ case "upsertSheet":
184
+ return (hasString(value, "name") && hasFiniteNumber(value, "order") && isOptionalNumber(value["id"]));
185
+ case "renameSheet":
186
+ return hasString(value, "oldName") && hasString(value, "newName");
187
+ case "deleteSheet":
188
+ return hasString(value, "name");
189
+ case "insertRows":
190
+ case "insertColumns":
191
+ return (hasString(value, "sheetName") &&
192
+ hasFiniteNumber(value, "start") &&
193
+ hasFiniteNumber(value, "count") &&
194
+ (value["entries"] === undefined ||
195
+ (Array.isArray(value["entries"]) &&
196
+ value["entries"].every((entry) => isWorkbookAxisEntry(entry)))));
197
+ case "deleteRows":
198
+ case "deleteColumns":
199
+ return (hasString(value, "sheetName") &&
200
+ hasFiniteNumber(value, "start") &&
201
+ hasFiniteNumber(value, "count"));
202
+ case "moveRows":
203
+ case "moveColumns":
204
+ return (hasString(value, "sheetName") &&
205
+ hasFiniteNumber(value, "start") &&
206
+ hasFiniteNumber(value, "count") &&
207
+ hasFiniteNumber(value, "target"));
208
+ case "updateRowMetadata":
209
+ case "updateColumnMetadata":
210
+ return (hasString(value, "sheetName") &&
211
+ hasFiniteNumber(value, "start") &&
212
+ hasFiniteNumber(value, "count") &&
213
+ isOptionalNullableNumber(value["size"]) &&
214
+ isOptionalNullableBoolean(value["hidden"]));
215
+ case "setFreezePane":
216
+ return (hasString(value, "sheetName") &&
217
+ hasFiniteNumber(value, "rows") &&
218
+ hasFiniteNumber(value, "cols"));
219
+ case "clearFreezePane":
220
+ return hasString(value, "sheetName");
221
+ case "setFilter":
222
+ case "clearFilter":
223
+ case "clearSort":
224
+ return hasString(value, "sheetName") && isCellRangeRef(value["range"]);
225
+ case "setSort":
226
+ return (hasString(value, "sheetName") &&
227
+ isCellRangeRef(value["range"]) &&
228
+ Array.isArray(value["keys"]) &&
229
+ value["keys"].every((entry) => isWorkbookSortKey(entry)));
230
+ case "setCellValue":
231
+ return (hasString(value, "sheetName") &&
232
+ hasString(value, "address") &&
233
+ isLiteralInput(value["value"]));
234
+ case "setCellFormula":
235
+ return (hasString(value, "sheetName") && hasString(value, "address") && hasString(value, "formula"));
236
+ case "setCellFormat":
237
+ return (hasString(value, "sheetName") &&
238
+ hasString(value, "address") &&
239
+ (value["format"] === null || typeof value["format"] === "string"));
240
+ case "upsertCellStyle":
241
+ return isCellStyleRecord(value["style"]);
242
+ case "upsertCellNumberFormat":
243
+ return isCellNumberFormatRecord(value["format"]);
244
+ case "setStyleRange":
245
+ return isCellRangeRef(value["range"]) && hasString(value, "styleId");
246
+ case "setFormatRange":
247
+ return isCellRangeRef(value["range"]) && hasString(value, "formatId");
248
+ case "clearCell":
249
+ return hasString(value, "sheetName") && hasString(value, "address");
250
+ case "upsertDefinedName":
251
+ return hasString(value, "name") && isWorkbookDefinedNameValue(value["value"]);
252
+ case "deleteDefinedName":
253
+ case "deleteTable":
254
+ return hasString(value, "name");
255
+ case "upsertTable":
256
+ return isWorkbookTableOp(value["table"]);
257
+ case "upsertSpillRange":
258
+ return (hasString(value, "sheetName") &&
259
+ hasString(value, "address") &&
260
+ hasFiniteNumber(value, "rows") &&
261
+ hasFiniteNumber(value, "cols"));
262
+ case "deleteSpillRange":
263
+ case "deletePivotTable":
264
+ return hasString(value, "sheetName") && hasString(value, "address");
265
+ case "upsertPivotTable":
266
+ return (hasString(value, "name") &&
267
+ hasString(value, "sheetName") &&
268
+ hasString(value, "address") &&
269
+ isCellRangeRef(value["source"]) &&
270
+ isStringArray(value["groupBy"]) &&
271
+ Array.isArray(value["values"]) &&
272
+ value["values"].every((entry) => isWorkbookPivotValue(entry)) &&
273
+ hasFiniteNumber(value, "rows") &&
274
+ hasFiniteNumber(value, "cols"));
275
+ default:
276
+ return false;
277
+ }
278
+ }
279
+ export function isEngineOp(value) {
280
+ return isWorkbookOp(value);
281
+ }
282
+ export function isEngineOps(value) {
283
+ return Array.isArray(value) && value.every((entry) => isEngineOp(entry));
284
+ }
285
+ export function isEngineOpBatch(value) {
286
+ return (isRecord(value) &&
287
+ hasString(value, "id") &&
288
+ hasString(value, "replicaId") &&
289
+ isRecord(value["clock"]) &&
290
+ hasFiniteNumber(value["clock"], "counter") &&
291
+ isEngineOps(value["ops"]));
292
+ }
293
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ export * from "./guards.js";
2
+ import type { CellRangeRef, CellNumberFormatRecord, CellStyleRecord, LiteralInput, WorkbookAxisEntrySnapshot, WorkbookCalculationSettingsSnapshot, WorkbookDefinedNameValueSnapshot, WorkbookPivotValueSnapshot, WorkbookVolatileContextSnapshot } from "@bilig/protocol";
3
+ export type ReplicaId = string;
4
+ export type OpId = string;
5
+ export interface Clock {
6
+ counter: number;
7
+ }
8
+ export type WorkbookStructuralAxis = "row" | "column";
9
+ export type WorkbookSortDirection = "asc" | "desc";
10
+ export interface WorkbookTableOp {
11
+ name: string;
12
+ sheetName: string;
13
+ startAddress: string;
14
+ endAddress: string;
15
+ columnNames: string[];
16
+ headerRow: boolean;
17
+ totalsRow: boolean;
18
+ }
19
+ export interface WorkbookSortKey {
20
+ keyAddress: string;
21
+ direction: WorkbookSortDirection;
22
+ }
23
+ export interface WorkbookAxisEntryOp extends WorkbookAxisEntrySnapshot {
24
+ }
25
+ export interface WorkbookCellStyleOp extends CellStyleRecord {
26
+ }
27
+ export interface WorkbookCellNumberFormatOp extends CellNumberFormatRecord {
28
+ }
29
+ export type WorkbookOp = {
30
+ kind: "upsertWorkbook";
31
+ name: string;
32
+ } | {
33
+ kind: "setWorkbookMetadata";
34
+ key: string;
35
+ value: LiteralInput;
36
+ } | {
37
+ kind: "setCalculationSettings";
38
+ settings: WorkbookCalculationSettingsSnapshot;
39
+ } | {
40
+ kind: "setVolatileContext";
41
+ context: WorkbookVolatileContextSnapshot;
42
+ } | {
43
+ kind: "upsertSheet";
44
+ name: string;
45
+ order: number;
46
+ id?: number;
47
+ } | {
48
+ kind: "renameSheet";
49
+ oldName: string;
50
+ newName: string;
51
+ } | {
52
+ kind: "deleteSheet";
53
+ name: string;
54
+ } | {
55
+ kind: "insertRows";
56
+ sheetName: string;
57
+ start: number;
58
+ count: number;
59
+ entries?: WorkbookAxisEntryOp[];
60
+ } | {
61
+ kind: "deleteRows";
62
+ sheetName: string;
63
+ start: number;
64
+ count: number;
65
+ } | {
66
+ kind: "moveRows";
67
+ sheetName: string;
68
+ start: number;
69
+ count: number;
70
+ target: number;
71
+ } | {
72
+ kind: "insertColumns";
73
+ sheetName: string;
74
+ start: number;
75
+ count: number;
76
+ entries?: WorkbookAxisEntryOp[];
77
+ } | {
78
+ kind: "deleteColumns";
79
+ sheetName: string;
80
+ start: number;
81
+ count: number;
82
+ } | {
83
+ kind: "moveColumns";
84
+ sheetName: string;
85
+ start: number;
86
+ count: number;
87
+ target: number;
88
+ } | {
89
+ kind: "updateRowMetadata";
90
+ sheetName: string;
91
+ start: number;
92
+ count: number;
93
+ size: number | null;
94
+ hidden: boolean | null;
95
+ } | {
96
+ kind: "updateColumnMetadata";
97
+ sheetName: string;
98
+ start: number;
99
+ count: number;
100
+ size: number | null;
101
+ hidden: boolean | null;
102
+ } | {
103
+ kind: "setFreezePane";
104
+ sheetName: string;
105
+ rows: number;
106
+ cols: number;
107
+ } | {
108
+ kind: "clearFreezePane";
109
+ sheetName: string;
110
+ } | {
111
+ kind: "setFilter";
112
+ sheetName: string;
113
+ range: CellRangeRef;
114
+ } | {
115
+ kind: "clearFilter";
116
+ sheetName: string;
117
+ range: CellRangeRef;
118
+ } | {
119
+ kind: "setSort";
120
+ sheetName: string;
121
+ range: CellRangeRef;
122
+ keys: WorkbookSortKey[];
123
+ } | {
124
+ kind: "clearSort";
125
+ sheetName: string;
126
+ range: CellRangeRef;
127
+ } | {
128
+ kind: "setCellValue";
129
+ sheetName: string;
130
+ address: string;
131
+ value: LiteralInput;
132
+ } | {
133
+ kind: "setCellFormula";
134
+ sheetName: string;
135
+ address: string;
136
+ formula: string;
137
+ } | {
138
+ kind: "setCellFormat";
139
+ sheetName: string;
140
+ address: string;
141
+ format: string | null;
142
+ } | {
143
+ kind: "upsertCellStyle";
144
+ style: WorkbookCellStyleOp;
145
+ } | {
146
+ kind: "upsertCellNumberFormat";
147
+ format: WorkbookCellNumberFormatOp;
148
+ } | {
149
+ kind: "setStyleRange";
150
+ range: CellRangeRef;
151
+ styleId: string;
152
+ } | {
153
+ kind: "setFormatRange";
154
+ range: CellRangeRef;
155
+ formatId: string;
156
+ } | {
157
+ kind: "clearCell";
158
+ sheetName: string;
159
+ address: string;
160
+ } | {
161
+ kind: "upsertDefinedName";
162
+ name: string;
163
+ value: WorkbookDefinedNameValueSnapshot;
164
+ } | {
165
+ kind: "deleteDefinedName";
166
+ name: string;
167
+ } | {
168
+ kind: "upsertTable";
169
+ table: WorkbookTableOp;
170
+ } | {
171
+ kind: "deleteTable";
172
+ name: string;
173
+ } | {
174
+ kind: "upsertSpillRange";
175
+ sheetName: string;
176
+ address: string;
177
+ rows: number;
178
+ cols: number;
179
+ } | {
180
+ kind: "deleteSpillRange";
181
+ sheetName: string;
182
+ address: string;
183
+ } | {
184
+ kind: "upsertPivotTable";
185
+ name: string;
186
+ sheetName: string;
187
+ address: string;
188
+ source: CellRangeRef;
189
+ groupBy: string[];
190
+ values: WorkbookPivotValueSnapshot[];
191
+ rows: number;
192
+ cols: number;
193
+ } | {
194
+ kind: "deletePivotTable";
195
+ sheetName: string;
196
+ address: string;
197
+ };
198
+ export type EngineOp = WorkbookOp;
199
+ export interface WorkbookOpBatch {
200
+ id: OpId;
201
+ replicaId: ReplicaId;
202
+ clock: Clock;
203
+ ops: WorkbookOp[];
204
+ }
205
+ export type EngineOpBatch = WorkbookOpBatch;
206
+ export interface WorkbookTxn {
207
+ ops: WorkbookOp[];
208
+ potentialNewCells?: number;
209
+ }
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./guards.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@bilig/workbook-domain",
3
+ "version": "0.1.0",
4
+ "description": "Transport-neutral workbook domain ops and batch types for bilig.",
5
+ "keywords": [
6
+ "bilig",
7
+ "domain",
8
+ "spreadsheet",
9
+ "workbook"
10
+ ],
11
+ "homepage": "https://github.com/proompteng/bilig/tree/main/packages/workbook-domain#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/proompteng/bilig/issues"
14
+ },
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/proompteng/bilig.git",
19
+ "directory": "packages/workbook-domain"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "type": "module",
27
+ "sideEffects": false,
28
+ "main": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "import": "./dist/index.js"
34
+ }
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "dependencies": {
40
+ "@bilig/protocol": "0.1.0"
41
+ },
42
+ "engines": {
43
+ "node": ">=24.0.0"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json"
47
+ }
48
+ }