@bilig/workbook 0.59.0 → 0.64.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.
@@ -0,0 +1,489 @@
1
+ import { isCellRangeRef } from '@bilig/protocol';
2
+ import { isWorkbookOp } from './guards.js';
3
+ import { isWorkbookActionInput, isWorkbookActionInputDescription, normalizeWorkbookActionInput, } from './input.js';
4
+ export const workbookCommandCategories = Object.freeze([
5
+ 'command',
6
+ 'operation',
7
+ 'mutation',
8
+ ]);
9
+ const WORKBOOK_COMMAND_CATEGORY_SET = new Set(workbookCommandCategories);
10
+ export const workbookCommandExecutionModes = Object.freeze([
11
+ 'preview',
12
+ 'apply',
13
+ 'applyAndVerify',
14
+ ]);
15
+ const WORKBOOK_COMMAND_EXECUTION_MODE_SET = new Set(workbookCommandExecutionModes);
16
+ export const workbookCommandReceiptStatuses = Object.freeze([
17
+ 'previewed',
18
+ 'applied',
19
+ 'rejected',
20
+ 'noop',
21
+ ]);
22
+ const WORKBOOK_COMMAND_RECEIPT_STATUS_SET = new Set(workbookCommandReceiptStatuses);
23
+ export const workbookProjectionInterceptorPoints = Object.freeze([
24
+ 'cellDisplay',
25
+ 'cellStyle',
26
+ 'rangeChrome',
27
+ 'rowVisibility',
28
+ 'beforeCommand',
29
+ 'commandMetadata',
30
+ ]);
31
+ const WORKBOOK_PROJECTION_INTERCEPTOR_POINT_SET = new Set(workbookProjectionInterceptorPoints);
32
+ export const workbookUiContributionSlots = Object.freeze([
33
+ 'toolbar',
34
+ 'sidePanel',
35
+ 'floatingOverlay',
36
+ 'status',
37
+ ]);
38
+ const WORKBOOK_UI_CONTRIBUTION_SLOT_SET = new Set(workbookUiContributionSlots);
39
+ export function normalizeWorkbookFeatureId(value, label = 'Workbook feature id') {
40
+ const normalized = value.trim();
41
+ if (normalized === '') {
42
+ throw new Error(`${label} cannot be empty`);
43
+ }
44
+ if (normalized !== value) {
45
+ throw new Error(`${label} must not have leading or trailing whitespace`);
46
+ }
47
+ return normalized;
48
+ }
49
+ export function isWorkbookCommandCategory(value) {
50
+ return typeof value === 'string' && WORKBOOK_COMMAND_CATEGORY_SET.has(value);
51
+ }
52
+ export function isWorkbookCommandExecutionMode(value) {
53
+ return typeof value === 'string' && WORKBOOK_COMMAND_EXECUTION_MODE_SET.has(value);
54
+ }
55
+ export function isWorkbookCommandReceiptStatus(value) {
56
+ return typeof value === 'string' && WORKBOOK_COMMAND_RECEIPT_STATUS_SET.has(value);
57
+ }
58
+ export function isWorkbookProjectionInterceptorPoint(value) {
59
+ return typeof value === 'string' && WORKBOOK_PROJECTION_INTERCEPTOR_POINT_SET.has(value);
60
+ }
61
+ export function isWorkbookUiContributionSlot(value) {
62
+ return typeof value === 'string' && WORKBOOK_UI_CONTRIBUTION_SLOT_SET.has(value);
63
+ }
64
+ function commandRequestIssue(path, message) {
65
+ return Object.freeze({
66
+ code: 'invalid_command_request',
67
+ path,
68
+ message,
69
+ });
70
+ }
71
+ function pushRequiredCommandRequestStringIssue(issues, value, key, label) {
72
+ const entry = value[key];
73
+ if (typeof entry !== 'string') {
74
+ issues.push(commandRequestIssue(key, `Workbook command request ${label} must be a string`));
75
+ return;
76
+ }
77
+ const normalized = entry.trim();
78
+ if (normalized === '') {
79
+ issues.push(commandRequestIssue(key, `Workbook command request ${label} cannot be empty`));
80
+ return;
81
+ }
82
+ if (normalized !== entry) {
83
+ issues.push(commandRequestIssue(key, `Workbook command request ${label} must not have leading or trailing whitespace`));
84
+ }
85
+ }
86
+ function normalizedCommandRequest(value) {
87
+ if (!isRecord(value) || typeof value['featureId'] !== 'string' || typeof value['commandId'] !== 'string') {
88
+ return null;
89
+ }
90
+ const category = value['category'];
91
+ const mode = value['mode'];
92
+ const input = value['input'];
93
+ if ((category !== undefined && !isWorkbookCommandCategory(category)) ||
94
+ (mode !== undefined && !isWorkbookCommandExecutionMode(mode)) ||
95
+ (input !== undefined && !isWorkbookActionInput(input))) {
96
+ return null;
97
+ }
98
+ return Object.freeze({
99
+ featureId: normalizeWorkbookFeatureId(value['featureId'], 'Workbook command request feature id'),
100
+ commandId: normalizeRequiredString(value['commandId'], 'Workbook command request command id'),
101
+ ...(category !== undefined ? { category } : {}),
102
+ ...(mode !== undefined ? { mode } : {}),
103
+ ...(input !== undefined ? { input: normalizeWorkbookActionInput(input) } : {}),
104
+ });
105
+ }
106
+ export function checkWorkbookCommandRequest(value) {
107
+ if (!isRecord(value)) {
108
+ return {
109
+ status: 'invalid',
110
+ issues: Object.freeze([commandRequestIssue('request', 'Workbook command request must be an object')]),
111
+ };
112
+ }
113
+ const issues = [];
114
+ pushRequiredCommandRequestStringIssue(issues, value, 'featureId', 'feature id');
115
+ pushRequiredCommandRequestStringIssue(issues, value, 'commandId', 'command id');
116
+ if (value['category'] !== undefined && !isWorkbookCommandCategory(value['category'])) {
117
+ issues.push(commandRequestIssue('category', 'Workbook command request category is invalid'));
118
+ }
119
+ if (value['mode'] !== undefined && !isWorkbookCommandExecutionMode(value['mode'])) {
120
+ issues.push(commandRequestIssue('mode', 'Workbook command request mode is invalid'));
121
+ }
122
+ if (value['input'] !== undefined && !isWorkbookActionInput(value['input'])) {
123
+ issues.push(commandRequestIssue('input', 'Workbook command request input must be JSON-safe'));
124
+ }
125
+ if (issues.length > 0) {
126
+ return {
127
+ status: 'invalid',
128
+ issues: Object.freeze(issues),
129
+ };
130
+ }
131
+ const request = normalizedCommandRequest(value);
132
+ if (request === null) {
133
+ return {
134
+ status: 'invalid',
135
+ issues: Object.freeze([commandRequestIssue('request', 'Workbook command request is invalid')]),
136
+ };
137
+ }
138
+ return {
139
+ status: 'valid',
140
+ request,
141
+ issues: Object.freeze([]),
142
+ };
143
+ }
144
+ export function normalizeWorkbookCommandRequest(value) {
145
+ const check = checkWorkbookCommandRequest(value);
146
+ if (check.status === 'invalid') {
147
+ const [firstIssue] = check.issues;
148
+ throw new Error(firstIssue === undefined ? 'Workbook command request is invalid' : `Workbook command request is invalid: ${firstIssue.message}`);
149
+ }
150
+ return check.request;
151
+ }
152
+ export function isWorkbookCommandRequest(value) {
153
+ return checkWorkbookCommandRequest(value).status === 'valid';
154
+ }
155
+ function commandReceiptIssue(path, message) {
156
+ return Object.freeze({
157
+ code: 'invalid_command_receipt',
158
+ path,
159
+ message,
160
+ });
161
+ }
162
+ function pushRequiredCommandReceiptStringIssue(issues, value, key, label) {
163
+ const entry = value[key];
164
+ if (typeof entry !== 'string') {
165
+ issues.push(commandReceiptIssue(key, `Workbook command receipt ${label} must be a string`));
166
+ return;
167
+ }
168
+ const normalized = entry.trim();
169
+ if (normalized === '') {
170
+ issues.push(commandReceiptIssue(key, `Workbook command receipt ${label} cannot be empty`));
171
+ return;
172
+ }
173
+ if (normalized !== entry) {
174
+ issues.push(commandReceiptIssue(key, `Workbook command receipt ${label} must not have leading or trailing whitespace`));
175
+ }
176
+ }
177
+ function pushOptionalCommandReceiptStringIssue(issues, value, path, label) {
178
+ if (value === undefined) {
179
+ return;
180
+ }
181
+ if (typeof value !== 'string') {
182
+ issues.push(commandReceiptIssue(path, `Workbook command receipt ${label} must be a string`));
183
+ return;
184
+ }
185
+ const normalized = value.trim();
186
+ if (normalized === '') {
187
+ issues.push(commandReceiptIssue(path, `Workbook command receipt ${label} cannot be empty`));
188
+ return;
189
+ }
190
+ if (normalized !== value) {
191
+ issues.push(commandReceiptIssue(path, `Workbook command receipt ${label} must not have leading or trailing whitespace`));
192
+ }
193
+ }
194
+ function pushCommandReceiptOpsIssues(issues, value, path, label) {
195
+ if (value === undefined) {
196
+ return;
197
+ }
198
+ if (!Array.isArray(value)) {
199
+ issues.push(commandReceiptIssue(path, `Workbook command receipt ${label} ops must be an array`));
200
+ return;
201
+ }
202
+ value.forEach((op, index) => {
203
+ if (!isWorkbookOp(op)) {
204
+ issues.push(commandReceiptIssue(`${path}[${index}]`, `Workbook command receipt ${label} op is invalid`));
205
+ }
206
+ });
207
+ }
208
+ function pushCommandReceiptChangedRangesIssues(issues, value) {
209
+ if (value === undefined) {
210
+ return;
211
+ }
212
+ if (!Array.isArray(value)) {
213
+ issues.push(commandReceiptIssue('changedRanges', 'Workbook command receipt changed ranges must be an array'));
214
+ return;
215
+ }
216
+ value.forEach((range, index) => {
217
+ if (!isCellRangeRef(range)) {
218
+ issues.push(commandReceiptIssue(`changedRanges[${index}]`, 'Workbook command receipt changed range is invalid'));
219
+ }
220
+ });
221
+ }
222
+ function pushCommandReceiptUndoIssues(issues, value) {
223
+ if (value === undefined) {
224
+ return;
225
+ }
226
+ if (!isRecord(value)) {
227
+ issues.push(commandReceiptIssue('undo', 'Workbook command receipt undo must be an object'));
228
+ return;
229
+ }
230
+ pushOptionalCommandReceiptStringIssue(issues, value['id'], 'undo.id', 'undo id');
231
+ if (value['id'] === undefined) {
232
+ issues.push(commandReceiptIssue('undo.id', 'Workbook command receipt undo id must be a string'));
233
+ }
234
+ pushCommandReceiptOpsIssues(issues, value['ops'], 'undo.ops', 'undo');
235
+ }
236
+ function pushCommandReceiptErrorsIssues(issues, value) {
237
+ if (value === undefined) {
238
+ return;
239
+ }
240
+ if (!Array.isArray(value)) {
241
+ issues.push(commandReceiptIssue('errors', 'Workbook command receipt errors must be an array'));
242
+ return;
243
+ }
244
+ value.forEach((error, index) => {
245
+ pushOptionalCommandReceiptStringIssue(issues, error, `errors[${index}]`, 'error');
246
+ });
247
+ }
248
+ function normalizeReceiptUndo(value) {
249
+ if (!isRecord(value) || typeof value['id'] !== 'string') {
250
+ return undefined;
251
+ }
252
+ const id = value['id'];
253
+ const ops = Array.isArray(value['ops']) ? value['ops'].map((op) => normalizeReceiptOp(id, op, 'undo')) : undefined;
254
+ return Object.freeze({
255
+ id: normalizeRequiredString(id, 'Workbook command receipt undo id'),
256
+ ...(ops !== undefined ? { ops: Object.freeze(ops) } : {}),
257
+ });
258
+ }
259
+ function normalizedCommandReceipt(value) {
260
+ if (!isRecord(value) ||
261
+ typeof value['featureId'] !== 'string' ||
262
+ typeof value['commandId'] !== 'string' ||
263
+ !isWorkbookCommandReceiptStatus(value['status']) ||
264
+ !isWorkbookCommandCategory(value['category'])) {
265
+ return null;
266
+ }
267
+ const previewOps = value['previewOps'];
268
+ const appliedOps = value['appliedOps'];
269
+ const undo = value['undo'];
270
+ const changedRanges = value['changedRanges'];
271
+ const proof = value['proof'];
272
+ const message = value['message'];
273
+ const metadata = value['metadata'];
274
+ const errors = value['errors'];
275
+ if ((previewOps !== undefined && (!Array.isArray(previewOps) || !previewOps.every((op) => isWorkbookOp(op)))) ||
276
+ (appliedOps !== undefined && (!Array.isArray(appliedOps) || !appliedOps.every((op) => isWorkbookOp(op)))) ||
277
+ (changedRanges !== undefined && (!Array.isArray(changedRanges) || !changedRanges.every((range) => isCellRangeRef(range)))) ||
278
+ (proof !== undefined && !isWorkbookActionInput(proof)) ||
279
+ (metadata !== undefined && !isWorkbookActionInput(metadata)) ||
280
+ (message !== undefined && typeof message !== 'string') ||
281
+ (errors !== undefined && (!Array.isArray(errors) || !errors.every((error) => typeof error === 'string')))) {
282
+ return null;
283
+ }
284
+ const normalizedUndo = normalizeReceiptUndo(undo);
285
+ if (undo !== undefined && normalizedUndo === undefined) {
286
+ return null;
287
+ }
288
+ const commandId = value['commandId'];
289
+ return Object.freeze({
290
+ status: value['status'],
291
+ featureId: normalizeWorkbookFeatureId(value['featureId'], 'Workbook command receipt feature id'),
292
+ commandId: normalizeRequiredString(commandId, 'Workbook command receipt command id'),
293
+ category: value['category'],
294
+ ...(previewOps !== undefined
295
+ ? { previewOps: Object.freeze(previewOps.map((op) => normalizeReceiptOp(commandId, op, 'preview'))) }
296
+ : {}),
297
+ ...(appliedOps !== undefined
298
+ ? { appliedOps: Object.freeze(appliedOps.map((op) => normalizeReceiptOp(commandId, op, 'applied'))) }
299
+ : {}),
300
+ ...(normalizedUndo !== undefined ? { undo: normalizedUndo } : {}),
301
+ ...(changedRanges !== undefined
302
+ ? { changedRanges: Object.freeze(changedRanges.map((range) => normalizeReceiptRange(commandId, range))) }
303
+ : {}),
304
+ ...(proof !== undefined ? { proof: normalizeWorkbookActionInput(proof) } : {}),
305
+ ...(message !== undefined ? { message: normalizeRequiredString(message, `Workbook command receipt ${commandId} message`) } : {}),
306
+ ...(metadata !== undefined ? { metadata: normalizeWorkbookActionInput(metadata) } : {}),
307
+ ...(errors !== undefined
308
+ ? { errors: Object.freeze(errors.map((error) => normalizeRequiredString(error, `Workbook command receipt ${commandId} error`))) }
309
+ : {}),
310
+ });
311
+ }
312
+ export function checkWorkbookCommandReceipt(value) {
313
+ if (!isRecord(value)) {
314
+ return {
315
+ status: 'invalid',
316
+ issues: Object.freeze([commandReceiptIssue('receipt', 'Workbook command receipt must be an object')]),
317
+ };
318
+ }
319
+ const issues = [];
320
+ if (!isWorkbookCommandReceiptStatus(value['status'])) {
321
+ issues.push(commandReceiptIssue('status', 'Workbook command receipt status is invalid'));
322
+ }
323
+ pushRequiredCommandReceiptStringIssue(issues, value, 'featureId', 'feature id');
324
+ pushRequiredCommandReceiptStringIssue(issues, value, 'commandId', 'command id');
325
+ if (!isWorkbookCommandCategory(value['category'])) {
326
+ issues.push(commandReceiptIssue('category', 'Workbook command receipt category is invalid'));
327
+ }
328
+ pushCommandReceiptOpsIssues(issues, value['previewOps'], 'previewOps', 'preview');
329
+ pushCommandReceiptOpsIssues(issues, value['appliedOps'], 'appliedOps', 'applied');
330
+ pushCommandReceiptUndoIssues(issues, value['undo']);
331
+ pushCommandReceiptChangedRangesIssues(issues, value['changedRanges']);
332
+ if (value['proof'] !== undefined && !isWorkbookActionInput(value['proof'])) {
333
+ issues.push(commandReceiptIssue('proof', 'Workbook command receipt proof must be JSON-safe'));
334
+ }
335
+ pushOptionalCommandReceiptStringIssue(issues, value['message'], 'message', 'message');
336
+ if (value['metadata'] !== undefined && !isWorkbookActionInput(value['metadata'])) {
337
+ issues.push(commandReceiptIssue('metadata', 'Workbook command receipt metadata must be JSON-safe'));
338
+ }
339
+ pushCommandReceiptErrorsIssues(issues, value['errors']);
340
+ if (issues.length > 0) {
341
+ return {
342
+ status: 'invalid',
343
+ issues: Object.freeze(issues),
344
+ };
345
+ }
346
+ const receipt = normalizedCommandReceipt(value);
347
+ if (receipt === null) {
348
+ return {
349
+ status: 'invalid',
350
+ issues: Object.freeze([commandReceiptIssue('receipt', 'Workbook command receipt is invalid')]),
351
+ };
352
+ }
353
+ return {
354
+ status: 'valid',
355
+ receipt,
356
+ issues: Object.freeze([]),
357
+ };
358
+ }
359
+ export function defineWorkbookFeaturePlugin(plugin) {
360
+ const id = normalizeWorkbookFeatureId(plugin.id);
361
+ const version = normalizeRequiredString(plugin.version, `Workbook feature ${id} version`);
362
+ const dependsOn = plugin.dependsOn?.map((dependency) => normalizeWorkbookFeatureId(dependency, `Workbook feature ${id} dependency`));
363
+ const commands = plugin.commands.map((command) => normalizeWorkbookCommandDescriptor(command, id));
364
+ const projectionInterceptors = plugin.projectionInterceptors.map((interceptor) => normalizeProjectionInterceptor(interceptor, id));
365
+ const uiContributions = plugin.uiContributions.map((contribution) => normalizeUiContribution(contribution, id));
366
+ return Object.freeze({
367
+ id,
368
+ version,
369
+ ...(dependsOn !== undefined ? { dependsOn: Object.freeze([...dependsOn]) } : {}),
370
+ commands: Object.freeze(commands),
371
+ projectionInterceptors: Object.freeze(projectionInterceptors),
372
+ uiContributions: Object.freeze(uiContributions),
373
+ ...(plugin.register !== undefined ? { register: plugin.register } : {}),
374
+ ...(plugin.activate !== undefined ? { activate: plugin.activate } : {}),
375
+ ...(plugin.dispose !== undefined ? { dispose: plugin.dispose } : {}),
376
+ });
377
+ }
378
+ export function normalizeWorkbookCommandDescriptor(descriptor, expectedFeatureId) {
379
+ const featureId = normalizeWorkbookFeatureId(descriptor.featureId, 'Workbook command feature id');
380
+ if (expectedFeatureId !== undefined && featureId !== expectedFeatureId) {
381
+ throw new Error(`Workbook command ${descriptor.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
382
+ }
383
+ const id = normalizeRequiredString(descriptor.id, 'Workbook command id');
384
+ const label = normalizeRequiredString(descriptor.label, `Workbook command ${id} label`);
385
+ const description = descriptor.description === undefined ? undefined : normalizeRequiredString(descriptor.description, `Workbook command ${id} description`);
386
+ if (!isWorkbookCommandCategory(descriptor.category)) {
387
+ throw new Error(`Workbook command ${id} category is invalid`);
388
+ }
389
+ if (descriptor.input !== undefined && !isWorkbookActionInputDescription(descriptor.input)) {
390
+ throw new Error(`Workbook command ${id} input description is invalid`);
391
+ }
392
+ return Object.freeze({
393
+ id,
394
+ featureId,
395
+ category: descriptor.category,
396
+ label,
397
+ ...(description !== undefined ? { description } : {}),
398
+ ...(descriptor.input !== undefined ? { input: descriptor.input } : {}),
399
+ });
400
+ }
401
+ export function normalizeWorkbookCommandReceipt(receipt) {
402
+ const check = checkWorkbookCommandReceipt(receipt);
403
+ if (check.status === 'invalid') {
404
+ const [firstIssue] = check.issues;
405
+ throw new Error(firstIssue === undefined ? 'Workbook command receipt is invalid' : `Workbook command receipt is invalid: ${firstIssue.message}`);
406
+ }
407
+ return check.receipt;
408
+ }
409
+ export function isWorkbookCommandReceipt(value) {
410
+ return checkWorkbookCommandReceipt(value).status === 'valid';
411
+ }
412
+ export function workbookCommandReceiptOpsMatch(receipt) {
413
+ if (receipt.previewOps === undefined || receipt.appliedOps === undefined) {
414
+ return null;
415
+ }
416
+ return JSON.stringify(receipt.previewOps) === JSON.stringify(receipt.appliedOps);
417
+ }
418
+ function normalizeProjectionInterceptor(interceptor, expectedFeatureId) {
419
+ const featureId = normalizeWorkbookFeatureId(interceptor.featureId, 'Workbook projection interceptor feature id');
420
+ if (featureId !== expectedFeatureId) {
421
+ throw new Error(`Workbook projection interceptor ${interceptor.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
422
+ }
423
+ const id = normalizeRequiredString(interceptor.id, 'Workbook projection interceptor id');
424
+ if (!isWorkbookProjectionInterceptorPoint(interceptor.point)) {
425
+ throw new Error(`Workbook projection interceptor ${id} point is invalid`);
426
+ }
427
+ const label = interceptor.label === undefined ? undefined : normalizeRequiredString(interceptor.label, `Workbook projection interceptor ${id} label`);
428
+ if (interceptor.priority !== undefined && (!Number.isSafeInteger(interceptor.priority) || !Number.isFinite(interceptor.priority))) {
429
+ throw new Error(`Workbook projection interceptor ${id} priority is invalid`);
430
+ }
431
+ return Object.freeze({
432
+ id,
433
+ featureId,
434
+ point: interceptor.point,
435
+ ...(interceptor.priority !== undefined ? { priority: interceptor.priority } : {}),
436
+ ...(label !== undefined ? { label } : {}),
437
+ });
438
+ }
439
+ function normalizeUiContribution(contribution, expectedFeatureId) {
440
+ const featureId = normalizeWorkbookFeatureId(contribution.featureId, 'Workbook UI contribution feature id');
441
+ if (featureId !== expectedFeatureId) {
442
+ throw new Error(`Workbook UI contribution ${contribution.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
443
+ }
444
+ const id = normalizeRequiredString(contribution.id, 'Workbook UI contribution id');
445
+ const label = normalizeRequiredString(contribution.label, `Workbook UI contribution ${id} label`);
446
+ if (!isWorkbookUiContributionSlot(contribution.slot)) {
447
+ throw new Error(`Workbook UI contribution ${id} slot is invalid`);
448
+ }
449
+ if (contribution.order !== undefined && (!Number.isSafeInteger(contribution.order) || !Number.isFinite(contribution.order))) {
450
+ throw new Error(`Workbook UI contribution ${id} order is invalid`);
451
+ }
452
+ if (contribution.metadata !== undefined && !isWorkbookActionInput(contribution.metadata)) {
453
+ throw new Error(`Workbook UI contribution ${id} metadata is invalid`);
454
+ }
455
+ return Object.freeze({
456
+ id,
457
+ featureId,
458
+ slot: contribution.slot,
459
+ label,
460
+ ...(contribution.order !== undefined ? { order: contribution.order } : {}),
461
+ ...(contribution.metadata !== undefined ? { metadata: normalizeWorkbookActionInput(contribution.metadata) } : {}),
462
+ });
463
+ }
464
+ function normalizeReceiptOp(commandId, op, label) {
465
+ if (!isWorkbookOp(op)) {
466
+ throw new Error(`Workbook command receipt ${commandId} ${label} op is invalid`);
467
+ }
468
+ return structuredClone(op);
469
+ }
470
+ function normalizeReceiptRange(commandId, range) {
471
+ if (!isCellRangeRef(range)) {
472
+ throw new Error(`Workbook command receipt ${commandId} changed range is invalid`);
473
+ }
474
+ return structuredClone(range);
475
+ }
476
+ function isRecord(value) {
477
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
478
+ }
479
+ function normalizeRequiredString(value, label) {
480
+ const normalized = value.trim();
481
+ if (normalized === '') {
482
+ throw new Error(`${label} cannot be empty`);
483
+ }
484
+ if (normalized !== value) {
485
+ throw new Error(`${label} must not have leading or trailing whitespace`);
486
+ }
487
+ return normalized;
488
+ }
489
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,4BAA4B,GAG7B,MAAM,YAAY,CAAA;AAiBnB,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,SAAS;IACT,WAAW;IACX,UAAU;CAC2C,CAAC,CAAA;AACxD,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAS,yBAAyB,CAAC,CAAA;AAEhF,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,SAAS;IACT,OAAO;IACP,gBAAgB;CAC0C,CAAC,CAAA;AAC7D,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAS,6BAA6B,CAAC,CAAA;AAE1F,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,WAAW;IACX,SAAS;IACT,UAAU;IACV,MAAM;CACoD,CAAC,CAAA;AAC7D,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAS,8BAA8B,CAAC,CAAA;AAE3F,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,aAAa;IACb,WAAW;IACX,aAAa;IACb,eAAe;IACf,eAAe;IACf,iBAAiB;CAC+C,CAAC,CAAA;AACnE,MAAM,yCAAyC,GAAG,IAAI,GAAG,CAAS,mCAAmC,CAAC,CAAA;AAEtG,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,SAAS;IACT,WAAW;IACX,iBAAiB;IACjB,QAAQ;CACgD,CAAC,CAAA;AAC3D,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAS,2BAA2B,CAAC,CAAA;AAkJtF,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,KAAK,GAAG,qBAAqB;IACrF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAA;IAC7C,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+CAA+C,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,6BAA6B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yCAAyC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC1F,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iCAAiC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,yBAAyB;QAC/B,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,MAAqC,EACrC,KAA8B,EAC9B,GAA8B,EAC9B,KAAa;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,mBAAmB,CAAC,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,kBAAkB,CAAC,CAAC,CAAA;QAC1F,OAAM;IACR,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,+CAA+C,CAAC,CAAC,CAAA;IACzH,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzG,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,IACE,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAChE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,EACtD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,qCAAqC,CAAC;QAChG,SAAS,EAAE,uBAAuB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,qCAAqC,CAAC;QAC7F,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC,CAAC;SACtG,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAkC,EAAE,CAAA;IAChD,qCAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC/E,qCAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC/E,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,8CAA8C,CAAC,CAAC,CAAA;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,kDAAkD,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC;SAC/F,CAAA;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAc;IAC5D,MAAM,KAAK,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QACjC,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,OAAO,EAAE,CAChI,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,OAAO,CAAA;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,yBAAyB;QAC/B,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,MAAqC,EACrC,KAA8B,EAC9B,GAA8B,EAC9B,KAAa;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,mBAAmB,CAAC,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,kBAAkB,CAAC,CAAC,CAAA;QAC1F,OAAM;IACR,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,KAAK,+CAA+C,CAAC,CAAC,CAAA;IACzH,CAAC;AACH,CAAC;AAED,SAAS,qCAAqC,CAAC,MAAqC,EAAE,KAAc,EAAE,IAAY,EAAE,KAAa;IAC/H,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,4BAA4B,KAAK,mBAAmB,CAAC,CAAC,CAAA;QAC5F,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,4BAA4B,KAAK,kBAAkB,CAAC,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,4BAA4B,KAAK,+CAA+C,CAAC,CAAC,CAAA;IAC1H,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAqC,EAAE,KAAc,EAAE,IAAY,EAAE,KAAa;IACrH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,4BAA4B,KAAK,uBAAuB,CAAC,CAAC,CAAA;QAChG,OAAM;IACR,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC1B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,4BAA4B,KAAK,gBAAgB,CAAC,CAAC,CAAA;QAC1G,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qCAAqC,CAAC,MAAqC,EAAE,KAAc;IAClG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,0DAA0D,CAAC,CAAC,CAAA;QAC7G,OAAM;IACR,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,KAAK,GAAG,EAAE,mDAAmD,CAAC,CAAC,CAAA;QAClH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAqC,EAAE,KAAc;IACzF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,iDAAiD,CAAC,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IACD,qCAAqC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IAChF,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC,CAAA;IAClG,CAAC;IACD,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAqC,EAAE,KAAc;IAC3F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC,CAAA;QAC9F,OAAM;IACR,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7B,qCAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,GAAG,EAAE,OAAO,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACtB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,kCAAkC,CAAC;QACnE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACtC,CAAC,8BAA8B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAC7C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC9B,IACE,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1H,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;QACtD,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EACzG,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,qCAAqC,CAAC;QAChG,SAAS,EAAE,uBAAuB,CAAC,SAAS,EAAE,qCAAqC,CAAC;QACpF,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;QAC3B,GAAG,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;YACrG,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;YACrG,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,aAAa,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACzG,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,4BAA4B,SAAS,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChI,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,MAAM,KAAK,SAAS;YACtB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE;YACjI,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC,CAAC;SACtG,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAkC,EAAE,CAAA;IAChD,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC,CAAA;IAC1F,CAAC;IACD,qCAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC/E,qCAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC/E,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,8CAA8C,CAAC,CAAC,CAAA;IAC9F,CAAC;IACD,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;IACjF,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;IACjF,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACnD,qCAAqC,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,kDAAkD,CAAC,CAAC,CAAA;IAC/F,CAAC;IACD,qCAAqC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IACrF,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC,CAAA;IACrG,CAAC;IACD,8BAA8B,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC;SAC/F,CAAA;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,MAAM,EAAE,GAAG,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAA;IACzF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,0BAA0B,CAAC,UAAU,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAA;IACpI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kCAAkC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;IAClG,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,8BAA8B,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;IAClI,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/G,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,OAAO;QACP,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAC7D,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,UAAqC,EACrC,iBAAqC;IAErC,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAA;IACjG,IAAI,iBAAiB,KAAK,SAAS,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAC,EAAE,eAAe,SAAS,0BAA0B,iBAAiB,EAAE,CAAC,CAAA;IACzH,CAAC;IACD,MAAM,EAAE,GAAG,uBAAuB,CAAC,UAAU,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAA;IACvF,MAAM,WAAW,GACf,UAAU,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,WAAW,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAA;IAC1I,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAA;IAC/D,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,+BAA+B,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,SAAS;QACT,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,KAAK;QACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,MAAM,KAAK,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAA;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QACjC,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,OAAO,EAAE,CAChI,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,OAAO,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAAkE;IAC/G,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,8BAA8B,CACrC,WAAsD,EACtD,iBAAoC;IAEpC,MAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAA;IACjH,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,CAAC,EAAE,eAAe,SAAS,0BAA0B,iBAAiB,EAAE,CAAC,CAAA;IACzI,CAAC;IACD,MAAM,EAAE,GAAG,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAA;IACxF,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,mBAAmB,CAAC,CAAA;IAC3E,CAAC;IACD,MAAM,KAAK,GACT,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,mCAAmC,EAAE,QAAQ,CAAC,CAAA;IACzI,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClI,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,sBAAsB,CAAC,CAAA;IAC9E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,SAAS;QACT,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,YAAoC,EAAE,iBAAoC;IACzG,MAAM,SAAS,GAAG,0BAA0B,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAA;IAC3G,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,CAAC,EAAE,eAAe,SAAS,0BAA0B,iBAAiB,EAAE,CAAC,CAAA;IACnI,CAAC;IACD,MAAM,EAAE,GAAG,uBAAuB,CAAC,YAAY,CAAC,EAAE,EAAE,6BAA6B,CAAC,CAAA;IAClF,MAAM,KAAK,GAAG,uBAAuB,CAAC,YAAY,CAAC,KAAK,EAAE,4BAA4B,EAAE,QAAQ,CAAC,CAAA;IACjG,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5H,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,sBAAsB,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,SAAS;QACT,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,KAAK;QACL,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,YAAY,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,4BAA4B,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClH,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB,EAAE,EAAY,EAAE,KAAa;IACxE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,IAAI,KAAK,gBAAgB,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,eAAe,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,KAAmB;IACnE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,2BAA2B,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa,EAAE,KAAa;IAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAA;IAC7C,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+CAA+C,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
package/dist/find.d.ts CHANGED
@@ -51,10 +51,49 @@ export interface WorkbookRowsRef extends WorkbookBaseRef {
51
51
  readonly column: (name: string) => WorkbookColumnRef;
52
52
  }
53
53
  export type WorkbookRef = WorkbookRangeRef | WorkbookNameRef | WorkbookTableRef | WorkbookColumnRef | WorkbookRowsRef;
54
+ export interface WorkbookBaseRefData {
55
+ readonly kind: WorkbookRefKind;
56
+ readonly id: string;
57
+ readonly label: string;
58
+ }
59
+ export interface WorkbookRangeRefData extends WorkbookBaseRefData {
60
+ readonly kind: 'range';
61
+ readonly range: CellRangeRef;
62
+ }
63
+ export interface WorkbookNameRefData extends WorkbookBaseRefData {
64
+ readonly kind: 'name';
65
+ readonly name: string;
66
+ }
67
+ export interface WorkbookTableRefData extends WorkbookBaseRefData {
68
+ readonly kind: 'table';
69
+ readonly name?: string;
70
+ readonly sheetName?: string;
71
+ readonly headers?: readonly string[];
72
+ }
73
+ export interface WorkbookColumnRefData extends WorkbookBaseRefData {
74
+ readonly kind: 'column';
75
+ readonly table: WorkbookTableRefData;
76
+ readonly rows?: WorkbookRowsRefData;
77
+ readonly name: string;
78
+ }
79
+ export interface WorkbookRowsRefData extends WorkbookBaseRefData {
80
+ readonly kind: 'rows';
81
+ readonly sheetName?: string;
82
+ readonly table?: WorkbookTableRefData;
83
+ readonly where: {
84
+ readonly column: string;
85
+ readonly op: WorkbookRowOperator;
86
+ readonly value: LiteralInput;
87
+ };
88
+ }
89
+ export type WorkbookRefData = WorkbookRangeRefData | WorkbookNameRefData | WorkbookTableRefData | WorkbookColumnRefData | WorkbookRowsRefData;
54
90
  export declare const workbookRefKinds: readonly ["range", "name", "table", "column", "rows"];
55
91
  export declare function isWorkbookRefKind(value: unknown): value is WorkbookRefKind;
56
92
  export declare function isWorkbookRef(value: unknown): value is WorkbookRef;
93
+ export declare function isWorkbookRefData(value: unknown): value is WorkbookRefData;
57
94
  export declare function collectWorkbookRefs(value: unknown): readonly WorkbookRef[];
95
+ export declare function toWorkbookRefData(ref: WorkbookRef | WorkbookRefData): WorkbookRefData;
96
+ export declare function collectWorkbookRefData(value: unknown): readonly WorkbookRefData[];
58
97
  export interface FindTableOptions {
59
98
  readonly name?: string;
60
99
  readonly sheetName?: string;
@@ -106,6 +145,8 @@ export declare function createWorkbookColumnRef(options: FindColumnOptions): Wor
106
145
  export declare function createWorkbookRangeRef(input: FindRangeInput): WorkbookRangeRef;
107
146
  export declare function createWorkbookNameRef(name: string): WorkbookNameRef;
108
147
  export declare function createWorkbookRowsRef(options: FindRowsOptions): WorkbookRowsRef;
148
+ export declare function hydrateWorkbookRef(data: WorkbookRefData): WorkbookRef;
149
+ export declare function hydrateWorkbookRefs(value: unknown): unknown;
109
150
  export declare function findTable(options: FindTableOptions): WorkbookTableRef;
110
151
  export declare function findColumn(options: FindColumnOptions): WorkbookColumnRef;
111
152
  export declare function findRange(input: FindRangeInput): WorkbookRangeRef;