@ifc-lite/bcf 2.0.1 → 3.0.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/README.md +13 -2
- package/dist/ids-camera.d.ts +115 -0
- package/dist/ids-camera.d.ts.map +1 -0
- package/dist/ids-camera.js +266 -0
- package/dist/ids-camera.js.map +1 -0
- package/dist/ids-reporter.d.ts +17 -13
- package/dist/ids-reporter.d.ts.map +1 -1
- package/dist/ids-reporter.js +32 -64
- package/dist/ids-reporter.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/reader-components.d.ts +1 -1
- package/dist/reader-components.d.ts.map +1 -1
- package/dist/reader-components.js +49 -10
- package/dist/reader-components.js.map +1 -1
- package/dist/reader-viewpoint-content.d.ts +6 -0
- package/dist/reader-viewpoint-content.d.ts.map +1 -0
- package/dist/reader-viewpoint-content.js +250 -0
- package/dist/reader-viewpoint-content.js.map +1 -0
- package/dist/reader.d.ts.map +1 -1
- package/dist/reader.js +43 -266
- package/dist/reader.js.map +1 -1
- package/dist/types.d.ts +30 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/viewpoint.d.ts +10 -0
- package/dist/viewpoint.d.ts.map +1 -1
- package/dist/viewpoint.js +12 -0
- package/dist/viewpoint.js.map +1 -1
- package/dist/writer-camera.d.ts.map +1 -1
- package/dist/writer-camera.js +30 -1
- package/dist/writer-camera.js.map +1 -1
- package/dist/writer-markup-elements.d.ts +64 -0
- package/dist/writer-markup-elements.d.ts.map +1 -0
- package/dist/writer-markup-elements.js +179 -0
- package/dist/writer-markup-elements.js.map +1 -0
- package/dist/writer-viewpoint-filename.d.ts +32 -0
- package/dist/writer-viewpoint-filename.d.ts.map +1 -0
- package/dist/writer-viewpoint-filename.js +33 -0
- package/dist/writer-viewpoint-filename.js.map +1 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +119 -244
- package/dist/writer.js.map +1 -1
- package/dist/xml-text.d.ts +62 -5
- package/dist/xml-text.d.ts.map +1 -1
- package/dist/xml-text.js +131 -8
- package/dist/xml-text.js.map +1 -1
- package/dist/xsd-required-string.d.ts +38 -0
- package/dist/xsd-required-string.d.ts.map +1 -0
- package/dist/xsd-required-string.js +158 -0
- package/dist/xsd-required-string.js.map +1 -0
- package/package.json +2 -2
package/dist/writer.js
CHANGED
|
@@ -8,8 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import JSZip from 'jszip';
|
|
10
10
|
import { requireCameraChoice, writeOrthogonalCamera, writePerspectiveCamera, } from './writer-camera.js';
|
|
11
|
-
import {
|
|
11
|
+
import { writeLine, writeClippingPlane, writeBitmap, writeHeader, writeBimSnippet, writeDocumentReference, } from './writer-markup-elements.js';
|
|
12
|
+
import { xsdInt } from './numeric.js';
|
|
13
|
+
import { escapeXml } from './xml-text.js';
|
|
14
|
+
import { XML_WHITESPACE_ONLY, xsdDateTime, xsdOptionalDateTime, xsdRequiredString, } from './xsd-required-string.js';
|
|
12
15
|
import { generateUuid } from '@ifc-lite/encoding';
|
|
16
|
+
import { viewpointFileName } from './writer-viewpoint-filename.js';
|
|
13
17
|
/**
|
|
14
18
|
* Write a BCFProject to a .bcfzip file
|
|
15
19
|
*
|
|
@@ -65,21 +69,34 @@ function writeVersionFile(zip, version) {
|
|
|
65
69
|
* Uses buildingSMART standard format
|
|
66
70
|
*
|
|
67
71
|
* The root element is renamed between versions: 2.1's project.xsd declares
|
|
68
|
-
* root element `<ProjectExtension>`
|
|
69
|
-
*
|
|
70
|
-
*
|
|
72
|
+
* root element `<ProjectExtension>` as the sequence `Project?`,
|
|
73
|
+
* `ExtensionSchema` -- where `ExtensionSchema` is an `xs:anyURI` with no
|
|
74
|
+
* `minOccurs`, so it is REQUIRED; 3.0's project.xsd instead declares root
|
|
71
75
|
* element `<ProjectInfo>` containing just a required `<Project>`, and has no
|
|
72
76
|
* `ProjectExtension`/`ExtensionSchema` concept at all. The inner
|
|
73
77
|
* `<Project ProjectId="...">`/`<Name>` shape is unchanged between versions.
|
|
78
|
+
*
|
|
79
|
+
* `<ExtensionSchema>` used to be omitted entirely, which made `project.bcfp`
|
|
80
|
+
* fail 2.1 validation ("Element 'ProjectExtension': Missing child element(s).
|
|
81
|
+
* Expected is ( ExtensionSchema )") in EVERY 2.1 archive this package writes
|
|
82
|
+
* -- 2.1 is the default version and `createBCFProject` always sets a project
|
|
83
|
+
* id, so the file is always present. It is now emitted empty. An empty
|
|
84
|
+
* `xs:anyURI` is a valid instance of the type (verified against the vendored
|
|
85
|
+
* schema), and it is the honest value here: this writer ships no
|
|
86
|
+
* `extensions.xsd`, and `BCFProject.extensions` is not serialized, so there is
|
|
87
|
+
* no extension schema to point at. Naming a file we do not write would trade
|
|
88
|
+
* the schema error for a dangling reference; omitting the element keeps the
|
|
89
|
+
* schema error. Empty does neither.
|
|
74
90
|
*/
|
|
75
91
|
function writeProjectFile(zip, project, version) {
|
|
76
92
|
const projectId = project.projectId || generateUuid();
|
|
77
93
|
const nameElement = project.name ? `\n <Name>${escapeXml(project.name)}</Name>` : '';
|
|
78
94
|
const rootElement = version === '3.0' ? 'ProjectInfo' : 'ProjectExtension';
|
|
95
|
+
const extensionSchema = version === '3.0' ? '' : '\n <ExtensionSchema/>';
|
|
79
96
|
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
80
97
|
<${rootElement} xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
81
|
-
<Project ProjectId="${projectId}">${nameElement}
|
|
82
|
-
</Project
|
|
98
|
+
<Project ProjectId="${escapeXml(projectId)}">${nameElement}
|
|
99
|
+
</Project>${extensionSchema}
|
|
83
100
|
</${rootElement}>`;
|
|
84
101
|
zip.file('project.bcfp', content);
|
|
85
102
|
}
|
|
@@ -92,33 +109,18 @@ function shortGuidHash(guid) {
|
|
|
92
109
|
}
|
|
93
110
|
return h.toString(16).padStart(8, '0');
|
|
94
111
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Sanitize a topic GUID for use as a zip folder name (zip-slip guard).
|
|
97
|
-
*
|
|
98
|
-
* A topic GUID is parsed unvalidated from untrusted markup XML on read, so it
|
|
99
|
-
* can carry path separators or `..`. Using it verbatim as a zip path component
|
|
100
|
-
* on a read-modify-save would let a crafted GUID (`../../evil`) write outside
|
|
101
|
-
* the archive root. Restrict the name to safe filename characters and collapse
|
|
102
|
-
* any dot-run so it can never traverse. The real GUID is still written verbatim
|
|
103
|
-
* as the markup `<Topic Guid>` attribute, which is what readers key off.
|
|
104
|
-
*
|
|
105
|
-
* Sanitization is lossy, so two distinct GUIDs can map to one name (`a?b` and
|
|
106
|
-
* `a:b` both give `a_b`), which would silently overwrite a topic folder. Any
|
|
107
|
-
* name that sanitization changed gets a hash of the original GUID appended,
|
|
108
|
-
* and `usedNames` catches the remaining collisions with a counter suffix.
|
|
109
|
-
*/
|
|
110
|
-
function sanitizeTopicFolderName(guid, usedNames) {
|
|
111
|
-
return sanitizeZipComponent(guid, usedNames, 'topic');
|
|
112
|
-
}
|
|
113
112
|
/**
|
|
114
113
|
* Sanitize an arbitrary GUID for use as a zip path component (zip-slip guard).
|
|
115
114
|
*
|
|
116
115
|
* Shared by both the topic-folder name and the viewpoint file base name: a
|
|
117
116
|
* viewpoint GUID is parsed just as unvalidated from untrusted markup XML on
|
|
118
117
|
* read (reader.ts `parseViewpointContent`) as a topic GUID is, so it carries
|
|
119
|
-
* the same path-traversal hazard
|
|
120
|
-
*
|
|
121
|
-
*
|
|
118
|
+
* the same path-traversal hazard (`../../evil` as a topic GUID would write
|
|
119
|
+
* outside the archive root). Restrict the name to safe filename characters and
|
|
120
|
+
* collapse any dot-run so it can never traverse. `fallback` is used when
|
|
121
|
+
* sanitization strips the name to nothing. The real GUID is still written
|
|
122
|
+
* verbatim as the markup `<Topic Guid>`/`<Viewpoint Guid>` attribute, which is
|
|
123
|
+
* what readers key off.
|
|
122
124
|
*
|
|
123
125
|
* Sanitization is lossy, so two distinct GUIDs can map to one name, which
|
|
124
126
|
* would silently overwrite an entry. Any name that sanitization changed gets
|
|
@@ -141,13 +143,10 @@ function sanitizeZipComponent(raw, usedNames, fallback) {
|
|
|
141
143
|
usedNames.add(candidate);
|
|
142
144
|
return candidate;
|
|
143
145
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Write a topic folder with all its contents
|
|
146
|
-
*/
|
|
146
|
+
/** Write a topic folder with all its contents. */
|
|
147
147
|
async function writeTopicFolder(zip, topic, version, usedFolderNames) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return;
|
|
148
|
+
// Every entry below passes createFolders:false: JSZip otherwise adds a "<guid>/" directory entry, which Solibri refuses (#3612).
|
|
149
|
+
const folderName = sanitizeZipComponent(topic.guid, usedFolderNames, 'topic');
|
|
151
150
|
// Sanitize each viewpoint GUID once, up front, so the markup <Viewpoint>
|
|
152
151
|
// reference (written below) and the zip entry (written in
|
|
153
152
|
// writeViewpointFiles) always agree on the same file name. A topic-scoped
|
|
@@ -155,11 +154,21 @@ async function writeTopicFolder(zip, topic, version, usedFolderNames) {
|
|
|
155
154
|
// the same way topic folders are disambiguated above.
|
|
156
155
|
const usedViewpointNames = new Set();
|
|
157
156
|
const viewpointBaseNames = topic.viewpoints.map((vp) => sanitizeZipComponent(vp.guid, usedViewpointNames, 'viewpoint'));
|
|
157
|
+
// Derive the actual archive file names ONCE, so viewpointXml (markup) and
|
|
158
|
+
// writeViewpointFiles (archive entry) can never disagree (#3612).
|
|
159
|
+
const viewpointFileNames = viewpointBaseNames.map((baseName, i) => viewpointFileName(baseName, i));
|
|
160
|
+
// Resolve each viewpoint's snapshot ONCE, before markup.bcf is written, so
|
|
161
|
+
// the `<Snapshot>` reference and the archive entry it names are driven off
|
|
162
|
+
// the SAME decode attempt and can never disagree (#3962): previously the
|
|
163
|
+
// reference was written based on `viewpoint.snapshot`/`snapshotData`'s mere
|
|
164
|
+
// presence, and the actual file write -- which could fail decoding a
|
|
165
|
+
// malformed `data:` URL -- happened later, independently.
|
|
166
|
+
const snapshotBytes = topic.viewpoints.map((vp) => resolveSnapshotBytes(vp));
|
|
158
167
|
// Write markup.bcf
|
|
159
|
-
writeMarkupFile(
|
|
168
|
+
writeMarkupFile(zip, folderName, topic, version, viewpointFileNames, snapshotBytes);
|
|
160
169
|
// Write viewpoints
|
|
161
170
|
for (let i = 0; i < topic.viewpoints.length; i++) {
|
|
162
|
-
await writeViewpointFiles(
|
|
171
|
+
await writeViewpointFiles(zip, folderName, topic.viewpoints[i], viewpointFileNames[i], version, snapshotBytes[i]);
|
|
163
172
|
}
|
|
164
173
|
}
|
|
165
174
|
/**
|
|
@@ -176,16 +185,43 @@ function snapshotExt(viewpoint) {
|
|
|
176
185
|
return 'png';
|
|
177
186
|
}
|
|
178
187
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
188
|
+
* Resolve a viewpoint's snapshot to the exact bytes/string that will be
|
|
189
|
+
* written to the archive, or `undefined` when there is nothing writable --
|
|
190
|
+
* computed once, up front, so both the markup `<Snapshot>` reference and the
|
|
191
|
+
* zip entry are driven off this single result and can never disagree (#3962).
|
|
192
|
+
*
|
|
193
|
+
* A malformed `data:` URL still only drops that one viewpoint's snapshot
|
|
194
|
+
* rather than aborting the whole export, matching this file's existing
|
|
195
|
+
* "skip the one bad piece, keep going" policy -- but unlike before, the
|
|
196
|
+
* warning below now corresponds to an omitted markup reference too, not just
|
|
197
|
+
* an omitted file.
|
|
181
198
|
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
199
|
+
function resolveSnapshotBytes(viewpoint) {
|
|
200
|
+
if (viewpoint.snapshotData) {
|
|
201
|
+
return viewpoint.snapshotData;
|
|
202
|
+
}
|
|
203
|
+
if (viewpoint.snapshot && viewpoint.snapshot.startsWith('data:')) {
|
|
204
|
+
const base64Data = viewpoint.snapshot.split(',')[1];
|
|
205
|
+
if (!base64Data)
|
|
206
|
+
return undefined;
|
|
207
|
+
try {
|
|
208
|
+
const binaryString = atob(base64Data);
|
|
209
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
210
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
211
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
212
|
+
}
|
|
213
|
+
return bytes;
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
console.warn(`[BCF] Skipping malformed snapshot data URL for viewpoint "${viewpoint.guid}": ` +
|
|
217
|
+
`omitting both its <Snapshot> markup reference and its archive entry`, e);
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
/** Write markup.bcf -- buildingSMART standard format. */
|
|
224
|
+
function writeMarkupFile(zip, folderName, topic, version, viewpointFileNames, snapshotBytes) {
|
|
189
225
|
// BCF 3.0's markup.xsd tightens `Topic/@TopicType` and `Topic/@TopicStatus`
|
|
190
226
|
// from optional (2.1) to `use="required"`. Omitting the attribute -
|
|
191
227
|
// which is what 2.1 output does when the value is unset - produces
|
|
@@ -254,16 +290,18 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
254
290
|
}
|
|
255
291
|
}
|
|
256
292
|
}
|
|
257
|
-
content += `\n <CreationDate>${
|
|
258
|
-
content += `\n <CreationAuthor>${
|
|
259
|
-
|
|
260
|
-
|
|
293
|
+
content += `\n <CreationDate>${xsdDateTime(topic.creationDate, 'Topic/CreationDate', `topic "${topic.guid}"`)}</CreationDate>`;
|
|
294
|
+
content += `\n <CreationAuthor>${xsdRequiredString(topic.creationAuthor, 'Topic/CreationAuthor', `topic "${topic.guid}"`, version)}</CreationAuthor>`;
|
|
295
|
+
const topicModifiedDate = xsdOptionalDateTime(topic.modifiedDate);
|
|
296
|
+
if (topicModifiedDate) {
|
|
297
|
+
content += `\n <ModifiedDate>${topicModifiedDate}</ModifiedDate>`;
|
|
261
298
|
// BCF spec requires ModifiedAuthor when ModifiedDate is present
|
|
262
299
|
const modifiedAuthor = topic.modifiedAuthor || topic.creationAuthor;
|
|
263
|
-
content += `\n <ModifiedAuthor>${
|
|
300
|
+
content += `\n <ModifiedAuthor>${xsdRequiredString(modifiedAuthor, 'Topic/ModifiedAuthor', `topic "${topic.guid}"`, version)}</ModifiedAuthor>`;
|
|
264
301
|
}
|
|
265
|
-
|
|
266
|
-
|
|
302
|
+
const dueDate = xsdOptionalDateTime(topic.dueDate);
|
|
303
|
+
if (dueDate) {
|
|
304
|
+
content += `\n <DueDate>${dueDate}</DueDate>`;
|
|
267
305
|
}
|
|
268
306
|
if (topic.assignedTo) {
|
|
269
307
|
content += `\n <AssignedTo>${escapeXml(topic.assignedTo)}</AssignedTo>`;
|
|
@@ -286,8 +324,8 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
286
324
|
// directly under <Topic> (buildingSMART/BCF-XML markup.xsd, Topic).
|
|
287
325
|
if (version === '3.0')
|
|
288
326
|
content += `\n <DocumentReferences>`;
|
|
289
|
-
for (
|
|
290
|
-
content += writeDocumentReference(
|
|
327
|
+
for (let i = 0; i < topic.documentReferences.length; i++) {
|
|
328
|
+
content += writeDocumentReference(topic.documentReferences[i], version, topic.guid, i);
|
|
291
329
|
}
|
|
292
330
|
if (version === '3.0')
|
|
293
331
|
content += `\n </DocumentReferences>`;
|
|
@@ -311,14 +349,15 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
311
349
|
const commentXml = (indent) => topic.comments
|
|
312
350
|
.map((comment) => {
|
|
313
351
|
let c = `\n${indent}<Comment Guid="${escapeXml(comment.guid)}">`;
|
|
314
|
-
c += `\n${indent} <Date>${
|
|
315
|
-
c += `\n${indent} <Author>${
|
|
352
|
+
c += `\n${indent} <Date>${xsdDateTime(comment.date, 'Comment/Date', `comment "${comment.guid}"`)}</Date>`;
|
|
353
|
+
c += `\n${indent} <Author>${xsdRequiredString(comment.author, 'Comment/Author', `comment "${comment.guid}"`, version)}</Author>`;
|
|
316
354
|
c += `\n${indent} <Comment>${escapeXml(comment.comment)}</Comment>`;
|
|
317
355
|
if (comment.viewpointGuid) {
|
|
318
356
|
c += `\n${indent} <Viewpoint Guid="${escapeXml(comment.viewpointGuid)}"/>`;
|
|
319
357
|
}
|
|
320
|
-
|
|
321
|
-
|
|
358
|
+
const commentModifiedDate = xsdOptionalDateTime(comment.modifiedDate);
|
|
359
|
+
if (commentModifiedDate) {
|
|
360
|
+
c += `\n${indent} <ModifiedDate>${commentModifiedDate}</ModifiedDate>`;
|
|
322
361
|
}
|
|
323
362
|
if (comment.modifiedAuthor) {
|
|
324
363
|
c += `\n${indent} <ModifiedAuthor>${escapeXml(comment.modifiedAuthor)}</ModifiedAuthor>`;
|
|
@@ -337,17 +376,18 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
337
376
|
const viewpointEntryTag = version === '3.0' ? 'ViewPoint' : 'Viewpoints';
|
|
338
377
|
const viewpointXml = (indent) => topic.viewpoints
|
|
339
378
|
.map((viewpoint, i) => {
|
|
340
|
-
//
|
|
341
|
-
//
|
|
342
|
-
//
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
const baseName = viewpointBaseNames[i];
|
|
346
|
-
const filename = `Viewpoint_${baseName}.bcfv`;
|
|
347
|
-
const snapshotName = `Snapshot_${baseName}.${snapshotExt(viewpoint)}`;
|
|
379
|
+
// Shared viewpointFileName() result (#3612) -- the SAME one
|
|
380
|
+
// writeViewpointFiles uses, so the two can never disagree. The real
|
|
381
|
+
// GUID is still written verbatim as the Guid attribute below.
|
|
382
|
+
const filename = viewpointFileNames[i].viewpointFile;
|
|
383
|
+
const snapshotName = `${viewpointFileNames[i].snapshotBase}.${snapshotExt(viewpoint)}`;
|
|
348
384
|
let v = `\n${indent}<${viewpointEntryTag} Guid="${escapeXml(viewpoint.guid)}">`;
|
|
349
385
|
v += `\n${indent} <Viewpoint>${filename}</Viewpoint>`;
|
|
350
|
-
|
|
386
|
+
// Driven off the ALREADY-resolved snapshot bytes (see
|
|
387
|
+
// writeTopicFolder), not off `viewpoint.snapshot`/`snapshotData`'s
|
|
388
|
+
// mere presence -- so this reference is only emitted when the entry
|
|
389
|
+
// it names is actually going into the archive (#3962).
|
|
390
|
+
if (snapshotBytes[i] !== undefined) {
|
|
351
391
|
v += `\n${indent} <Snapshot>${snapshotName}</Snapshot>`;
|
|
352
392
|
}
|
|
353
393
|
v += `\n${indent}</${viewpointEntryTag}>`;
|
|
@@ -378,18 +418,16 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
378
418
|
content += viewpointXml(' ');
|
|
379
419
|
}
|
|
380
420
|
content += `\n</Markup>`;
|
|
381
|
-
|
|
421
|
+
zip.file(`${folderName}/markup.bcf`, content, { createFolders: false });
|
|
382
422
|
}
|
|
383
423
|
/**
|
|
384
424
|
* Write viewpoint files (bcfv and snapshot)
|
|
385
425
|
*/
|
|
386
|
-
async function writeViewpointFiles(
|
|
387
|
-
//
|
|
388
|
-
// the
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
const filename = `Viewpoint_${baseName}.bcfv`;
|
|
392
|
-
const snapshotName = `Snapshot_${baseName}.${snapshotExt(viewpoint)}`;
|
|
426
|
+
async function writeViewpointFiles(zip, folderName, viewpoint, fileNames, version, snapshot) {
|
|
427
|
+
// Shared viewpointFileName() result (#3612) -- the SAME one the caller
|
|
428
|
+
// wrote into the markup reference, so the two can never disagree.
|
|
429
|
+
const filename = fileNames.viewpointFile;
|
|
430
|
+
const snapshotName = `${fileNames.snapshotBase}.${snapshotExt(viewpoint)}`;
|
|
393
431
|
// Write viewpoint XML - use buildingSMART standard format
|
|
394
432
|
let content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
395
433
|
<VisualizationInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="${escapeXml(viewpoint.guid)}">`;
|
|
@@ -449,28 +487,13 @@ async function writeViewpointFiles(folder, viewpoint, baseName, version) {
|
|
|
449
487
|
}
|
|
450
488
|
}
|
|
451
489
|
content += `\n</VisualizationInfo>`;
|
|
452
|
-
|
|
453
|
-
// Write snapshot
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
const base64Data = viewpoint.snapshot.split(',')[1];
|
|
460
|
-
if (base64Data) {
|
|
461
|
-
try {
|
|
462
|
-
const binaryString = atob(base64Data);
|
|
463
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
464
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
465
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
466
|
-
}
|
|
467
|
-
folder.file(snapshotName, bytes);
|
|
468
|
-
}
|
|
469
|
-
catch (e) {
|
|
470
|
-
// Skip a single malformed snapshot data URL rather than aborting the export
|
|
471
|
-
console.warn('[BCF] Skipping malformed snapshot data URL:', e);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
490
|
+
zip.file(`${folderName}/${filename}`, content, { createFolders: false });
|
|
491
|
+
// Write the snapshot the caller already resolved (see writeTopicFolder /
|
|
492
|
+
// resolveSnapshotBytes) -- this function no longer decodes the `data:` URL
|
|
493
|
+
// itself, so it can never write a file that the markup reference (written
|
|
494
|
+
// earlier, off the same resolution) disagrees with (#3962).
|
|
495
|
+
if (snapshot !== undefined) {
|
|
496
|
+
zip.file(`${folderName}/${snapshotName}`, snapshot, { createFolders: false });
|
|
474
497
|
}
|
|
475
498
|
}
|
|
476
499
|
/**
|
|
@@ -608,152 +631,4 @@ function writeColoringEntry(coloring, version) {
|
|
|
608
631
|
content += `\n </Color>`;
|
|
609
632
|
return content;
|
|
610
633
|
}
|
|
611
|
-
/**
|
|
612
|
-
* Write line XML
|
|
613
|
-
*/
|
|
614
|
-
function writeLine(line, where) {
|
|
615
|
-
return `\n <Line>${xsdPointElement('StartPoint', line.startPoint, ' ', where)}${xsdPointElement('EndPoint', line.endPoint, ' ', where)}
|
|
616
|
-
</Line>`;
|
|
617
|
-
}
|
|
618
|
-
/**
|
|
619
|
-
* Write clipping plane XML
|
|
620
|
-
*/
|
|
621
|
-
function writeClippingPlane(plane, where) {
|
|
622
|
-
return `\n <ClippingPlane>${xsdPointElement('Location', plane.location, ' ', where)}${xsdPointElement('Direction', plane.direction, ' ', where)}
|
|
623
|
-
</ClippingPlane>`;
|
|
624
|
-
}
|
|
625
|
-
/**
|
|
626
|
-
* Write bitmap XML
|
|
627
|
-
*
|
|
628
|
-
* Two more shape differences beyond the `<Bitmaps>` wrapper (see the call
|
|
629
|
-
* site in {@link writeViewpointFiles}), both against v2_1/visinfo.xsd vs
|
|
630
|
-
* v3_0/visinfo.xsd:
|
|
631
|
-
* - The format element's name changes: 2.1 nests it as `<Bitmap>` (same tag
|
|
632
|
-
* name as the outer per-entry element -- `<Bitmap><Bitmap>PNG</Bitmap>...`);
|
|
633
|
-
* 3.0 renamed it `<Format>`.
|
|
634
|
-
* - The `BitmapFormat` enum's case changes: 2.1 is uppercase (`PNG`, `JPG`);
|
|
635
|
-
* 3.0's simpleType only accepts lowercase (`png`, `jpg`) -- validation
|
|
636
|
-
* fails with "The value 'PNG' is not an element of the set {'png','jpg'}"
|
|
637
|
-
* otherwise. `BCFBitmap.format` stays typed `'PNG' | 'JPG'`; we only
|
|
638
|
-
* lowercase it on the wire for 3.0.
|
|
639
|
-
*/
|
|
640
|
-
function writeBitmap(bitmap, version, where) {
|
|
641
|
-
const formatTag = version === '3.0' ? 'Format' : 'Bitmap';
|
|
642
|
-
const formatValue = version === '3.0' ? bitmap.format.toLowerCase() : bitmap.format;
|
|
643
|
-
return `\n <Bitmap>
|
|
644
|
-
<${formatTag}>${formatValue}</${formatTag}>
|
|
645
|
-
<Reference>${escapeXml(bitmap.reference)}</Reference>${xsdPointElement('Location', bitmap.location, ' ', where)}${xsdPointElement('Normal', bitmap.normal, ' ', where)}${xsdPointElement('Up', bitmap.up, ' ', where)}
|
|
646
|
-
<Height>${xsdDouble(bitmap.height, 'Bitmap/Height', where)}</Height>
|
|
647
|
-
</Bitmap>`;
|
|
648
|
-
}
|
|
649
|
-
/**
|
|
650
|
-
* Write the markup `<Header>` block (source IFC files).
|
|
651
|
-
*
|
|
652
|
-
* The container differs by BCF version: 2.1 nests `<File>` directly under
|
|
653
|
-
* `<Header>`, while 3.0 wraps them in a `<Files>` element. The `<File>` shape
|
|
654
|
-
* (IfcProject / IfcSpatialStructureElement / isExternal attributes; Filename,
|
|
655
|
-
* Date, Reference children) is identical across both.
|
|
656
|
-
*/
|
|
657
|
-
function writeHeader(files, version) {
|
|
658
|
-
const fileIndent = version === '3.0' ? ' ' : ' ';
|
|
659
|
-
const fileXml = files.map((f) => writeHeaderFile(f, fileIndent, version)).join('');
|
|
660
|
-
if (version === '3.0') {
|
|
661
|
-
return `\n <Header>\n <Files>${fileXml}\n </Files>\n </Header>`;
|
|
662
|
-
}
|
|
663
|
-
return `\n <Header>${fileXml}\n </Header>`;
|
|
664
|
-
}
|
|
665
|
-
/** Write a single `<File>` entry inside the markup `<Header>`. */
|
|
666
|
-
function writeHeaderFile(file, indent, version) {
|
|
667
|
-
// isExternal defaults to true (an unresolved reference is treated as external).
|
|
668
|
-
const isExternal = file.isExternal ?? true;
|
|
669
|
-
// BCF 2.1 spells the attribute `isExternal`; 3.0 renamed it `IsExternal`.
|
|
670
|
-
const isExternalAttr = version === '3.0' ? 'IsExternal' : 'isExternal';
|
|
671
|
-
let attrs = '';
|
|
672
|
-
if (file.ifcProject) {
|
|
673
|
-
attrs += ` IfcProject="${escapeXml(file.ifcProject)}"`;
|
|
674
|
-
}
|
|
675
|
-
if (file.ifcSpatialStructureElement) {
|
|
676
|
-
attrs += ` IfcSpatialStructureElement="${escapeXml(file.ifcSpatialStructureElement)}"`;
|
|
677
|
-
}
|
|
678
|
-
attrs += ` ${isExternalAttr}="${isExternal}"`;
|
|
679
|
-
let content = `\n${indent}<File${attrs}>`;
|
|
680
|
-
if (file.filename) {
|
|
681
|
-
content += `\n${indent} <Filename>${escapeXml(file.filename)}</Filename>`;
|
|
682
|
-
}
|
|
683
|
-
if (file.date) {
|
|
684
|
-
content += `\n${indent} <Date>${escapeXml(file.date)}</Date>`;
|
|
685
|
-
}
|
|
686
|
-
if (file.reference) {
|
|
687
|
-
content += `\n${indent} <Reference>${escapeXml(file.reference)}</Reference>`;
|
|
688
|
-
}
|
|
689
|
-
content += `\n${indent}</File>`;
|
|
690
|
-
return content;
|
|
691
|
-
}
|
|
692
|
-
/**
|
|
693
|
-
* Write BimSnippet XML
|
|
694
|
-
*
|
|
695
|
-
* BCF 2.1 spells the attribute `isExternal`; 3.0 renamed it `IsExternal`
|
|
696
|
-
* (buildingSMART/BCF-XML markup.xsd, BimSnippet's IsExternal attribute) —
|
|
697
|
-
* same rename as the Header `<File>` attribute in {@link writeHeaderFile}.
|
|
698
|
-
*/
|
|
699
|
-
function writeBimSnippet(snippet, version) {
|
|
700
|
-
// Caller guarantees referenceSchema is present (see writeMarkupFile); both
|
|
701
|
-
// Reference and ReferenceSchema are required by the BCF schema.
|
|
702
|
-
const isExternalAttr = version === '3.0' ? 'IsExternal' : 'isExternal';
|
|
703
|
-
let content = `\n <BimSnippet SnippetType="${escapeXml(snippet.snippetType)}" ${isExternalAttr}="${snippet.isExternal}">`;
|
|
704
|
-
content += `\n <Reference>${escapeXml(snippet.reference)}</Reference>`;
|
|
705
|
-
content += `\n <ReferenceSchema>${escapeXml(snippet.referenceSchema ?? '')}</ReferenceSchema>`;
|
|
706
|
-
content += `\n </BimSnippet>`;
|
|
707
|
-
return content;
|
|
708
|
-
}
|
|
709
|
-
/**
|
|
710
|
-
* Write DocumentReference XML
|
|
711
|
-
*
|
|
712
|
-
* BCF 2.1 and 3.0 diverge structurally here, not just by attribute casing:
|
|
713
|
-
* 2.1 has `<ReferencedDocument>` (a string, plus an `isExternal` flag on
|
|
714
|
-
* whether it's a URL); 3.0 replaced both with `<DocumentGuid>` (a reference
|
|
715
|
-
* into project.bcfp's Documents) or `<Url>`, and dropped `isExternal`
|
|
716
|
-
* entirely (buildingSMART/BCF-XML markup.xsd, release_3_0 DocumentReference).
|
|
717
|
-
* `documentGuid`/`url` are preferred when present; `referencedDocument` is
|
|
718
|
-
* the 2.1-shaped fallback so 2.1-authored data written as 3.0 still emits
|
|
719
|
-
* something.
|
|
720
|
-
*/
|
|
721
|
-
function writeDocumentReference(docRef, version) {
|
|
722
|
-
const guidAttr = docRef.guid ? ` Guid="${escapeXml(docRef.guid)}"` : '';
|
|
723
|
-
if (version === '3.0') {
|
|
724
|
-
let content = `\n <DocumentReference${guidAttr}>`;
|
|
725
|
-
if (docRef.documentGuid) {
|
|
726
|
-
content += `\n <DocumentGuid>${escapeXml(docRef.documentGuid)}</DocumentGuid>`;
|
|
727
|
-
}
|
|
728
|
-
else {
|
|
729
|
-
const url = docRef.url ?? docRef.referencedDocument;
|
|
730
|
-
if (url) {
|
|
731
|
-
content += `\n <Url>${escapeXml(url)}</Url>`;
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
if (docRef.description) {
|
|
735
|
-
content += `\n <Description>${escapeXml(docRef.description)}</Description>`;
|
|
736
|
-
}
|
|
737
|
-
content += `\n </DocumentReference>`;
|
|
738
|
-
return content;
|
|
739
|
-
}
|
|
740
|
-
let content = `\n <DocumentReference${guidAttr} isExternal="${docRef.isExternal ?? false}">`;
|
|
741
|
-
content += `\n <ReferencedDocument>${escapeXml(docRef.referencedDocument ?? docRef.url ?? '')}</ReferencedDocument>`;
|
|
742
|
-
if (docRef.description) {
|
|
743
|
-
content += `\n <Description>${escapeXml(docRef.description)}</Description>`;
|
|
744
|
-
}
|
|
745
|
-
content += `\n </DocumentReference>`;
|
|
746
|
-
return content;
|
|
747
|
-
}
|
|
748
|
-
/**
|
|
749
|
-
* Escape XML special characters
|
|
750
|
-
*/
|
|
751
|
-
function escapeXml(str) {
|
|
752
|
-
return str
|
|
753
|
-
.replace(/&/g, '&')
|
|
754
|
-
.replace(/</g, '<')
|
|
755
|
-
.replace(/>/g, '>')
|
|
756
|
-
.replace(/"/g, '"')
|
|
757
|
-
.replace(/'/g, ''');
|
|
758
|
-
}
|
|
759
634
|
//# sourceMappingURL=writer.js.map
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|