@bilig/workbook 0.64.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/dist/check.d.ts +1 -1
- package/dist/describe.d.ts +2 -0
- package/dist/describe.js +2 -0
- package/dist/describe.js.map +1 -1
- package/dist/feature-plugin.d.ts +91 -0
- package/dist/feature-plugin.js +315 -0
- package/dist/feature-plugin.js.map +1 -0
- package/dist/features.d.ts +2 -75
- package/dist/features.js +1 -89
- package/dist/features.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +3 -2
- package/dist/input.js +32 -23
- package/dist/input.js.map +1 -1
- package/dist/model.js +25 -6
- package/dist/model.js.map +1 -1
- package/dist/result.d.ts +3 -1
- package/dist/run.js +5 -1
- package/dist/run.js.map +1 -1
- package/dist/verify.js +2 -2
- package/dist/verify.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -102,7 +102,7 @@ The main API is intentionally small:
|
|
|
102
102
|
- descriptions: `describeModel`, `describeRef`, `describePlan`, `describePlanResult`, `describeRuntimeRequirements`, `checkRuntimeRequirements`, `checkRuntimeAdapter`, `describeRunResult`
|
|
103
103
|
- transport data: `isWorkbookRefData`, `toWorkbookRefData`, `collectWorkbookRefData`, `hydrateWorkbookRef`, `hydrateWorkbookRefs`, `toPlanData`, `isPlanData`, `checkPlanData`, `hydratePlanData`, `verifyPlanData`
|
|
104
104
|
- runtime handoff: `runWorkbookPlan`, `runWorkbookAction`, `WorkbookRunAdapter`
|
|
105
|
-
- feature handoff: `defineWorkbookFeaturePlugin`, `checkWorkbookCommandRequest`, `normalizeWorkbookCommandRequest`, `checkWorkbookCommandReceipt`, `normalizeWorkbookCommandReceipt`, `workbookCommandReceiptOpsMatch`
|
|
105
|
+
- feature handoff: `defineWorkbookFeaturePlugin`, `checkWorkbookFeaturePlugin`, `checkWorkbookCommandRequest`, `normalizeWorkbookCommandRequest`, `checkWorkbookCommandReceipt`, `normalizeWorkbookCommandReceipt`, `workbookCommandReceiptOpsMatch`
|
|
106
106
|
- low-level language: `WorkbookOp`, `WorkbookTxn`, `EngineOp`, `EngineOpBatch`, `isEngineOpBatch`
|
|
107
107
|
|
|
108
108
|
Stable data helpers are exported for generic tool builders:
|
|
@@ -156,7 +156,10 @@ can describe generic input with `json`, `object`, `array`, `string`, `number`,
|
|
|
156
156
|
before running workbook model code. Omitted input is valid unless the top-level
|
|
157
157
|
description sets `required: true`, so agents can distinguish an optional payload
|
|
158
158
|
from a malformed payload. `planWorkbookAction` uses the same check when an action
|
|
159
|
-
declares input metadata
|
|
159
|
+
declares input metadata and preserves each failed input issue as a run error
|
|
160
|
+
with `path` and `issueCode`, so agents can branch without parsing messages.
|
|
161
|
+
JSON-safety failures keep the nested offending path too, such as
|
|
162
|
+
`input.items[2].amount`.
|
|
160
163
|
|
|
161
164
|
## Formulas
|
|
162
165
|
|
|
@@ -248,10 +251,14 @@ type WorkbookRunResult =
|
|
|
248
251
|
## Feature Handoff
|
|
249
252
|
|
|
250
253
|
Feature command requests are plain data for runtimes that expose workbook
|
|
251
|
-
features to agents. Use `
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
254
|
+
features to agents. Use `checkWorkbookFeaturePlugin(data)` before registering
|
|
255
|
+
consumer-provided feature metadata. It returns stable path issues for commands,
|
|
256
|
+
projection interceptors, UI contributions, dependencies, and lifecycle hooks.
|
|
257
|
+
|
|
258
|
+
Use `checkWorkbookCommandRequest(data)` before dispatching a transported
|
|
259
|
+
request. It returns stable path issues such as `featureId`, `commandId`,
|
|
260
|
+
`category`, `mode`, and `input`, and `normalizeWorkbookCommandRequest` returns
|
|
261
|
+
the frozen request data for the runtime. The exported command category,
|
|
255
262
|
execution-mode, receipt-status, projection-point, and UI-slot lists let tool
|
|
256
263
|
builders present and validate command contracts without importing a schema
|
|
257
264
|
framework.
|
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 ("
|
|
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/describe.d.ts
CHANGED
|
@@ -152,6 +152,8 @@ export type WorkbookRunResultDescription = {
|
|
|
152
152
|
export interface WorkbookRunErrorDescription {
|
|
153
153
|
readonly code: WorkbookRunErrorCode;
|
|
154
154
|
readonly message: string;
|
|
155
|
+
readonly path?: string;
|
|
156
|
+
readonly issueCode?: string;
|
|
155
157
|
}
|
|
156
158
|
export declare function describeModel<Refs, Actions extends WorkbookActionMap<Refs>>(model: WorkbookModel<Refs, Actions>): WorkbookModelDescription;
|
|
157
159
|
export declare function describeRef(ref: WorkbookRef): WorkbookRefDescription;
|
package/dist/describe.js
CHANGED
|
@@ -155,6 +155,8 @@ function describeError(error) {
|
|
|
155
155
|
return {
|
|
156
156
|
code: error.code,
|
|
157
157
|
message: error.message,
|
|
158
|
+
...(error.path !== undefined ? { path: error.path } : {}),
|
|
159
|
+
...(error.issueCode !== undefined ? { issueCode: error.issueCode } : {}),
|
|
158
160
|
};
|
|
159
161
|
}
|
|
160
162
|
function describeUndo(undo) {
|
package/dist/describe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,YAAY,GAOb,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { CellRangeRef, CellStylePatch, CellStyleRecord, LiteralInput } from '@bilig/protocol';
|
|
2
|
+
import { type WorkbookCommandCategory, type WorkbookFeatureId, type WorkbookProjectionInterceptorPoint, type WorkbookUiContributionSlot } from './features.js';
|
|
3
|
+
import { type WorkbookActionInput, type WorkbookActionInputDescription } from './input.js';
|
|
4
|
+
export interface WorkbookFeatureLifecycleContext {
|
|
5
|
+
readonly featureId: WorkbookFeatureId;
|
|
6
|
+
readonly activeFeatures: readonly WorkbookFeatureId[];
|
|
7
|
+
}
|
|
8
|
+
export interface WorkbookCommandDescriptor {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly featureId: WorkbookFeatureId;
|
|
11
|
+
readonly category: WorkbookCommandCategory;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
readonly description?: string;
|
|
14
|
+
readonly input?: WorkbookActionInputDescription;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkbookCellDisplayProjection {
|
|
17
|
+
readonly value?: LiteralInput;
|
|
18
|
+
readonly text?: string;
|
|
19
|
+
readonly metadata?: WorkbookActionInput;
|
|
20
|
+
}
|
|
21
|
+
export interface WorkbookCellStyleProjection {
|
|
22
|
+
readonly style?: CellStylePatch | CellStyleRecord;
|
|
23
|
+
readonly metadata?: WorkbookActionInput;
|
|
24
|
+
}
|
|
25
|
+
export interface WorkbookRangeChromeProjection {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly featureId: WorkbookFeatureId;
|
|
28
|
+
readonly source: 'workbook-metadata' | 'command-preview' | 'runtime';
|
|
29
|
+
readonly range: CellRangeRef;
|
|
30
|
+
readonly role: string;
|
|
31
|
+
readonly label?: string;
|
|
32
|
+
readonly metadata?: WorkbookActionInput;
|
|
33
|
+
}
|
|
34
|
+
export interface WorkbookRowVisibilityProjection {
|
|
35
|
+
readonly hidden?: boolean;
|
|
36
|
+
readonly metadata?: WorkbookActionInput;
|
|
37
|
+
}
|
|
38
|
+
export interface WorkbookCommandMetadataProjection {
|
|
39
|
+
readonly label?: string;
|
|
40
|
+
readonly changedRanges?: readonly CellRangeRef[];
|
|
41
|
+
readonly semanticTargets?: readonly WorkbookActionInput[];
|
|
42
|
+
readonly metadata?: WorkbookActionInput;
|
|
43
|
+
}
|
|
44
|
+
export interface WorkbookProjectionContext {
|
|
45
|
+
readonly featureId: WorkbookFeatureId;
|
|
46
|
+
}
|
|
47
|
+
export interface WorkbookProjectionInterceptorRegistration {
|
|
48
|
+
readonly id: string;
|
|
49
|
+
readonly featureId: WorkbookFeatureId;
|
|
50
|
+
readonly point: WorkbookProjectionInterceptorPoint;
|
|
51
|
+
readonly priority?: number;
|
|
52
|
+
readonly label?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface WorkbookUiContribution {
|
|
55
|
+
readonly id: string;
|
|
56
|
+
readonly featureId: WorkbookFeatureId;
|
|
57
|
+
readonly slot: WorkbookUiContributionSlot;
|
|
58
|
+
readonly label: string;
|
|
59
|
+
readonly order?: number;
|
|
60
|
+
readonly metadata?: WorkbookActionInput;
|
|
61
|
+
}
|
|
62
|
+
export interface WorkbookFeatureRegistration {
|
|
63
|
+
readonly commands: readonly WorkbookCommandDescriptor[];
|
|
64
|
+
readonly projectionInterceptors: readonly WorkbookProjectionInterceptorRegistration[];
|
|
65
|
+
readonly uiContributions: readonly WorkbookUiContribution[];
|
|
66
|
+
}
|
|
67
|
+
export interface WorkbookFeaturePlugin extends WorkbookFeatureRegistration {
|
|
68
|
+
readonly id: WorkbookFeatureId;
|
|
69
|
+
readonly version: string;
|
|
70
|
+
readonly dependsOn?: readonly WorkbookFeatureId[];
|
|
71
|
+
readonly register?: (context: WorkbookFeatureLifecycleContext) => void;
|
|
72
|
+
readonly activate?: (context: WorkbookFeatureLifecycleContext) => void;
|
|
73
|
+
readonly dispose?: (context: WorkbookFeatureLifecycleContext) => void;
|
|
74
|
+
}
|
|
75
|
+
export type WorkbookFeaturePluginIssueCode = 'invalid_feature_plugin';
|
|
76
|
+
export interface WorkbookFeaturePluginIssue {
|
|
77
|
+
readonly code: WorkbookFeaturePluginIssueCode;
|
|
78
|
+
readonly path: string;
|
|
79
|
+
readonly message: string;
|
|
80
|
+
}
|
|
81
|
+
export type WorkbookFeaturePluginCheckResult = {
|
|
82
|
+
readonly status: 'valid';
|
|
83
|
+
readonly plugin: WorkbookFeaturePlugin;
|
|
84
|
+
readonly issues: readonly [];
|
|
85
|
+
} | {
|
|
86
|
+
readonly status: 'invalid';
|
|
87
|
+
readonly issues: readonly WorkbookFeaturePluginIssue[];
|
|
88
|
+
};
|
|
89
|
+
export declare function checkWorkbookFeaturePlugin(value: unknown): WorkbookFeaturePluginCheckResult;
|
|
90
|
+
export declare function defineWorkbookFeaturePlugin(plugin: WorkbookFeaturePlugin): WorkbookFeaturePlugin;
|
|
91
|
+
export declare function normalizeWorkbookCommandDescriptor(descriptor: WorkbookCommandDescriptor, expectedFeatureId?: WorkbookFeatureId): WorkbookCommandDescriptor;
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { isWorkbookCommandCategory, isWorkbookProjectionInterceptorPoint, isWorkbookUiContributionSlot, normalizeWorkbookFeatureId, } from './features.js';
|
|
2
|
+
import { isWorkbookActionInput, isWorkbookActionInputDescription, normalizeWorkbookActionInput, normalizeWorkbookActionInputDescription, } from './input.js';
|
|
3
|
+
export function checkWorkbookFeaturePlugin(value) {
|
|
4
|
+
if (!isRecord(value)) {
|
|
5
|
+
return {
|
|
6
|
+
status: 'invalid',
|
|
7
|
+
issues: Object.freeze([featurePluginIssue('plugin', 'Workbook feature plugin must be an object')]),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const issues = [];
|
|
11
|
+
const pluginId = pushRequiredFeaturePluginStringIssue(issues, value['id'], 'id', 'Workbook feature id');
|
|
12
|
+
pushRequiredFeaturePluginStringIssue(issues, value['version'], 'version', 'Workbook feature version');
|
|
13
|
+
pushFeaturePluginDependencyIssues(issues, value['dependsOn']);
|
|
14
|
+
readFeaturePluginArray(issues, value['commands'], 'commands', 'Workbook feature commands').forEach((command, index) => {
|
|
15
|
+
pushFeaturePluginCommandIssues(issues, command, index, pluginId);
|
|
16
|
+
});
|
|
17
|
+
readFeaturePluginArray(issues, value['projectionInterceptors'], 'projectionInterceptors', 'Workbook feature projection interceptors').forEach((interceptor, index) => {
|
|
18
|
+
pushFeaturePluginProjectionIssues(issues, interceptor, index, pluginId);
|
|
19
|
+
});
|
|
20
|
+
readFeaturePluginArray(issues, value['uiContributions'], 'uiContributions', 'Workbook feature UI contributions').forEach((contribution, index) => {
|
|
21
|
+
pushFeaturePluginUiContributionIssues(issues, contribution, index, pluginId);
|
|
22
|
+
});
|
|
23
|
+
pushFeaturePluginLifecycleIssue(issues, value['register'], 'register');
|
|
24
|
+
pushFeaturePluginLifecycleIssue(issues, value['activate'], 'activate');
|
|
25
|
+
pushFeaturePluginLifecycleIssue(issues, value['dispose'], 'dispose');
|
|
26
|
+
if (issues.length > 0) {
|
|
27
|
+
return {
|
|
28
|
+
status: 'invalid',
|
|
29
|
+
issues: Object.freeze(issues),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (!isWorkbookFeaturePluginRecord(value)) {
|
|
33
|
+
return {
|
|
34
|
+
status: 'invalid',
|
|
35
|
+
issues: Object.freeze([featurePluginIssue('plugin', 'Workbook feature plugin is invalid')]),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
status: 'valid',
|
|
40
|
+
plugin: normalizedFeaturePlugin(value),
|
|
41
|
+
issues: Object.freeze([]),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function defineWorkbookFeaturePlugin(plugin) {
|
|
45
|
+
const check = checkWorkbookFeaturePlugin(plugin);
|
|
46
|
+
if (check.status === 'invalid') {
|
|
47
|
+
const [firstIssue] = check.issues;
|
|
48
|
+
throw new Error(firstIssue === undefined ? 'Workbook feature plugin is invalid' : `Workbook feature plugin is invalid: ${firstIssue.message}`);
|
|
49
|
+
}
|
|
50
|
+
return check.plugin;
|
|
51
|
+
}
|
|
52
|
+
export function normalizeWorkbookCommandDescriptor(descriptor, expectedFeatureId) {
|
|
53
|
+
const featureId = normalizeWorkbookFeatureId(descriptor.featureId, 'Workbook command feature id');
|
|
54
|
+
if (expectedFeatureId !== undefined && featureId !== expectedFeatureId) {
|
|
55
|
+
throw new Error(`Workbook command ${descriptor.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
|
|
56
|
+
}
|
|
57
|
+
const id = normalizeRequiredString(descriptor.id, 'Workbook command id');
|
|
58
|
+
const label = normalizeRequiredString(descriptor.label, `Workbook command ${id} label`);
|
|
59
|
+
const description = descriptor.description === undefined ? undefined : normalizeRequiredString(descriptor.description, `Workbook command ${id} description`);
|
|
60
|
+
const input = descriptor.input === undefined ? undefined : normalizeWorkbookActionInputDescription(descriptor.input);
|
|
61
|
+
if (!isWorkbookCommandCategory(descriptor.category)) {
|
|
62
|
+
throw new Error(`Workbook command ${id} category is invalid`);
|
|
63
|
+
}
|
|
64
|
+
return Object.freeze({
|
|
65
|
+
id,
|
|
66
|
+
featureId,
|
|
67
|
+
category: descriptor.category,
|
|
68
|
+
label,
|
|
69
|
+
...(description !== undefined ? { description } : {}),
|
|
70
|
+
...(input !== undefined ? { input } : {}),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function featurePluginIssue(path, message) {
|
|
74
|
+
return Object.freeze({
|
|
75
|
+
code: 'invalid_feature_plugin',
|
|
76
|
+
path,
|
|
77
|
+
message,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function pushRequiredFeaturePluginStringIssue(issues, value, path, label) {
|
|
81
|
+
if (typeof value !== 'string') {
|
|
82
|
+
issues.push(featurePluginIssue(path, `${label} must be a string`));
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
const normalized = value.trim();
|
|
86
|
+
if (normalized === '') {
|
|
87
|
+
issues.push(featurePluginIssue(path, `${label} cannot be empty`));
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
if (normalized !== value) {
|
|
91
|
+
issues.push(featurePluginIssue(path, `${label} must not have leading or trailing whitespace`));
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
return normalized;
|
|
95
|
+
}
|
|
96
|
+
function pushOptionalFeaturePluginStringIssue(issues, value, path, label) {
|
|
97
|
+
if (value === undefined) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
pushRequiredFeaturePluginStringIssue(issues, value, path, label);
|
|
101
|
+
}
|
|
102
|
+
function readFeaturePluginArray(issues, value, path, label) {
|
|
103
|
+
if (!Array.isArray(value)) {
|
|
104
|
+
issues.push(featurePluginIssue(path, `${label} must be an array`));
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
function pushFeaturePluginDependencyIssues(issues, value) {
|
|
110
|
+
if (value === undefined) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (!Array.isArray(value)) {
|
|
114
|
+
issues.push(featurePluginIssue('dependsOn', 'Workbook feature dependencies must be an array'));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
value.forEach((dependency, index) => {
|
|
118
|
+
pushRequiredFeaturePluginStringIssue(issues, dependency, `dependsOn[${index}]`, 'Workbook feature dependency');
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function pushFeaturePluginCommandIssues(issues, command, index, pluginId) {
|
|
122
|
+
const path = `commands[${index}]`;
|
|
123
|
+
if (!isRecord(command)) {
|
|
124
|
+
issues.push(featurePluginIssue(path, 'Workbook command must be an object'));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const commandId = pushRequiredFeaturePluginStringIssue(issues, command['id'], `${path}.id`, 'Workbook command id');
|
|
128
|
+
const featureId = pushRequiredFeaturePluginStringIssue(issues, command['featureId'], `${path}.featureId`, 'Workbook command feature id');
|
|
129
|
+
if (pluginId !== undefined && featureId !== undefined && featureId !== pluginId) {
|
|
130
|
+
issues.push(featurePluginIssue(`${path}.featureId`, `Workbook command ${commandId ?? path} feature id ${featureId} does not match plugin ${pluginId}`));
|
|
131
|
+
}
|
|
132
|
+
if (!isWorkbookCommandCategory(command['category'])) {
|
|
133
|
+
issues.push(featurePluginIssue(`${path}.category`, `Workbook command ${commandId ?? path} category is invalid`));
|
|
134
|
+
}
|
|
135
|
+
pushRequiredFeaturePluginStringIssue(issues, command['label'], `${path}.label`, `Workbook command ${commandId ?? path} label`);
|
|
136
|
+
pushOptionalFeaturePluginStringIssue(issues, command['description'], `${path}.description`, `Workbook command ${commandId ?? path} description`);
|
|
137
|
+
if (command['input'] !== undefined && !isWorkbookActionInputDescription(command['input'])) {
|
|
138
|
+
issues.push(featurePluginIssue(`${path}.input`, `Workbook command ${commandId ?? path} input description is invalid`));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function pushFeaturePluginProjectionIssues(issues, interceptor, index, pluginId) {
|
|
142
|
+
const path = `projectionInterceptors[${index}]`;
|
|
143
|
+
if (!isRecord(interceptor)) {
|
|
144
|
+
issues.push(featurePluginIssue(path, 'Workbook projection interceptor must be an object'));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const id = pushRequiredFeaturePluginStringIssue(issues, interceptor['id'], `${path}.id`, 'Workbook projection interceptor id');
|
|
148
|
+
const featureId = pushRequiredFeaturePluginStringIssue(issues, interceptor['featureId'], `${path}.featureId`, 'Workbook projection interceptor feature id');
|
|
149
|
+
if (pluginId !== undefined && featureId !== undefined && featureId !== pluginId) {
|
|
150
|
+
issues.push(featurePluginIssue(`${path}.featureId`, `Workbook projection interceptor ${id ?? path} feature id ${featureId} does not match plugin ${pluginId}`));
|
|
151
|
+
}
|
|
152
|
+
if (!isWorkbookProjectionInterceptorPoint(interceptor['point'])) {
|
|
153
|
+
issues.push(featurePluginIssue(`${path}.point`, `Workbook projection interceptor ${id ?? path} point is invalid`));
|
|
154
|
+
}
|
|
155
|
+
if (interceptor['priority'] !== undefined && !isSafeInteger(interceptor['priority'])) {
|
|
156
|
+
issues.push(featurePluginIssue(`${path}.priority`, `Workbook projection interceptor ${id ?? path} priority is invalid`));
|
|
157
|
+
}
|
|
158
|
+
pushOptionalFeaturePluginStringIssue(issues, interceptor['label'], `${path}.label`, `Workbook projection interceptor ${id ?? path} label`);
|
|
159
|
+
}
|
|
160
|
+
function pushFeaturePluginUiContributionIssues(issues, contribution, index, pluginId) {
|
|
161
|
+
const path = `uiContributions[${index}]`;
|
|
162
|
+
if (!isRecord(contribution)) {
|
|
163
|
+
issues.push(featurePluginIssue(path, 'Workbook UI contribution must be an object'));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const id = pushRequiredFeaturePluginStringIssue(issues, contribution['id'], `${path}.id`, 'Workbook UI contribution id');
|
|
167
|
+
const featureId = pushRequiredFeaturePluginStringIssue(issues, contribution['featureId'], `${path}.featureId`, 'Workbook UI contribution feature id');
|
|
168
|
+
if (pluginId !== undefined && featureId !== undefined && featureId !== pluginId) {
|
|
169
|
+
issues.push(featurePluginIssue(`${path}.featureId`, `Workbook UI contribution ${id ?? path} feature id ${featureId} does not match plugin ${pluginId}`));
|
|
170
|
+
}
|
|
171
|
+
if (!isWorkbookUiContributionSlot(contribution['slot'])) {
|
|
172
|
+
issues.push(featurePluginIssue(`${path}.slot`, `Workbook UI contribution ${id ?? path} slot is invalid`));
|
|
173
|
+
}
|
|
174
|
+
pushRequiredFeaturePluginStringIssue(issues, contribution['label'], `${path}.label`, `Workbook UI contribution ${id ?? path} label`);
|
|
175
|
+
if (contribution['order'] !== undefined && !isSafeInteger(contribution['order'])) {
|
|
176
|
+
issues.push(featurePluginIssue(`${path}.order`, `Workbook UI contribution ${id ?? path} order is invalid`));
|
|
177
|
+
}
|
|
178
|
+
if (contribution['metadata'] !== undefined && !isWorkbookActionInput(contribution['metadata'])) {
|
|
179
|
+
issues.push(featurePluginIssue(`${path}.metadata`, `Workbook UI contribution ${id ?? path} metadata is invalid`));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function pushFeaturePluginLifecycleIssue(issues, value, path) {
|
|
183
|
+
if (value !== undefined && typeof value !== 'function') {
|
|
184
|
+
issues.push(featurePluginIssue(path, `Workbook feature ${path} must be a function`));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function normalizedFeaturePlugin(plugin) {
|
|
188
|
+
const id = normalizeWorkbookFeatureId(plugin.id);
|
|
189
|
+
const version = normalizeRequiredString(plugin.version, `Workbook feature ${id} version`);
|
|
190
|
+
const dependsOn = plugin.dependsOn?.map((dependency) => normalizeWorkbookFeatureId(dependency, `Workbook feature ${id} dependency`));
|
|
191
|
+
const commands = plugin.commands.map((command) => normalizeWorkbookCommandDescriptor(command, id));
|
|
192
|
+
const projectionInterceptors = plugin.projectionInterceptors.map((interceptor) => normalizeProjectionInterceptor(interceptor, id));
|
|
193
|
+
const uiContributions = plugin.uiContributions.map((contribution) => normalizeUiContribution(contribution, id));
|
|
194
|
+
return Object.freeze({
|
|
195
|
+
id,
|
|
196
|
+
version,
|
|
197
|
+
...(dependsOn !== undefined ? { dependsOn: Object.freeze([...dependsOn]) } : {}),
|
|
198
|
+
commands: Object.freeze(commands),
|
|
199
|
+
projectionInterceptors: Object.freeze(projectionInterceptors),
|
|
200
|
+
uiContributions: Object.freeze(uiContributions),
|
|
201
|
+
...(plugin.register !== undefined ? { register: plugin.register } : {}),
|
|
202
|
+
...(plugin.activate !== undefined ? { activate: plugin.activate } : {}),
|
|
203
|
+
...(plugin.dispose !== undefined ? { dispose: plugin.dispose } : {}),
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function normalizeProjectionInterceptor(interceptor, expectedFeatureId) {
|
|
207
|
+
const featureId = normalizeWorkbookFeatureId(interceptor.featureId, 'Workbook projection interceptor feature id');
|
|
208
|
+
if (featureId !== expectedFeatureId) {
|
|
209
|
+
throw new Error(`Workbook projection interceptor ${interceptor.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
|
|
210
|
+
}
|
|
211
|
+
const id = normalizeRequiredString(interceptor.id, 'Workbook projection interceptor id');
|
|
212
|
+
if (!isWorkbookProjectionInterceptorPoint(interceptor.point)) {
|
|
213
|
+
throw new Error(`Workbook projection interceptor ${id} point is invalid`);
|
|
214
|
+
}
|
|
215
|
+
const label = interceptor.label === undefined ? undefined : normalizeRequiredString(interceptor.label, `Workbook projection interceptor ${id} label`);
|
|
216
|
+
if (interceptor.priority !== undefined && !isSafeInteger(interceptor.priority)) {
|
|
217
|
+
throw new Error(`Workbook projection interceptor ${id} priority is invalid`);
|
|
218
|
+
}
|
|
219
|
+
return Object.freeze({
|
|
220
|
+
id,
|
|
221
|
+
featureId,
|
|
222
|
+
point: interceptor.point,
|
|
223
|
+
...(interceptor.priority !== undefined ? { priority: interceptor.priority } : {}),
|
|
224
|
+
...(label !== undefined ? { label } : {}),
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function normalizeUiContribution(contribution, expectedFeatureId) {
|
|
228
|
+
const featureId = normalizeWorkbookFeatureId(contribution.featureId, 'Workbook UI contribution feature id');
|
|
229
|
+
if (featureId !== expectedFeatureId) {
|
|
230
|
+
throw new Error(`Workbook UI contribution ${contribution.id} feature id ${featureId} does not match plugin ${expectedFeatureId}`);
|
|
231
|
+
}
|
|
232
|
+
const id = normalizeRequiredString(contribution.id, 'Workbook UI contribution id');
|
|
233
|
+
const label = normalizeRequiredString(contribution.label, `Workbook UI contribution ${id} label`);
|
|
234
|
+
if (!isWorkbookUiContributionSlot(contribution.slot)) {
|
|
235
|
+
throw new Error(`Workbook UI contribution ${id} slot is invalid`);
|
|
236
|
+
}
|
|
237
|
+
if (contribution.order !== undefined && !isSafeInteger(contribution.order)) {
|
|
238
|
+
throw new Error(`Workbook UI contribution ${id} order is invalid`);
|
|
239
|
+
}
|
|
240
|
+
if (contribution.metadata !== undefined && !isWorkbookActionInput(contribution.metadata)) {
|
|
241
|
+
throw new Error(`Workbook UI contribution ${id} metadata is invalid`);
|
|
242
|
+
}
|
|
243
|
+
return Object.freeze({
|
|
244
|
+
id,
|
|
245
|
+
featureId,
|
|
246
|
+
slot: contribution.slot,
|
|
247
|
+
label,
|
|
248
|
+
...(contribution.order !== undefined ? { order: contribution.order } : {}),
|
|
249
|
+
...(contribution.metadata !== undefined ? { metadata: normalizeWorkbookActionInput(contribution.metadata) } : {}),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
function isWorkbookFeaturePluginRecord(value) {
|
|
253
|
+
return (isRecord(value) &&
|
|
254
|
+
typeof value['id'] === 'string' &&
|
|
255
|
+
typeof value['version'] === 'string' &&
|
|
256
|
+
(value['dependsOn'] === undefined || (Array.isArray(value['dependsOn']) && value['dependsOn'].every(isString))) &&
|
|
257
|
+
Array.isArray(value['commands']) &&
|
|
258
|
+
value['commands'].every(isWorkbookCommandDescriptorRecord) &&
|
|
259
|
+
Array.isArray(value['projectionInterceptors']) &&
|
|
260
|
+
value['projectionInterceptors'].every(isWorkbookProjectionInterceptorRecord) &&
|
|
261
|
+
Array.isArray(value['uiContributions']) &&
|
|
262
|
+
value['uiContributions'].every(isWorkbookUiContributionRecord) &&
|
|
263
|
+
isOptionalLifecycleHook(value['register']) &&
|
|
264
|
+
isOptionalLifecycleHook(value['activate']) &&
|
|
265
|
+
isOptionalLifecycleHook(value['dispose']));
|
|
266
|
+
}
|
|
267
|
+
function isWorkbookCommandDescriptorRecord(value) {
|
|
268
|
+
return (isRecord(value) &&
|
|
269
|
+
typeof value['id'] === 'string' &&
|
|
270
|
+
typeof value['featureId'] === 'string' &&
|
|
271
|
+
isWorkbookCommandCategory(value['category']) &&
|
|
272
|
+
typeof value['label'] === 'string' &&
|
|
273
|
+
(value['description'] === undefined || typeof value['description'] === 'string') &&
|
|
274
|
+
(value['input'] === undefined || isWorkbookActionInputDescription(value['input'])));
|
|
275
|
+
}
|
|
276
|
+
function isWorkbookProjectionInterceptorRecord(value) {
|
|
277
|
+
return (isRecord(value) &&
|
|
278
|
+
typeof value['id'] === 'string' &&
|
|
279
|
+
typeof value['featureId'] === 'string' &&
|
|
280
|
+
isWorkbookProjectionInterceptorPoint(value['point']) &&
|
|
281
|
+
(value['priority'] === undefined || isSafeInteger(value['priority'])) &&
|
|
282
|
+
(value['label'] === undefined || typeof value['label'] === 'string'));
|
|
283
|
+
}
|
|
284
|
+
function isWorkbookUiContributionRecord(value) {
|
|
285
|
+
return (isRecord(value) &&
|
|
286
|
+
typeof value['id'] === 'string' &&
|
|
287
|
+
typeof value['featureId'] === 'string' &&
|
|
288
|
+
isWorkbookUiContributionSlot(value['slot']) &&
|
|
289
|
+
typeof value['label'] === 'string' &&
|
|
290
|
+
(value['order'] === undefined || isSafeInteger(value['order'])) &&
|
|
291
|
+
(value['metadata'] === undefined || isWorkbookActionInput(value['metadata'])));
|
|
292
|
+
}
|
|
293
|
+
function isString(value) {
|
|
294
|
+
return typeof value === 'string';
|
|
295
|
+
}
|
|
296
|
+
function isOptionalLifecycleHook(value) {
|
|
297
|
+
return value === undefined || typeof value === 'function';
|
|
298
|
+
}
|
|
299
|
+
function isSafeInteger(value) {
|
|
300
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && Number.isFinite(value);
|
|
301
|
+
}
|
|
302
|
+
function isRecord(value) {
|
|
303
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
304
|
+
}
|
|
305
|
+
function normalizeRequiredString(value, label) {
|
|
306
|
+
const normalized = value.trim();
|
|
307
|
+
if (normalized === '') {
|
|
308
|
+
throw new Error(`${label} cannot be empty`);
|
|
309
|
+
}
|
|
310
|
+
if (normalized !== value) {
|
|
311
|
+
throw new Error(`${label} must not have leading or trailing whitespace`);
|
|
312
|
+
}
|
|
313
|
+
return normalized;
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=feature-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-plugin.js","sourceRoot":"","sources":["../src/feature-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,4BAA4B,EAC5B,0BAA0B,GAK3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,4BAA4B,EAC5B,uCAAuC,GAGxC,MAAM,YAAY,CAAA;AAwGnB,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,2CAA2C,CAAC,CAAC,CAAC;SACnG,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAiC,EAAE,CAAA;IAC/C,MAAM,QAAQ,GAAG,oCAAoC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAA;IACvG,oCAAoC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAA;IACrG,iCAAiC,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IAC7D,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACpH,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IACF,sBAAsB,CACpB,MAAM,EACN,KAAK,CAAC,wBAAwB,CAAC,EAC/B,wBAAwB,EACxB,0CAA0C,CAC3C,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC/B,iCAAiC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IACF,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,mCAAmC,CAAC,CAAC,OAAO,CACtH,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;QACtB,qCAAqC,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC9E,CAAC,CACF,CAAA;IACD,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;IACtE,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;IACtE,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;IAEpE,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,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC,CAAC;SAC5F,CAAA;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,uBAAuB,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,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,oCAAoC,CAAC,CAAC,CAAC,uCAAuC,UAAU,CAAC,OAAO,EAAE,CAC9H,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAA;AACrB,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,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uCAAuC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACpH,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAA;IAC/D,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,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAAe;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,wBAAwB;QAC9B,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,MAAoC,EACpC,KAAc,EACd,IAAY,EACZ,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAA;QAClE,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAA;QACjE,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,KAAK,+CAA+C,CAAC,CAAC,CAAA;QAC9F,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,oCAAoC,CAAC,MAAoC,EAAE,KAAc,EAAE,IAAY,EAAE,KAAa;IAC7H,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,oCAAoC,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAoC,EAAE,KAAc,EAAE,IAAY,EAAE,KAAa;IAC/G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAA;QAClE,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAoC,EAAE,KAAc;IAC7F,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,kBAAkB,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC,CAAA;QAC9F,OAAM;IACR,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;QAClC,oCAAoC,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,KAAK,GAAG,EAAE,6BAA6B,CAAC,CAAA;IAChH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,MAAoC,EACpC,OAAgB,EAChB,KAAa,EACb,QAA4B;IAE5B,MAAM,IAAI,GAAG,YAAY,KAAK,GAAG,CAAA;IACjC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC,CAAA;QAC3E,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,oCAAoC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,qBAAqB,CAAC,CAAA;IAClH,MAAM,SAAS,GAAG,oCAAoC,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,YAAY,EAAE,6BAA6B,CAAC,CAAA;IACxI,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CACT,kBAAkB,CAChB,GAAG,IAAI,YAAY,EACnB,oBAAoB,SAAS,IAAI,IAAI,eAAe,SAAS,0BAA0B,QAAQ,EAAE,CAClG,CACF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,WAAW,EAAE,oBAAoB,SAAS,IAAI,IAAI,sBAAsB,CAAC,CAAC,CAAA;IAClH,CAAC;IACD,oCAAoC,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,QAAQ,EAAE,oBAAoB,SAAS,IAAI,IAAI,QAAQ,CAAC,CAAA;IAC9H,oCAAoC,CAClC,MAAM,EACN,OAAO,CAAC,aAAa,CAAC,EACtB,GAAG,IAAI,cAAc,EACrB,oBAAoB,SAAS,IAAI,IAAI,cAAc,CACpD,CAAA;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,QAAQ,EAAE,oBAAoB,SAAS,IAAI,IAAI,+BAA+B,CAAC,CAAC,CAAA;IACxH,CAAC;AACH,CAAC;AAED,SAAS,iCAAiC,CACxC,MAAoC,EACpC,WAAoB,EACpB,KAAa,EACb,QAA4B;IAE5B,MAAM,IAAI,GAAG,0BAA0B,KAAK,GAAG,CAAA;IAC/C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,mDAAmD,CAAC,CAAC,CAAA;QAC1F,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,oCAAoC,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,oCAAoC,CAAC,CAAA;IAC9H,MAAM,SAAS,GAAG,oCAAoC,CACpD,MAAM,EACN,WAAW,CAAC,WAAW,CAAC,EACxB,GAAG,IAAI,YAAY,EACnB,4CAA4C,CAC7C,CAAA;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CACT,kBAAkB,CAChB,GAAG,IAAI,YAAY,EACnB,mCAAmC,EAAE,IAAI,IAAI,eAAe,SAAS,0BAA0B,QAAQ,EAAE,CAC1G,CACF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,QAAQ,EAAE,mCAAmC,EAAE,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAA;IACpH,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,WAAW,EAAE,mCAAmC,EAAE,IAAI,IAAI,sBAAsB,CAAC,CAAC,CAAA;IAC1H,CAAC;IACD,oCAAoC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,QAAQ,EAAE,mCAAmC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAA;AAC5I,CAAC;AAED,SAAS,qCAAqC,CAC5C,MAAoC,EACpC,YAAqB,EACrB,KAAa,EACb,QAA4B;IAE5B,MAAM,IAAI,GAAG,mBAAmB,KAAK,GAAG,CAAA;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,oCAAoC,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,6BAA6B,CAAC,CAAA;IACxH,MAAM,SAAS,GAAG,oCAAoC,CACpD,MAAM,EACN,YAAY,CAAC,WAAW,CAAC,EACzB,GAAG,IAAI,YAAY,EACnB,qCAAqC,CACtC,CAAA;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CACT,kBAAkB,CAChB,GAAG,IAAI,YAAY,EACnB,4BAA4B,EAAE,IAAI,IAAI,eAAe,SAAS,0BAA0B,QAAQ,EAAE,CACnG,CACF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,OAAO,EAAE,4BAA4B,EAAE,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAA;IAC3G,CAAC;IACD,oCAAoC,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,QAAQ,EAAE,4BAA4B,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAA;IACpI,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,QAAQ,EAAE,4BAA4B,EAAE,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAA;IAC7G,CAAC;IACD,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,WAAW,EAAE,4BAA4B,EAAE,IAAI,IAAI,sBAAsB,CAAC,CAAC,CAAA;IACnH,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,MAAoC,EACpC,KAAc,EACd,IAAyC;IAEzC,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,IAAI,qBAAqB,CAAC,CAAC,CAAA;IACtF,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA6B;IAC5D,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,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,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,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,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,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,6BAA6B,CAAC,KAAc;IACnD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ;QACpC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/G,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,iCAAiC,CAAC;QAC1D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,KAAK,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC;QAC5E,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC;QAC9D,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAC1C,CAAA;AACH,CAAC;AAED,SAAS,iCAAiC,CAAC,KAAc;IACvD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACtC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ;QAClC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC;QAChF,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,gCAAgC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACnF,CAAA;AACH,CAAC;AAED,SAAS,qCAAqC,CAAC,KAAc;IAC3D,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACtC,oCAAoC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CACrE,CAAA;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAc;IACpD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACtC,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ;QAClC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAC9E,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AAClC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,CAAA;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC3F,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"}
|