@ifc-lite/bcf 1.14.3 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ids-reporter.js +1 -1
- package/dist/ids-reporter.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/overlay-renderer.d.ts +69 -0
- package/dist/overlay-renderer.d.ts.map +1 -0
- package/dist/overlay-renderer.js +419 -0
- package/dist/overlay-renderer.js.map +1 -0
- package/dist/overlay.d.ts +130 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +152 -0
- package/dist/overlay.js.map +1 -0
- package/dist/viewpoint.js +1 -1
- package/dist/viewpoint.js.map +1 -1
- package/dist/writer.js +1 -1
- package/dist/writer.js.map +1 -1
- package/package.json +4 -2
- package/dist/guid.d.ts +0 -41
- package/dist/guid.d.ts.map +0 -1
- package/dist/guid.js +0 -184
- package/dist/guid.js.map +0 -1
package/dist/guid.js
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
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
|
-
* IFC GUID (IfcGloballyUniqueId) conversion utilities
|
|
6
|
-
*
|
|
7
|
-
* IFC uses a 22-character base64 encoding of 128-bit GUIDs using a custom
|
|
8
|
-
* character set. This module provides conversion between:
|
|
9
|
-
* - Standard UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
|
|
10
|
-
* - IFC GUID format (22 characters)
|
|
11
|
-
*
|
|
12
|
-
* Reference: https://technical.buildingsmart.org/resources/ifcimplementationguidance/ifc-guid/
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* IFC GUID character set (different from standard base64)
|
|
16
|
-
* Characters: 0-9, A-Z, a-z, _, $
|
|
17
|
-
*/
|
|
18
|
-
const IFC_GUID_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$';
|
|
19
|
-
/**
|
|
20
|
-
* Reverse lookup table for IFC GUID characters
|
|
21
|
-
*/
|
|
22
|
-
const IFC_GUID_CHAR_TO_VALUE = {};
|
|
23
|
-
for (let i = 0; i < IFC_GUID_CHARS.length; i++) {
|
|
24
|
-
IFC_GUID_CHAR_TO_VALUE[IFC_GUID_CHARS[i]] = i;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Convert a standard UUID to IFC GUID format (22 characters)
|
|
28
|
-
*
|
|
29
|
-
* @param uuid - UUID string in format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
30
|
-
* @returns 22-character IFC GUID string
|
|
31
|
-
*/
|
|
32
|
-
export function uuidToIfcGuid(uuid) {
|
|
33
|
-
// Remove dashes and convert to uppercase
|
|
34
|
-
const hex = uuid.replace(/-/g, '').toUpperCase();
|
|
35
|
-
if (hex.length !== 32) {
|
|
36
|
-
throw new Error(`Invalid UUID: expected 32 hex characters, got ${hex.length}`);
|
|
37
|
-
}
|
|
38
|
-
// Convert hex string to bytes (16 bytes = 128 bits)
|
|
39
|
-
const bytes = new Uint8Array(16);
|
|
40
|
-
for (let i = 0; i < 16; i++) {
|
|
41
|
-
bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
|
|
42
|
-
}
|
|
43
|
-
// Encode to IFC GUID (22 characters)
|
|
44
|
-
// First 2 characters encode first 2 bytes (but only 4 bits from first)
|
|
45
|
-
// Then groups of 3 bytes encode to 4 characters each
|
|
46
|
-
let result = '';
|
|
47
|
-
// First character: high 2 bits of first byte (only 2 bits used, so value 0-3)
|
|
48
|
-
result += IFC_GUID_CHARS[(bytes[0] >> 6) & 0x03];
|
|
49
|
-
// Second character: low 6 bits of first byte
|
|
50
|
-
result += IFC_GUID_CHARS[bytes[0] & 0x3F];
|
|
51
|
-
// Process remaining 15 bytes in groups of 3 (5 groups = 20 characters)
|
|
52
|
-
for (let i = 1; i < 16; i += 3) {
|
|
53
|
-
const b0 = bytes[i] || 0;
|
|
54
|
-
const b1 = bytes[i + 1] || 0;
|
|
55
|
-
const b2 = bytes[i + 2] || 0;
|
|
56
|
-
// Each group of 3 bytes (24 bits) encodes to 4 base64 characters (24 bits)
|
|
57
|
-
result += IFC_GUID_CHARS[(b0 >> 2) & 0x3F];
|
|
58
|
-
result += IFC_GUID_CHARS[((b0 & 0x03) << 4) | ((b1 >> 4) & 0x0F)];
|
|
59
|
-
result += IFC_GUID_CHARS[((b1 & 0x0F) << 2) | ((b2 >> 6) & 0x03)];
|
|
60
|
-
result += IFC_GUID_CHARS[b2 & 0x3F];
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Convert an IFC GUID to standard UUID format
|
|
66
|
-
*
|
|
67
|
-
* @param ifcGuid - 22-character IFC GUID string
|
|
68
|
-
* @returns UUID string in format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
69
|
-
*/
|
|
70
|
-
export function ifcGuidToUuid(ifcGuid) {
|
|
71
|
-
if (ifcGuid.length !== 22) {
|
|
72
|
-
throw new Error(`Invalid IFC GUID: expected 22 characters, got ${ifcGuid.length}`);
|
|
73
|
-
}
|
|
74
|
-
// Decode base64 characters to values
|
|
75
|
-
const values = [];
|
|
76
|
-
for (const char of ifcGuid) {
|
|
77
|
-
const value = IFC_GUID_CHAR_TO_VALUE[char];
|
|
78
|
-
if (value === undefined) {
|
|
79
|
-
throw new Error(`Invalid IFC GUID character: ${char}`);
|
|
80
|
-
}
|
|
81
|
-
values.push(value);
|
|
82
|
-
}
|
|
83
|
-
// Decode to bytes
|
|
84
|
-
const bytes = new Uint8Array(16);
|
|
85
|
-
// First byte: 2 bits from first char + 6 bits from second char
|
|
86
|
-
bytes[0] = ((values[0] & 0x03) << 6) | (values[1] & 0x3F);
|
|
87
|
-
// Remaining bytes: decode groups of 4 characters to 3 bytes
|
|
88
|
-
let byteIndex = 1;
|
|
89
|
-
for (let i = 2; i < 22; i += 4) {
|
|
90
|
-
const v0 = values[i];
|
|
91
|
-
const v1 = values[i + 1];
|
|
92
|
-
const v2 = values[i + 2];
|
|
93
|
-
const v3 = values[i + 3];
|
|
94
|
-
bytes[byteIndex++] = ((v0 & 0x3F) << 2) | ((v1 >> 4) & 0x03);
|
|
95
|
-
bytes[byteIndex++] = ((v1 & 0x0F) << 4) | ((v2 >> 2) & 0x0F);
|
|
96
|
-
bytes[byteIndex++] = ((v2 & 0x03) << 6) | (v3 & 0x3F);
|
|
97
|
-
}
|
|
98
|
-
// Convert bytes to hex and format as UUID
|
|
99
|
-
let hex = '';
|
|
100
|
-
for (const byte of bytes) {
|
|
101
|
-
hex += byte.toString(16).padStart(2, '0');
|
|
102
|
-
}
|
|
103
|
-
// Format as UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
104
|
-
return `${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(16, 20)}-${hex.substring(20, 32)}`.toLowerCase();
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Generate a new random IFC GUID
|
|
108
|
-
*
|
|
109
|
-
* @returns 22-character IFC GUID string
|
|
110
|
-
*/
|
|
111
|
-
export function generateIfcGuid() {
|
|
112
|
-
// Generate a random UUID
|
|
113
|
-
const uuid = generateUuid();
|
|
114
|
-
return uuidToIfcGuid(uuid);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Generate a new random UUID v4
|
|
118
|
-
*
|
|
119
|
-
* @returns UUID string in format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
120
|
-
*/
|
|
121
|
-
export function generateUuid() {
|
|
122
|
-
// Use crypto.randomUUID if available
|
|
123
|
-
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
124
|
-
return crypto.randomUUID();
|
|
125
|
-
}
|
|
126
|
-
// Fallback: generate random bytes
|
|
127
|
-
const bytes = new Uint8Array(16);
|
|
128
|
-
if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
|
|
129
|
-
crypto.getRandomValues(bytes);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// Last resort fallback (not cryptographically secure)
|
|
133
|
-
for (let i = 0; i < 16; i++) {
|
|
134
|
-
bytes[i] = Math.floor(Math.random() * 256);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// Set version (4) and variant (RFC 4122)
|
|
138
|
-
bytes[6] = (bytes[6] & 0x0F) | 0x40; // Version 4
|
|
139
|
-
bytes[8] = (bytes[8] & 0x3F) | 0x80; // Variant RFC 4122
|
|
140
|
-
// Convert to hex string
|
|
141
|
-
let hex = '';
|
|
142
|
-
for (const byte of bytes) {
|
|
143
|
-
hex += byte.toString(16).padStart(2, '0');
|
|
144
|
-
}
|
|
145
|
-
// Format as UUID
|
|
146
|
-
return `${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(16, 20)}-${hex.substring(20, 32)}`;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Validate an IFC GUID string
|
|
150
|
-
*
|
|
151
|
-
* @param ifcGuid - String to validate
|
|
152
|
-
* @returns true if valid IFC GUID format
|
|
153
|
-
*/
|
|
154
|
-
export function isValidIfcGuid(ifcGuid) {
|
|
155
|
-
if (typeof ifcGuid !== 'string' || ifcGuid.length !== 22) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
// First character must be 0-3 (only 2 bits used)
|
|
159
|
-
const firstCharValue = IFC_GUID_CHAR_TO_VALUE[ifcGuid[0]];
|
|
160
|
-
if (firstCharValue === undefined || firstCharValue > 3) {
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
// All other characters must be valid
|
|
164
|
-
for (let i = 1; i < ifcGuid.length; i++) {
|
|
165
|
-
if (IFC_GUID_CHAR_TO_VALUE[ifcGuid[i]] === undefined) {
|
|
166
|
-
return false;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Validate a UUID string
|
|
173
|
-
*
|
|
174
|
-
* @param uuid - String to validate
|
|
175
|
-
* @returns true if valid UUID format
|
|
176
|
-
*/
|
|
177
|
-
export function isValidUuid(uuid) {
|
|
178
|
-
if (typeof uuid !== 'string') {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
182
|
-
return uuidRegex.test(uuid);
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=guid.js.map
|
package/dist/guid.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guid.js","sourceRoot":"","sources":["../src/guid.ts"],"names":[],"mappings":"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"}
|