@bilig/workbook 0.90.0 → 0.90.5

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
@@ -130,12 +130,14 @@ Public helper namespaces are frozen as well: `find`, `check`, and `formula`
130
130
  cannot be patched after import, and factory-created check/find helpers return
131
131
  frozen API objects too.
132
132
  Model config and action objects are read as data too: `defineModel` requires
133
- own data properties for `actions` entries and for action-object `run`,
134
- `description`, and `input`. Accessor-backed model metadata is rejected before any
135
- getter can run.
133
+ object-record model roots plus own data properties for `actions` entries and
134
+ for action-object `run`, `description`, and `input`. Accessor-backed model
135
+ metadata is rejected before any getter can run.
136
136
  `inspectModel` and `describeModel` use the same manifest boundary, so model
137
137
  names, descriptions, action maps, and action metadata can be inspected without
138
- triggering hidden getters. `inspectModel` returns a frozen manifest snapshot.
138
+ triggering hidden getters. Class/custom-prototype model roots are rejected, while
139
+ action maps and action objects keep their existing own-field-only prototype
140
+ behavior. `inspectModel` returns a frozen manifest snapshot.
139
141
  The description layer is frozen too: `describeRef`, `describePlan`,
140
142
  `describePlanResult`, and `describeRunResult` return JSON-safe objects whose
141
143
  nested refs, commands, checks, apply proof, undo ops, and errors cannot be
@@ -156,24 +158,25 @@ failure instead of making the agent catch an accessor side effect. Planned and
156
158
  failed action-plan result wrappers are frozen before they are returned.
157
159
  Action helper calls fail closed during planning too: write, clear, format, and
158
160
  low-level-op helpers reject malformed targets, non-literal values, invalid
159
- format options, invalid add-op options, and accessor-backed op payloads before a
160
- plan is returned.
161
+ format options, invalid add-op options, class/custom-prototype option roots, and
162
+ accessor-backed op payloads before a plan is returned.
161
163
  Check helper calls use the same boundary: malformed targets, readback options,
162
- custom check options, sparse ref arrays, and accessor-backed check payloads are
163
- rejected before a check is recorded.
164
+ custom check options, class/custom-prototype option roots, sparse ref arrays, and
165
+ accessor-backed check payloads are rejected before a check is recorded.
164
166
  Formula helpers also normalize as plain data: raw formula options, explicit
165
- inputs, labels, and function argument arrays reject sparse or accessor-backed
166
- payloads before formula intent is returned.
167
+ inputs, labels, and function argument arrays reject sparse, accessor-backed, or
168
+ class/custom-prototype payloads before formula intent is returned.
167
169
  Ref transport helpers return frozen plain data and frozen arrays, so a ref that
168
170
  an agent inspected cannot be mutated behind the same handoff object.
169
171
  `verifyPlan` also treats plans as data: malformed, sparse, or accessor-backed
170
172
  handoff objects return an `invalid_plan` issue instead of executing hidden
171
173
  properties or throwing at the caller.
172
- `verifyModel` keeps the same behavior at whole-model scope: invalid manifests
173
- return an invalid verdict with an `invalid_model` error and no actions.
174
- Its `{ inputs }` option is data-only too: accessor-backed option payloads or
175
- per-action inputs produce structured `invalid_action_input` results without
176
- running hidden consumer code.
174
+ `verifyModel` keeps the same behavior at whole-model scope: invalid,
175
+ array-backed, or accessor-backed manifests return an invalid verdict with an
176
+ `invalid_model` error and no actions.
177
+ Its `{ inputs }` option is data-only too: accessor-backed or
178
+ class/custom-prototype option payloads and per-action inputs produce structured
179
+ `invalid_action_input` results without running hidden consumer code.
177
180
 
178
181
  ## Selectors
179
182
 
@@ -220,7 +223,10 @@ proof keep nested JSON paths such as `input.rows[1]` and
220
223
  hydration. Plan-data guards only trust own payload fields; inherited
221
224
  prototype fields never satisfy the transport contract. Transported plan arrays
222
225
  must contain own enumerable data entries too; holes, non-enumerable entries, or
223
- accessor-backed entries are rejected without running getters. The hydrated plan
226
+ accessor-backed entries are rejected without running getters. The plan root and
227
+ nested plan entries such as commands, changes, checks, formula labels, and
228
+ expectations must be record-shaped payloads, not arrays with attached fields.
229
+ The hydrated plan
224
230
  exposes `refs: { refsUsed }` instead of the consumer's private model-shaped
225
231
  `refs` object, so transported execution stays generic. A valid
226
232
  `checkPlanData(data)` result returns canonical plan data, stripping caller-owned
@@ -296,6 +302,8 @@ must be own enumerable data entries; holes, non-enumerable entries, or
296
302
  accessor-backed entries are rejected without running getters. Use
297
303
  `checkRuntimeAdapter(planOrRequirements, adapter)` when an agent wants to check
298
304
  `apply`, `read`, and `verifyChecks` coverage before calling the runtime.
305
+ The requirements root object, every requirement entry, and runtime adapter
306
+ objects must be record-shaped payloads, not arrays with attached fields.
299
307
  Runtime requirement descriptions are frozen normalized data too:
300
308
  `describeRuntimeRequirements` and `checkRuntimeRequirements` strip
301
309
  caller-owned extra fields and freeze the returned requirement tree, including
@@ -340,14 +348,18 @@ and the frozen run-result description, and roll back engine ops if post-apply
340
348
  readback or check proof fails.
341
349
  Runtime apply results, undo refs, apply errors, and check verifier output are
342
350
  validated from own fields only; prototype-inherited fields are ignored before
343
- they can become run proof. Adapter-returned ops and verifier proof must be data
344
- properties, including non-enumerable guard fields such as `kind`. Runtime
345
- evidence arrays must contain own enumerable data entries; holes,
346
- non-enumerable entries, and accessors are rejected before any getter can run
347
- during validation, cloning, or preview/apply comparison.
351
+ they can become run proof. Apply-result objects and verifier check objects must
352
+ be plain record-shaped payloads, not arrays with attached fields.
353
+ Adapter-returned ops and verifier proof must be data properties, including
354
+ non-enumerable guard fields such as `kind`. Runtime evidence arrays must contain
355
+ own enumerable data entries; holes, non-enumerable entries, and accessors are
356
+ rejected before any getter can run during validation, cloning, or preview/apply
357
+ comparison.
348
358
  Readback checks attach proof to passed checks, such as
349
359
  `{ source: "readback", value: 12 }` or
350
360
  `{ source: "readback", formula: "Table[Quantity]*Table[Rate]" }`.
361
+ Readback proof objects, check objects, expectations, and formula labels must be
362
+ record-shaped payloads, not arrays with attached fields.
351
363
  Formula readback proof is parsed with `@bilig/formula` and stored in canonical
352
364
  no-leading-`=` form, so harmless runtime differences such as a leading equals
353
365
  sign, whitespace, or redundant parentheses do not make proof fail.
@@ -455,10 +467,11 @@ It returns the same boring `{ status, issues }` shape for receipt fields such as
455
467
  `changedRanges`, `proof`, `metadata`, and `errors`. Feature manifests, command
456
468
  requests, and command receipts are validated from own payload fields only;
457
469
  prototype-inherited fields are ignored. Receipt verdicts are frozen. Receipt ops are frozen after
458
- normalization, changed ranges must be own-field data, and manifest or receipt
459
- arrays must contain own enumerable data entries. Holes, non-enumerable entries,
460
- and accessor-backed ops, undo ops, ranges, or errors are rejected before any
461
- getter can run.
470
+ normalization, changed ranges are canonicalized through the same workbook range
471
+ normalizer used by command scopes, and manifest or receipt arrays must contain
472
+ own enumerable data entries. Holes, non-enumerable entries, invalid range
473
+ addresses, and accessor-backed ops, undo ops, ranges, or errors are rejected
474
+ before any getter can run.
462
475
  Receipt statuses are semantic: `previewed` cannot include applied proof,
463
476
  `applied` cannot include errors and must carry applied evidence, `rejected`
464
477
  cannot claim changed workbook proof, and `noop` cannot claim changed ranges or
package/dist/check.d.ts CHANGED
@@ -19,7 +19,7 @@ export interface WorkbookCheckApi {
19
19
  readonly custom: (options: WorkbookCustomCheckOptions) => WorkbookCheckResult;
20
20
  }
21
21
  export type WorkbookBuiltInCheckKind = 'exists' | 'noFormulaErrors' | 'valueEquals' | 'formulaEquals';
22
- export declare const builtInWorkbookCheckKinds: readonly ("valueEquals" | "formulaEquals" | "exists" | "noFormulaErrors")[];
22
+ export declare const builtInWorkbookCheckKinds: readonly ("exists" | "noFormulaErrors" | "valueEquals" | "formulaEquals")[];
23
23
  export declare function isBuiltInWorkbookCheckKind(value: unknown): value is WorkbookBuiltInCheckKind;
24
24
  export declare function createWorkbookCheckResult(kind: string, target: WorkbookRef, message: string): WorkbookCheckResult;
25
25
  export declare function createWorkbookCustomCheck(options: WorkbookCustomCheckOptions): WorkbookCheckResult;
package/dist/check.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isLiteralInput } from '@bilig/protocol';
2
2
  import { isWorkbookRef } from './find.js';
3
3
  import { formula } from './formula.js';
4
- import { isObject, optionalDataProperty, requiredDataProperty } from './data-properties.js';
4
+ import { isObjectRecord, optionalDataProperty, requiredDataProperty } from './data-properties.js';
5
5
  export const builtInWorkbookCheckKinds = Object.freeze([
6
6
  'exists',
7
7
  'noFormulaErrors',
@@ -98,7 +98,7 @@ function assertOnlyDataProperties(value, path, seen = new WeakSet()) {
98
98
  }
99
99
  }
100
100
  function readbackOptions(kind, options) {
101
- if (!isObject(options) || Array.isArray(options)) {
101
+ if (!isObjectRecord(options)) {
102
102
  throw new Error(`Workbook check ${kind} options must be an object`);
103
103
  }
104
104
  assertOnlyDataProperties(options, `Workbook check ${kind} options`);
@@ -111,7 +111,7 @@ function readbackOptions(kind, options) {
111
111
  });
112
112
  }
113
113
  function customOptions(options) {
114
- if (!isObject(options) || Array.isArray(options)) {
114
+ if (!isObjectRecord(options)) {
115
115
  throw new Error('Workbook custom check options must be an object');
116
116
  }
117
117
  assertOnlyDataProperties(options, 'Workbook custom check options');
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,18 @@
1
1
  import { formatAddress, parseCellAddress } from '@bilig/formula';
2
+ const commandRangeDataFields = Object.freeze(['sheetName', 'startAddress', 'endAddress']);
2
3
  export function normalizeCommandRange(value, path, label = 'Workbook command bundle') {
3
4
  if (!isRecord(value)) {
4
5
  throw new Error(`${label} ${path} must be an object`);
5
6
  }
6
- const sheetName = ownValue(value, 'sheetName');
7
- const startAddress = ownValue(value, 'startAddress');
8
- const endAddress = ownValue(value, 'endAddress');
7
+ for (const field of commandRangeDataFields) {
8
+ const descriptor = Object.getOwnPropertyDescriptor(value, field);
9
+ if (descriptor !== undefined && !('value' in descriptor)) {
10
+ throw new Error(`${label} ${path}.${field} must be a data property`);
11
+ }
12
+ }
13
+ const sheetName = ownDataValue(value, 'sheetName');
14
+ const startAddress = ownDataValue(value, 'startAddress');
15
+ const endAddress = ownDataValue(value, 'endAddress');
9
16
  if (typeof sheetName !== 'string' || typeof startAddress !== 'string' || typeof endAddress !== 'string') {
10
17
  throw new Error(`${label} ${path} must include sheetName, startAddress, and endAddress strings`);
11
18
  }
@@ -76,7 +83,7 @@ function normalizeExactString(value, path, label) {
76
83
  }
77
84
  return normalized;
78
85
  }
79
- function ownValue(value, key) {
86
+ function ownDataValue(value, key) {
80
87
  return Object.getOwnPropertyDescriptor(value, key)?.value;
81
88
  }
82
89
  function isRecord(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"command-ranges.js","sourceRoot":"","sources":["../src/command-ranges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-ranges.js","sourceRoot":"","sources":["../src/command-ranges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CellRangeRef } from '@bilig/protocol';
2
+ export interface WorkbookCommandReceiptRangeIssue {
3
+ readonly path: string;
4
+ readonly message: string;
5
+ }
6
+ export declare function commandReceiptChangedRangeIssues(value: unknown): readonly WorkbookCommandReceiptRangeIssue[];
7
+ export declare function normalizeCommandReceiptChangedRanges(value: unknown): readonly CellRangeRef[] | null;
@@ -0,0 +1,64 @@
1
+ import { normalizeCommandRange } from './command-ranges.js';
2
+ const commandReceiptRangeDataFields = Object.freeze(['sheetName', 'startAddress', 'endAddress']);
3
+ export function commandReceiptChangedRangeIssues(value) {
4
+ if (!Array.isArray(value)) {
5
+ return Object.freeze([rangeIssue('changedRanges', 'Workbook command receipt changed ranges must be an array')]);
6
+ }
7
+ const issues = [];
8
+ for (let index = 0; index < value.length; index += 1) {
9
+ const path = `changedRanges[${String(index)}]`;
10
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
11
+ if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {
12
+ issues.push(rangeIssue(path, 'Workbook command receipt changed ranges must contain only data properties'));
13
+ continue;
14
+ }
15
+ const dataFieldIssue = firstRangeDataFieldIssue(descriptor.value, path);
16
+ if (dataFieldIssue !== null) {
17
+ issues.push(dataFieldIssue);
18
+ continue;
19
+ }
20
+ try {
21
+ normalizeCommandRange(descriptor.value, path, 'Workbook command receipt');
22
+ }
23
+ catch (error) {
24
+ issues.push(rangeIssue(path, errorMessage(error)));
25
+ }
26
+ }
27
+ return Object.freeze(issues);
28
+ }
29
+ function firstRangeDataFieldIssue(value, path) {
30
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
31
+ return null;
32
+ }
33
+ for (const field of commandReceiptRangeDataFields) {
34
+ const descriptor = Object.getOwnPropertyDescriptor(value, field);
35
+ if (descriptor !== undefined && !('value' in descriptor)) {
36
+ return rangeIssue(`${path}.${field}`, `Workbook command receipt ${path}.${field} must be a data property`);
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ export function normalizeCommandReceiptChangedRanges(value) {
42
+ if (commandReceiptChangedRangeIssues(value).length > 0 || !Array.isArray(value)) {
43
+ return null;
44
+ }
45
+ const ranges = [];
46
+ for (let index = 0; index < value.length; index += 1) {
47
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
48
+ if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {
49
+ return null;
50
+ }
51
+ ranges.push(normalizeCommandRange(descriptor.value, `changedRanges[${String(index)}]`, 'Workbook command receipt').range);
52
+ }
53
+ return Object.freeze(ranges);
54
+ }
55
+ function rangeIssue(path, message) {
56
+ return Object.freeze({
57
+ path,
58
+ message,
59
+ });
60
+ }
61
+ function errorMessage(error) {
62
+ return error instanceof Error ? error.message : String(error);
63
+ }
64
+ //# sourceMappingURL=command-receipt-ranges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-receipt-ranges.js","sourceRoot":"","sources":["../src/command-receipt-ranges.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAO3D,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC,CAAA;AAEzG,MAAM,UAAU,gCAAgC,CAAC,KAAc;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,0DAA0D,CAAC,CAAC,CAAC,CAAA;IACjH,CAAC;IAED,MAAM,MAAM,GAAuC,EAAE,CAAA;IACrD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,iBAAiB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAA;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACxE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,2EAA2E,CAAC,CAAC,CAAA;YAC1G,SAAQ;QACV,CAAC;QACD,MAAM,cAAc,GAAG,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACvE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC;YACH,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,0BAA0B,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc,EAAE,IAAY;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,6BAA6B,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAChE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YACzD,OAAO,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,4BAA4B,IAAI,IAAI,KAAK,0BAA0B,CAAC,CAAA;QAC5G,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAmB,EAAE,CAAA;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACxE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YACnF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,iBAAiB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC,KAAK,CAAC,CAAA;IAC3H,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAAe;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { WorkbookUndoRef } from './result.js';
2
+ export declare function normalizeCommandResultUndoRef(value: unknown, path: string): WorkbookUndoRef;
@@ -0,0 +1,148 @@
1
+ import { isWorkbookOp } from './guards.js';
2
+ export function normalizeCommandResultUndoRef(value, path) {
3
+ if (!isRecord(value)) {
4
+ throw new Error(`Workbook command result ${path} must be an object`);
5
+ }
6
+ const accessorKeys = ownAccessorKeys(value, ['id', 'ops']);
7
+ if (accessorKeys.length > 0) {
8
+ throw new Error(`Workbook command result ${path}.${accessorKeys[0]} must be a data property`);
9
+ }
10
+ const id = ownValue(value, 'id');
11
+ if (typeof id !== 'string') {
12
+ throw new Error(`Workbook command result ${path}.id must be a string`);
13
+ }
14
+ const ops = ownValue(value, 'ops');
15
+ if (ops !== undefined && !Array.isArray(ops)) {
16
+ throw new Error(`Workbook command result ${path}.ops must be an array`);
17
+ }
18
+ if (Array.isArray(ops)) {
19
+ const accessorPath = firstAccessorPath(ops, `${path}.ops`);
20
+ if (accessorPath !== null) {
21
+ throw new Error(`Workbook command result ${accessorPath} must contain only data properties`);
22
+ }
23
+ const normalizedOps = [];
24
+ for (let index = 0; index < ops.length; index += 1) {
25
+ const op = arrayDataValue(ops, index);
26
+ if (op === undefined) {
27
+ throw new Error(`Workbook command result ${path}.ops[${String(index)}] must contain only data properties`);
28
+ }
29
+ normalizedOps.push(normalizeOp(op));
30
+ }
31
+ return Object.freeze({
32
+ id: normalizeExactString(id, `${path}.id`),
33
+ ops: Object.freeze(normalizedOps),
34
+ });
35
+ }
36
+ return Object.freeze({
37
+ id: normalizeExactString(id, `${path}.id`),
38
+ });
39
+ }
40
+ function normalizeOp(value) {
41
+ if (!isWorkbookOp(value)) {
42
+ throw new Error('Workbook command result op is invalid');
43
+ }
44
+ const cloned = cloneData(value);
45
+ if (!isWorkbookOp(cloned)) {
46
+ throw new Error('Workbook command result op clone is invalid');
47
+ }
48
+ return freezeData(cloned);
49
+ }
50
+ function normalizeExactString(value, path) {
51
+ const normalized = value.trim();
52
+ if (normalized === '') {
53
+ throw new Error(`Workbook command result ${path} cannot be empty`);
54
+ }
55
+ if (normalized !== value) {
56
+ throw new Error(`Workbook command result ${path} must not have leading or trailing whitespace`);
57
+ }
58
+ return normalized;
59
+ }
60
+ function arrayDataValue(value, index) {
61
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
62
+ return descriptor !== undefined && descriptor.enumerable && 'value' in descriptor ? descriptor.value : undefined;
63
+ }
64
+ function ownValue(value, key) {
65
+ return Object.getOwnPropertyDescriptor(value, key)?.value;
66
+ }
67
+ function ownAccessorKeys(value, keys) {
68
+ const accessors = [];
69
+ for (const key of keys) {
70
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
71
+ if (descriptor !== undefined && !('value' in descriptor)) {
72
+ accessors.push(key);
73
+ }
74
+ }
75
+ return accessors;
76
+ }
77
+ function isRecord(value) {
78
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
79
+ }
80
+ function firstAccessorPath(value, path, seen = new WeakSet()) {
81
+ if (typeof value !== 'object' || value === null) {
82
+ return null;
83
+ }
84
+ if (seen.has(value)) {
85
+ return null;
86
+ }
87
+ seen.add(value);
88
+ for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(value))) {
89
+ const childPath = Array.isArray(value) && /^\d+$/.test(key) ? `${path}[${key}]` : `${path}.${key}`;
90
+ if (!('value' in descriptor)) {
91
+ return childPath;
92
+ }
93
+ const nestedPath = firstAccessorPath(descriptor.value, childPath, seen);
94
+ if (nestedPath !== null) {
95
+ return nestedPath;
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ function freezeData(value, seen = new WeakSet()) {
101
+ if (typeof value !== 'object' || value === null) {
102
+ return value;
103
+ }
104
+ if (seen.has(value)) {
105
+ return value;
106
+ }
107
+ seen.add(value);
108
+ Object.values(Object.getOwnPropertyDescriptors(value)).forEach((descriptor) => {
109
+ if ('value' in descriptor) {
110
+ freezeData(descriptor.value, seen);
111
+ }
112
+ });
113
+ return Object.freeze(value);
114
+ }
115
+ function cloneData(value, seen = new WeakMap()) {
116
+ if (typeof value !== 'object' || value === null) {
117
+ return value;
118
+ }
119
+ const existing = seen.get(value);
120
+ if (existing !== undefined) {
121
+ return existing;
122
+ }
123
+ if (Array.isArray(value)) {
124
+ const cloned = [];
125
+ seen.set(value, cloned);
126
+ for (let index = 0; index < value.length; index += 1) {
127
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
128
+ if (descriptor !== undefined && descriptor.enumerable && 'value' in descriptor) {
129
+ cloned[index] = cloneData(descriptor.value, seen);
130
+ }
131
+ }
132
+ return cloned;
133
+ }
134
+ const cloned = Object.create(Object.getPrototypeOf(value));
135
+ seen.set(value, cloned);
136
+ Object.entries(Object.getOwnPropertyDescriptors(value)).forEach(([key, descriptor]) => {
137
+ if (descriptor.enumerable && 'value' in descriptor) {
138
+ Object.defineProperty(cloned, key, {
139
+ configurable: true,
140
+ enumerable: true,
141
+ value: cloneData(descriptor.value, seen),
142
+ writable: true,
143
+ });
144
+ }
145
+ });
146
+ return cloned;
147
+ }
148
+ //# sourceMappingURL=command-result-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-result-undo.js","sourceRoot":"","sources":["../src/command-result-undo.ts"],"names":[],"mappings":"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"}