@ifc-lite/parser 4.0.0 → 4.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-header.d.ts","sourceRoot":"","sources":["../src/source-header.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"source-header.d.ts","sourceRoot":"","sources":["../src/source-header.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA+IvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,GAAG,cAAc,GAClC,eAAe,GAAG,SAAS,CA2D7B"}
|
package/dist/source-header.js
CHANGED
|
@@ -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 {
|
|
4
|
+
import { decodeStepStringLiteral } from '@ifc-lite/encoding';
|
|
5
5
|
import { asSourceBytes } from './source-bytes.js';
|
|
6
6
|
/** Headers are tiny; cap the decode so a huge file's body is never scanned. */
|
|
7
7
|
const MAX_HEADER_BYTES = 64 * 1024;
|
|
@@ -59,73 +59,26 @@ function splitTopLevel(inner) {
|
|
|
59
59
|
* Decode a STEP header string argument's inner text (outer quotes already
|
|
60
60
|
* stripped) to its Unicode value.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* `\X2\HHHH\X0\`, `\X\HH`, `\S\` and
|
|
65
|
-
* fields (author, description, ...) arrive in.
|
|
62
|
+
* Both escape layers, in one scan, from the shared
|
|
63
|
+
* {@link decodeStepStringLiteral}: the `''` / `\\` doublings and the
|
|
64
|
+
* ISO-10303-21 backslash directives (`\X2\HHHH\X0\`, `\X\HH`, `\S\` and
|
|
65
|
+
* `\Px\`) the non-ASCII header fields (author, description, ...) arrive in.
|
|
66
66
|
*
|
|
67
|
-
* The
|
|
68
|
-
* writer's `\`->`\\` escaper doubled every backslash on write, so a
|
|
69
|
-
* turned `Tr\X2\00FC\X0\mpler` into the literal
|
|
70
|
-
* Decoding to real Unicode here means the writer
|
|
71
|
-
* backslashes to double), so the value round-trips
|
|
67
|
+
* The regex this replaced in #2486 left those directives untouched on read
|
|
68
|
+
* while the writer's `\`->`\\` escaper doubled every backslash on write, so a
|
|
69
|
+
* round trip turned `Tr\X2\00FC\X0\mpler` into the literal
|
|
70
|
+
* `Tr\\X2\\00FC\\X0\\mpler`. Decoding to real Unicode here means the writer
|
|
71
|
+
* re-emits plain UTF-8 (no backslashes to double), so the value round-trips
|
|
72
|
+
* intact.
|
|
72
73
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* unterminated `\X2\` that never decodes. The scan consumes each whole
|
|
79
|
-
* directive span first, treats `\\` as a literal backslash only outside a
|
|
80
|
-
* span, and hands the directive text to {@link decodeIfcString} untouched —
|
|
81
|
-
* which also keeps escaped literal text (`\\X2\\...` means the characters
|
|
82
|
-
* `\X2\...`) from being mis-decoded as a real `\X2\` directive, and keeps
|
|
83
|
-
* `C:\\temp` from re-doubling on every round trip ({@link decodeIfcString}
|
|
84
|
-
* deliberately preserves unknown escapes, so it can't collapse `\\` itself).
|
|
74
|
+
* The implementation moved into `@ifc-lite/encoding` for #2490, where
|
|
75
|
+
* `@ifc-lite/data`'s `parseStepValue` had grown the SAME directive-blind regex
|
|
76
|
+
* independently. Two copies of a decoder this subtle is how the second one got
|
|
77
|
+
* written; see that module for why the two layers cannot be resolved by two
|
|
78
|
+
* independent passes.
|
|
85
79
|
*/
|
|
86
80
|
function unescapeStepString(str) {
|
|
87
|
-
|
|
88
|
-
let out = '';
|
|
89
|
-
let seg = ''; // pending directive-bearing text, flushed through decodeIfcString
|
|
90
|
-
let i = 0;
|
|
91
|
-
while (i < value.length) {
|
|
92
|
-
if (value[i] === '\\') {
|
|
93
|
-
// Whole directive spans move into `seg` atomically so their own
|
|
94
|
-
// backslashes (terminators, \S\ operands) never match the pair escape.
|
|
95
|
-
if (value.startsWith('\\X2\\', i) || value.startsWith('\\X4\\', i)) {
|
|
96
|
-
const end = value.indexOf('\\X0\\', i + 4);
|
|
97
|
-
if (end !== -1) {
|
|
98
|
-
seg += value.slice(i, end + 4);
|
|
99
|
-
i = end + 4;
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else if (value.startsWith('\\S\\', i) && i + 3 < value.length) {
|
|
104
|
-
seg += value.slice(i, i + 4); // \S\ + operand char (may itself be '\')
|
|
105
|
-
i += 4;
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
else if (value.startsWith('\\X\\', i)) {
|
|
109
|
-
seg += value.slice(i, i + 5); // \X\ + two hex digits
|
|
110
|
-
i += 5;
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
else if (/^\\P[A-Z]\\/.test(value.slice(i, i + 4))) {
|
|
114
|
-
seg += value.slice(i, i + 4);
|
|
115
|
-
i += 4;
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
if (value[i + 1] === '\\') {
|
|
119
|
-
out += decodeIfcString(seg) + '\\';
|
|
120
|
-
seg = '';
|
|
121
|
-
i += 2;
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
seg += value[i];
|
|
126
|
-
i += 1;
|
|
127
|
-
}
|
|
128
|
-
return out + decodeIfcString(seg);
|
|
81
|
+
return decodeStepStringLiteral(str);
|
|
129
82
|
}
|
|
130
83
|
/**
|
|
131
84
|
* Decode a single STEP argument to a string, or `undefined` for `$`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-header.js","sourceRoot":"","sources":["../src/source-header.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"source-header.js","sourceRoot":"","sources":["../src/source-header.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/parser",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "IFC/STEP parser for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"fflate": "^0.8.3",
|
|
21
21
|
"jszip": "^3.10.0",
|
|
22
|
-
"@ifc-lite/
|
|
22
|
+
"@ifc-lite/data": "^3.2.3",
|
|
23
|
+
"@ifc-lite/encoding": "^1.16.0",
|
|
23
24
|
"@ifc-lite/ifcx": "^2.3.4",
|
|
24
|
-
"@ifc-lite/
|
|
25
|
-
"@ifc-lite/wasm": "^4.3.1"
|
|
25
|
+
"@ifc-lite/wasm": "^4.4.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"typescript": "^6.0.3",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
],
|
|
54
54
|
"scripts": {
|
|
55
55
|
"build": "pnpm exec tsc",
|
|
56
|
+
"typecheck": "node ../../scripts/typecheck-tests.mjs",
|
|
56
57
|
"dev": "pnpm exec tsc --watch",
|
|
57
58
|
"test": "vitest run"
|
|
58
59
|
}
|