@ifc-lite/bcf 2.0.0 → 3.0.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 +12 -1
- 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/numeric.d.ts +64 -1
- package/dist/numeric.d.ts.map +1 -1
- package/dist/numeric.js +81 -1
- package/dist/numeric.js.map +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.js +28 -30
- 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 +46 -0
- package/dist/writer-camera.d.ts.map +1 -0
- package/dist/writer-camera.js +131 -0
- package/dist/writer-camera.js.map +1 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +118 -198
- 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 +3 -3
package/dist/ids-reporter.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { generateUuid } from '@ifc-lite/encoding';
|
|
5
|
+
import { DEFAULT_ASPECT_RATIO, computeCameraFromBounds, requireAspectRatioOption, requireCamerasForVersion, unionBoundsForEveryKey, } from './ids-camera.js';
|
|
5
6
|
// ============================================================================
|
|
6
7
|
// Internal BCF helpers (avoiding index.js import to prevent jszip dependency)
|
|
7
8
|
// ============================================================================
|
|
@@ -68,7 +69,10 @@ const MAX_COMMENTS_PER_TOPIC = 50;
|
|
|
68
69
|
* @returns BCF project ready for writeBCF()
|
|
69
70
|
*/
|
|
70
71
|
export function createBCFFromIDSReport(report, options = {}) {
|
|
71
|
-
const { author = DEFAULT_AUTHOR, projectName, version = '2.1', topicGrouping = 'per-entity', includePassingEntities = false, failureTopicType = DEFAULT_FAILURE_TOPIC_TYPE, passTopicType = DEFAULT_PASS_TOPIC_TYPE, maxTopics = DEFAULT_MAX_TOPICS, failureColor = DEFAULT_FAILURE_COLOR, entityBounds, entitySnapshots, } = options;
|
|
72
|
+
const { author = DEFAULT_AUTHOR, projectName, version = '2.1', topicGrouping = 'per-entity', includePassingEntities = false, failureTopicType = DEFAULT_FAILURE_TOPIC_TYPE, passTopicType = DEFAULT_PASS_TOPIC_TYPE, maxTopics = DEFAULT_MAX_TOPICS, failureColor = DEFAULT_FAILURE_COLOR, aspectRatio: requestedAspectRatio = DEFAULT_ASPECT_RATIO, entityBounds, entitySnapshots, } = options;
|
|
73
|
+
// Checked here, where the caller set it, rather than left to writeBCF --
|
|
74
|
+
// which can only name a viewpoint GUID this file generated (#3849).
|
|
75
|
+
const aspectRatio = requireAspectRatioOption(requestedAspectRatio);
|
|
72
76
|
const project = createProject(projectName ?? report.title, version);
|
|
73
77
|
switch (topicGrouping) {
|
|
74
78
|
case 'per-entity':
|
|
@@ -79,6 +83,7 @@ export function createBCFFromIDSReport(report, options = {}) {
|
|
|
79
83
|
passTopicType,
|
|
80
84
|
maxTopics,
|
|
81
85
|
failureColor,
|
|
86
|
+
aspectRatio,
|
|
82
87
|
entityBounds,
|
|
83
88
|
entitySnapshots,
|
|
84
89
|
});
|
|
@@ -89,6 +94,7 @@ export function createBCFFromIDSReport(report, options = {}) {
|
|
|
89
94
|
failureTopicType,
|
|
90
95
|
maxTopics,
|
|
91
96
|
failureColor,
|
|
97
|
+
aspectRatio,
|
|
92
98
|
entityBounds,
|
|
93
99
|
entitySnapshots,
|
|
94
100
|
});
|
|
@@ -99,11 +105,15 @@ export function createBCFFromIDSReport(report, options = {}) {
|
|
|
99
105
|
failureTopicType,
|
|
100
106
|
maxTopics,
|
|
101
107
|
failureColor,
|
|
108
|
+
aspectRatio,
|
|
102
109
|
entityBounds,
|
|
103
110
|
entitySnapshots,
|
|
104
111
|
});
|
|
105
112
|
break;
|
|
106
113
|
}
|
|
114
|
+
// Refuse an unwritable 3.0 project here, where the caller can still see
|
|
115
|
+
// which option produced it, rather than leaving it to writeBCF (#3849).
|
|
116
|
+
requireCamerasForVersion(project);
|
|
107
117
|
return project;
|
|
108
118
|
}
|
|
109
119
|
/**
|
|
@@ -146,6 +156,13 @@ function addTruncationNoticeTopic(project, author, remaining, itemLabel) {
|
|
|
146
156
|
});
|
|
147
157
|
project.topics.set(topic.guid, topic);
|
|
148
158
|
}
|
|
159
|
+
// ============================================================================
|
|
160
|
+
// Per-entity grouping (default — recommended)
|
|
161
|
+
// ============================================================================
|
|
162
|
+
/** How `entityBounds` and `entitySnapshots` are keyed. */
|
|
163
|
+
function boundsKeyOf(entity) {
|
|
164
|
+
return `${entity.modelId}:${entity.expressId}`;
|
|
165
|
+
}
|
|
149
166
|
function buildTopicsPerEntity(project, report, opts) {
|
|
150
167
|
let topicCount = 0;
|
|
151
168
|
let qualifyingCount = 0;
|
|
@@ -189,10 +206,10 @@ function buildTopicsPerEntity(project, report, opts) {
|
|
|
189
206
|
// Viewpoint MUST be created first so comments can reference it via viewpointGuid
|
|
190
207
|
let viewpointGuid;
|
|
191
208
|
if (entity.globalId) {
|
|
192
|
-
const boundsKey =
|
|
209
|
+
const boundsKey = boundsKeyOf(entity);
|
|
193
210
|
const bounds = opts.entityBounds?.get(boundsKey);
|
|
194
211
|
const snapshot = opts.entitySnapshots?.get(boundsKey);
|
|
195
|
-
const viewpoint = buildEntityViewpoint(entity.globalId, isFailed ? opts.failureColor : undefined, bounds, snapshot);
|
|
212
|
+
const viewpoint = buildEntityViewpoint(entity.globalId, isFailed ? opts.failureColor : undefined, bounds, opts.aspectRatio, snapshot);
|
|
196
213
|
topic.viewpoints.push(viewpoint);
|
|
197
214
|
viewpointGuid = viewpoint.guid;
|
|
198
215
|
}
|
|
@@ -239,7 +256,7 @@ function buildTopicsPerSpecification(project, report, opts) {
|
|
|
239
256
|
.filter((g) => g !== undefined);
|
|
240
257
|
let viewpointGuid;
|
|
241
258
|
if (failedGuids.length > 0) {
|
|
242
|
-
const viewpoint = buildMultiEntityViewpoint(failedGuids, opts.failureColor);
|
|
259
|
+
const viewpoint = buildMultiEntityViewpoint(failedGuids, opts.failureColor, unionBoundsForEveryKey(failedEntities.map(boundsKeyOf), opts.entityBounds), opts.aspectRatio);
|
|
243
260
|
topic.viewpoints.push(viewpoint);
|
|
244
261
|
viewpointGuid = viewpoint.guid;
|
|
245
262
|
}
|
|
@@ -313,10 +330,10 @@ function buildTopicsPerRequirement(project, report, opts) {
|
|
|
313
330
|
// Viewpoint for single entity (must be first for comment linking)
|
|
314
331
|
let viewpointGuid;
|
|
315
332
|
if (entity.globalId) {
|
|
316
|
-
const boundsKey =
|
|
333
|
+
const boundsKey = boundsKeyOf(entity);
|
|
317
334
|
const bounds = opts.entityBounds?.get(boundsKey);
|
|
318
335
|
const snapshot = opts.entitySnapshots?.get(boundsKey);
|
|
319
|
-
const viewpoint = buildEntityViewpoint(entity.globalId, opts.failureColor, bounds, snapshot);
|
|
336
|
+
const viewpoint = buildEntityViewpoint(entity.globalId, opts.failureColor, bounds, opts.aspectRatio, snapshot);
|
|
320
337
|
topic.viewpoints.push(viewpoint);
|
|
321
338
|
viewpointGuid = viewpoint.guid;
|
|
322
339
|
}
|
|
@@ -387,61 +404,6 @@ function buildRequirementComment(req) {
|
|
|
387
404
|
return lines.join('\n');
|
|
388
405
|
}
|
|
389
406
|
// ============================================================================
|
|
390
|
-
// Helpers — Camera computation
|
|
391
|
-
// ============================================================================
|
|
392
|
-
/**
|
|
393
|
-
* Compute a BCF perspective camera from entity bounds.
|
|
394
|
-
*
|
|
395
|
-
* Bounds are in viewer coordinates (Y-up).
|
|
396
|
-
* BCF uses Z-up, so we convert:
|
|
397
|
-
* BCF.x = Viewer.x
|
|
398
|
-
* BCF.y = -Viewer.z
|
|
399
|
-
* BCF.z = Viewer.y
|
|
400
|
-
*
|
|
401
|
-
* Camera is placed at a southeast-isometric angle from the entity center,
|
|
402
|
-
* at a distance that frames the entity's bounding box with padding.
|
|
403
|
-
*/
|
|
404
|
-
function computeCameraFromBounds(bounds) {
|
|
405
|
-
// Center in viewer coords (Y-up)
|
|
406
|
-
const cx = (bounds.min.x + bounds.max.x) / 2;
|
|
407
|
-
const cy = (bounds.min.y + bounds.max.y) / 2;
|
|
408
|
-
const cz = (bounds.min.z + bounds.max.z) / 2;
|
|
409
|
-
// Max extent for framing distance
|
|
410
|
-
const sx = bounds.max.x - bounds.min.x;
|
|
411
|
-
const sy = bounds.max.y - bounds.min.y;
|
|
412
|
-
const sz = bounds.max.z - bounds.min.z;
|
|
413
|
-
const maxSize = Math.max(sx, sy, sz, 0.1); // Floor to avoid zero
|
|
414
|
-
// Camera distance: fit maxSize into 60deg FOV with 1.5x padding
|
|
415
|
-
const fovRad = (60 * Math.PI) / 180;
|
|
416
|
-
const distance = (maxSize / 2) / Math.tan(fovRad / 2) * 1.5;
|
|
417
|
-
// Southeast-isometric offset in viewer coords (Y-up):
|
|
418
|
-
// camera position = center + normalized(0.6, 0.5, 0.6) * distance
|
|
419
|
-
const offsetLen = Math.sqrt(0.6 * 0.6 + 0.5 * 0.5 + 0.6 * 0.6);
|
|
420
|
-
const ox = (0.6 / offsetLen) * distance;
|
|
421
|
-
const oy = (0.5 / offsetLen) * distance;
|
|
422
|
-
const oz = (0.6 / offsetLen) * distance;
|
|
423
|
-
const camX = cx + ox;
|
|
424
|
-
const camY = cy + oy;
|
|
425
|
-
const camZ = cz + oz;
|
|
426
|
-
// Direction: from camera to center (viewer coords)
|
|
427
|
-
const dx = cx - camX;
|
|
428
|
-
const dy = cy - camY;
|
|
429
|
-
const dz = cz - camZ;
|
|
430
|
-
const dLen = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
431
|
-
// Convert to BCF coords (Z-up)
|
|
432
|
-
// Viewer (x, y, z) → BCF (x, -z, y)
|
|
433
|
-
return {
|
|
434
|
-
cameraViewPoint: { x: camX, y: -camZ, z: camY },
|
|
435
|
-
cameraDirection: {
|
|
436
|
-
x: dx / dLen,
|
|
437
|
-
y: -dz / dLen,
|
|
438
|
-
z: dy / dLen,
|
|
439
|
-
},
|
|
440
|
-
cameraUpVector: { x: 0, y: 0, z: 1 }, // BCF Z-up
|
|
441
|
-
fieldOfView: 60,
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
// ============================================================================
|
|
445
407
|
// Helpers — Viewpoint builders
|
|
446
408
|
// ============================================================================
|
|
447
409
|
/**
|
|
@@ -449,7 +411,7 @@ function computeCameraFromBounds(bounds) {
|
|
|
449
411
|
* Optionally includes a perspective camera computed from entity bounds,
|
|
450
412
|
* and a snapshot image if provided.
|
|
451
413
|
*/
|
|
452
|
-
function buildEntityViewpoint(globalId, failureColor, bounds, snapshot) {
|
|
414
|
+
function buildEntityViewpoint(globalId, failureColor, bounds, aspectRatio, snapshot) {
|
|
453
415
|
// Create independent component objects to prevent mutation side effects
|
|
454
416
|
const viewpoint = {
|
|
455
417
|
guid: generateUuid(),
|
|
@@ -471,7 +433,7 @@ function buildEntityViewpoint(globalId, failureColor, bounds, snapshot) {
|
|
|
471
433
|
}
|
|
472
434
|
// Compute camera from bounds (viewer Y-up → BCF Z-up)
|
|
473
435
|
if (bounds) {
|
|
474
|
-
viewpoint.perspectiveCamera = computeCameraFromBounds(bounds);
|
|
436
|
+
viewpoint.perspectiveCamera = computeCameraFromBounds(bounds, aspectRatio);
|
|
475
437
|
}
|
|
476
438
|
// Attach snapshot
|
|
477
439
|
if (snapshot) {
|
|
@@ -482,8 +444,11 @@ function buildEntityViewpoint(globalId, failureColor, bounds, snapshot) {
|
|
|
482
444
|
/**
|
|
483
445
|
* Build a viewpoint for multiple entities: all selected and visible, colored.
|
|
484
446
|
* Used by per-specification grouping where one topic covers many entities.
|
|
447
|
+
*
|
|
448
|
+
* `bounds` is the union of the entities' boxes (see `unionBounds`), so the
|
|
449
|
+
* camera frames the whole failing set rather than whichever entity came first.
|
|
485
450
|
*/
|
|
486
|
-
function buildMultiEntityViewpoint(globalIds, failureColor) {
|
|
451
|
+
function buildMultiEntityViewpoint(globalIds, failureColor, bounds, aspectRatio) {
|
|
487
452
|
// Use independent arrays per field to prevent mutation side effects
|
|
488
453
|
const viewpoint = {
|
|
489
454
|
guid: generateUuid(),
|
|
@@ -503,6 +468,9 @@ function buildMultiEntityViewpoint(globalIds, failureColor) {
|
|
|
503
468
|
},
|
|
504
469
|
];
|
|
505
470
|
}
|
|
471
|
+
if (bounds) {
|
|
472
|
+
viewpoint.perspectiveCamera = computeCameraFromBounds(bounds, aspectRatio);
|
|
473
|
+
}
|
|
506
474
|
return viewpoint;
|
|
507
475
|
}
|
|
508
476
|
//# sourceMappingURL=ids-reporter.js.map
|
package/dist/ids-reporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids-reporter.js","sourceRoot":"","sources":["../src/ids-reporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ids-reporter.js","sourceRoot":"","sources":["../src/ids-reporter.ts"],"names":[],"mappings":"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"}
|
package/dist/numeric.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Numeric boundary helpers for BCF.
|
|
2
|
+
* Numeric boundary helpers for BCF — both directions.
|
|
3
3
|
*
|
|
4
4
|
* A `.bcfzip` is an untrusted file, and every number in it arrives through a
|
|
5
5
|
* bare `parseFloat`. `parseFloat` has no failure value that is out of band:
|
|
6
6
|
* `"NaN"` parses to `NaN`, and `"1e999"` — a perfectly well-formed decimal
|
|
7
7
|
* literal — parses to `Infinity`. Both then flow into the viewer camera, which
|
|
8
8
|
* stores a pose verbatim by design.
|
|
9
|
+
*
|
|
10
|
+
* The WRITE side is the same boundary seen from the other end, and it is the
|
|
11
|
+
* half that was missing: `${Infinity}` stringifies to `"Infinity"`, which is
|
|
12
|
+
* not in `xs:double`'s lexical space (XSD 1.0 spells the infinities `INF` and
|
|
13
|
+
* `-INF`), so every non-finite number the writer touched produced an archive
|
|
14
|
+
* xmllint rejects. Keeping both halves in one file is deliberate: the read
|
|
15
|
+
* guard and the write guard have to agree on what "a usable number" means, and
|
|
16
|
+
* they can only be checked against each other while they sit side by side.
|
|
9
17
|
*/
|
|
10
18
|
/**
|
|
11
19
|
* `parseFloat`, but a value that is not a real number is reported as
|
|
@@ -41,4 +49,59 @@ export declare function parseFiniteFloat(raw: string): number | undefined;
|
|
|
41
49
|
* that has never been positioned reports).
|
|
42
50
|
*/
|
|
43
51
|
export declare function usableTargetDistance(distance: number | undefined, fallback: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* A number on its way INTO an archive, as the text an XSD numeric type will
|
|
54
|
+
* accept — or an error naming what was wrong and where.
|
|
55
|
+
*
|
|
56
|
+
* FINITENESS, not sign, is the property. That distinction is the whole bug:
|
|
57
|
+
* `Infinity > 0` is `true`, so a positivity check passes it, and
|
|
58
|
+
* `Number.isNaN(Number('Infinity'))` is `false`, so an `isNaN` check passes it
|
|
59
|
+
* too. Only `Number.isFinite` rejects the pair, and each of the three
|
|
60
|
+
* non-finite values fails the schemas a different way, which is why none of
|
|
61
|
+
* them can be left to a facet:
|
|
62
|
+
*
|
|
63
|
+
* - `Infinity`/`-Infinity` stringify to `"Infinity"`/`"-Infinity"`, which
|
|
64
|
+
* `xs:double` does not admit at all (XSD 1.0's lexical space spells the
|
|
65
|
+
* infinities `INF` and `-INF`), so they are rejected as "not a valid value of
|
|
66
|
+
* the atomic type" wherever they appear.
|
|
67
|
+
* - `NaN` stringifies to `"NaN"`, which `xs:double` DOES admit. A bare
|
|
68
|
+
* `xs:double` element — every camera/line/clipping-plane/bitmap coordinate,
|
|
69
|
+
* `ViewToWorldScale`, `Bitmap/Height` — therefore validates while carrying a
|
|
70
|
+
* number no consumer can use, and our own reader drops it on the way back in
|
|
71
|
+
* ({@link parseFiniteFloat}). Schema validity is not the bar here; a value
|
|
72
|
+
* that survives the round trip is.
|
|
73
|
+
*
|
|
74
|
+
* Refusing is the same policy the rest of the writer already applies to
|
|
75
|
+
* unrepresentable input (`writer-camera.ts`'s camera-choice and AspectRatio
|
|
76
|
+
* checks, `writer.ts`'s `Topic/@TopicType` check): we do not silently
|
|
77
|
+
* substitute a number the caller never chose, and we do not emit markup a
|
|
78
|
+
* conforming reader may reject.
|
|
79
|
+
*/
|
|
80
|
+
export declare function xsdDouble(value: number, element: string, where: string): string;
|
|
81
|
+
/**
|
|
82
|
+
* The `<X>/<Y>/<Z>` triple shared by `Point` and `Direction`, wrapped in
|
|
83
|
+
* `tag`, with every component checked by {@link xsdDouble}.
|
|
84
|
+
*
|
|
85
|
+
* Both schemas declare `Point` and `Direction` as three `xs:double` children in
|
|
86
|
+
* that order, and both are reached from four places (camera vectors, `Line`,
|
|
87
|
+
* `ClippingPlane`, `Bitmap`). Emitting them from one function is what stops a
|
|
88
|
+
* guard from being added to three of the four.
|
|
89
|
+
*/
|
|
90
|
+
export declare function xsdPointElement(tag: string, point: {
|
|
91
|
+
x: number;
|
|
92
|
+
y: number;
|
|
93
|
+
z: number;
|
|
94
|
+
}, indent: string, where: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* A number on its way into an `xs:int` element (`Topic/Index` is the only one
|
|
97
|
+
* the writer emits).
|
|
98
|
+
*
|
|
99
|
+
* `xs:int` is narrower than `xs:double` in two further ways a finiteness check
|
|
100
|
+
* alone would miss: `1.5` is not an `xs:int` ("'1.5' is not a valid value of
|
|
101
|
+
* the atomic type 'xs:int'"), and the type is 32-bit, so a whole number outside
|
|
102
|
+
* [-2^31, 2^31-1] is out of range too. `Number.isInteger` is false for `NaN`
|
|
103
|
+
* and both infinities, so finiteness comes with it rather than needing its own
|
|
104
|
+
* branch.
|
|
105
|
+
*/
|
|
106
|
+
export declare function xsdInt(value: number, element: string, where: string): string;
|
|
44
107
|
//# sourceMappingURL=numeric.d.ts.map
|
package/dist/numeric.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5E"}
|
package/dist/numeric.js
CHANGED
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
/**
|
|
5
|
-
* Numeric boundary helpers for BCF.
|
|
5
|
+
* Numeric boundary helpers for BCF — both directions.
|
|
6
6
|
*
|
|
7
7
|
* A `.bcfzip` is an untrusted file, and every number in it arrives through a
|
|
8
8
|
* bare `parseFloat`. `parseFloat` has no failure value that is out of band:
|
|
9
9
|
* `"NaN"` parses to `NaN`, and `"1e999"` — a perfectly well-formed decimal
|
|
10
10
|
* literal — parses to `Infinity`. Both then flow into the viewer camera, which
|
|
11
11
|
* stores a pose verbatim by design.
|
|
12
|
+
*
|
|
13
|
+
* The WRITE side is the same boundary seen from the other end, and it is the
|
|
14
|
+
* half that was missing: `${Infinity}` stringifies to `"Infinity"`, which is
|
|
15
|
+
* not in `xs:double`'s lexical space (XSD 1.0 spells the infinities `INF` and
|
|
16
|
+
* `-INF`), so every non-finite number the writer touched produced an archive
|
|
17
|
+
* xmllint rejects. Keeping both halves in one file is deliberate: the read
|
|
18
|
+
* guard and the write guard have to agree on what "a usable number" means, and
|
|
19
|
+
* they can only be checked against each other while they sit side by side.
|
|
12
20
|
*/
|
|
13
21
|
/**
|
|
14
22
|
* `parseFloat`, but a value that is not a real number is reported as
|
|
@@ -49,4 +57,76 @@ export function parseFiniteFloat(raw) {
|
|
|
49
57
|
export function usableTargetDistance(distance, fallback) {
|
|
50
58
|
return distance !== undefined && Number.isFinite(distance) && distance > 0 ? distance : fallback;
|
|
51
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* A number on its way INTO an archive, as the text an XSD numeric type will
|
|
62
|
+
* accept — or an error naming what was wrong and where.
|
|
63
|
+
*
|
|
64
|
+
* FINITENESS, not sign, is the property. That distinction is the whole bug:
|
|
65
|
+
* `Infinity > 0` is `true`, so a positivity check passes it, and
|
|
66
|
+
* `Number.isNaN(Number('Infinity'))` is `false`, so an `isNaN` check passes it
|
|
67
|
+
* too. Only `Number.isFinite` rejects the pair, and each of the three
|
|
68
|
+
* non-finite values fails the schemas a different way, which is why none of
|
|
69
|
+
* them can be left to a facet:
|
|
70
|
+
*
|
|
71
|
+
* - `Infinity`/`-Infinity` stringify to `"Infinity"`/`"-Infinity"`, which
|
|
72
|
+
* `xs:double` does not admit at all (XSD 1.0's lexical space spells the
|
|
73
|
+
* infinities `INF` and `-INF`), so they are rejected as "not a valid value of
|
|
74
|
+
* the atomic type" wherever they appear.
|
|
75
|
+
* - `NaN` stringifies to `"NaN"`, which `xs:double` DOES admit. A bare
|
|
76
|
+
* `xs:double` element — every camera/line/clipping-plane/bitmap coordinate,
|
|
77
|
+
* `ViewToWorldScale`, `Bitmap/Height` — therefore validates while carrying a
|
|
78
|
+
* number no consumer can use, and our own reader drops it on the way back in
|
|
79
|
+
* ({@link parseFiniteFloat}). Schema validity is not the bar here; a value
|
|
80
|
+
* that survives the round trip is.
|
|
81
|
+
*
|
|
82
|
+
* Refusing is the same policy the rest of the writer already applies to
|
|
83
|
+
* unrepresentable input (`writer-camera.ts`'s camera-choice and AspectRatio
|
|
84
|
+
* checks, `writer.ts`'s `Topic/@TopicType` check): we do not silently
|
|
85
|
+
* substitute a number the caller never chose, and we do not emit markup a
|
|
86
|
+
* conforming reader may reject.
|
|
87
|
+
*/
|
|
88
|
+
export function xsdDouble(value, element, where) {
|
|
89
|
+
if (!Number.isFinite(value)) {
|
|
90
|
+
throw new Error(`BCF requires a finite number for ${element} (${where} has ${value}). ` +
|
|
91
|
+
`XSD numeric types cannot express Infinity, -Infinity or NaN, so writing ` +
|
|
92
|
+
`one produces an archive that fails schema validation or loses the value ` +
|
|
93
|
+
`on read. Supply a finite number before writing.`);
|
|
94
|
+
}
|
|
95
|
+
return String(value);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The `<X>/<Y>/<Z>` triple shared by `Point` and `Direction`, wrapped in
|
|
99
|
+
* `tag`, with every component checked by {@link xsdDouble}.
|
|
100
|
+
*
|
|
101
|
+
* Both schemas declare `Point` and `Direction` as three `xs:double` children in
|
|
102
|
+
* that order, and both are reached from four places (camera vectors, `Line`,
|
|
103
|
+
* `ClippingPlane`, `Bitmap`). Emitting them from one function is what stops a
|
|
104
|
+
* guard from being added to three of the four.
|
|
105
|
+
*/
|
|
106
|
+
export function xsdPointElement(tag, point, indent, where) {
|
|
107
|
+
return (`\n${indent}<${tag}>` +
|
|
108
|
+
`\n${indent} <X>${xsdDouble(point.x, `${tag}/X`, where)}</X>` +
|
|
109
|
+
`\n${indent} <Y>${xsdDouble(point.y, `${tag}/Y`, where)}</Y>` +
|
|
110
|
+
`\n${indent} <Z>${xsdDouble(point.z, `${tag}/Z`, where)}</Z>` +
|
|
111
|
+
`\n${indent}</${tag}>`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A number on its way into an `xs:int` element (`Topic/Index` is the only one
|
|
115
|
+
* the writer emits).
|
|
116
|
+
*
|
|
117
|
+
* `xs:int` is narrower than `xs:double` in two further ways a finiteness check
|
|
118
|
+
* alone would miss: `1.5` is not an `xs:int` ("'1.5' is not a valid value of
|
|
119
|
+
* the atomic type 'xs:int'"), and the type is 32-bit, so a whole number outside
|
|
120
|
+
* [-2^31, 2^31-1] is out of range too. `Number.isInteger` is false for `NaN`
|
|
121
|
+
* and both infinities, so finiteness comes with it rather than needing its own
|
|
122
|
+
* branch.
|
|
123
|
+
*/
|
|
124
|
+
export function xsdInt(value, element, where) {
|
|
125
|
+
if (!Number.isInteger(value) || value < -2147483648 || value > 2147483647) {
|
|
126
|
+
throw new Error(`BCF requires a 32-bit integer for ${element} (${where} has ${value}). ` +
|
|
127
|
+
`xs:int admits neither a fractional value, a non-finite one, nor one ` +
|
|
128
|
+
`outside [-2147483648, 2147483647].`);
|
|
129
|
+
}
|
|
130
|
+
return String(value);
|
|
131
|
+
}
|
|
52
132
|
//# sourceMappingURL=numeric.js.map
|
package/dist/numeric.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA4B,EAAE,QAAgB;IACjF,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;YACrE,0EAA0E;YAC1E,0EAA0E;YAC1E,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,KAA0C,EAC1C,MAAc,EACd,KAAa;IAEb,OAAO,CACL,KAAK,MAAM,IAAI,GAAG,GAAG;QACrB,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,KAAK,GAAG,GAAG,CACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,qCAAqC,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;YACtE,sEAAsE;YACtE,oCAAoC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -11,5 +11,5 @@ import type { BCFComponents } from './types.js';
|
|
|
11
11
|
/**
|
|
12
12
|
* Parse components (selection/visibility/coloring)
|
|
13
13
|
*/
|
|
14
|
-
export declare function parseComponents(content: string): BCFComponents | undefined;
|
|
14
|
+
export declare function parseComponents(content: string, versionId: '2.1' | '3.0'): BCFComponents | undefined;
|
|
15
15
|
//# sourceMappingURL=reader-components.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-components.d.ts","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAGV,aAAa,EAGd,MAAM,YAAY,CAAC;AA+BpB;;GAEG;AACH,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"reader-components.d.ts","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAGV,aAAa,EAGd,MAAM,YAAY,CAAC;AA+BpB;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,KAAK,GAAG,KAAK,GACvB,aAAa,GAAG,SAAS,CA6C3B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import { extractElement, unescapeXml } from './xml-text.js';
|
|
4
|
+
import { extractElement, parseXsBoolean, unescapeXml } from './xml-text.js';
|
|
5
5
|
/**
|
|
6
6
|
* Every `<Component>` element in an XML fragment.
|
|
7
7
|
*
|
|
@@ -32,7 +32,7 @@ function parseComponentElements(xml) {
|
|
|
32
32
|
/**
|
|
33
33
|
* Parse components (selection/visibility/coloring)
|
|
34
34
|
*/
|
|
35
|
-
export function parseComponents(content) {
|
|
35
|
+
export function parseComponents(content, versionId) {
|
|
36
36
|
const componentsMatch = content.match(/<Components>([\s\S]*?)<\/Components>/);
|
|
37
37
|
if (!componentsMatch)
|
|
38
38
|
return undefined;
|
|
@@ -40,7 +40,7 @@ export function parseComponents(content) {
|
|
|
40
40
|
// Parse selection
|
|
41
41
|
const selection = parseComponentList(componentsContent, 'Selection');
|
|
42
42
|
// Parse visibility
|
|
43
|
-
let visibility = parseVisibility(componentsContent);
|
|
43
|
+
let visibility = parseVisibility(componentsContent, versionId);
|
|
44
44
|
// Parse coloring
|
|
45
45
|
const coloring = parseColoring(componentsContent);
|
|
46
46
|
// Nothing read `ViewSetupHints` back, so every hint was lost on read —
|
|
@@ -55,9 +55,13 @@ export function parseComponents(content) {
|
|
|
55
55
|
// read half the files we produce.
|
|
56
56
|
const viewSetupHints = parseViewSetupHints(componentsContent);
|
|
57
57
|
if (viewSetupHints) {
|
|
58
|
-
// Visibility is required by the schema, but tolerate a file that omits
|
|
59
|
-
//
|
|
60
|
-
|
|
58
|
+
// Visibility is required by the schema, but tolerate a file that omits
|
|
59
|
+
// it entirely: fall back to the same per-version DefaultVisibility
|
|
60
|
+
// default used below when the attribute itself is present-but-omitted.
|
|
61
|
+
visibility = {
|
|
62
|
+
...(visibility ?? { defaultVisibility: defaultVisibilityFallback(versionId) }),
|
|
63
|
+
viewSetupHints,
|
|
64
|
+
};
|
|
61
65
|
}
|
|
62
66
|
if (!selection && !visibility && !coloring) {
|
|
63
67
|
return undefined;
|
|
@@ -128,10 +132,29 @@ function parseComponent(content) {
|
|
|
128
132
|
originatingSystem,
|
|
129
133
|
};
|
|
130
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* The `DefaultVisibility` attribute's value when a `<Visibility>` element
|
|
137
|
+
* omits it entirely.
|
|
138
|
+
*
|
|
139
|
+
* visinfo.xsd disagrees by version: 2.1 declares
|
|
140
|
+
* `<xs:attribute name="DefaultVisibility" type="xs:boolean"/>` with no
|
|
141
|
+
* schema default, while 3.0 changes this to
|
|
142
|
+
* `<xs:attribute name="DefaultVisibility" type="xs:boolean" default="false"/>`.
|
|
143
|
+
* Per XML Schema attribute defaulting, an omitted attribute with a declared
|
|
144
|
+
* default takes that default, so a spec-legal 3.0 file that omits it means
|
|
145
|
+
* "hide everything except the listed exceptions". ifc-lite's own writer
|
|
146
|
+
* always emits the attribute explicitly (writeVisibility in writer.ts), so
|
|
147
|
+
* this only matters for a third-party file -- which is why no round-trip
|
|
148
|
+
* fixture caught the reader treating every omission as `true` regardless of
|
|
149
|
+
* version.
|
|
150
|
+
*/
|
|
151
|
+
function defaultVisibilityFallback(versionId) {
|
|
152
|
+
return versionId !== '3.0';
|
|
153
|
+
}
|
|
131
154
|
/**
|
|
132
155
|
* Parse visibility settings
|
|
133
156
|
*/
|
|
134
|
-
function parseVisibility(content) {
|
|
157
|
+
function parseVisibility(content, versionId) {
|
|
135
158
|
// Both branches, for the same reason as `COMPONENT_ELEMENT`: `<Exceptions>`
|
|
136
159
|
// and `<ViewSetupHints>` are optional, so `<Visibility DefaultVisibility=
|
|
137
160
|
// "false"/>` is schema-legal. Matching only the paired form made the whole
|
|
@@ -146,7 +169,18 @@ function parseVisibility(content) {
|
|
|
146
169
|
// `<Selection>` component, say) won the match and inverted the answer, so a
|
|
147
170
|
// file saying show-all hid everything.
|
|
148
171
|
const defaultVisMatch = visibilityMatch[0].match(/DefaultVisibility="([^"]+)"/);
|
|
149
|
-
|
|
172
|
+
// A whitespace-only value collapses to '' under xs:boolean's whiteSpace=
|
|
173
|
+
// collapse, which is not in the {true, false, 1, 0} lexical space at all --
|
|
174
|
+
// the same as the attribute being absent -- so both fall back to the
|
|
175
|
+
// per-version default via parseXsBoolean's caller-owns-absent contract,
|
|
176
|
+
// rather than surviving into parseXsBoolean's unrecognized-value branch.
|
|
177
|
+
// An unrecognized but non-blank value (e.g. "yes") leans true here: this
|
|
178
|
+
// site's existing behavior for garbage input, preserved via
|
|
179
|
+
// `ifUnrecognized: true`.
|
|
180
|
+
const rawDefaultVis = defaultVisMatch?.[1].trim();
|
|
181
|
+
const defaultVisibility = rawDefaultVis !== undefined && rawDefaultVis !== ''
|
|
182
|
+
? parseXsBoolean(rawDefaultVis, { ifUnrecognized: true })
|
|
183
|
+
: defaultVisibilityFallback(versionId);
|
|
150
184
|
const exceptions = parseComponentList(visibilityMatch[0], 'Exceptions');
|
|
151
185
|
return {
|
|
152
186
|
defaultVisibility,
|
|
@@ -185,9 +219,14 @@ function parseViewSetupHints(content) {
|
|
|
185
219
|
const attrs = match[1];
|
|
186
220
|
const flag = (name) => {
|
|
187
221
|
const raw = attrs.match(new RegExp(`\\b${name}="([^"]*)"`))?.[1];
|
|
188
|
-
|
|
222
|
+
// Blank (whitespace-only, or empty) is treated the same as absent -- see
|
|
223
|
+
// parseXsBoolean's absent-vs-blank note -- so both stay `undefined` here
|
|
224
|
+
// rather than reading as false. Unrecognized-but-non-blank content also
|
|
225
|
+
// leans false: unlike DefaultVisibility, an unset hint should not be
|
|
226
|
+
// read as an emphatic "show it".
|
|
227
|
+
if (raw === undefined || raw.trim() === '')
|
|
189
228
|
return undefined;
|
|
190
|
-
return raw
|
|
229
|
+
return parseXsBoolean(raw, { ifUnrecognized: false });
|
|
191
230
|
};
|
|
192
231
|
const spacesVisible = flag('SpacesVisible');
|
|
193
232
|
const spaceBoundariesVisible = flag('SpaceBoundariesVisible');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-components.js","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkB/D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"reader-components.js","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"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"}
|