@bilig/headless 0.4.2 → 0.4.3

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/README.md CHANGED
@@ -1,67 +1,305 @@
1
1
  # @bilig/headless
2
2
 
3
- WorkPaper workbook facade for `bilig`.
3
+ `@bilig/headless` is the production-targeted WorkPaper workbook facade for
4
+ `bilig`. It runs the `@bilig/core` spreadsheet engine without the browser UI and
5
+ exposes HyperFormula-style workbook workflows for services, tests, agents, and
6
+ server-side spreadsheet automation.
4
7
 
5
- `@bilig/headless` exposes `WorkPaper`, a HyperFormula-style workbook API on top of
6
- `@bilig/core`'s `SpreadsheetEngine` for server-side and headless workflows.
8
+ ## Production Status
9
+
10
+ Use this package in production for documented WorkPaper/headless API workflows:
11
+ programmatic workbook creation, formula evaluation, structural edits,
12
+ persistence round trips, service-side spreadsheet automation, and agent-driven
13
+ workbook operations.
14
+
15
+ Current release posture:
16
+
17
+ - Full local CI passed after the latest headless hardening work, including unit,
18
+ contract, fuzz, browser, clean-diff, release-budget, runtime-publish, and
19
+ WorkPaper competitive benchmark gates.
20
+ - The checked-in competitive artifact generated on `2026-05-05T19:00:09.455Z`
21
+ shows `46/46` comparable WorkPaper mean wins against HyperFormula-style
22
+ workloads: `38/38` public and `8/8` holdout.
23
+ - Recently fixed and hardened P1 risks are covered by regression tests:
24
+ - `updateConfig()` now applies `useColumnIndex` correctly when a rebuild-only
25
+ config key changes in the same update.
26
+ - `moveCells()` now respects `maxRows` and `maxColumns` and rejects target
27
+ ranges outside configured bounds.
28
+ - persisted WorkPaper documents reject sparse arrays, duplicate sheet names,
29
+ non-JSON numeric values, invalid scoped named expressions, and invalid
30
+ persisted config before restore.
31
+
32
+ Supported scope:
33
+
34
+ - The contract is the WorkPaper/headless API exported by this package.
35
+ - Excel-file ingestion belongs to import/export pipelines before data reaches
36
+ `WorkPaper`; this package executes the validated WorkPaper workbook model.
37
+ - Custom function plugins and callback hooks are runtime registrations. Persist
38
+ workbook data with the helpers below, then register custom behavior in
39
+ application code before restore.
40
+
41
+ ## Requirements
42
+
43
+ - Node `24+`
44
+ - ESM imports
45
+ - `pnpm@10.32.1` for this monorepo
7
46
 
8
47
  ## Install
9
48
 
49
+ Published package:
50
+
10
51
  ```sh
11
52
  pnpm add @bilig/headless
12
53
  ```
13
54
 
14
- The package is also verified in CI through clean external Node and Vite consumer projects
15
- built from packed runtime tarballs.
55
+ Inside this monorepo:
56
+
57
+ ```sh
58
+ pnpm install
59
+ pnpm --filter @bilig/headless build
60
+ ```
16
61
 
17
- ## Usage
62
+ ## Quickstart
18
63
 
19
64
  ```ts
20
- import { WorkPaper } from '@bilig/headless'
65
+ import {
66
+ WorkPaper,
67
+ createWorkPaperFromDocument,
68
+ exportWorkPaperDocument,
69
+ parseWorkPaperDocument,
70
+ serializeWorkPaperDocument,
71
+ type WorkPaperCellAddress,
72
+ } from '@bilig/headless'
21
73
 
22
- const workbook = WorkPaper.buildFromSheets({
23
- Sheet1: [[1, '=A1*2']],
74
+ const workbook = WorkPaper.buildFromSheets(
75
+ {
76
+ Sheet1: [
77
+ [10, 20, '=A1+B1'],
78
+ [7, '=A2*3', null],
79
+ ],
80
+ },
81
+ {
82
+ maxRows: 1_000,
83
+ maxColumns: 100,
84
+ useColumnIndex: true,
85
+ },
86
+ )
87
+
88
+ const sheet = workbook.getSheetId('Sheet1')
89
+ if (sheet === undefined) {
90
+ throw new Error('Sheet1 was not created')
91
+ }
92
+
93
+ const at = (row: number, col: number): WorkPaperCellAddress => ({
94
+ sheet,
95
+ row,
96
+ col,
24
97
  })
25
98
 
26
- const sheetId = workbook.getSheetId('Sheet1')!
27
- const value = workbook.getCellValue({ sheet: sheetId, row: 0, col: 1 })
99
+ console.log(workbook.getCellValue(at(0, 2))) // CellValue for 30
100
+
101
+ workbook.setCellContents(at(1, 2), '=A2+B2')
102
+ console.log(workbook.getCellFormula(at(1, 2))) // "=A2+B2"
103
+ console.log(workbook.getCellSerialized(at(1, 2))) // "=A2+B2"
104
+
105
+ const document = exportWorkPaperDocument(workbook)
106
+ const json = serializeWorkPaperDocument(document)
107
+ const restored = createWorkPaperFromDocument(parseWorkPaperDocument(json))
108
+ const restoredSheet = restored.getSheetId('Sheet1')
109
+ if (restoredSheet === undefined) {
110
+ throw new Error('Sheet1 was not restored')
111
+ }
112
+
113
+ console.log(restored.getCellValue({ sheet: restoredSheet, row: 1, col: 2 }))
28
114
  ```
29
115
 
30
- ## Supported Workflows
116
+ ## Core Concepts
31
117
 
32
- - Build empty workbooks or initialize from arrays or named sheets.
33
- - Read cell, range, and sheet values, formulas, and serialized contents.
34
- - Mutate cells, rows, columns, sheets, and named expressions with change tracking.
35
- - Use `batch()`, `undo()`, `redo()`, `suspendEvaluation()`, and `resumeEvaluation()`.
36
- - Register custom functions and language translations before workbook construction.
37
- - Use copy, cut, paste, fill-range translation, and formula normalization helpers.
38
- - Persist and restore WorkPaper documents with:
39
- - `exportWorkPaperDocument()`
40
- - `createWorkPaperFromDocument()`
41
- - `serializeWorkPaperDocument()`
42
- - `parseWorkPaperDocument()`
43
- - Subscribe with HyperFormula-style positional listeners through `on()`, `once()`, and `off()`.
44
- - Subscribe with richer payload objects through `onDetailed()`, `onceDetailed()`, and `offDetailed()`.
45
- - Use stable compatibility adapters through `graph`, `rangeMapping`, `arrayMapping`,
46
- `sheetMapping`, `addressMapping`, `dependencyGraph`, `evaluator`,
47
- `columnSearch`, and `lazilyTransformingAstService`.
118
+ - `WorkPaper` is the top-level workbook object. Create it with
119
+ `WorkPaper.buildEmpty()`, `WorkPaper.buildFromArray()`, or
120
+ `WorkPaper.buildFromSheets()`.
121
+ - Addresses are zero-based `{ sheet, row, col }` objects. Use `getSheetId(name)`
122
+ to resolve the numeric sheet id.
123
+ - A string beginning with `=` is a formula. Other strings are literal text.
124
+ `null` clears a cell.
125
+ - `getCellValue()` returns a computed `CellValue`.
126
+ - `getCellFormula()` returns the formula text when the cell is a formula.
127
+ - `getCellSerialized()` returns the persisted cell input shape.
128
+ - Mutation methods return WorkPaper change arrays. Empty arrays are valid when
129
+ evaluation is suspended or a batch defers change publication.
48
130
 
49
- ## Persistence
131
+ ## Common API Recipes
50
132
 
51
- `@bilig/headless` follows the HyperFormula-style persistence model:
133
+ Create an empty workbook:
134
+
135
+ ```ts
136
+ const workbook = WorkPaper.buildEmpty({
137
+ maxRows: 10_000,
138
+ maxColumns: 256,
139
+ })
140
+ ```
141
+
142
+ Set values, formulas, and blanks:
143
+
144
+ ```ts
145
+ workbook.setCellContents(at(0, 0), 42)
146
+ workbook.setCellContents(at(0, 1), 'label')
147
+ workbook.setCellContents(at(0, 2), '=A1*2')
148
+ workbook.setCellContents(at(0, 3), null)
149
+ ```
150
+
151
+ Read ranges and whole sheets:
152
+
153
+ ```ts
154
+ const range = { start: at(0, 0), end: at(9, 4) }
155
+
156
+ workbook.getRangeValues(range)
157
+ workbook.getRangeFormulas(range)
158
+ workbook.getRangeSerialized(range)
159
+ workbook.getSheetValues(sheet)
160
+ workbook.getSheetSerialized(sheet)
161
+ ```
162
+
163
+ Batch related edits:
164
+
165
+ ```ts
166
+ const changes = workbook.batch(() => {
167
+ workbook.setCellContents(at(0, 0), 10)
168
+ workbook.setCellContents(at(0, 1), '=A1*5')
169
+ })
170
+ ```
171
+
172
+ Move cells inside configured bounds:
173
+
174
+ ```ts
175
+ const source = { start: at(0, 0), end: at(0, 1) }
176
+
177
+ workbook.moveCells(source, at(2, 0))
178
+ ```
52
179
 
53
- - sheets are serialized as ordered sheet-content arrays
54
- - named expressions are serialized separately
55
- - only the JSON-safe subset of `WorkPaperConfig` is persisted automatically
56
- - custom function plugins and callback hooks should be registered in code before restore
180
+ `moveCells()` throws when the source or target falls outside `maxRows` or
181
+ `maxColumns`.
182
+
183
+ Update runtime config:
184
+
185
+ ```ts
186
+ workbook.updateConfig({
187
+ useColumnIndex: false,
188
+ maxRows: 2_000,
189
+ })
190
+ ```
191
+
192
+ `updateConfig()` preserves workbook state. Some config keys can trigger an
193
+ internal engine rebuild; callers should treat the returned workbook object as the
194
+ same public facade and read `getConfig()` after update when they need the active
195
+ configuration.
196
+
197
+ Persist and restore:
198
+
199
+ ```ts
200
+ const saved = serializeWorkPaperDocument(exportWorkPaperDocument(workbook, { includeConfig: true }))
201
+
202
+ const restored = createWorkPaperFromDocument(parseWorkPaperDocument(saved))
203
+ ```
204
+
205
+ ## Persistence Contract
206
+
207
+ `@bilig/headless` persists:
208
+
209
+ - ordered sheet content arrays
210
+ - sheet names
211
+ - named expressions
212
+ - the JSON-safe subset of `WorkPaperConfig` when `includeConfig` is enabled
213
+
214
+ It does not persist custom function implementations, callback hooks, or process
215
+ state. Register those in code before creating or restoring workbooks.
216
+
217
+ ## Validation Commands
218
+
219
+ For a headless-only change, start with focused tests:
220
+
221
+ ```sh
222
+ pnpm exec vitest run \
223
+ packages/headless/src/__tests__/work-paper-runtime.test.ts \
224
+ packages/headless/src/__tests__/work-paper-parity.test.ts \
225
+ packages/headless/src/__tests__/persistence.test.ts \
226
+ packages/headless/src/__tests__/persistence.fuzz.test.ts
227
+
228
+ pnpm --filter @bilig/headless build
229
+ ```
230
+
231
+ Before publishing or claiming production readiness, run the full gates:
232
+
233
+ ```sh
234
+ pnpm publish:runtime:check
235
+ pnpm workpaper:bench:competitive:check
236
+ pnpm run ci
237
+ ```
238
+
239
+ Regenerate the competitive artifact only when intentionally updating benchmark
240
+ evidence:
241
+
242
+ ```sh
243
+ pnpm workpaper:bench:competitive:generate
244
+ pnpm workpaper:bench:competitive:check
245
+ ```
246
+
247
+ Do not change benchmark definitions, scoring, sampling, or workload sizes to hide
248
+ losses.
57
249
 
58
250
  ## Compatibility Notes
59
251
 
60
- - `WorkPaper` is the canonical top-level interface.
61
- - The facade follows HyperFormula's public workbook workflow closely, but it is not a
62
- byte-for-byte drop-in replacement.
252
+ - The facade follows HyperFormula-style public workbook workflows, but it is not
253
+ byte-for-byte compatible with HyperFormula.
63
254
  - Public lookup helpers such as `getSheetId()`, `getSheetName()`,
64
- `simpleCellAddressFromString()`, `simpleCellRangeFromString()`, and named-expression
65
- reads return `undefined` on misses in the HyperFormula style.
66
- - `@bilig/headless` keeps `bilig`'s richer change arrays and also exposes additive
67
- detailed-event payloads instead of cloning HyperFormula's exact exported change types.
255
+ `simpleCellAddressFromString()`, `simpleCellRangeFromString()`, and
256
+ named-expression reads return `undefined` on misses.
257
+ - `@bilig/headless` keeps `bilig` change arrays and also exposes richer detailed
258
+ event payloads through `onDetailed()`, `onceDetailed()`, and `offDetailed()`.
259
+ - Stable compatibility adapters are available through `graph`, `rangeMapping`,
260
+ `arrayMapping`, `sheetMapping`, `addressMapping`, `dependencyGraph`,
261
+ `evaluator`, `columnSearch`, and `lazilyTransformingAstService`.
262
+
263
+ ## For Coding Agents
264
+
265
+ Use this checklist when Codex, Claude Code, or another agent starts work here:
266
+
267
+ 1. Read this README and the root `README.md` first.
268
+ 2. Use public exports from `@bilig/headless`; do not import from `src/`,
269
+ `dist/internal`, or `@bilig/core` unless the task explicitly requires engine
270
+ integration work.
271
+ 3. Use zero-based `{ sheet, row, col }` addresses and resolve sheet ids with
272
+ `getSheetId()`.
273
+ 4. Prefer `WorkPaper.buildFromSheets()` for fixtures and
274
+ `exportWorkPaperDocument()` / `createWorkPaperFromDocument()` for persistence
275
+ round trips.
276
+ 5. Add or tighten regression tests before changing behavior around config
277
+ rebuilds, range bounds, formulas, persistence, events, row/column moves, or
278
+ sheet lifecycle.
279
+ 6. Run the focused headless tests before broader gates.
280
+ 7. Preserve benchmark definitions and workload sizes. Performance improvements
281
+ belong in production engine/headless code.
282
+ 8. Document unsupported behavior honestly instead of implying full Excel
283
+ compatibility.
284
+
285
+ ## Public Entry Points
286
+
287
+ The package root exports:
288
+
289
+ - `WorkPaper`
290
+ - WorkPaper address, range, config, sheet, change, event, and adapter types
291
+ - WorkPaper error classes
292
+ - persistence helpers:
293
+ - `exportWorkPaperDocument()`
294
+ - `createWorkPaperFromDocument()`
295
+ - `serializeWorkPaperDocument()`
296
+ - `parseWorkPaperDocument()`
297
+ - `isPersistedWorkPaperDocument()`
298
+ - `pickPersistableWorkPaperConfig()`
299
+
300
+ ## Versioning
301
+
302
+ `@bilig/headless` ships as part of the aligned bilig runtime package set. Treat
303
+ documented public exports as the supported surface, keep integration tests around
304
+ your own workbook corpus, and rerun the validation gates before upgrading in
305
+ production.
@@ -1,4 +1,5 @@
1
1
  import { WorkPaper } from './work-paper.js';
2
+ import { WorkPaperPersistenceError } from './work-paper-errors.js';
2
3
  export const WORK_PAPER_DOCUMENT_FORMAT = 'bilig.headless.work-paper.document.v1';
3
4
  export const PERSISTABLE_WORK_PAPER_CONFIG_KEYS = [
4
5
  'accentSensitive',
@@ -39,78 +40,192 @@ export const PERSISTABLE_WORK_PAPER_CONFIG_KEYS = [
39
40
  function isRecord(value) {
40
41
  return typeof value === 'object' && value !== null;
41
42
  }
43
+ function isDenseArray(value) {
44
+ if (!Array.isArray(value)) {
45
+ return false;
46
+ }
47
+ for (let index = 0; index < value.length; index += 1) {
48
+ if (!Object.hasOwn(value, index)) {
49
+ return false;
50
+ }
51
+ }
52
+ return true;
53
+ }
54
+ function isJsonNumber(value) {
55
+ return typeof value === 'number' && Number.isFinite(value);
56
+ }
57
+ function isJsonInteger(value) {
58
+ return typeof value === 'number' && Number.isInteger(value);
59
+ }
60
+ function isPositiveJsonInteger(value) {
61
+ return typeof value === 'number' && Number.isInteger(value) && value > 0;
62
+ }
63
+ function isNonNegativeJsonInteger(value) {
64
+ return typeof value === 'number' && Number.isInteger(value) && value >= 0;
65
+ }
66
+ function isNonEmptyString(value) {
67
+ return typeof value === 'string' && value.length > 0;
68
+ }
42
69
  function isLiteralInput(value) {
43
- return value === null || typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string';
70
+ return value === null || typeof value === 'boolean' || isJsonNumber(value) || typeof value === 'string';
44
71
  }
45
72
  function isRawCellContent(value) {
46
73
  return isLiteralInput(value) || typeof value === 'string';
47
74
  }
48
75
  function isWorkPaperSheet(value) {
49
- return Array.isArray(value) && value.every((row) => Array.isArray(row) && row.every((cell) => isRawCellContent(cell)));
76
+ return isDenseArray(value) && value.every((row) => isDenseArray(row) && row.every((cell) => isRawCellContent(cell)));
50
77
  }
51
78
  function isNamedExpressionOptions(value) {
52
- return (isRecord(value) &&
53
- Object.values(value).every((entry) => typeof entry === 'string' || typeof entry === 'number' || typeof entry === 'boolean'));
79
+ return (isRecord(value) && Object.values(value).every((entry) => typeof entry === 'string' || isJsonNumber(entry) || typeof entry === 'boolean'));
54
80
  }
55
81
  function isWorkPaperContextValue(value) {
56
82
  return (value === null ||
57
83
  typeof value === 'string' ||
58
- typeof value === 'number' ||
84
+ isJsonNumber(value) ||
59
85
  typeof value === 'boolean' ||
60
- (Array.isArray(value) && value.every((entry) => isWorkPaperContextValue(entry))) ||
86
+ (isDenseArray(value) && value.every((entry) => isWorkPaperContextValue(entry))) ||
61
87
  (isRecord(value) && Object.values(value).every((entry) => isWorkPaperContextValue(entry))));
62
88
  }
63
89
  function isChooseAddressMappingPolicy(value) {
64
90
  return isRecord(value) && (value['mode'] === 'dense' || value['mode'] === 'sparse');
65
91
  }
92
+ function isStringArray(value) {
93
+ return isDenseArray(value) && value.every((item) => typeof item === 'string');
94
+ }
95
+ function isSimpleDate(value) {
96
+ return (isRecord(value) &&
97
+ isJsonInteger(value['year']) &&
98
+ isJsonInteger(value['month']) &&
99
+ value['month'] >= 1 &&
100
+ value['month'] <= 12 &&
101
+ isJsonInteger(value['day']) &&
102
+ value['day'] >= 1 &&
103
+ value['day'] <= 31);
104
+ }
105
+ function isPersistableConfigEntry(key, entry) {
106
+ switch (key) {
107
+ case 'accentSensitive':
108
+ case 'caseSensitive':
109
+ case 'evaluateNullToZero':
110
+ case 'ignorePunctuation':
111
+ case 'leapYear1900':
112
+ case 'matchWholeCell':
113
+ case 'smartRounding':
114
+ case 'useArrayArithmetic':
115
+ case 'useColumnIndex':
116
+ case 'useStats':
117
+ case 'useRegularExpressions':
118
+ case 'useWildcards':
119
+ return typeof entry === 'boolean';
120
+ case 'caseFirst':
121
+ return entry === 'upper' || entry === 'lower' || entry === 'false';
122
+ case 'chooseAddressMappingPolicy':
123
+ return isChooseAddressMappingPolicy(entry);
124
+ case 'context':
125
+ return isWorkPaperContextValue(entry);
126
+ case 'currencySymbol':
127
+ case 'dateFormats':
128
+ case 'timeFormats':
129
+ return isStringArray(entry);
130
+ case 'decimalSeparator':
131
+ return entry === '.' || entry === ',';
132
+ case 'functionArgSeparator':
133
+ case 'language':
134
+ case 'licenseKey':
135
+ case 'localeLang':
136
+ return typeof entry === 'string';
137
+ case 'ignoreWhiteSpace':
138
+ return entry === 'standard' || entry === 'any';
139
+ case 'arrayColumnSeparator':
140
+ return entry === ',' || entry === ';';
141
+ case 'arrayRowSeparator':
142
+ return entry === ';' || entry === '|';
143
+ case 'maxRows':
144
+ case 'maxColumns':
145
+ return isPositiveJsonInteger(entry);
146
+ case 'nullDate':
147
+ return isSimpleDate(entry);
148
+ case 'nullYear':
149
+ case 'precisionRounding':
150
+ return isJsonInteger(entry);
151
+ case 'precisionEpsilon':
152
+ return isJsonNumber(entry);
153
+ case 'thousandSeparator':
154
+ return entry === '' || entry === ',' || entry === '.';
155
+ case 'undoLimit':
156
+ return isNonNegativeJsonInteger(entry);
157
+ default:
158
+ return false;
159
+ }
160
+ }
66
161
  function isPersistableWorkPaperConfig(value) {
67
162
  if (!isRecord(value)) {
68
163
  return false;
69
164
  }
70
165
  return Object.entries(value).every(([key, entry]) => {
71
- if (!PERSISTABLE_WORK_PAPER_CONFIG_KEYS.includes(key)) {
72
- return false;
73
- }
74
- if (key === 'chooseAddressMappingPolicy') {
75
- return isChooseAddressMappingPolicy(entry);
76
- }
77
- if (key === 'currencySymbol' || key === 'dateFormats' || key === 'timeFormats') {
78
- return Array.isArray(entry) && entry.every((item) => typeof item === 'string');
79
- }
80
- if (key === 'nullDate') {
81
- return isRecord(entry) && typeof entry['year'] === 'number' && typeof entry['month'] === 'number' && typeof entry['day'] === 'number';
82
- }
83
- if (key === 'context') {
84
- return isWorkPaperContextValue(entry);
85
- }
86
- return typeof entry === 'string' || typeof entry === 'number' || typeof entry === 'boolean';
166
+ return PERSISTABLE_WORK_PAPER_CONFIG_KEYS.includes(key) && isPersistableConfigEntry(key, entry);
87
167
  });
88
168
  }
89
169
  function isPersistedWorkPaperNamedExpression(value) {
90
170
  return (isRecord(value) &&
91
- typeof value['name'] === 'string' &&
171
+ isNonEmptyString(value['name']) &&
92
172
  isRawCellContent(value['expression']) &&
93
- (value['scopeSheetName'] === undefined || typeof value['scopeSheetName'] === 'string') &&
173
+ (value['scopeSheetName'] === undefined || isNonEmptyString(value['scopeSheetName'])) &&
94
174
  (value['options'] === undefined || isNamedExpressionOptions(value['options'])));
95
175
  }
96
176
  function isPersistedWorkPaperSheet(value) {
97
- return isRecord(value) && typeof value['name'] === 'string' && isWorkPaperSheet(value['content']);
177
+ return isRecord(value) && isNonEmptyString(value['name']) && isWorkPaperSheet(value['content']);
178
+ }
179
+ function hasUniqueSheetNames(sheets) {
180
+ const names = new Set();
181
+ for (const sheet of sheets) {
182
+ if (names.has(sheet.name)) {
183
+ return false;
184
+ }
185
+ names.add(sheet.name);
186
+ }
187
+ return true;
188
+ }
189
+ function namedExpressionKey(expression) {
190
+ return `${expression.scopeSheetName ?? '<global>'}\u0000${expression.name}`;
191
+ }
192
+ function hasValidNamedExpressionScopes(expressions, sheetNames) {
193
+ const namesByScope = new Set();
194
+ for (const expression of expressions) {
195
+ if (expression.scopeSheetName !== undefined && !sheetNames.has(expression.scopeSheetName)) {
196
+ return false;
197
+ }
198
+ const key = namedExpressionKey(expression);
199
+ if (namesByScope.has(key)) {
200
+ return false;
201
+ }
202
+ namesByScope.add(key);
203
+ }
204
+ return true;
98
205
  }
99
206
  /**
100
207
  * Checks whether a value matches the persisted WorkPaper document format.
101
208
  */
102
209
  export function isPersistedWorkPaperDocument(value) {
103
- return (isRecord(value) &&
104
- value['format'] === WORK_PAPER_DOCUMENT_FORMAT &&
105
- Array.isArray(value['sheets']) &&
106
- value['sheets'].every((sheet) => isPersistedWorkPaperSheet(sheet)) &&
107
- Array.isArray(value['namedExpressions']) &&
108
- value['namedExpressions'].every((expression) => isPersistedWorkPaperNamedExpression(expression)) &&
109
- (value['config'] === undefined || isPersistableWorkPaperConfig(value['config'])));
210
+ if (!isRecord(value) ||
211
+ value['format'] !== WORK_PAPER_DOCUMENT_FORMAT ||
212
+ !isDenseArray(value['sheets']) ||
213
+ !value['sheets'].every((sheet) => isPersistedWorkPaperSheet(sheet)) ||
214
+ !isDenseArray(value['namedExpressions']) ||
215
+ !value['namedExpressions'].every((expression) => isPersistedWorkPaperNamedExpression(expression)) ||
216
+ (value['config'] !== undefined && !isPersistableWorkPaperConfig(value['config']))) {
217
+ return false;
218
+ }
219
+ const sheets = value['sheets'];
220
+ const namedExpressions = value['namedExpressions'];
221
+ if (!hasUniqueSheetNames(sheets)) {
222
+ return false;
223
+ }
224
+ return hasValidNamedExpressionScopes(namedExpressions, new Set(sheets.map((sheet) => sheet.name)));
110
225
  }
111
226
  function assertPersistedWorkPaperDocument(value) {
112
227
  if (!isPersistedWorkPaperDocument(value)) {
113
- throw new Error('Invalid persisted WorkPaper document');
228
+ throw new WorkPaperPersistenceError('Invalid persisted WorkPaper document');
114
229
  }
115
230
  }
116
231
  function setPersistableWorkPaperConfigValue(target, key, value) {
@@ -137,7 +252,7 @@ export function exportWorkPaperDocument(workbook, options = {}) {
137
252
  const sheets = workbook.getSheetNames().map((name) => {
138
253
  const sheetId = workbook.getSheetId(name);
139
254
  if (sheetId === undefined) {
140
- throw new Error(`Missing sheet id for ${name}`);
255
+ throw new WorkPaperPersistenceError(`Missing sheet id for ${name}`);
141
256
  }
142
257
  return {
143
258
  name,
@@ -167,14 +282,14 @@ export function createWorkPaperFromDocument(document) {
167
282
  document.namedExpressions.forEach((expression) => {
168
283
  const scope = expression.scopeSheetName ? workbook.getSheetId(expression.scopeSheetName) : undefined;
169
284
  if (expression.scopeSheetName && scope === undefined) {
170
- throw new Error(`Missing scoped sheet ${expression.scopeSheetName}`);
285
+ throw new WorkPaperPersistenceError(`Missing scoped sheet ${expression.scopeSheetName}`);
171
286
  }
172
287
  workbook.addNamedExpression(expression.name, expression.expression, scope, expression.options);
173
288
  });
174
289
  document.sheets.forEach((sheet) => {
175
290
  const sheetId = workbook.getSheetId(sheet.name);
176
291
  if (sheetId === undefined) {
177
- throw new Error(`Missing restored sheet ${sheet.name}`);
292
+ throw new WorkPaperPersistenceError(`Missing restored sheet ${sheet.name}`);
178
293
  }
179
294
  workbook.setSheetContent(sheetId, sheet.content);
180
295
  });
@@ -193,7 +308,13 @@ export function serializeWorkPaperDocument(document) {
193
308
  * Parses and validates a WorkPaper document from JSON.
194
309
  */
195
310
  export function parseWorkPaperDocument(json) {
196
- const parsed = JSON.parse(json);
311
+ let parsed;
312
+ try {
313
+ parsed = JSON.parse(json);
314
+ }
315
+ catch (error) {
316
+ throw new WorkPaperPersistenceError('Invalid WorkPaper document JSON', error);
317
+ }
197
318
  assertPersistedWorkPaperDocument(parsed);
198
319
  return parsed;
199
320
  }
@@ -207,7 +328,7 @@ function serializeNamedExpression(workbook, expression) {
207
328
  }
208
329
  const scopeSheetName = workbook.getSheetName(expression.scope);
209
330
  if (!scopeSheetName) {
210
- throw new Error(`Missing scope sheet for named expression ${expression.name}`);
331
+ throw new WorkPaperPersistenceError(`Missing scope sheet for named expression ${expression.name}`);
211
332
  }
212
333
  return {
213
334
  name: expression.name,
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
@@ -100,6 +100,10 @@ export declare class WorkPaperClipboardError extends BaseWorkPaperError {
100
100
  export declare class WorkPaperParseError extends BaseWorkPaperError {
101
101
  constructor(message: string);
102
102
  }
103
+ export declare class WorkPaperPersistenceError extends BaseWorkPaperError {
104
+ readonly cause?: unknown;
105
+ constructor(message: string, cause?: unknown);
106
+ }
103
107
  export declare class WorkPaperOperationError extends BaseWorkPaperError {
104
108
  constructor(message: string);
105
109
  }
@@ -184,6 +184,13 @@ export class WorkPaperParseError extends BaseWorkPaperError {
184
184
  super('WorkPaperParseError', message);
185
185
  }
186
186
  }
187
+ export class WorkPaperPersistenceError extends BaseWorkPaperError {
188
+ cause;
189
+ constructor(message, cause) {
190
+ super('WorkPaperPersistenceError', message);
191
+ this.cause = cause;
192
+ }
193
+ }
187
194
  export class WorkPaperOperationError extends BaseWorkPaperError {
188
195
  constructor(message) {
189
196
  super('WorkPaperOperationError', message);
@@ -1 +1 @@
1
- {"version":3,"file":"work-paper-errors.js","sourceRoot":"","sources":["../src/work-paper-errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work-paper-errors.js","sourceRoot":"","sources":["../src/work-paper-errors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bilig/headless",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "WorkPaper spreadsheet workbook facade for bilig with HyperFormula-style workflows.",
5
5
  "keywords": [
6
6
  "bilig",
@@ -41,9 +41,9 @@
41
41
  "build": "rm -rf dist tsconfig.tsbuildinfo && tsc -p tsconfig.json"
42
42
  },
43
43
  "dependencies": {
44
- "@bilig/core": "0.4.2",
45
- "@bilig/formula": "0.4.2",
46
- "@bilig/protocol": "0.4.2"
44
+ "@bilig/core": "0.4.3",
45
+ "@bilig/formula": "0.4.3",
46
+ "@bilig/protocol": "0.4.3"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=24.0.0"