@ifc-lite/sdk 1.14.2 → 1.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context.d.ts +41 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +75 -0
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/namespaces/bcf.d.ts +108 -10
- package/dist/namespaces/bcf.d.ts.map +1 -1
- package/dist/namespaces/bcf.js +184 -11
- package/dist/namespaces/bcf.js.map +1 -1
- package/dist/namespaces/bsdd.d.ts +140 -0
- package/dist/namespaces/bsdd.d.ts.map +1 -0
- package/dist/namespaces/bsdd.js +278 -0
- package/dist/namespaces/bsdd.js.map +1 -0
- package/dist/namespaces/drawing.d.ts +118 -6
- package/dist/namespaces/drawing.d.ts.map +1 -1
- package/dist/namespaces/drawing.js +181 -10
- package/dist/namespaces/drawing.js.map +1 -1
- package/dist/namespaces/files.d.ts +15 -0
- package/dist/namespaces/files.d.ts.map +1 -0
- package/dist/namespaces/files.js +27 -0
- package/dist/namespaces/files.js.map +1 -0
- package/dist/namespaces/ids.d.ts +64 -6
- package/dist/namespaces/ids.d.ts.map +1 -1
- package/dist/namespaces/ids.js +113 -4
- package/dist/namespaces/ids.js.map +1 -1
- package/dist/namespaces/list.d.ts +49 -4
- package/dist/namespaces/list.d.ts.map +1 -1
- package/dist/namespaces/list.js +69 -5
- package/dist/namespaces/list.js.map +1 -1
- package/dist/namespaces/mutate.d.ts +2 -0
- package/dist/namespaces/mutate.d.ts.map +1 -1
- package/dist/namespaces/mutate.js +4 -0
- package/dist/namespaces/mutate.js.map +1 -1
- package/dist/namespaces/query.d.ts +17 -1
- package/dist/namespaces/query.d.ts.map +1 -1
- package/dist/namespaces/query.js +43 -0
- package/dist/namespaces/query.js.map +1 -1
- package/dist/namespaces/sandbox.d.ts +83 -0
- package/dist/namespaces/sandbox.d.ts.map +1 -0
- package/dist/namespaces/sandbox.js +141 -0
- package/dist/namespaces/sandbox.js.map +1 -0
- package/dist/transport/remote-backend.d.ts +2 -1
- package/dist/transport/remote-backend.d.ts.map +1 -1
- package/dist/transport/remote-backend.js +1 -0
- package/dist/transport/remote-backend.js.map +1 -1
- package/dist/types.d.ts +97 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +14 -14
package/dist/namespaces/ids.js
CHANGED
|
@@ -1,19 +1,128 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
//
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Dynamic import
|
|
6
|
+
// ============================================================================
|
|
5
7
|
async function loadIDS() {
|
|
6
8
|
const name = '@ifc-lite/ids';
|
|
7
9
|
return import(/* webpackIgnore: true */ name);
|
|
8
10
|
}
|
|
9
|
-
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// IDSNamespace
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/** bim.ids — IDS (Information Delivery Specification) parsing, validation, and reporting */
|
|
10
15
|
export class IDSNamespace {
|
|
11
|
-
|
|
16
|
+
// --------------------------------------------------------------------------
|
|
17
|
+
// Parsing
|
|
18
|
+
// --------------------------------------------------------------------------
|
|
19
|
+
/** Parse an IDS XML document into an IDSDocument structure. */
|
|
12
20
|
async parse(xmlContent) {
|
|
13
21
|
const mod = await loadIDS();
|
|
14
22
|
return mod.parseIDS(xmlContent);
|
|
15
23
|
}
|
|
16
|
-
|
|
24
|
+
// --------------------------------------------------------------------------
|
|
25
|
+
// Validation
|
|
26
|
+
// --------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Validate an IDS document against an IFC model.
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* const ids = await bim.ids.parse(idsXml);
|
|
32
|
+
* const report = await bim.ids.validate(ids, { accessor: myDataAccessor });
|
|
33
|
+
* console.log(bim.ids.summarize(report));
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
async validate(idsDocument, options) {
|
|
37
|
+
const mod = await loadIDS();
|
|
38
|
+
return mod.validateIDS(idsDocument, options.accessor, options.modelInfo ?? {}, {
|
|
39
|
+
onProgress: options.onProgress,
|
|
40
|
+
locale: options.locale,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// --------------------------------------------------------------------------
|
|
44
|
+
// Facet operations
|
|
45
|
+
// --------------------------------------------------------------------------
|
|
46
|
+
/** Check a single facet against an entity. Returns { passed, details }. */
|
|
47
|
+
async checkFacet(facet, entityData, accessor) {
|
|
48
|
+
const mod = await loadIDS();
|
|
49
|
+
return mod.checkFacet(facet, entityData, accessor);
|
|
50
|
+
}
|
|
51
|
+
/** Filter entities by a facet. Returns matching entity IDs. */
|
|
52
|
+
async filterByFacet(facet, entities, accessor) {
|
|
53
|
+
const mod = await loadIDS();
|
|
54
|
+
return mod.filterByFacet(facet, entities, accessor);
|
|
55
|
+
}
|
|
56
|
+
/** Check an entity facet (IfcType matching). */
|
|
57
|
+
async checkEntityFacet(facet, entityData, accessor) {
|
|
58
|
+
const mod = await loadIDS();
|
|
59
|
+
return mod.checkEntityFacet(facet, entityData, accessor);
|
|
60
|
+
}
|
|
61
|
+
/** Filter entities by entity facet (IfcType). */
|
|
62
|
+
async filterByEntityFacet(facet, entities, accessor) {
|
|
63
|
+
const mod = await loadIDS();
|
|
64
|
+
return mod.filterByEntityFacet(facet, entities, accessor);
|
|
65
|
+
}
|
|
66
|
+
/** Check an attribute facet (Name, Description, ObjectType). */
|
|
67
|
+
async checkAttributeFacet(facet, entityData) {
|
|
68
|
+
const mod = await loadIDS();
|
|
69
|
+
return mod.checkAttributeFacet(facet, entityData);
|
|
70
|
+
}
|
|
71
|
+
/** Check a property facet (PropertySet + Property value). */
|
|
72
|
+
async checkPropertyFacet(facet, entityData, accessor) {
|
|
73
|
+
const mod = await loadIDS();
|
|
74
|
+
return mod.checkPropertyFacet(facet, entityData, accessor);
|
|
75
|
+
}
|
|
76
|
+
/** Check a classification facet. */
|
|
77
|
+
async checkClassificationFacet(facet, entityData, accessor) {
|
|
78
|
+
const mod = await loadIDS();
|
|
79
|
+
return mod.checkClassificationFacet(facet, entityData, accessor);
|
|
80
|
+
}
|
|
81
|
+
/** Check a material facet. */
|
|
82
|
+
async checkMaterialFacet(facet, entityData, accessor) {
|
|
83
|
+
const mod = await loadIDS();
|
|
84
|
+
return mod.checkMaterialFacet(facet, entityData, accessor);
|
|
85
|
+
}
|
|
86
|
+
/** Check a part-of facet (spatial/aggregation relationships). */
|
|
87
|
+
async checkPartOfFacet(facet, entityData, accessor) {
|
|
88
|
+
const mod = await loadIDS();
|
|
89
|
+
return mod.checkPartOfFacet(facet, entityData, accessor);
|
|
90
|
+
}
|
|
91
|
+
// --------------------------------------------------------------------------
|
|
92
|
+
// Constraint operations
|
|
93
|
+
// --------------------------------------------------------------------------
|
|
94
|
+
/** Match a value against an IDS constraint. */
|
|
95
|
+
async matchConstraint(constraint, value) {
|
|
96
|
+
const mod = await loadIDS();
|
|
97
|
+
return mod.matchConstraint(constraint, value);
|
|
98
|
+
}
|
|
99
|
+
/** Format a constraint as a human-readable string. */
|
|
100
|
+
async formatConstraint(constraint) {
|
|
101
|
+
const mod = await loadIDS();
|
|
102
|
+
return mod.formatConstraint(constraint);
|
|
103
|
+
}
|
|
104
|
+
/** Get a human-readable mismatch reason for a failed constraint. */
|
|
105
|
+
async getConstraintMismatchReason(constraint, value) {
|
|
106
|
+
const mod = await loadIDS();
|
|
107
|
+
return mod.getConstraintMismatchReason(constraint, value);
|
|
108
|
+
}
|
|
109
|
+
// --------------------------------------------------------------------------
|
|
110
|
+
// Translation
|
|
111
|
+
// --------------------------------------------------------------------------
|
|
112
|
+
/** Create a translation service for human-readable validation messages. */
|
|
113
|
+
async createTranslationService(locale) {
|
|
114
|
+
const mod = await loadIDS();
|
|
115
|
+
return mod.createTranslationService(locale ?? 'en');
|
|
116
|
+
}
|
|
117
|
+
/** Get locale data for customization. */
|
|
118
|
+
async getLocale(locale) {
|
|
119
|
+
const mod = await loadIDS();
|
|
120
|
+
return mod[locale];
|
|
121
|
+
}
|
|
122
|
+
// --------------------------------------------------------------------------
|
|
123
|
+
// Report summarization
|
|
124
|
+
// --------------------------------------------------------------------------
|
|
125
|
+
/** Summarize a validation report into pass/fail counts. */
|
|
17
126
|
summarize(report) {
|
|
18
127
|
let totalSpecs = 0, passedSpecs = 0, failedSpecs = 0;
|
|
19
128
|
let totalEntities = 0, passedEntities = 0, failedEntities = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* bim.list — Property lists / entity tables
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Full access to @ifc-lite/lists for configurable entity tables with
|
|
5
|
+
* column discovery, filtering, presets, and CSV export.
|
|
5
6
|
*/
|
|
6
7
|
export interface ListColumn {
|
|
7
8
|
/** Column header */
|
|
@@ -9,11 +10,55 @@ export interface ListColumn {
|
|
|
9
10
|
/** Data source: 'name', 'type', 'globalId', or 'PsetName.PropName' */
|
|
10
11
|
source: string;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
+
export interface ListCondition {
|
|
14
|
+
/** Property set name */
|
|
15
|
+
psetName: string;
|
|
16
|
+
/** Property name */
|
|
17
|
+
propName: string;
|
|
18
|
+
/** Comparison operator */
|
|
19
|
+
operator: '=' | '!=' | '>' | '<' | '>=' | '<=' | 'contains' | 'exists';
|
|
20
|
+
/** Value to compare against */
|
|
21
|
+
value?: string | number | boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ListDefinition {
|
|
24
|
+
/** List name */
|
|
25
|
+
name?: string;
|
|
26
|
+
/** IFC types to include (empty = all) */
|
|
27
|
+
types?: string[];
|
|
28
|
+
/** Columns to display */
|
|
29
|
+
columns: ListColumn[];
|
|
30
|
+
/** Filter conditions */
|
|
31
|
+
conditions?: ListCondition[];
|
|
32
|
+
/** Maximum rows */
|
|
33
|
+
limit?: number;
|
|
34
|
+
}
|
|
35
|
+
/** bim.list — Entity lists, property tables, column discovery, and CSV export */
|
|
13
36
|
export declare class ListNamespace {
|
|
37
|
+
/** Get available list presets (e.g. wall schedule, door schedule). */
|
|
38
|
+
getPresets(): Promise<unknown[]>;
|
|
39
|
+
/** Get the built-in entity attribute columns (name, type, globalId, etc.). */
|
|
40
|
+
getEntityAttributes(): Promise<unknown[]>;
|
|
14
41
|
/**
|
|
15
|
-
*
|
|
42
|
+
* Execute a list query against a data provider.
|
|
43
|
+
*
|
|
44
|
+
* ```ts
|
|
45
|
+
* const result = await bim.list.execute(myProvider, {
|
|
46
|
+
* types: ['IfcWall'],
|
|
47
|
+
* columns: [
|
|
48
|
+
* { header: 'Name', source: 'name' },
|
|
49
|
+
* { header: 'Type', source: 'type' },
|
|
50
|
+
* { header: 'External', source: 'Pset_WallCommon.IsExternal' },
|
|
51
|
+
* ],
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
16
54
|
*/
|
|
17
|
-
|
|
55
|
+
execute(provider: unknown, definition: ListDefinition, modelId?: string): Promise<unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* Discover available columns from a data provider.
|
|
58
|
+
* Returns all property sets and their properties found in the model.
|
|
59
|
+
*/
|
|
60
|
+
discoverColumns(provider: unknown, entityTypes?: string[]): Promise<unknown>;
|
|
61
|
+
/** Convert a list result to CSV string. */
|
|
62
|
+
toCSV(result: unknown): Promise<string>;
|
|
18
63
|
}
|
|
19
64
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/namespaces/list.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/namespaces/list.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAMH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvE,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,yBAAyB;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,wBAAwB;IACxB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiBD,iFAAiF;AACjF,qBAAa,aAAa;IAMxB,sEAAsE;IAChE,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKtC,8EAA8E;IACxE,mBAAmB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAS/C;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBhG;;;OAGG;IACG,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAclF,2CAA2C;IACrC,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAI9C"}
|
package/dist/namespaces/list.js
CHANGED
|
@@ -1,19 +1,83 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
//
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Dynamic import
|
|
6
|
+
// ============================================================================
|
|
5
7
|
async function loadLists() {
|
|
6
8
|
const name = '@ifc-lite/lists';
|
|
7
9
|
return import(/* webpackIgnore: true */ name);
|
|
8
10
|
}
|
|
9
|
-
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// ListNamespace
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/** bim.list — Entity lists, property tables, column discovery, and CSV export */
|
|
10
15
|
export class ListNamespace {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
// --------------------------------------------------------------------------
|
|
17
|
+
// Presets
|
|
18
|
+
// --------------------------------------------------------------------------
|
|
19
|
+
/** Get available list presets (e.g. wall schedule, door schedule). */
|
|
14
20
|
async getPresets() {
|
|
15
21
|
const mod = await loadLists();
|
|
16
22
|
return mod.LIST_PRESETS;
|
|
17
23
|
}
|
|
24
|
+
/** Get the built-in entity attribute columns (name, type, globalId, etc.). */
|
|
25
|
+
async getEntityAttributes() {
|
|
26
|
+
const mod = await loadLists();
|
|
27
|
+
return mod.ENTITY_ATTRIBUTES;
|
|
28
|
+
}
|
|
29
|
+
// --------------------------------------------------------------------------
|
|
30
|
+
// Execution
|
|
31
|
+
// --------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* Execute a list query against a data provider.
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const result = await bim.list.execute(myProvider, {
|
|
37
|
+
* types: ['IfcWall'],
|
|
38
|
+
* columns: [
|
|
39
|
+
* { header: 'Name', source: 'name' },
|
|
40
|
+
* { header: 'Type', source: 'type' },
|
|
41
|
+
* { header: 'External', source: 'Pset_WallCommon.IsExternal' },
|
|
42
|
+
* ],
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
async execute(provider, definition, modelId) {
|
|
47
|
+
const mod = await loadLists();
|
|
48
|
+
// Convert SDK's string type names to IfcTypeEnum values expected by the library
|
|
49
|
+
const dataName = '@ifc-lite/data';
|
|
50
|
+
const data = await import(/* webpackIgnore: true */ dataName);
|
|
51
|
+
const convert = data.IfcTypeEnumFromString;
|
|
52
|
+
const libraryDef = {
|
|
53
|
+
...definition,
|
|
54
|
+
entityTypes: (definition.types ?? []).map(t => convert(t)),
|
|
55
|
+
};
|
|
56
|
+
return mod.executeList(libraryDef, provider, modelId ?? 'default');
|
|
57
|
+
}
|
|
58
|
+
// --------------------------------------------------------------------------
|
|
59
|
+
// Column discovery
|
|
60
|
+
// --------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* Discover available columns from a data provider.
|
|
63
|
+
* Returns all property sets and their properties found in the model.
|
|
64
|
+
*/
|
|
65
|
+
async discoverColumns(provider, entityTypes) {
|
|
66
|
+
const mod = await loadLists();
|
|
67
|
+
// Convert string type names to IfcTypeEnum values expected by the library
|
|
68
|
+
const dataName = '@ifc-lite/data';
|
|
69
|
+
const data = await import(/* webpackIgnore: true */ dataName);
|
|
70
|
+
const convert = data.IfcTypeEnumFromString;
|
|
71
|
+
const enumTypes = (entityTypes ?? []).map(t => convert(t));
|
|
72
|
+
return mod.discoverColumns(provider, enumTypes);
|
|
73
|
+
}
|
|
74
|
+
// --------------------------------------------------------------------------
|
|
75
|
+
// Export
|
|
76
|
+
// --------------------------------------------------------------------------
|
|
77
|
+
/** Convert a list result to CSV string. */
|
|
78
|
+
async toCSV(result) {
|
|
79
|
+
const mod = await loadLists();
|
|
80
|
+
return mod.listResultToCSV(result);
|
|
81
|
+
}
|
|
18
82
|
}
|
|
19
83
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/namespaces/list.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/namespaces/list.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA4C/D,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,KAAK,UAAU,SAAS;IACtB,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC/B,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAID,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,iFAAiF;AACjF,MAAM,OAAO,aAAa;IAExB,6EAA6E;IAC7E,UAAU;IACV,6EAA6E;IAE7E,sEAAsE;IACtE,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,YAAyB,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,mBAAmB;QACvB,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,iBAA8B,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAC7E,YAAY;IACZ,6EAA6E;IAE7E;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,CAAC,QAAiB,EAAE,UAA0B,EAAE,OAAgB;QAC3E,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,gFAAgF;QAChF,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAA4B,CAAC;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,qBAA8C,CAAC;QACpE,MAAM,UAAU,GAAG;YACjB,GAAG,UAAU;YACb,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC;QACF,OAAQ,GAAG,CAAC,WAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;IAChF,CAAC;IAED,6EAA6E;IAC7E,mBAAmB;IACnB,6EAA6E;IAE7E;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,QAAiB,EAAE,WAAsB;QAC7D,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAA4B,CAAC;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,qBAA8C,CAAC;QACpE,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAQ,GAAG,CAAC,eAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAC7E,SAAS;IACT,6EAA6E;IAE7E,2CAA2C;IAC3C,KAAK,CAAC,KAAK,CAAC,MAAe;QACzB,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAQ,GAAG,CAAC,eAA0C,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;CACF"}
|
|
@@ -5,6 +5,8 @@ export declare class MutateNamespace {
|
|
|
5
5
|
constructor(backend: BimBackend);
|
|
6
6
|
/** Set a property on an entity */
|
|
7
7
|
setProperty(ref: EntityRef, psetName: string, propName: string, value: string | number | boolean): void;
|
|
8
|
+
/** Set a root IFC attribute on an entity */
|
|
9
|
+
setAttribute(ref: EntityRef, attrName: string, value: string): void;
|
|
8
10
|
/** Delete a property from an entity */
|
|
9
11
|
deleteProperty(ref: EntityRef, psetName: string, propName: string): void;
|
|
10
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,mDAAmD;AACnD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC,kCAAkC;IAClC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAIvG,uCAAuC;IACvC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxE;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAS1C,qCAAqC;IACrC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9B,4CAA4C;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG/B"}
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,mDAAmD;AACnD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC,kCAAkC;IAClC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAIvG,4CAA4C;IAC5C,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAInE,uCAAuC;IACvC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxE;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAS1C,qCAAqC;IACrC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9B,4CAA4C;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG/B"}
|
|
@@ -11,6 +11,10 @@ export class MutateNamespace {
|
|
|
11
11
|
setProperty(ref, psetName, propName, value) {
|
|
12
12
|
this.backend.mutate.setProperty(ref, psetName, propName, value);
|
|
13
13
|
}
|
|
14
|
+
/** Set a root IFC attribute on an entity */
|
|
15
|
+
setAttribute(ref, attrName, value) {
|
|
16
|
+
this.backend.mutate.setAttribute(ref, attrName, value);
|
|
17
|
+
}
|
|
14
18
|
/** Delete a property from an entity */
|
|
15
19
|
deleteProperty(ref, psetName, propName) {
|
|
16
20
|
this.backend.mutate.deleteProperty(ref, psetName, propName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,mDAAmD;AACnD,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C,kCAAkC;IAClC,WAAW,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAgC;QAC9F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,uCAAuC;IACvC,cAAc,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAa,EAAE,EAAc;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/namespaces/mutate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,mDAAmD;AACnD,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C,kCAAkC;IAClC,WAAW,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAgC;QAC9F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,4CAA4C;IAC5C,YAAY,CAAC,GAAc,EAAE,QAAgB,EAAE,KAAa;QAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,uCAAuC;IACvC,cAAc,CAAC,GAAc,EAAE,QAAgB,EAAE,QAAgB;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAa,EAAE,EAAc;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BimBackend, EntityRef, EntityData, PropertySetData, QuantitySetData, ComparisonOp } from '../types.js';
|
|
1
|
+
import type { BimBackend, EntityRef, EntityData, EntityAttributeData, PropertySetData, QuantitySetData, ClassificationData, MaterialData, TypePropertiesData, DocumentData, EntityRelationshipsData, ComparisonOp } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Chainable query builder — collects filters, executes on terminal call.
|
|
4
4
|
*
|
|
@@ -37,11 +37,23 @@ export declare class QueryNamespace {
|
|
|
37
37
|
/** Get a single entity by ref */
|
|
38
38
|
entity(ref: EntityRef): EntityData | null;
|
|
39
39
|
/** Get all property sets for an entity */
|
|
40
|
+
attributes(ref: EntityRef): EntityAttributeData[];
|
|
41
|
+
/** Get all property sets for an entity */
|
|
40
42
|
properties(ref: EntityRef): PropertySetData[];
|
|
41
43
|
/** Get a single property value */
|
|
42
44
|
property(ref: EntityRef, psetName: string, propName: string): string | number | boolean | null;
|
|
43
45
|
/** Get all quantity sets for an entity */
|
|
44
46
|
quantities(ref: EntityRef): QuantitySetData[];
|
|
47
|
+
/** Get all classifications for an entity */
|
|
48
|
+
classifications(ref: EntityRef): ClassificationData[];
|
|
49
|
+
/** Get material assignment for an entity */
|
|
50
|
+
materials(ref: EntityRef): MaterialData | null;
|
|
51
|
+
/** Get type-level property sets for an entity */
|
|
52
|
+
typeProperties(ref: EntityRef): TypePropertiesData | null;
|
|
53
|
+
/** Get linked documents for an entity */
|
|
54
|
+
documents(ref: EntityRef): DocumentData[];
|
|
55
|
+
/** Get structural relationship summary for an entity */
|
|
56
|
+
relationships(ref: EntityRef): EntityRelationshipsData;
|
|
45
57
|
/** Get a single quantity value */
|
|
46
58
|
quantity(ref: EntityRef, qsetName: string, quantityName: string): number | null;
|
|
47
59
|
/** Get related entities by IFC relationship type */
|
|
@@ -56,5 +68,9 @@ export declare class QueryNamespace {
|
|
|
56
68
|
decomposes(ref: EntityRef): EntityData[];
|
|
57
69
|
/** Navigate up to the building storey */
|
|
58
70
|
storey(ref: EntityRef): EntityData | null;
|
|
71
|
+
/** Walk the spatial/aggregation chain from an entity up to the root */
|
|
72
|
+
path(ref: EntityRef): EntityData[];
|
|
73
|
+
/** Get all storeys across the current model scope */
|
|
74
|
+
storeys(): EntityData[];
|
|
59
75
|
}
|
|
60
76
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/namespaces/query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/namespaces/query.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces/query.js
CHANGED
|
@@ -81,6 +81,10 @@ export class QueryNamespace {
|
|
|
81
81
|
return this.backend.query.entityData(ref);
|
|
82
82
|
}
|
|
83
83
|
/** Get all property sets for an entity */
|
|
84
|
+
attributes(ref) {
|
|
85
|
+
return this.backend.query.attributes(ref);
|
|
86
|
+
}
|
|
87
|
+
/** Get all property sets for an entity */
|
|
84
88
|
properties(ref) {
|
|
85
89
|
return this.backend.query.properties(ref);
|
|
86
90
|
}
|
|
@@ -97,6 +101,26 @@ export class QueryNamespace {
|
|
|
97
101
|
quantities(ref) {
|
|
98
102
|
return this.backend.query.quantities(ref);
|
|
99
103
|
}
|
|
104
|
+
/** Get all classifications for an entity */
|
|
105
|
+
classifications(ref) {
|
|
106
|
+
return this.backend.query.classifications(ref);
|
|
107
|
+
}
|
|
108
|
+
/** Get material assignment for an entity */
|
|
109
|
+
materials(ref) {
|
|
110
|
+
return this.backend.query.materials(ref);
|
|
111
|
+
}
|
|
112
|
+
/** Get type-level property sets for an entity */
|
|
113
|
+
typeProperties(ref) {
|
|
114
|
+
return this.backend.query.typeProperties(ref);
|
|
115
|
+
}
|
|
116
|
+
/** Get linked documents for an entity */
|
|
117
|
+
documents(ref) {
|
|
118
|
+
return this.backend.query.documents(ref);
|
|
119
|
+
}
|
|
120
|
+
/** Get structural relationship summary for an entity */
|
|
121
|
+
relationships(ref) {
|
|
122
|
+
return this.backend.query.relationships(ref);
|
|
123
|
+
}
|
|
100
124
|
/** Get a single quantity value */
|
|
101
125
|
quantity(ref, qsetName, quantityName) {
|
|
102
126
|
const qsets = this.quantities(ref);
|
|
@@ -154,5 +178,24 @@ export class QueryNamespace {
|
|
|
154
178
|
}
|
|
155
179
|
return null;
|
|
156
180
|
}
|
|
181
|
+
/** Walk the spatial/aggregation chain from an entity up to the root */
|
|
182
|
+
path(ref) {
|
|
183
|
+
const result = [];
|
|
184
|
+
let current = this.entity(ref);
|
|
185
|
+
const visited = new Set();
|
|
186
|
+
while (current) {
|
|
187
|
+
const key = `${current.ref.modelId}:${current.ref.expressId}`;
|
|
188
|
+
if (visited.has(key))
|
|
189
|
+
break;
|
|
190
|
+
visited.add(key);
|
|
191
|
+
result.push(current);
|
|
192
|
+
current = this.containedIn(current.ref) ?? this.decomposedBy(current.ref);
|
|
193
|
+
}
|
|
194
|
+
return result.reverse();
|
|
195
|
+
}
|
|
196
|
+
/** Get all storeys across the current model scope */
|
|
197
|
+
storeys() {
|
|
198
|
+
return this.create().byType('IfcBuildingStorey').toArray();
|
|
199
|
+
}
|
|
157
200
|
}
|
|
158
201
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/namespaces/query.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/namespaces/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export interface SandboxPermissions {
|
|
2
|
+
/** Allow query operations (default: true) */
|
|
3
|
+
query?: boolean;
|
|
4
|
+
/** Allow mutation operations (default: false) */
|
|
5
|
+
mutate?: boolean;
|
|
6
|
+
/** Allow viewer operations (default: true) */
|
|
7
|
+
viewer?: boolean;
|
|
8
|
+
/** Allow export operations (default: true) */
|
|
9
|
+
export?: boolean;
|
|
10
|
+
/** Allow model operations (default: true) */
|
|
11
|
+
model?: boolean;
|
|
12
|
+
/** Allow lens operations (default: true) */
|
|
13
|
+
lens?: boolean;
|
|
14
|
+
/** Allow uploaded file access (default: true) */
|
|
15
|
+
files?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface SandboxLimits {
|
|
18
|
+
/** Maximum execution time in ms (default: 30000) */
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
/** Maximum heap memory in bytes (default: 64MB) */
|
|
21
|
+
memoryBytes?: number;
|
|
22
|
+
/** Maximum stack size in bytes (default: 512KB) */
|
|
23
|
+
maxStackBytes?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface SandboxConfig {
|
|
26
|
+
/** Permissions for the sandboxed script */
|
|
27
|
+
permissions?: SandboxPermissions;
|
|
28
|
+
/** Resource limits */
|
|
29
|
+
limits?: SandboxLimits;
|
|
30
|
+
}
|
|
31
|
+
export interface ScriptResult {
|
|
32
|
+
/** Return value of the script */
|
|
33
|
+
value: unknown;
|
|
34
|
+
/** Captured console.log output */
|
|
35
|
+
logs: Array<{
|
|
36
|
+
level: 'log' | 'warn' | 'error' | 'info';
|
|
37
|
+
args: unknown[];
|
|
38
|
+
timestamp: number;
|
|
39
|
+
}>;
|
|
40
|
+
/** Execution time in ms */
|
|
41
|
+
durationMs: number;
|
|
42
|
+
}
|
|
43
|
+
/** bim.sandbox — Secure script execution in QuickJS-WASM */
|
|
44
|
+
export declare class SandboxNamespace {
|
|
45
|
+
private bimContext;
|
|
46
|
+
private activeSandbox;
|
|
47
|
+
private lifecycleQueue;
|
|
48
|
+
constructor(bimContext?: unknown);
|
|
49
|
+
private assertSupported;
|
|
50
|
+
private runLifecycleOperation;
|
|
51
|
+
private createSandboxInstance;
|
|
52
|
+
private disposeActiveSandbox;
|
|
53
|
+
/**
|
|
54
|
+
* Create a sandboxed execution environment.
|
|
55
|
+
*
|
|
56
|
+
* The sandbox runs scripts in an isolated QuickJS WASM instance with only
|
|
57
|
+
* the bim.* API exposed. No DOM, fetch, or network access.
|
|
58
|
+
*
|
|
59
|
+
* @param config - Permissions and resource limits
|
|
60
|
+
* @returns The sandbox instance (call dispose() when done)
|
|
61
|
+
*/
|
|
62
|
+
create(config?: SandboxConfig): Promise<unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Evaluate a script in the active sandbox.
|
|
65
|
+
* Creates a sandbox if none exists yet.
|
|
66
|
+
*/
|
|
67
|
+
eval(script: string, config?: SandboxConfig): Promise<ScriptResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Evaluate TypeScript code (transpiles to JS first, then runs).
|
|
70
|
+
*/
|
|
71
|
+
evalTypeScript(tsCode: string, config?: SandboxConfig): Promise<ScriptResult>;
|
|
72
|
+
/** Dispose the active sandbox and free WASM resources. */
|
|
73
|
+
dispose(): Promise<void>;
|
|
74
|
+
/** Transpile TypeScript to JavaScript without executing it. */
|
|
75
|
+
transpile(tsCode: string): Promise<string>;
|
|
76
|
+
/** Get default permissions. */
|
|
77
|
+
getDefaultPermissions(): Promise<SandboxPermissions>;
|
|
78
|
+
/** Get default resource limits. */
|
|
79
|
+
getDefaultLimits(): Promise<SandboxLimits>;
|
|
80
|
+
/** Get the bim.* API schema exposed to sandboxed scripts. */
|
|
81
|
+
getApiSchema(): Promise<unknown>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/namespaces/sandbox.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,sBAAsB;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD,4DAA4D;AAC5D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,cAAc,CAAoC;gBAE9C,UAAU,CAAC,EAAE,OAAO;IAIhC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;YAMf,qBAAqB;IAKnC,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAUtD;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAWzE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAOnF,0DAA0D;IACpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,+DAA+D;IACzD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAShD,+BAA+B;IACzB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAK1D,mCAAmC;IAC7B,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAKhD,6DAA6D;IACvD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAIvC"}
|