@ifc-lite/encoding 1.16.0 → 2.1.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 CHANGED
@@ -34,7 +34,7 @@ parsePropertyValue(['IFCBOOLEAN', '.T.']); // { displayValue: 'True', ifcType: .
34
34
  - `generateIfcGuid`, `generateUuid`: new identifiers
35
35
  - `uuidToIfcGuid`, `ifcGuidToUuid`: convert between UUIDs and 22-char IFC GUIDs
36
36
  - `isValidIfcGuid`, `isValidUuid`: validation
37
- - `parsePropertyValue`: turn raw STEP property values (typed arrays, `.T.`/`.F.`, enums) into a display string plus optional IFC type name
37
+ - `parsePropertyValue`: turn a parsed STEP property value (typed arrays, `.T.`/`.F.`, enums) into a display string plus optional IFC type name. It does **not** decode `\X2\`-style escapes: every ifc-lite parse path already decodes exactly once, at the parse boundary, and decoding a second time would collapse an authored `\\` a second time. Pass a still-encoded literal through `decodeIfcString` first.
38
38
 
39
39
  ## Links
40
40
 
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { decodeIfcString, encodeIfcString } from './ifc-string.js';
2
2
  export { decodeStepStringLiteral } from './step-string-literal.js';
3
3
  export { uuidToIfcGuid, ifcGuidToUuid, generateIfcGuid, generateUuid, isValidIfcGuid, isValidUuid, } from './guid.js';
4
4
  export type { RandomSource } from './guid.js';
5
+ export { isWhollyNumeric } from './numeric-literal.js';
5
6
  export { parsePropertyValue } from './property-value.js';
6
7
  export type { ParsedPropertyValue } from './property-value.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@
4
4
  export { decodeIfcString, encodeIfcString } from './ifc-string.js';
5
5
  export { decodeStepStringLiteral } from './step-string-literal.js';
6
6
  export { uuidToIfcGuid, ifcGuidToUuid, generateIfcGuid, generateUuid, isValidIfcGuid, isValidUuid, } from './guid.js';
7
+ export { isWhollyNumeric } from './numeric-literal.js';
7
8
  export { parsePropertyValue } from './property-value.js';
8
9
  //# 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,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Whether `v` is WHOLLY a signed decimal number, optionally in exponent form:
3
+ * `-0.35`, `+1`, `-1.5e-3`, `-.5`, `-1.`. Anchored at BOTH ends, so `-0.35=cmd`
4
+ * is not one and `1,000` is not one either.
5
+ *
6
+ * Lives here, in a package with no dependencies, because three different
7
+ * callers need it and only two of them can afford `@ifc-lite/export`: the CSV
8
+ * formula guard (`packages/export/src/csv-cell.ts`) exempts a genuine number
9
+ * from the `+`/`-` trigger so a spreadsheet column still sums (#1772), and
10
+ * `@ifc-lite/lists` needs the same decision in its own CSV writer.
11
+ * `rust/export/src/csv_cell.rs::is_wholly_numeric` decides the same language on
12
+ * the other side of the language boundary; what holds those two together is the
13
+ * shared vector fixture, not a promise that they look alike.
14
+ *
15
+ * The regex this replaces — `/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/` —
16
+ * is QUADRATIC on a failing match: `\d+\.?\d*` retries at every split point
17
+ * before the engine gives up. This scan is linear, which is the whole reason it
18
+ * is spelled out by hand. (For scale, on `-` + 60k digits + one letter the
19
+ * regex took ~1.8s and the scan ~1ms; the ratio is the point, not the numbers.)
20
+ *
21
+ * Cell text comes from IFC properties, so the input is attacker-controllable and
22
+ * a leading `-` is exactly what reaches this check. `\d` is ASCII-only in JS, and
23
+ * this scan matches that deliberately: a full-width or Arabic-Indic digit is NOT
24
+ * a number here and stays guarded.
25
+ */
26
+ export declare function isWhollyNumeric(v: string): boolean;
27
+ //# sourceMappingURL=numeric-literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-literal.d.ts","sourceRoot":"","sources":["../src/numeric-literal.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAyBlD"}
@@ -0,0 +1,65 @@
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
+ * Whether `v` is WHOLLY a signed decimal number, optionally in exponent form:
6
+ * `-0.35`, `+1`, `-1.5e-3`, `-.5`, `-1.`. Anchored at BOTH ends, so `-0.35=cmd`
7
+ * is not one and `1,000` is not one either.
8
+ *
9
+ * Lives here, in a package with no dependencies, because three different
10
+ * callers need it and only two of them can afford `@ifc-lite/export`: the CSV
11
+ * formula guard (`packages/export/src/csv-cell.ts`) exempts a genuine number
12
+ * from the `+`/`-` trigger so a spreadsheet column still sums (#1772), and
13
+ * `@ifc-lite/lists` needs the same decision in its own CSV writer.
14
+ * `rust/export/src/csv_cell.rs::is_wholly_numeric` decides the same language on
15
+ * the other side of the language boundary; what holds those two together is the
16
+ * shared vector fixture, not a promise that they look alike.
17
+ *
18
+ * The regex this replaces — `/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/` —
19
+ * is QUADRATIC on a failing match: `\d+\.?\d*` retries at every split point
20
+ * before the engine gives up. This scan is linear, which is the whole reason it
21
+ * is spelled out by hand. (For scale, on `-` + 60k digits + one letter the
22
+ * regex took ~1.8s and the scan ~1ms; the ratio is the point, not the numbers.)
23
+ *
24
+ * Cell text comes from IFC properties, so the input is attacker-controllable and
25
+ * a leading `-` is exactly what reaches this check. `\d` is ASCII-only in JS, and
26
+ * this scan matches that deliberately: a full-width or Arabic-Indic digit is NOT
27
+ * a number here and stays guarded.
28
+ */
29
+ export function isWhollyNumeric(v) {
30
+ const n = v.length;
31
+ let i = 0;
32
+ if (i < n && (v[i] === '+' || v[i] === '-'))
33
+ i++;
34
+ // Mantissa: `\d+\.?\d*` or `\.\d+` — at least one digit either way.
35
+ let digits = 0;
36
+ while (i < n && v[i] >= '0' && v[i] <= '9') {
37
+ i++;
38
+ digits++;
39
+ }
40
+ if (i < n && v[i] === '.') {
41
+ i++;
42
+ while (i < n && v[i] >= '0' && v[i] <= '9') {
43
+ i++;
44
+ digits++;
45
+ }
46
+ }
47
+ if (digits === 0)
48
+ return false;
49
+ // Optional exponent, which must carry at least one digit if present.
50
+ if (i < n && (v[i] === 'e' || v[i] === 'E')) {
51
+ i++;
52
+ if (i < n && (v[i] === '+' || v[i] === '-'))
53
+ i++;
54
+ let expDigits = 0;
55
+ while (i < n && v[i] >= '0' && v[i] <= '9') {
56
+ i++;
57
+ expDigits++;
58
+ }
59
+ if (expDigits === 0)
60
+ return false;
61
+ }
62
+ // Anchored at the end: trailing anything, including a newline, disqualifies.
63
+ return i === n;
64
+ }
65
+ //# sourceMappingURL=numeric-literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-literal.js","sourceRoot":"","sources":["../src/numeric-literal.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QAAE,CAAC,EAAE,CAAC;IAEjD,oEAAoE;IACpE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAAC,CAAC,EAAE,CAAC;QAAC,MAAM,EAAE,CAAC;IAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1B,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,MAAM,EAAE,CAAC;QAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/B,qEAAqE;IACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5C,CAAC,EAAE,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,CAAC,EAAE,CAAC;QACjD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QACjE,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IAED,6EAA6E;IAC7E,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC"}
@@ -11,9 +11,23 @@ export interface ParsedPropertyValue {
11
11
  * Handles:
12
12
  * - TypedValues like [IFCIDENTIFIER, '100 x 150mm'] -> display '100 x 150mm', tooltip 'Identifier'
13
13
  * - Boolean enums like '.T.' -> 'True'
14
- * - IFC encoded strings with \X2\, \X\ escape sequences
15
14
  * - Null/undefined -> '\u2014'
16
15
  * - Regular values -> string conversion
16
+ *
17
+ * It deliberately does NOT decode STEP escapes. Every producer of a property
18
+ * value decodes exactly once, at parse time: the TypeScript path via
19
+ * `EntityExtractor.parseAttributeValue` / `columnar-parser-attributes.ts`, the
20
+ * Rust/WASM and server paths via `AttributeValue::from_token`. The input here
21
+ * is therefore already literal text, and decoding a second time is not a no-op
22
+ * \u2014 since #2394 `decodeIfcString` collapses `\\` to `\`, so an authored UNC
23
+ * path `\\server\share` would render as `\server\share`. `C:\temp` is a fixed
24
+ * point of the decoder, which is why the defect hides on the common case.
25
+ *
26
+ * Making the decoder idempotent instead would not work: idempotence requires
27
+ * treating an already-decoded `\` and an authored, still-doubled `\\` the same
28
+ * way, which is exactly the ambiguity the one-decode rule removes. The
29
+ * invariant to hold is "decode once, at the parse boundary", not "decode
30
+ * defensively wherever a string is displayed".
17
31
  */
18
32
  export declare function parsePropertyValue(value: unknown): ParsedPropertyValue;
19
33
  //# sourceMappingURL=property-value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"property-value.d.ts","sourceRoot":"","sources":["../src/property-value.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuCD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAqEtE"}
1
+ {"version":3,"file":"property-value.d.ts","sourceRoot":"","sources":["../src/property-value.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAqEtE"}
@@ -1,7 +1,6 @@
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 { decodeIfcString } from './ifc-string.js';
5
4
  /**
6
5
  * Map of IFC boolean enumeration values to human-readable text
7
6
  */
@@ -42,9 +41,23 @@ const IFC_TYPE_DISPLAY_NAMES = {
42
41
  * Handles:
43
42
  * - TypedValues like [IFCIDENTIFIER, '100 x 150mm'] -> display '100 x 150mm', tooltip 'Identifier'
44
43
  * - Boolean enums like '.T.' -> 'True'
45
- * - IFC encoded strings with \X2\, \X\ escape sequences
46
44
  * - Null/undefined -> '\u2014'
47
45
  * - Regular values -> string conversion
46
+ *
47
+ * It deliberately does NOT decode STEP escapes. Every producer of a property
48
+ * value decodes exactly once, at parse time: the TypeScript path via
49
+ * `EntityExtractor.parseAttributeValue` / `columnar-parser-attributes.ts`, the
50
+ * Rust/WASM and server paths via `AttributeValue::from_token`. The input here
51
+ * is therefore already literal text, and decoding a second time is not a no-op
52
+ * \u2014 since #2394 `decodeIfcString` collapses `\\` to `\`, so an authored UNC
53
+ * path `\\server\share` would render as `\server\share`. `C:\temp` is a fixed
54
+ * point of the decoder, which is why the defect hides on the common case.
55
+ *
56
+ * Making the decoder idempotent instead would not work: idempotence requires
57
+ * treating an already-decoded `\` and an authored, still-doubled `\\` the same
58
+ * way, which is exactly the ambiguity the one-decode rule removes. The
59
+ * invariant to hold is "decode once, at the parse boundary", not "decode
60
+ * defensively wherever a string is displayed".
48
61
  */
49
62
  export function parsePropertyValue(value) {
50
63
  // Handle null/undefined
@@ -85,11 +98,11 @@ export function parsePropertyValue(value) {
85
98
  if (BOOLEAN_MAP[upperInner]) {
86
99
  return { displayValue: BOOLEAN_MAP[upperInner], ifcType: friendlyType };
87
100
  }
88
- // Decode IFC string encoding and return
89
- return { displayValue: decodeIfcString(innerValue), ifcType: friendlyType };
101
+ // Already decoded by the parse path (see the note on this function).
102
+ return { displayValue: innerValue, ifcType: friendlyType };
90
103
  }
91
- // Regular string - decode IFC encoding
92
- return { displayValue: decodeIfcString(value) };
104
+ // Already decoded by the parse path (see the note on this function).
105
+ return { displayValue: value };
93
106
  }
94
107
  // Handle native booleans
95
108
  if (typeof value === 'boolean') {
@@ -1 +1 @@
1
- {"version":3,"file":"property-value.js","sourceRoot":"","sources":["../src/property-value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"property-value.js","sourceRoot":"","sources":["../src/property-value.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/encoding",
3
- "version": "1.16.0",
3
+ "version": "2.1.0",
4
4
  "description": "IFC string encoding/decoding and property value parsing for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",