@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
|
@@ -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 @@
|
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/property-table.d.ts
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"property-table.d.ts","sourceRoot":"","sources":["../src/property-table.ts"],"names":[],"mappings":"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"}
|