@ifc-lite/sdk 1.14.1 → 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.
Files changed (52) hide show
  1. package/dist/context.d.ts +41 -1
  2. package/dist/context.d.ts.map +1 -1
  3. package/dist/context.js +75 -0
  4. package/dist/context.js.map +1 -1
  5. package/dist/index.d.ts +11 -5
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +11 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/namespaces/bcf.d.ts +108 -10
  10. package/dist/namespaces/bcf.d.ts.map +1 -1
  11. package/dist/namespaces/bcf.js +184 -11
  12. package/dist/namespaces/bcf.js.map +1 -1
  13. package/dist/namespaces/bsdd.d.ts +140 -0
  14. package/dist/namespaces/bsdd.d.ts.map +1 -0
  15. package/dist/namespaces/bsdd.js +278 -0
  16. package/dist/namespaces/bsdd.js.map +1 -0
  17. package/dist/namespaces/drawing.d.ts +118 -6
  18. package/dist/namespaces/drawing.d.ts.map +1 -1
  19. package/dist/namespaces/drawing.js +181 -10
  20. package/dist/namespaces/drawing.js.map +1 -1
  21. package/dist/namespaces/files.d.ts +15 -0
  22. package/dist/namespaces/files.d.ts.map +1 -0
  23. package/dist/namespaces/files.js +27 -0
  24. package/dist/namespaces/files.js.map +1 -0
  25. package/dist/namespaces/ids.d.ts +64 -6
  26. package/dist/namespaces/ids.d.ts.map +1 -1
  27. package/dist/namespaces/ids.js +113 -4
  28. package/dist/namespaces/ids.js.map +1 -1
  29. package/dist/namespaces/list.d.ts +49 -4
  30. package/dist/namespaces/list.d.ts.map +1 -1
  31. package/dist/namespaces/list.js +69 -5
  32. package/dist/namespaces/list.js.map +1 -1
  33. package/dist/namespaces/mutate.d.ts +2 -0
  34. package/dist/namespaces/mutate.d.ts.map +1 -1
  35. package/dist/namespaces/mutate.js +4 -0
  36. package/dist/namespaces/mutate.js.map +1 -1
  37. package/dist/namespaces/query.d.ts +17 -1
  38. package/dist/namespaces/query.d.ts.map +1 -1
  39. package/dist/namespaces/query.js +43 -0
  40. package/dist/namespaces/query.js.map +1 -1
  41. package/dist/namespaces/sandbox.d.ts +83 -0
  42. package/dist/namespaces/sandbox.d.ts.map +1 -0
  43. package/dist/namespaces/sandbox.js +141 -0
  44. package/dist/namespaces/sandbox.js.map +1 -0
  45. package/dist/transport/remote-backend.d.ts +2 -1
  46. package/dist/transport/remote-backend.d.ts.map +1 -1
  47. package/dist/transport/remote-backend.js +1 -0
  48. package/dist/transport/remote-backend.js.map +1 -1
  49. package/dist/types.d.ts +97 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/types.js.map +1 -1
  52. package/package.json +14 -14
@@ -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
- // Dynamic import helper
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
- /** bim.ids — IDS (Information Delivery Specification) validation */
11
+ // ============================================================================
12
+ // IDSNamespace
13
+ // ============================================================================
14
+ /** bim.ids — IDS (Information Delivery Specification) parsing, validation, and reporting */
10
15
  export class IDSNamespace {
11
- /** Parse an IDS XML document. */
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
- /** Summarize a validation report. */
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;AAkB/D,wBAAwB;AACxB,KAAK,UAAU,OAAO;IACpB,MAAM,IAAI,GAAG,eAAe,CAAC;IAC7B,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAED,oEAAoE;AACpE,MAAM,OAAO,YAAY;IACvB,iCAAiC;IACjC,KAAK,CAAC,KAAK,CAAC,UAAkB;QAC5B,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,QAAqC,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,qCAAqC;IACrC,SAAS,CAAC,MAAsF;QAC9F,IAAI,UAAU,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;QACrD,IAAI,aAAa,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;QAE9D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC/C,UAAU,EAAE,CAAC;YACb,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,aAAa,EAAE,CAAC;gBAChB,IAAI,MAAM,CAAC,MAAM;oBAAE,cAAc,EAAE,CAAC;qBAC/B,CAAC;oBAAC,cAAc,EAAE,CAAC;oBAAC,UAAU,GAAG,KAAK,CAAC;gBAAC,CAAC;YAChD,CAAC;YACD,IAAI,UAAU;gBAAE,WAAW,EAAE,CAAC;;gBACzB,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;IAClK,CAAC;CACF"}
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
- * Wraps @ifc-lite/lists for configurable entity tables with column discovery.
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
- /** bim.list Entity lists and property tables */
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
- * Get available list presets.
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
- getPresets(): Promise<unknown[]>;
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;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,kDAAkD;AAClD,qBAAa,aAAa;IACxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAIvC"}
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"}
@@ -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
- // Dynamic import helper
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
- /** bim.list — Entity lists and property tables */
11
+ // ============================================================================
12
+ // ListNamespace
13
+ // ============================================================================
14
+ /** bim.list — Entity lists, property tables, column discovery, and CSV export */
10
15
  export class ListNamespace {
11
- /**
12
- * Get available list presets.
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;AAe/D,wBAAwB;AACxB,KAAK,UAAU,SAAS;IACtB,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC/B,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAED,kDAAkD;AAClD,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,YAAyB,CAAC;IACvC,CAAC;CACF"}
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,EAGf,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,OAAO,CAAa;gBAEhB,OAAO,EAAE,UAAU;IAI/B,sCAAsC;IACtC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5B,kCAAkC;IAClC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAKhC,+BAA+B;IAC/B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAW3G,yBAAyB;IACzB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,2BAA2B;IAC3B,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAOvB,0CAA0C;IAC1C,OAAO,IAAI,UAAU,EAAE;IAIvB,6CAA6C;IAC7C,KAAK,IAAI,UAAU,GAAG,IAAI;IAQ1B,+BAA+B;IAC/B,KAAK,IAAI,MAAM;IAIf,6DAA6D;IAC7D,IAAI,IAAI,SAAS,EAAE;CAGpB;AAED,gEAAgE;AAChE,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC,8BAA8B;IAC9B,MAAM,IAAI,YAAY;IAItB,iCAAiC;IACjC,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAIzC,0CAA0C;IAC1C,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe,EAAE;IAI7C,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAQ9F,0CAA0C;IAC1C,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe,EAAE;IAI7C,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ/E,oDAAoD;IACpD,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,EAAE;IAUxF,8FAA8F;IAC9F,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAM9C,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE;IAItC,2EAA2E;IAC3E,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAM/C,qEAAqE;IACrE,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE;IAIxC,yCAAyC;IACzC,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;CAY1C"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/namespaces/query.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
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"}