@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.
Files changed (74) hide show
  1. package/README.md +58 -28
  2. package/dist/entity-table.d.ts +53 -0
  3. package/dist/entity-table.d.ts.map +1 -1
  4. package/dist/entity-table.js +147 -93
  5. package/dist/entity-table.js.map +1 -1
  6. package/dist/ifc-schema/generated/attributes.d.ts +10 -0
  7. package/dist/ifc-schema/generated/attributes.d.ts.map +1 -0
  8. package/dist/ifc-schema/generated/attributes.js +2775 -0
  9. package/dist/ifc-schema/generated/attributes.js.map +1 -0
  10. package/dist/ifc-schema/generated/data-types.d.ts +8 -0
  11. package/dist/ifc-schema/generated/data-types.d.ts.map +1 -0
  12. package/dist/ifc-schema/generated/data-types.js +396 -0
  13. package/dist/ifc-schema/generated/data-types.js.map +1 -0
  14. package/dist/ifc-schema/generated/entities-ifc2x3.d.ts +8 -0
  15. package/dist/ifc-schema/generated/entities-ifc2x3.d.ts.map +1 -0
  16. package/dist/ifc-schema/generated/entities-ifc2x3.js +777 -0
  17. package/dist/ifc-schema/generated/entities-ifc2x3.js.map +1 -0
  18. package/dist/ifc-schema/generated/entities-ifc4.d.ts +8 -0
  19. package/dist/ifc-schema/generated/entities-ifc4.d.ts.map +1 -0
  20. package/dist/ifc-schema/generated/entities-ifc4.js +938 -0
  21. package/dist/ifc-schema/generated/entities-ifc4.js.map +1 -0
  22. package/dist/ifc-schema/generated/entities-ifc4x3.d.ts +8 -0
  23. package/dist/ifc-schema/generated/entities-ifc4x3.d.ts.map +1 -0
  24. package/dist/ifc-schema/generated/entities-ifc4x3.js +1014 -0
  25. package/dist/ifc-schema/generated/entities-ifc4x3.js.map +1 -0
  26. package/dist/ifc-schema/generated/partof-relations.d.ts +10 -0
  27. package/dist/ifc-schema/generated/partof-relations.d.ts.map +1 -0
  28. package/dist/ifc-schema/generated/partof-relations.js +28 -0
  29. package/dist/ifc-schema/generated/partof-relations.js.map +1 -0
  30. package/dist/ifc-schema/generated/psets-ifc2x3.d.ts +8 -0
  31. package/dist/ifc-schema/generated/psets-ifc2x3.d.ts.map +1 -0
  32. package/dist/ifc-schema/generated/psets-ifc2x3.js +3416 -0
  33. package/dist/ifc-schema/generated/psets-ifc2x3.js.map +1 -0
  34. package/dist/ifc-schema/generated/psets-ifc4.d.ts +8 -0
  35. package/dist/ifc-schema/generated/psets-ifc4.d.ts.map +1 -0
  36. package/dist/ifc-schema/generated/psets-ifc4.js +4510 -0
  37. package/dist/ifc-schema/generated/psets-ifc4.js.map +1 -0
  38. package/dist/ifc-schema/generated/psets-ifc4x3.d.ts +8 -0
  39. package/dist/ifc-schema/generated/psets-ifc4x3.d.ts.map +1 -0
  40. package/dist/ifc-schema/generated/psets-ifc4x3.js +8554 -0
  41. package/dist/ifc-schema/generated/psets-ifc4x3.js.map +1 -0
  42. package/dist/ifc-schema/index.d.ts +61 -0
  43. package/dist/ifc-schema/index.d.ts.map +1 -0
  44. package/dist/ifc-schema/index.js +212 -0
  45. package/dist/ifc-schema/index.js.map +1 -0
  46. package/dist/ifc-schema/types.d.ts +108 -0
  47. package/dist/ifc-schema/types.d.ts.map +1 -0
  48. package/dist/ifc-schema/types.js +5 -0
  49. package/dist/ifc-schema/types.js.map +1 -0
  50. package/dist/index.d.ts +11 -8
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +11 -4
  53. package/dist/index.js.map +1 -1
  54. package/dist/property-table.d.ts +22 -0
  55. package/dist/property-table.d.ts.map +1 -1
  56. package/dist/property-table.js +89 -62
  57. package/dist/property-table.js.map +1 -1
  58. package/dist/quantity-table.d.ts +18 -0
  59. package/dist/quantity-table.d.ts.map +1 -1
  60. package/dist/quantity-table.js +80 -66
  61. package/dist/quantity-table.js.map +1 -1
  62. package/dist/relationship-graph.d.ts +53 -6
  63. package/dist/relationship-graph.d.ts.map +1 -1
  64. package/dist/relationship-graph.js +149 -113
  65. package/dist/relationship-graph.js.map +1 -1
  66. package/dist/string-table.d.ts +8 -0
  67. package/dist/string-table.d.ts.map +1 -1
  68. package/dist/string-table.js +20 -0
  69. package/dist/string-table.js.map +1 -1
  70. package/dist/utf8-decode.d.ts +24 -0
  71. package/dist/utf8-decode.d.ts.map +1 -0
  72. package/dist/utf8-decode.js +103 -0
  73. package/dist/utf8-decode.js.map +1 -0
  74. package/package.json +3 -2
@@ -0,0 +1,61 @@
1
+ import type { IfcAttributeInfo, IfcDataTypeInfo, IfcEntityInfo, IfcPropertySetInfo, IfcSchemaVersion, PartOfRelationInfo } from './types.js';
2
+ export type { IfcAttributeInfo, IfcDataTypeInfo, IfcEntityInfo, IfcPropertyInfo, IfcPropertySetInfo, IfcSchemaVersion, PartOfRelationInfo, } from './types.js';
3
+ /**
4
+ * `Pset_*` and `Qto_*` are reserved for buildingSMART-published property
5
+ * sets (see `IdsProperty.cs` in IDS-Audit-tool). User-defined sets must
6
+ * not use these prefixes; the auditor surfaces a warning when an
7
+ * unknown name does.
8
+ */
9
+ export declare const RESERVED_PSET_PREFIXES: readonly string[];
10
+ /**
11
+ * Async by contract — even though tables are bundled today, future
12
+ * implementations may dynamically import multi-MB JSON files. Pin the
13
+ * API now so consumers don't need a breaking change later.
14
+ */
15
+ export declare function getEntities(v: IfcSchemaVersion): Promise<readonly IfcEntityInfo[]>;
16
+ export declare function getPropertySets(v: IfcSchemaVersion): Promise<readonly IfcPropertySetInfo[]>;
17
+ export declare function getPartOfRelations(v: IfcSchemaVersion): Promise<readonly PartOfRelationInfo[]>;
18
+ /**
19
+ * Case-insensitive entity lookup. Returns `undefined` when the entity
20
+ * isn't part of the schema for the requested IFC version.
21
+ */
22
+ export declare function findEntity(v: IfcSchemaVersion, name: string): Promise<IfcEntityInfo | undefined>;
23
+ export declare function findPropertySet(v: IfcSchemaVersion, name: string): Promise<IfcPropertySetInfo | undefined>;
24
+ /**
25
+ * Walk the EXPRESS inheritance chain. Returns the named entity plus
26
+ * every supertype, with `IfcRoot` last. `[]` when the entity isn't in
27
+ * the schema.
28
+ */
29
+ export declare function getInheritanceChain(v: IfcSchemaVersion, name: string): Promise<readonly IfcEntityInfo[]>;
30
+ /**
31
+ * Test whether `entity` (or any supertype in its inheritance chain)
32
+ * matches `target`. The check is case-insensitive on names.
33
+ */
34
+ export declare function isEntitySubtypeOf(v: IfcSchemaVersion, entity: string, target: string): Promise<boolean>;
35
+ /**
36
+ * Look up an IFC dataType (e.g. `IFCLABEL`) for a given IFC version.
37
+ * Returns the row when the dataType exists in that version, or
38
+ * `undefined` if absent.
39
+ */
40
+ export declare function findDataType(v: IfcSchemaVersion, name: string): Promise<IfcDataTypeInfo | undefined>;
41
+ export declare function getDataTypes(v: IfcSchemaVersion): Promise<readonly IfcDataTypeInfo[]>;
42
+ export declare function getAttributes(v: IfcSchemaVersion): Promise<readonly IfcAttributeInfo[]>;
43
+ /**
44
+ * Look up the IFC attribute named `name` for a specific IFC version.
45
+ * Returns undefined when the attribute is unknown.
46
+ */
47
+ export declare function findAttribute(v: IfcSchemaVersion, name: string): Promise<IfcAttributeInfo | undefined>;
48
+ /**
49
+ * Look up the XSD primitive types accepted by an attribute slot on a
50
+ * specific entity. Returns the union of `xs:integer`, `xs:double`,
51
+ * `xs:string`, `xs:boolean`, `xs:date`, `xs:dateTime`, `xs:duration`
52
+ * across every schema declaration of the (entity, attribute) pair —
53
+ * the IDS validator treats a literal as valid if it casts under any
54
+ * one of these types. Returns `undefined` when the attribute isn't
55
+ * known on that entity in the requested IFC version.
56
+ *
57
+ * Backed by a per-version lazy index so the validator's tight loop
58
+ * stays O(1) regardless of attribute-table size.
59
+ */
60
+ export declare function getAttributeXsdTypes(v: IfcSchemaVersion, entityType: string, attrName: string): readonly string[] | undefined;
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ifc-schema/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAYpB;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAsB,CAAC;AAqC3E;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,gBAAgB,GAClB,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAGnC;AAED,wBAAsB,eAAe,CACnC,CAAC,EAAE,gBAAgB,GAClB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAGxC;AAED,wBAAsB,kBAAkB,CACtC,CAAC,EAAE,gBAAgB,GAClB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAGxC;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAIpC;AAED,wBAAsB,eAAe,CACnC,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAGzC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAanC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CActC;AAED,wBAAsB,YAAY,CAChC,CAAC,EAAE,gBAAgB,GAClB,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAOrC;AAED,wBAAsB,aAAa,CACjC,CAAC,EAAE,gBAAgB,GAClB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAGtC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAIvC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,gBAAgB,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,SAAS,MAAM,EAAE,GAAG,SAAS,CAM/B"}
@@ -0,0 +1,212 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Per-IFC-version schema lookup.
6
+ *
7
+ * Backed by the generated tables in `./generated/`, which the generator
8
+ * (`scripts/generate-ifc-schema.ts`) builds from buildingSMART/IDS-Audit-tool's
9
+ * `SchemaInfo.*.g.cs` data. The async signatures pin the API so future
10
+ * implementations can lazy-load multi-MB JSON dumps without touching
11
+ * consumers.
12
+ *
13
+ * Browser-runnable: no `fs`, no `path`, no Node-only APIs.
14
+ */
15
+ import { ATTRIBUTES_IFC2X3, ATTRIBUTES_IFC4, ATTRIBUTES_IFC4X3, } from './generated/attributes.js';
16
+ import { IFC_DATA_TYPES } from './generated/data-types.js';
17
+ import { ENTITIES_IFC2X3 } from './generated/entities-ifc2x3.js';
18
+ import { ENTITIES_IFC4 } from './generated/entities-ifc4.js';
19
+ import { ENTITIES_IFC4X3 } from './generated/entities-ifc4x3.js';
20
+ import { PART_OF_RELATIONS_IFC2X3, PART_OF_RELATIONS_IFC4, PART_OF_RELATIONS_IFC4X3, } from './generated/partof-relations.js';
21
+ import { PROPERTY_SETS_IFC2X3 } from './generated/psets-ifc2x3.js';
22
+ import { PROPERTY_SETS_IFC4 } from './generated/psets-ifc4.js';
23
+ import { PROPERTY_SETS_IFC4X3 } from './generated/psets-ifc4x3.js';
24
+ const ATTRIBUTES_BY_VERSION = {
25
+ IFC2X3: ATTRIBUTES_IFC2X3,
26
+ IFC4: ATTRIBUTES_IFC4,
27
+ IFC4X3: ATTRIBUTES_IFC4X3,
28
+ IFC4X3_ADD2: ATTRIBUTES_IFC4X3,
29
+ };
30
+ /**
31
+ * `Pset_*` and `Qto_*` are reserved for buildingSMART-published property
32
+ * sets (see `IdsProperty.cs` in IDS-Audit-tool). User-defined sets must
33
+ * not use these prefixes; the auditor surfaces a warning when an
34
+ * unknown name does.
35
+ */
36
+ export const RESERVED_PSET_PREFIXES = ['Pset_', 'Qto_'];
37
+ const ENTITIES_BY_VERSION = {
38
+ IFC2X3: ENTITIES_IFC2X3,
39
+ IFC4: ENTITIES_IFC4,
40
+ IFC4X3: ENTITIES_IFC4X3,
41
+ // IFC4X3_ADD2 is the addendum-2 release of IFC4X3 — same entity list
42
+ // for authoring purposes.
43
+ IFC4X3_ADD2: ENTITIES_IFC4X3,
44
+ };
45
+ const PROPERTY_SETS_BY_VERSION = {
46
+ IFC2X3: PROPERTY_SETS_IFC2X3,
47
+ IFC4: PROPERTY_SETS_IFC4,
48
+ IFC4X3: PROPERTY_SETS_IFC4X3,
49
+ IFC4X3_ADD2: PROPERTY_SETS_IFC4X3,
50
+ };
51
+ const PART_OF_BY_VERSION = {
52
+ IFC2X3: PART_OF_RELATIONS_IFC2X3,
53
+ IFC4: PART_OF_RELATIONS_IFC4,
54
+ IFC4X3: PART_OF_RELATIONS_IFC4X3,
55
+ IFC4X3_ADD2: PART_OF_RELATIONS_IFC4X3,
56
+ };
57
+ function ensureVersion(v) {
58
+ if (!(v in ENTITIES_BY_VERSION)) {
59
+ throw new Error(`Unsupported IFC schema version: ${v}`);
60
+ }
61
+ }
62
+ /**
63
+ * Async by contract — even though tables are bundled today, future
64
+ * implementations may dynamically import multi-MB JSON files. Pin the
65
+ * API now so consumers don't need a breaking change later.
66
+ */
67
+ export async function getEntities(v) {
68
+ ensureVersion(v);
69
+ return ENTITIES_BY_VERSION[v];
70
+ }
71
+ export async function getPropertySets(v) {
72
+ ensureVersion(v);
73
+ return PROPERTY_SETS_BY_VERSION[v];
74
+ }
75
+ export async function getPartOfRelations(v) {
76
+ ensureVersion(v);
77
+ return PART_OF_BY_VERSION[v];
78
+ }
79
+ /**
80
+ * Case-insensitive entity lookup. Returns `undefined` when the entity
81
+ * isn't part of the schema for the requested IFC version.
82
+ */
83
+ export async function findEntity(v, name) {
84
+ const upper = name.toUpperCase();
85
+ const list = await getEntities(v);
86
+ return list.find((e) => e.name.toUpperCase() === upper);
87
+ }
88
+ export async function findPropertySet(v, name) {
89
+ const list = await getPropertySets(v);
90
+ return list.find((p) => p.name === name);
91
+ }
92
+ /**
93
+ * Walk the EXPRESS inheritance chain. Returns the named entity plus
94
+ * every supertype, with `IfcRoot` last. `[]` when the entity isn't in
95
+ * the schema.
96
+ */
97
+ export async function getInheritanceChain(v, name) {
98
+ const list = await getEntities(v);
99
+ const byName = new Map();
100
+ for (const e of list)
101
+ byName.set(e.name.toUpperCase(), e);
102
+ const chain = [];
103
+ let cursor = byName.get(name.toUpperCase());
104
+ const seen = new Set();
105
+ while (cursor && !seen.has(cursor.name)) {
106
+ chain.push(cursor);
107
+ seen.add(cursor.name);
108
+ cursor = cursor.parent ? byName.get(cursor.parent.toUpperCase()) : undefined;
109
+ }
110
+ return chain;
111
+ }
112
+ /**
113
+ * Test whether `entity` (or any supertype in its inheritance chain)
114
+ * matches `target`. The check is case-insensitive on names.
115
+ */
116
+ export async function isEntitySubtypeOf(v, entity, target) {
117
+ const chain = await getInheritanceChain(v, entity);
118
+ const upper = target.toUpperCase();
119
+ return chain.some((e) => e.name.toUpperCase() === upper);
120
+ }
121
+ /**
122
+ * Look up an IFC dataType (e.g. `IFCLABEL`) for a given IFC version.
123
+ * Returns the row when the dataType exists in that version, or
124
+ * `undefined` if absent.
125
+ */
126
+ export async function findDataType(v, name) {
127
+ const upper = name.toUpperCase();
128
+ const versionKey = v === 'IFC4X3_ADD2' ? 'IFC4X3' : v;
129
+ for (const t of IFC_DATA_TYPES) {
130
+ if (t.name === upper &&
131
+ t.versions.some((vv) => vv === versionKey || (vv === 'IFC4X3' && v === 'IFC4X3_ADD2'))) {
132
+ return t;
133
+ }
134
+ }
135
+ return undefined;
136
+ }
137
+ export async function getDataTypes(v) {
138
+ const versionKey = v === 'IFC4X3_ADD2' ? 'IFC4X3' : v;
139
+ return IFC_DATA_TYPES.filter((t) => t.versions.some((vv) => vv === versionKey || (vv === 'IFC4X3' && v === 'IFC4X3_ADD2')));
140
+ }
141
+ export async function getAttributes(v) {
142
+ ensureVersion(v);
143
+ return ATTRIBUTES_BY_VERSION[v];
144
+ }
145
+ /**
146
+ * Look up the IFC attribute named `name` for a specific IFC version.
147
+ * Returns undefined when the attribute is unknown.
148
+ */
149
+ export async function findAttribute(v, name) {
150
+ const list = await getAttributes(v);
151
+ const lower = name.toLowerCase();
152
+ return list.find((a) => a.name.toLowerCase() === lower);
153
+ }
154
+ /**
155
+ * Look up the XSD primitive types accepted by an attribute slot on a
156
+ * specific entity. Returns the union of `xs:integer`, `xs:double`,
157
+ * `xs:string`, `xs:boolean`, `xs:date`, `xs:dateTime`, `xs:duration`
158
+ * across every schema declaration of the (entity, attribute) pair —
159
+ * the IDS validator treats a literal as valid if it casts under any
160
+ * one of these types. Returns `undefined` when the attribute isn't
161
+ * known on that entity in the requested IFC version.
162
+ *
163
+ * Backed by a per-version lazy index so the validator's tight loop
164
+ * stays O(1) regardless of attribute-table size.
165
+ */
166
+ export function getAttributeXsdTypes(v, entityType, attrName) {
167
+ const index = getAttributeXsdIndex(v);
168
+ if (!index)
169
+ return undefined;
170
+ const slot = index.get(entityType.toUpperCase());
171
+ if (!slot)
172
+ return undefined;
173
+ return slot.get(attrName.toLowerCase());
174
+ }
175
+ const attributeXsdIndexCache = new Map();
176
+ function getAttributeXsdIndex(v) {
177
+ const list = ATTRIBUTES_BY_VERSION[v];
178
+ if (!list)
179
+ return undefined;
180
+ const cached = attributeXsdIndexCache.get(v);
181
+ if (cached)
182
+ return cached;
183
+ const index = new Map();
184
+ for (const attr of list) {
185
+ const attrLower = attr.name.toLowerCase();
186
+ for (const [entityUpper, types] of Object.entries(attr.xsdTypesByEntity)) {
187
+ if (!types || types.length === 0)
188
+ continue;
189
+ let slot = index.get(entityUpper);
190
+ if (!slot) {
191
+ slot = new Map();
192
+ index.set(entityUpper, slot);
193
+ }
194
+ // Same (entity, attr) can appear in multiple list rows when the
195
+ // upstream schema repeats the declaration. Merge the unions
196
+ // rather than letting the last write win.
197
+ const existing = slot.get(attrLower);
198
+ if (existing) {
199
+ const merged = new Set(existing);
200
+ for (const t of types)
201
+ merged.add(t);
202
+ slot.set(attrLower, [...merged].sort());
203
+ }
204
+ else {
205
+ slot.set(attrLower, types);
206
+ }
207
+ }
208
+ }
209
+ attributeXsdIndexCache.set(v, index);
210
+ return index;
211
+ }
212
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ifc-schema/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Public types for the per-IFC-version schema lookup tables.
3
+ *
4
+ * The shape mirrors the data exposed by buildingSMART's IDS-Audit-tool
5
+ * (`ids-lib/IfcSchema/SchemaInfo.*`) — entity hierarchy with predefined
6
+ * types and direct attributes, property sets with applicable entities and
7
+ * per-property data type, partOf relation tables and object→type maps.
8
+ *
9
+ * Generated content lives in `./generated/`; see `scripts/generate-ifc-schema.ts`.
10
+ */
11
+ /** All IFC schema versions for which lookup tables can be requested. */
12
+ export type IfcSchemaVersion = 'IFC2X3' | 'IFC4' | 'IFC4X3_ADD2' | 'IFC4X3';
13
+ /** Description of a single IFC entity. */
14
+ export interface IfcEntityInfo {
15
+ /** Canonical PascalCase name, e.g. `IfcWall`. */
16
+ readonly name: string;
17
+ /** Direct EXPRESS parent name, or `undefined` for `IfcRoot`. */
18
+ readonly parent?: string;
19
+ /** True for EXPRESS abstract supertypes (cannot be instantiated directly). */
20
+ readonly abstract: boolean;
21
+ /** Allowed `PredefinedType` enum values, in declaration order. */
22
+ readonly predefinedTypes: readonly string[];
23
+ /**
24
+ * All inherited + direct attributes in declaration order. Concrete IDS
25
+ * checks only need the names; types/optional flags are out of scope for
26
+ * the auditor (and not exposed by the upstream SchemaInfo data).
27
+ */
28
+ readonly attributes: readonly string[];
29
+ /** EXPRESS source schema (e.g., "Ifc4x3.SharedBldgElements"). */
30
+ readonly source?: string;
31
+ /** Companion type entity, e.g., `IfcWall → IfcWallType`. */
32
+ readonly typeEntity?: string;
33
+ }
34
+ /**
35
+ * Single property inside a pset.
36
+ *
37
+ * The `kind` field captures the upstream property-type taxonomy (see
38
+ * `Pset_Xxx` definitions) so the auditor can apply different rules per
39
+ * shape — e.g., enumerations are matched against `enumeration`, single-
40
+ * value properties against `dataType`.
41
+ */
42
+ export interface IfcPropertyInfo {
43
+ readonly name: string;
44
+ readonly kind: 'single' | 'enumeration' | 'list' | 'bounded' | 'reference' | 'unknown';
45
+ /** Datatype token (e.g. "IfcLabel"). Set for non-enumeration kinds. */
46
+ readonly dataType?: string;
47
+ /** Allowed enumeration values when `kind === 'enumeration'`. */
48
+ readonly enumeration?: readonly string[];
49
+ }
50
+ /** Description of a property set (Pset_*) or quantity set (Qto_*). */
51
+ export interface IfcPropertySetInfo {
52
+ readonly name: string;
53
+ /** Entities the pset is applicable to, as PascalCase names. */
54
+ readonly applicableEntities: readonly string[];
55
+ readonly properties: readonly IfcPropertyInfo[];
56
+ }
57
+ /**
58
+ * One row of a per-version partOf relation table — `relation` is the
59
+ * IfcRel* name, `owner` is the upstream container entity, `member` is
60
+ * the contained entity.
61
+ */
62
+ export interface PartOfRelationInfo {
63
+ readonly relation: string;
64
+ readonly owner: string;
65
+ readonly member: string;
66
+ }
67
+ /**
68
+ * IFC dataType (e.g. `IFCLABEL`, `IFCREAL`) and its backing XSD type
69
+ * token. Used by the audit module to verify that a property's
70
+ * `dataType` attribute matches what the standard pset declares, and
71
+ * that an `xs:restriction base="..."` is compatible with that backing
72
+ * type.
73
+ */
74
+ export interface IfcDataTypeInfo {
75
+ /** Uppercase IFC dataType name, e.g. `IFCLABEL`. */
76
+ readonly name: string;
77
+ /** IFC versions in which this data type exists. */
78
+ readonly versions: readonly IfcSchemaVersion[];
79
+ /** Backing XSD type, e.g. `xs:string`, `xs:double`, `xs:boolean`. */
80
+ readonly backingType: string;
81
+ }
82
+ /**
83
+ * IFC attribute metadata. Tracks which entities hold the attribute and
84
+ * whether the attribute admits a simple `<value>` constraint or is a
85
+ * complex (entity-typed) reference.
86
+ */
87
+ export interface IfcAttributeInfo {
88
+ /** Attribute name as defined on EXPRESS entities (PascalCase). */
89
+ readonly name: string;
90
+ /** Uppercase entity names where the attribute admits a simple value. */
91
+ readonly simpleValueEntities: readonly string[];
92
+ /** Uppercase entity names where the attribute holds a complex/entity reference. */
93
+ readonly complexEntities: readonly string[];
94
+ /**
95
+ * Map of uppercase entity name → the XSD primitive types that the
96
+ * attribute's slot accepts for that entity. Per IDS 1.0 spec, an
97
+ * `<attribute><value>` literal MUST cast successfully under at least
98
+ * one of these XSD types: `xs:integer` rejects `42.0`, `xs:double`
99
+ * accepts either, `xs:string` accepts anything textual, etc.
100
+ *
101
+ * Sourced from the upstream `SchemaInfo.Attributes.g.cs` 4th argument
102
+ * (a union across the entity group declared in the same call). When
103
+ * an entity isn't a key here the type information is unknown and the
104
+ * validator falls back to permissive comparison.
105
+ */
106
+ readonly xsdTypesByEntity: Readonly<Record<string, readonly string[]>>;
107
+ }
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ifc-schema/types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,MAAM,GACN,aAAa,GACb,QAAQ,CAAC;AAEb,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EACT,QAAQ,GACR,aAAa,GACb,MAAM,GACN,SAAS,GACT,WAAW,GACX,SAAS,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,mFAAmF;IACnF,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxE"}
@@ -0,0 +1,5 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ifc-schema/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
package/dist/index.d.ts CHANGED
@@ -2,14 +2,14 @@
2
2
  * @ifc-lite/data - Columnar data structures
3
3
  */
4
4
  export { StringTable } from './string-table.js';
5
- export { EntityTableBuilder } from './entity-table.js';
6
- export type { EntityTable } from './entity-table.js';
7
- export { PropertyTableBuilder } from './property-table.js';
8
- export type { PropertyTable, PropertySet, Property, PropertyValue } from './property-table.js';
9
- export { QuantityTableBuilder } from './quantity-table.js';
10
- export type { QuantityTable, QuantitySet, Quantity } from './quantity-table.js';
11
- export { RelationshipGraphBuilder } from './relationship-graph.js';
12
- export type { RelationshipGraph, Edge, RelationshipInfo } from './relationship-graph.js';
5
+ export { EntityTableBuilder, entityTableFromColumns, entityTableToColumns } from './entity-table.js';
6
+ export type { EntityTable, EntityTableColumns } from './entity-table.js';
7
+ export { PropertyTableBuilder, propertyTableFromColumns, propertyTableToColumns } from './property-table.js';
8
+ export type { PropertyTable, PropertyTableColumns, PropertySet, Property, PropertyValue } from './property-table.js';
9
+ export { QuantityTableBuilder, quantityTableFromColumns, quantityTableToColumns } from './quantity-table.js';
10
+ export type { QuantityTable, QuantityTableColumns, QuantitySet, Quantity } from './quantity-table.js';
11
+ export { RelationshipGraphBuilder, buildCSR, relationshipEdgesFromColumns, relationshipGraphFromEdges, relationshipGraphFromColumns, relationshipGraphToColumns, } from './relationship-graph.js';
12
+ export type { RelationshipGraph, RelationshipEdges, RelationshipEdgesColumns, RelationshipGraphColumns, Edge, RelationshipInfo, } from './relationship-graph.js';
13
13
  export * from './types.js';
14
14
  export { IfcTypeEnum, PropertyValueType, QuantityType, RelationshipType, EntityFlags } from './types.js';
15
15
  export type { SpatialNode, SpatialHierarchy } from './types.js';
@@ -17,5 +17,8 @@ export * from './spatial-types.js';
17
17
  export * from './epsg-types.js';
18
18
  export { loadEpsgIndex, loadEpsgIndexByCode, loadEpsgIndexDatasetVersion, lookupEpsgByCode, lookupProj4, searchEpsgIndex, } from './epsg-index.js';
19
19
  export { IFC_ENTITY_NAMES } from './ifc-entity-names.js';
20
+ export { getEntities, getPropertySets, getPartOfRelations, getDataTypes, getAttributes, findEntity, findPropertySet, findDataType, findAttribute, getAttributeXsdTypes, getInheritanceChain, isEntitySubtypeOf, RESERVED_PSET_PREFIXES, } from './ifc-schema/index.js';
21
+ export type { IfcAttributeInfo, IfcDataTypeInfo, IfcEntityInfo, IfcPropertyInfo, IfcPropertySetInfo, IfcSchemaVersion, PartOfRelationInfo, } from './ifc-schema/index.js';
20
22
  export { createLogger, logger, type LogLevel, type LogContext } from './logger.js';
23
+ export { safeUtf8Decode, textDecoderAcceptsSab } from './utf8-decode.js';
21
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzG,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACtG,OAAO,EACL,wBAAwB,EACxB,QAAQ,EACR,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,IAAI,EACJ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzG,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMnF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@
5
5
  * @ifc-lite/data - Columnar data structures
6
6
  */
7
7
  export { StringTable } from './string-table.js';
8
- export { EntityTableBuilder } from './entity-table.js';
9
- export { PropertyTableBuilder } from './property-table.js';
10
- export { QuantityTableBuilder } from './quantity-table.js';
11
- export { RelationshipGraphBuilder } from './relationship-graph.js';
8
+ export { EntityTableBuilder, entityTableFromColumns, entityTableToColumns } from './entity-table.js';
9
+ export { PropertyTableBuilder, propertyTableFromColumns, propertyTableToColumns } from './property-table.js';
10
+ export { QuantityTableBuilder, quantityTableFromColumns, quantityTableToColumns } from './quantity-table.js';
11
+ export { RelationshipGraphBuilder, buildCSR, relationshipEdgesFromColumns, relationshipGraphFromEdges, relationshipGraphFromColumns, relationshipGraphToColumns, } from './relationship-graph.js';
12
12
  export * from './types.js';
13
13
  // Explicitly export const enums for runtime use
14
14
  export { IfcTypeEnum, PropertyValueType, QuantityType, RelationshipType, EntityFlags } from './types.js';
@@ -17,6 +17,13 @@ export * from './epsg-types.js';
17
17
  export { loadEpsgIndex, loadEpsgIndexByCode, loadEpsgIndexDatasetVersion, lookupEpsgByCode, lookupProj4, searchEpsgIndex, } from './epsg-index.js';
18
18
  // Entity name mapping (UPPERCASE → PascalCase)
19
19
  export { IFC_ENTITY_NAMES } from './ifc-entity-names.js';
20
+ // Per-version IFC schema lookup (used by `@ifc-lite/ids` audit)
21
+ export { getEntities, getPropertySets, getPartOfRelations, getDataTypes, getAttributes, findEntity, findPropertySet, findDataType, findAttribute, getAttributeXsdTypes, getInheritanceChain, isEntitySubtypeOf, RESERVED_PSET_PREFIXES, } from './ifc-schema/index.js';
20
22
  // Logging utilities
21
23
  export { createLogger, logger } from './logger.js';
24
+ // SAB-safe TextDecoder helper. Both Firefox and Chromium reject
25
+ // `TextDecoder.decode()` on SharedArrayBuffer-backed views as a
26
+ // Spectre-class timing-attack mitigation; this helper transparently
27
+ // routes those calls through a thread-local scratch buffer.
28
+ export { safeUtf8Decode, textDecoderAcceptsSab } from './utf8-decode.js';
22
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,cAAc,YAAY,CAAC;AAC3B,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzG,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,+CAA+C;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,EAAkC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAErG,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EACL,wBAAwB,EACxB,QAAQ,EACR,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AASjC,cAAc,YAAY,CAAC;AAC3B,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzG,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,+CAA+C;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,gEAAgE;AAChE,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAW/B,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,EAAkC,MAAM,aAAa,CAAC;AAEnF,gEAAgE;AAChE,gEAAgE;AAChE,oEAAoE;AACpE,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -42,6 +42,28 @@ export declare class PropertyTableBuilder {
42
42
  add(row: PropertyRow): void;
43
43
  build(): PropertyTable;
44
44
  }
45
+ /**
46
+ * Plain-data column representation of a `PropertyTable`. The three lookup
47
+ * indices (entity/pset/prop → row indices) are intentionally absent — they
48
+ * are derived from the parallel arrays in `propertyTableFromColumns`.
49
+ */
50
+ export interface PropertyTableColumns {
51
+ count: number;
52
+ entityId: Uint32Array;
53
+ psetName: Uint32Array;
54
+ psetGlobalId: Uint32Array;
55
+ propName: Uint32Array;
56
+ propType: Uint8Array;
57
+ valueString: Uint32Array;
58
+ valueReal: Float64Array;
59
+ valueInt: Int32Array;
60
+ valueBool: Uint8Array;
61
+ unitId: Int32Array;
62
+ }
63
+ /** Rebuild a live `PropertyTable` (closures + indices) from column data. */
64
+ export declare function propertyTableFromColumns(columns: PropertyTableColumns, strings: StringTable): PropertyTable;
65
+ /** Extract column data from a `PropertyTable` for transport. */
66
+ export declare function propertyTableToColumns(table: PropertyTable): PropertyTableColumns;
45
67
  interface PropertyRow {
46
68
  entityId: number;
47
69
  psetName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"property-table.d.ts","sourceRoot":"","sources":["../src/property-table.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,aAAa,EAAE,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IAEnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAC/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAC9F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CAAC;CACpF;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,IAAI,CAAqB;gBAErB,OAAO,EAAE,WAAW;IAIhC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAI3B,KAAK,IAAI,aAAa;CAqJvB;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"property-table.d.ts","sourceRoot":"","sources":["../src/property-table.ts"],"names":[],"mappings":"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"}