@ifc-lite/data 1.15.1 → 1.17.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 +58 -28
- package/dist/entity-table.d.ts +53 -0
- package/dist/entity-table.d.ts.map +1 -1
- package/dist/entity-table.js +147 -93
- package/dist/entity-table.js.map +1 -1
- package/dist/ifc-schema/generated/attributes.d.ts +10 -0
- package/dist/ifc-schema/generated/attributes.d.ts.map +1 -0
- package/dist/ifc-schema/generated/attributes.js +2775 -0
- package/dist/ifc-schema/generated/attributes.js.map +1 -0
- package/dist/ifc-schema/generated/data-types.d.ts +8 -0
- package/dist/ifc-schema/generated/data-types.d.ts.map +1 -0
- package/dist/ifc-schema/generated/data-types.js +396 -0
- package/dist/ifc-schema/generated/data-types.js.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc2x3.d.ts +8 -0
- package/dist/ifc-schema/generated/entities-ifc2x3.d.ts.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc2x3.js +777 -0
- package/dist/ifc-schema/generated/entities-ifc2x3.js.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc4.d.ts +8 -0
- package/dist/ifc-schema/generated/entities-ifc4.d.ts.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc4.js +938 -0
- package/dist/ifc-schema/generated/entities-ifc4.js.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc4x3.d.ts +8 -0
- package/dist/ifc-schema/generated/entities-ifc4x3.d.ts.map +1 -0
- package/dist/ifc-schema/generated/entities-ifc4x3.js +1014 -0
- package/dist/ifc-schema/generated/entities-ifc4x3.js.map +1 -0
- package/dist/ifc-schema/generated/partof-relations.d.ts +10 -0
- package/dist/ifc-schema/generated/partof-relations.d.ts.map +1 -0
- package/dist/ifc-schema/generated/partof-relations.js +28 -0
- package/dist/ifc-schema/generated/partof-relations.js.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc2x3.d.ts +8 -0
- package/dist/ifc-schema/generated/psets-ifc2x3.d.ts.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc2x3.js +3416 -0
- package/dist/ifc-schema/generated/psets-ifc2x3.js.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc4.d.ts +8 -0
- package/dist/ifc-schema/generated/psets-ifc4.d.ts.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc4.js +4510 -0
- package/dist/ifc-schema/generated/psets-ifc4.js.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc4x3.d.ts +8 -0
- package/dist/ifc-schema/generated/psets-ifc4x3.d.ts.map +1 -0
- package/dist/ifc-schema/generated/psets-ifc4x3.js +8554 -0
- package/dist/ifc-schema/generated/psets-ifc4x3.js.map +1 -0
- package/dist/ifc-schema/index.d.ts +61 -0
- package/dist/ifc-schema/index.d.ts.map +1 -0
- package/dist/ifc-schema/index.js +212 -0
- package/dist/ifc-schema/index.js.map +1 -0
- package/dist/ifc-schema/types.d.ts +108 -0
- package/dist/ifc-schema/types.d.ts.map +1 -0
- package/dist/ifc-schema/types.js +5 -0
- package/dist/ifc-schema/types.js.map +1 -0
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/property-table.d.ts +22 -0
- package/dist/property-table.d.ts.map +1 -1
- package/dist/property-table.js +89 -62
- package/dist/property-table.js.map +1 -1
- package/dist/quantity-table.d.ts +18 -0
- package/dist/quantity-table.d.ts.map +1 -1
- package/dist/quantity-table.js +80 -66
- package/dist/quantity-table.js.map +1 -1
- package/dist/relationship-graph.d.ts +53 -6
- package/dist/relationship-graph.d.ts.map +1 -1
- package/dist/relationship-graph.js +149 -113
- package/dist/relationship-graph.js.map +1 -1
- package/dist/string-table.d.ts +8 -0
- package/dist/string-table.d.ts.map +1 -1
- package/dist/string-table.js +20 -0
- package/dist/string-table.js.map +1 -1
- package/dist/utf8-decode.d.ts +24 -0
- package/dist/utf8-decode.d.ts.map +1 -0
- package/dist/utf8-decode.js +103 -0
- package/dist/utf8-decode.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ifc-lite/data
|
|
2
2
|
|
|
3
|
-
Columnar data structures for IFClite.
|
|
3
|
+
Columnar data structures for IFClite. TypedArray-backed storage for entities, properties, quantities, and relationships — the layout that lets `@ifc-lite/parser` hold a 200 MB IFC file in ~30 MB of RAM and lets `@ifc-lite/query` filter it in milliseconds.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -8,52 +8,82 @@ Columnar data structures for IFClite. Provides TypedArray-based storage for IFC
|
|
|
8
8
|
npm install @ifc-lite/data
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## When to use this directly
|
|
12
|
+
|
|
13
|
+
Most users get these structures for free as the output of `@ifc-lite/parser`'s `parseColumnar()`. Use this package directly when you're:
|
|
14
|
+
|
|
15
|
+
- Building a custom data source (e.g. server-side parquet → IFClite tables)
|
|
16
|
+
- Writing a tool that consumes the columnar format outside the parser pipeline
|
|
17
|
+
- Looking up EPSG codes (the geo-reference index is shipped here)
|
|
18
|
+
|
|
19
|
+
## Build an entity table
|
|
12
20
|
|
|
13
21
|
```typescript
|
|
14
|
-
import {
|
|
15
|
-
import type { EntityTable, RelationshipGraph } from '@ifc-lite/data';
|
|
22
|
+
import { EntityTableBuilder, StringTableBuilder } from '@ifc-lite/data';
|
|
16
23
|
|
|
17
|
-
// String interning for efficient storage
|
|
18
24
|
const strings = new StringTableBuilder();
|
|
19
|
-
const
|
|
25
|
+
const entities = new EntityTableBuilder();
|
|
26
|
+
|
|
27
|
+
const wallTypeId = strings.intern('IFCWALL');
|
|
28
|
+
const wallNameId = strings.intern('Wall A');
|
|
29
|
+
const wallGuidId = strings.intern('1abc2def3...');
|
|
30
|
+
|
|
31
|
+
entities.add({
|
|
32
|
+
expressId: 42,
|
|
33
|
+
typeNameId: wallTypeId,
|
|
34
|
+
nameId: wallNameId,
|
|
35
|
+
globalIdId: wallGuidId,
|
|
36
|
+
// ... other columns
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const table = entities.build();
|
|
40
|
+
const stringTable = strings.build();
|
|
41
|
+
|
|
42
|
+
console.log(table.count); // 1
|
|
43
|
+
console.log(stringTable.get(table.name[0])); // 'Wall A'
|
|
44
|
+
console.log(table.getTypeName(42)); // 'IFCWALL'
|
|
45
|
+
```
|
|
20
46
|
|
|
21
|
-
|
|
22
|
-
const entityBuilder = new EntityTableBuilder();
|
|
23
|
-
// ... add entities ...
|
|
24
|
-
const entities: EntityTable = entityBuilder.build();
|
|
47
|
+
## Relationship graph
|
|
25
48
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
Edges are stored CSR-style (compressed sparse row) — fast to traverse, compact in memory.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
import { RelationshipGraphBuilder, RelationshipType } from '@ifc-lite/data';
|
|
53
|
+
|
|
54
|
+
const builder = new RelationshipGraphBuilder();
|
|
55
|
+
|
|
56
|
+
// Storey 100 contains walls 42, 43, 44
|
|
57
|
+
builder.addEdge(100, 42, RelationshipType.CONTAINS);
|
|
58
|
+
builder.addEdge(100, 43, RelationshipType.CONTAINS);
|
|
59
|
+
builder.addEdge(100, 44, RelationshipType.CONTAINS);
|
|
31
60
|
|
|
32
|
-
|
|
61
|
+
const graph = builder.build();
|
|
33
62
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- Local EPSG CRS index with exact-code lookup and text search
|
|
63
|
+
const contained = graph.outgoing(100, RelationshipType.CONTAINS);
|
|
64
|
+
console.log([...contained]); // [42, 43, 44]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## EPSG lookup
|
|
40
68
|
|
|
41
|
-
|
|
69
|
+
The full EPSG database ships as a pre-built index — geo-referenced models can resolve coordinate systems offline at runtime.
|
|
42
70
|
|
|
43
71
|
```typescript
|
|
44
72
|
import { lookupEpsgByCode, searchEpsgIndex } from '@ifc-lite/data';
|
|
45
73
|
|
|
46
74
|
const lv95 = await lookupEpsgByCode(2056);
|
|
47
|
-
|
|
75
|
+
// { code: 2056, name: 'CH1903+ / LV95', kind: 'projected', ... }
|
|
76
|
+
|
|
77
|
+
const matches = await searchEpsgIndex('web mercator');
|
|
78
|
+
// → top text-search results; ordered by relevance
|
|
79
|
+
console.log(matches.map(m => `${m.code} ${m.name}`));
|
|
48
80
|
```
|
|
49
81
|
|
|
50
|
-
The
|
|
51
|
-
normal builds stay offline and fast. Refresh it explicitly with
|
|
52
|
-
`pnpm generate:epsg-index`.
|
|
82
|
+
The index is generated at build time and committed to the repo, so normal builds stay offline. Refresh it with `pnpm generate:epsg-index`.
|
|
53
83
|
|
|
54
84
|
## API
|
|
55
85
|
|
|
56
|
-
See the [API Reference](
|
|
86
|
+
See the [API Reference](https://louistrue.github.io/ifc-lite/api/typescript/#ifc-litedata).
|
|
57
87
|
|
|
58
88
|
## License
|
|
59
89
|
|
package/dist/entity-table.d.ts
CHANGED
|
@@ -16,6 +16,13 @@ export interface EntityTable {
|
|
|
16
16
|
containedInStorey: Int32Array;
|
|
17
17
|
definedByType: Int32Array;
|
|
18
18
|
geometryIndex: Int32Array;
|
|
19
|
+
/**
|
|
20
|
+
* Interned-string indices for raw IFC type names (used by `getTypeName`
|
|
21
|
+
* fallback). Optional because older constructors (server-data hydration,
|
|
22
|
+
* legacy cache reads) didn't track it; absent means the enum-only name
|
|
23
|
+
* is the only display string available.
|
|
24
|
+
*/
|
|
25
|
+
rawTypeName?: Uint32Array;
|
|
19
26
|
typeRanges: Map<IfcTypeEnum, {
|
|
20
27
|
start: number;
|
|
21
28
|
end: number;
|
|
@@ -27,6 +34,8 @@ export interface EntityTable {
|
|
|
27
34
|
getTypeName(expressId: number): string;
|
|
28
35
|
hasGeometry(expressId: number): boolean;
|
|
29
36
|
getByType(type: IfcTypeEnum): number[];
|
|
37
|
+
/** Get IfcTypeEnum for an expressId using internal index. Returns IfcTypeEnum.Unknown if not found. */
|
|
38
|
+
getTypeEnum(expressId: number): IfcTypeEnum;
|
|
30
39
|
/** Get expressId by IFC GlobalId string (22-char GUID). Returns -1 if not found. */
|
|
31
40
|
getExpressIdByGlobalId(globalId: string): number;
|
|
32
41
|
/** Get all GlobalId → expressId mappings (for BCF integration) */
|
|
@@ -53,4 +62,48 @@ export declare class EntityTableBuilder {
|
|
|
53
62
|
add(expressId: number, type: string, globalId: string, name: string, description: string, objectType: string, hasGeometry?: boolean, isType?: boolean): void;
|
|
54
63
|
build(): EntityTable;
|
|
55
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Plain-data column representation of an `EntityTable`.
|
|
67
|
+
*
|
|
68
|
+
* Holds only typed arrays + a small `typeRanges` map (used for cache
|
|
69
|
+
* serialization). Crucially has no closures, so it can be structured-cloned
|
|
70
|
+
* across worker boundaries with the underlying buffers in the transfer list.
|
|
71
|
+
*
|
|
72
|
+
* `rawTypeName` carries the interned-string index for the raw IFC type so
|
|
73
|
+
* `getTypeName()` can fall back when the type isn't in the generated enum.
|
|
74
|
+
*/
|
|
75
|
+
export interface EntityTableColumns {
|
|
76
|
+
count: number;
|
|
77
|
+
expressId: Uint32Array;
|
|
78
|
+
typeEnum: Uint16Array;
|
|
79
|
+
globalId: Uint32Array;
|
|
80
|
+
name: Uint32Array;
|
|
81
|
+
description: Uint32Array;
|
|
82
|
+
objectType: Uint32Array;
|
|
83
|
+
flags: Uint8Array;
|
|
84
|
+
containedInStorey: Int32Array;
|
|
85
|
+
definedByType: Int32Array;
|
|
86
|
+
geometryIndex: Int32Array;
|
|
87
|
+
rawTypeName?: Uint32Array;
|
|
88
|
+
typeRanges?: Map<IfcTypeEnum, {
|
|
89
|
+
start: number;
|
|
90
|
+
end: number;
|
|
91
|
+
}>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Build a live `EntityTable` (with closures) from raw columnar data and a
|
|
95
|
+
* `StringTable`. Mirrors the closure block previously inlined in
|
|
96
|
+
* `EntityTableBuilder.build()` so worker transports and cache loaders share
|
|
97
|
+
* one source of truth.
|
|
98
|
+
*/
|
|
99
|
+
export declare function entityTableFromColumns(columns: EntityTableColumns, strings: StringTable): EntityTable;
|
|
100
|
+
/**
|
|
101
|
+
* Extract the column buffers (no closures) from an `EntityTable`. Used by
|
|
102
|
+
* the parser worker → main transport path and any other consumer that
|
|
103
|
+
* needs to hand the table to a different realm.
|
|
104
|
+
*
|
|
105
|
+
* Returned typed arrays alias the same `ArrayBuffer`s as the source table
|
|
106
|
+
* — when used in a `postMessage` transfer list those buffers detach.
|
|
107
|
+
*/
|
|
108
|
+
export declare function entityTableToColumns(table: EntityTable): EntityTableColumns;
|
|
56
109
|
//# sourceMappingURL=entity-table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-table.d.ts","sourceRoot":"","sources":["../src/entity-table.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAA2D,MAAM,YAAY,CAAC;AAQlG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAElB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,aAAa,EAAE,UAAU,CAAC;IAE1B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE7D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAEvC,oFAAoF;IACpF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjD,kEAAkE;IAClE,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAc;IAE7B,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,aAAa,EAAE,UAAU,CAAC;IAC1B,yEAAyE;IACzE,WAAW,EAAE,WAAW,CAAC;IAEzB,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,UAAU,CAAuC;gBAE7C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAgBlD,GAAG,CACD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,OAAe,EAC5B,MAAM,GAAE,OAAe,GACtB,IAAI;IA0BP,KAAK,IAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"entity-table.d.ts","sourceRoot":"","sources":["../src/entity-table.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAA2D,MAAM,YAAY,CAAC;AAQlG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAElB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,aAAa,EAAE,UAAU,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE7D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAEvC,uGAAuG;IACvG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAE5C,oFAAoF;IACpF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjD,kEAAkE;IAClE,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAc;IAE7B,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,aAAa,EAAE,UAAU,CAAC;IAC1B,yEAAyE;IACzE,WAAW,EAAE,WAAW,CAAC;IAEzB,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,UAAU,CAAuC;gBAE7C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAgBlD,GAAG,CACD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,OAAe,EAC5B,MAAM,GAAE,OAAe,GACtB,IAAI;IA0BP,KAAK,IAAI,WAAW;CAgCrB;AAID;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,aAAa,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,WAAW,GACnB,WAAW,CAyHb;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAgB3E"}
|
package/dist/entity-table.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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
|
-
import { EntityFlags, IfcTypeEnumFromString, IfcTypeEnumToString } from './types.js';
|
|
4
|
+
import { IfcTypeEnum, EntityFlags, IfcTypeEnumFromString, IfcTypeEnumToString } from './types.js';
|
|
5
5
|
import { IFC_ENTITY_NAMES } from './ifc-entity-names.js';
|
|
6
6
|
/** Convert UPPERCASE IFC type name to PascalCase using the generated schema name map */
|
|
7
7
|
function normalizeIfcUpperCase(upper) {
|
|
@@ -73,101 +73,155 @@ export class EntityTableBuilder {
|
|
|
73
73
|
const count = this.typeCounts.get(type);
|
|
74
74
|
typeRanges.set(type, { start, end: start + count });
|
|
75
75
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
return entityTableFromColumns({
|
|
77
|
+
count: this.count,
|
|
78
|
+
expressId: trim(this.expressId),
|
|
79
|
+
typeEnum: trim(this.typeEnum),
|
|
80
|
+
globalId: trim(this.globalId),
|
|
81
|
+
name: trim(this.name),
|
|
82
|
+
description: trim(this.description),
|
|
83
|
+
objectType: trim(this.objectType),
|
|
84
|
+
flags: trim(this.flags),
|
|
85
|
+
containedInStorey: trim(this.containedInStorey),
|
|
86
|
+
definedByType: trim(this.definedByType),
|
|
87
|
+
geometryIndex: trim(this.geometryIndex),
|
|
88
|
+
rawTypeName: trim(this.rawTypeName),
|
|
89
|
+
typeRanges,
|
|
90
|
+
}, this.strings);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Build a live `EntityTable` (with closures) from raw columnar data and a
|
|
95
|
+
* `StringTable`. Mirrors the closure block previously inlined in
|
|
96
|
+
* `EntityTableBuilder.build()` so worker transports and cache loaders share
|
|
97
|
+
* one source of truth.
|
|
98
|
+
*/
|
|
99
|
+
export function entityTableFromColumns(columns, strings) {
|
|
100
|
+
const { count, expressId, typeEnum, globalId, name, description, objectType, flags, containedInStorey, definedByType, geometryIndex, } = columns;
|
|
101
|
+
// Zero-fill fallback: callers without a raw-type column (cache reads,
|
|
102
|
+
// server hydration) lose the unknown-type display fallback but the
|
|
103
|
+
// closure still returns a correct value for known enums.
|
|
104
|
+
const rawTypeName = columns.rawTypeName ?? new Uint32Array(count);
|
|
105
|
+
// Per-type index built from the live typeEnum column. Cannot be
|
|
106
|
+
// reconstructed from typeRanges alone because IFC files can interleave
|
|
107
|
+
// entities of different types within one stream.
|
|
108
|
+
const typeIndices = new Map();
|
|
109
|
+
for (let i = 0; i < count; i++) {
|
|
110
|
+
const t = typeEnum[i];
|
|
111
|
+
let arr = typeIndices.get(t);
|
|
112
|
+
if (!arr) {
|
|
113
|
+
arr = [];
|
|
114
|
+
typeIndices.set(t, arr);
|
|
87
115
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
const definedByType = trim(this.definedByType);
|
|
97
|
-
const geometryIndex = trim(this.geometryIndex);
|
|
98
|
-
const rawTypeName = trim(this.rawTypeName);
|
|
99
|
-
// PERF: Build idToIndex map for O(1) lookups instead of O(n) linear search
|
|
100
|
-
// This eliminates the linear search in indexOfId() which is called frequently
|
|
101
|
-
const idToIndex = new Map();
|
|
102
|
-
for (let i = 0; i < this.count; i++) {
|
|
103
|
-
idToIndex.set(expressId[i], i);
|
|
116
|
+
arr.push(i);
|
|
117
|
+
}
|
|
118
|
+
const typeRanges = columns.typeRanges ?? new Map();
|
|
119
|
+
if (columns.typeRanges === undefined) {
|
|
120
|
+
// Derive ranges from typeIndices when not supplied. Caller will only
|
|
121
|
+
// hit this branch on transport-rebuild paths; cache loads pass them.
|
|
122
|
+
for (const [type, indices] of typeIndices) {
|
|
123
|
+
typeRanges.set(type, { start: indices[0] ?? 0, end: (indices[indices.length - 1] ?? -1) + 1 });
|
|
104
124
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
125
|
+
}
|
|
126
|
+
// PERF: O(1) expressId → row index lookup instead of linear scan.
|
|
127
|
+
const idToIndex = new Map();
|
|
128
|
+
for (let i = 0; i < count; i++) {
|
|
129
|
+
idToIndex.set(expressId[i], i);
|
|
130
|
+
}
|
|
131
|
+
const indexOfId = (id) => idToIndex.get(id) ?? -1;
|
|
132
|
+
// GlobalId → expressId for BCF integration. Only populated for entities
|
|
133
|
+
// that actually have a non-empty GlobalId string.
|
|
134
|
+
const globalIdToExpressId = new Map();
|
|
135
|
+
for (let i = 0; i < count; i++) {
|
|
136
|
+
const gidString = strings.get(globalId[i]);
|
|
137
|
+
if (gidString) {
|
|
138
|
+
globalIdToExpressId.set(gidString, expressId[i]);
|
|
114
139
|
}
|
|
115
|
-
return {
|
|
116
|
-
count: this.count,
|
|
117
|
-
expressId,
|
|
118
|
-
typeEnum,
|
|
119
|
-
globalId,
|
|
120
|
-
name,
|
|
121
|
-
description,
|
|
122
|
-
objectType,
|
|
123
|
-
flags,
|
|
124
|
-
containedInStorey,
|
|
125
|
-
definedByType,
|
|
126
|
-
geometryIndex,
|
|
127
|
-
typeRanges,
|
|
128
|
-
getGlobalId: (id) => {
|
|
129
|
-
const idx = indexOfId(id);
|
|
130
|
-
return idx >= 0 ? this.strings.get(globalId[idx]) : '';
|
|
131
|
-
},
|
|
132
|
-
getName: (id) => {
|
|
133
|
-
const idx = indexOfId(id);
|
|
134
|
-
return idx >= 0 ? this.strings.get(name[idx]) : '';
|
|
135
|
-
},
|
|
136
|
-
getDescription: (id) => {
|
|
137
|
-
const idx = indexOfId(id);
|
|
138
|
-
return idx >= 0 ? this.strings.get(description[idx]) : '';
|
|
139
|
-
},
|
|
140
|
-
getObjectType: (id) => {
|
|
141
|
-
const idx = indexOfId(id);
|
|
142
|
-
return idx >= 0 ? this.strings.get(objectType[idx]) : '';
|
|
143
|
-
},
|
|
144
|
-
getTypeName: (id) => {
|
|
145
|
-
const idx = indexOfId(id);
|
|
146
|
-
if (idx < 0)
|
|
147
|
-
return 'Unknown';
|
|
148
|
-
const enumName = IfcTypeEnumToString(typeEnum[idx]);
|
|
149
|
-
if (enumName !== 'Unknown')
|
|
150
|
-
return enumName;
|
|
151
|
-
// Fallback: use the raw type name for types not in the enum
|
|
152
|
-
return this.strings.get(rawTypeName[idx]) || 'Unknown';
|
|
153
|
-
},
|
|
154
|
-
hasGeometry: (id) => {
|
|
155
|
-
const idx = indexOfId(id);
|
|
156
|
-
return idx >= 0 ? (flags[idx] & EntityFlags.HAS_GEOMETRY) !== 0 : false;
|
|
157
|
-
},
|
|
158
|
-
getByType: (type) => {
|
|
159
|
-
const indices = typeIndices.get(type);
|
|
160
|
-
if (!indices)
|
|
161
|
-
return [];
|
|
162
|
-
const ids = new Array(indices.length);
|
|
163
|
-
for (let i = 0; i < indices.length; i++) {
|
|
164
|
-
ids[i] = expressId[indices[i]];
|
|
165
|
-
}
|
|
166
|
-
return ids;
|
|
167
|
-
},
|
|
168
|
-
getExpressIdByGlobalId: (gid) => globalIdToExpressId.get(gid) ?? -1,
|
|
169
|
-
getGlobalIdMap: () => new Map(globalIdToExpressId), // Defensive copy
|
|
170
|
-
};
|
|
171
140
|
}
|
|
141
|
+
return {
|
|
142
|
+
count,
|
|
143
|
+
expressId,
|
|
144
|
+
typeEnum,
|
|
145
|
+
globalId,
|
|
146
|
+
name,
|
|
147
|
+
description,
|
|
148
|
+
objectType,
|
|
149
|
+
flags,
|
|
150
|
+
containedInStorey,
|
|
151
|
+
definedByType,
|
|
152
|
+
geometryIndex,
|
|
153
|
+
rawTypeName,
|
|
154
|
+
typeRanges,
|
|
155
|
+
getGlobalId: (id) => {
|
|
156
|
+
const idx = indexOfId(id);
|
|
157
|
+
return idx >= 0 ? strings.get(globalId[idx]) : '';
|
|
158
|
+
},
|
|
159
|
+
getName: (id) => {
|
|
160
|
+
const idx = indexOfId(id);
|
|
161
|
+
return idx >= 0 ? strings.get(name[idx]) : '';
|
|
162
|
+
},
|
|
163
|
+
getDescription: (id) => {
|
|
164
|
+
const idx = indexOfId(id);
|
|
165
|
+
return idx >= 0 ? strings.get(description[idx]) : '';
|
|
166
|
+
},
|
|
167
|
+
getObjectType: (id) => {
|
|
168
|
+
const idx = indexOfId(id);
|
|
169
|
+
return idx >= 0 ? strings.get(objectType[idx]) : '';
|
|
170
|
+
},
|
|
171
|
+
getTypeName: (id) => {
|
|
172
|
+
const idx = indexOfId(id);
|
|
173
|
+
if (idx < 0)
|
|
174
|
+
return 'Unknown';
|
|
175
|
+
const enumName = IfcTypeEnumToString(typeEnum[idx]);
|
|
176
|
+
if (enumName !== 'Unknown')
|
|
177
|
+
return enumName;
|
|
178
|
+
return strings.get(rawTypeName[idx]) || 'Unknown';
|
|
179
|
+
},
|
|
180
|
+
hasGeometry: (id) => {
|
|
181
|
+
const idx = indexOfId(id);
|
|
182
|
+
return idx >= 0 ? (flags[idx] & EntityFlags.HAS_GEOMETRY) !== 0 : false;
|
|
183
|
+
},
|
|
184
|
+
getByType: (type) => {
|
|
185
|
+
const indices = typeIndices.get(type);
|
|
186
|
+
if (!indices)
|
|
187
|
+
return [];
|
|
188
|
+
const ids = new Array(indices.length);
|
|
189
|
+
for (let i = 0; i < indices.length; i++) {
|
|
190
|
+
ids[i] = expressId[indices[i]];
|
|
191
|
+
}
|
|
192
|
+
return ids;
|
|
193
|
+
},
|
|
194
|
+
getTypeEnum: (id) => {
|
|
195
|
+
const idx = indexOfId(id);
|
|
196
|
+
return idx >= 0 ? typeEnum[idx] : IfcTypeEnum.Unknown;
|
|
197
|
+
},
|
|
198
|
+
getExpressIdByGlobalId: (gid) => globalIdToExpressId.get(gid) ?? -1,
|
|
199
|
+
getGlobalIdMap: () => new Map(globalIdToExpressId),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Extract the column buffers (no closures) from an `EntityTable`. Used by
|
|
204
|
+
* the parser worker → main transport path and any other consumer that
|
|
205
|
+
* needs to hand the table to a different realm.
|
|
206
|
+
*
|
|
207
|
+
* Returned typed arrays alias the same `ArrayBuffer`s as the source table
|
|
208
|
+
* — when used in a `postMessage` transfer list those buffers detach.
|
|
209
|
+
*/
|
|
210
|
+
export function entityTableToColumns(table) {
|
|
211
|
+
return {
|
|
212
|
+
count: table.count,
|
|
213
|
+
expressId: table.expressId,
|
|
214
|
+
typeEnum: table.typeEnum,
|
|
215
|
+
globalId: table.globalId,
|
|
216
|
+
name: table.name,
|
|
217
|
+
description: table.description,
|
|
218
|
+
objectType: table.objectType,
|
|
219
|
+
flags: table.flags,
|
|
220
|
+
containedInStorey: table.containedInStorey,
|
|
221
|
+
definedByType: table.definedByType,
|
|
222
|
+
geometryIndex: table.geometryIndex,
|
|
223
|
+
rawTypeName: table.rawTypeName ?? new Uint32Array(table.count),
|
|
224
|
+
typeRanges: table.typeRanges,
|
|
225
|
+
};
|
|
172
226
|
}
|
|
173
227
|
//# sourceMappingURL=entity-table.js.map
|
package/dist/entity-table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-table.js","sourceRoot":"","sources":["../src/entity-table.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAQ/D,OAAO,
|
|
1
|
+
{"version":3,"file":"entity-table.js","sourceRoot":"","sources":["../src/entity-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated from `scripts/upstream/SchemaInfo.*.g.cs` (buildingSMART/
|
|
3
|
+
* IDS-Audit-tool, MIT). Do not edit by hand — regenerate via
|
|
4
|
+
* pnpm --filter @ifc-lite/data run generate:ifc-schema
|
|
5
|
+
*/
|
|
6
|
+
import type { IfcAttributeInfo } from '../types.js';
|
|
7
|
+
export declare const ATTRIBUTES_IFC2X3: readonly IfcAttributeInfo[];
|
|
8
|
+
export declare const ATTRIBUTES_IFC4: readonly IfcAttributeInfo[];
|
|
9
|
+
export declare const ATTRIBUTES_IFC4X3: readonly IfcAttributeInfo[];
|
|
10
|
+
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/ifc-schema/generated/attributes.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EA27BxD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,gBAAgB,EAw3BtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EA65BxD,CAAC"}
|