@ifc-lite/export 2.8.3 → 2.8.5

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.
Files changed (51) hide show
  1. package/dist/declared-property-type.d.ts +107 -0
  2. package/dist/declared-property-type.d.ts.map +1 -0
  3. package/dist/declared-property-type.js +236 -0
  4. package/dist/declared-property-type.js.map +1 -0
  5. package/dist/delta-modification-ledger.d.ts +148 -0
  6. package/dist/delta-modification-ledger.d.ts.map +1 -0
  7. package/dist/delta-modification-ledger.js +194 -0
  8. package/dist/delta-modification-ledger.js.map +1 -0
  9. package/dist/demesh-session.d.ts.map +1 -1
  10. package/dist/demesh-session.js +7 -0
  11. package/dist/demesh-session.js.map +1 -1
  12. package/dist/in-place-nomination.d.ts +65 -0
  13. package/dist/in-place-nomination.d.ts.map +1 -0
  14. package/dist/in-place-nomination.js +27 -0
  15. package/dist/in-place-nomination.js.map +1 -0
  16. package/dist/merged-exporter.js +1 -1
  17. package/dist/retype.d.ts.map +1 -1
  18. package/dist/retype.js +2 -1
  19. package/dist/retype.js.map +1 -1
  20. package/dist/select-qualification.d.ts +12 -0
  21. package/dist/select-qualification.d.ts.map +1 -1
  22. package/dist/select-qualification.js +12 -1
  23. package/dist/select-qualification.js.map +1 -1
  24. package/dist/source-ref-bounds.d.ts +53 -0
  25. package/dist/source-ref-bounds.d.ts.map +1 -0
  26. package/dist/source-ref-bounds.js +25 -0
  27. package/dist/source-ref-bounds.js.map +1 -0
  28. package/dist/step-argument-parser.d.ts +90 -0
  29. package/dist/step-argument-parser.d.ts.map +1 -0
  30. package/dist/step-argument-parser.js +207 -0
  31. package/dist/step-argument-parser.js.map +1 -0
  32. package/dist/step-exporter.d.ts +45 -4
  33. package/dist/step-exporter.d.ts.map +1 -1
  34. package/dist/step-exporter.js +465 -84
  35. package/dist/step-exporter.js.map +1 -1
  36. package/dist/step-file-assembly.d.ts +35 -0
  37. package/dist/step-file-assembly.d.ts.map +1 -0
  38. package/dist/step-file-assembly.js +102 -0
  39. package/dist/step-file-assembly.js.map +1 -0
  40. package/dist/step-serialization.d.ts +48 -48
  41. package/dist/step-serialization.d.ts.map +1 -1
  42. package/dist/step-serialization.js +90 -182
  43. package/dist/step-serialization.js.map +1 -1
  44. package/dist/type-owned-psets.d.ts +36 -0
  45. package/dist/type-owned-psets.d.ts.map +1 -1
  46. package/dist/type-owned-psets.js +41 -0
  47. package/dist/type-owned-psets.js.map +1 -1
  48. package/dist/unit-normalize.d.ts.map +1 -1
  49. package/dist/unit-normalize.js +13 -1
  50. package/dist/unit-normalize.js.map +1 -1
  51. package/package.json +7 -6
@@ -0,0 +1,194 @@
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
+ * The kinds whose intent site is NOT their emit site, even in a FULL export —
6
+ * so their count is settled from effect in both modes (#2474).
7
+ *
8
+ * A pset/qset edit is nominated when the session's mutation history names the
9
+ * set, long before anything asks whether that name resolves to content. It
10
+ * frequently does not: `deletePropertySet(id, 'AName')` on a host that owns no
11
+ * such set nominates, matches nothing, generates nothing, withholds nothing —
12
+ * and used to put "1 modification" in the header of a byte-identical file. The
13
+ * same shape reaches the quantity side through an UNDONE quantity-set creation,
14
+ * whose `CREATE_QUANTITY` record stays in the append-only history after the
15
+ * overlay has dropped the set.
16
+ *
17
+ * The other four kinds are written by the very pass that nominates them, or by
18
+ * one that reports back: `retype` and `positional` are nominated inside the
19
+ * source-iteration pass and only when the line actually changed, and
20
+ * `attribute` / `georeferencing` are applied to that same line.
21
+ *
22
+ * ## What counts as CHANGED for a set
23
+ *
24
+ * The test is effect on the emitted FILE, not equality of property values: this
25
+ * export either wrote a line for the host's set or left one out. Regenerating a
26
+ * set with identical values still counts, because the replacement carries fresh
27
+ * express ids and genuinely is different bytes — "the same properties" is not
28
+ * the same file, and pretending otherwise would need a comparison this pass
29
+ * cannot make (it never reads the lines it replaced). Deleting a set that
30
+ * exists counts through the WITHHELD side ({@link
31
+ * ModificationLedger.recordWithheld}); deleting one that does not exist touches
32
+ * neither side and is what stopped counting.
33
+ */
34
+ const EFFECT_SETTLED_KINDS = new Set([
35
+ 'property-set',
36
+ 'quantity-set',
37
+ ]);
38
+ /** Fixed order, so `stats.warnings` is deterministic across runs. */
39
+ const KIND_ORDER = [
40
+ 'attribute',
41
+ 'georeferencing',
42
+ 'retype',
43
+ 'positional',
44
+ 'property-set',
45
+ 'quantity-set',
46
+ ];
47
+ /**
48
+ * How many expressIds the "deltaOnly dropped these edits" warning names before
49
+ * it summarises the rest. A session can edit thousands of entities and this
50
+ * string is read by a human, not parsed.
51
+ */
52
+ const UNDELIVERED_IDS_IN_WARNING = 5;
53
+ /** Plural noun and the reason a delta cannot carry that kind, per kind. */
54
+ const KIND_REPORT = {
55
+ attribute: {
56
+ nouns: 'attribute edits',
57
+ why: 'a full export applies one by rewriting the entity\'s own line, and a delta contains no source lines',
58
+ },
59
+ georeferencing: {
60
+ nouns: 'georeferencing edits',
61
+ why: 'they are queued as attribute edits on the existing IfcProjectedCRS / IfcMapConversion, '
62
+ + 'which a full export applies by rewriting that entity\'s own line',
63
+ },
64
+ retype: {
65
+ nouns: 'retypes',
66
+ why: 'a full export applies one by rewriting the entity\'s own line, and a delta contains no source lines',
67
+ },
68
+ positional: {
69
+ nouns: 'positional edits',
70
+ why: 'a full export applies one by rewriting the entity\'s own line, and a delta contains no source lines',
71
+ },
72
+ 'property-set': {
73
+ nouns: 'property-set changes',
74
+ why: 'a removal produces no replacement content for a delta to carry (a full export applies it by '
75
+ + 'omitting the removed lines)',
76
+ },
77
+ 'quantity-set': {
78
+ nouns: 'quantity-set changes',
79
+ why: 'a removal produces no replacement content for a delta to carry (a full export applies it by '
80
+ + 'omitting the removed lines)',
81
+ },
82
+ };
83
+ export function createModificationLedger(deltaOnly) {
84
+ // Per kind, in nomination order - the warning lists ids in the order the
85
+ // session produced them. Both modes keep the same books; what differs is
86
+ // which kinds a nomination delivers on its own, and whether an undelivered
87
+ // pair is worth a warning (a full export has no delta format to blame).
88
+ //
89
+ // `modifiedEntityCount` counts ENTITIES, and the exporter nominates from
90
+ // seven sites (property sets, quantity sets, named attributes, the two
91
+ // georeferencing branches, and retype + positional inside the
92
+ // source-iteration pass). Several of those legitimately fire for the same
93
+ // host in one session; counting entities is what keeps that one modification.
94
+ const nominated = new Map();
95
+ const delivered = new Map();
96
+ const acknowledged = new Map();
97
+ const mark = (index, entityId, kind) => {
98
+ let ids = index.get(kind);
99
+ if (!ids) {
100
+ ids = new Set();
101
+ index.set(kind, ids);
102
+ }
103
+ ids.add(entityId);
104
+ };
105
+ const has = (index, entityId, kind) => index.get(kind)?.has(entityId) === true;
106
+ return {
107
+ nominate: (entityId, kind) => {
108
+ mark(nominated, entityId, kind);
109
+ // In a FULL export the kinds an entity's own line carries are written by
110
+ // the pass that nominates them, so there is no emission to wait for and
111
+ // the nomination settles itself. The set kinds are the exception - see
112
+ // `EFFECT_SETTLED_KINDS`.
113
+ if (!deltaOnly && !EFFECT_SETTLED_KINDS.has(kind))
114
+ mark(delivered, entityId, kind);
115
+ },
116
+ recordEmitted: (entityId, kind) => { mark(delivered, entityId, kind); },
117
+ recordWithheld: (entityId, kind) => {
118
+ if (!deltaOnly)
119
+ mark(delivered, entityId, kind);
120
+ },
121
+ acknowledgeUndelivered: (entityId, kind) => { mark(acknowledged, entityId, kind); },
122
+ settle: () => {
123
+ // An entity counts once, however many of its kinds landed - the header
124
+ // claim is per entity and this keying must not inflate it. Only a
125
+ // NOMINATED pair can count: a pass records what it wrote without asking
126
+ // whether the host was countable, and an overlay-created host's generated
127
+ // psets are already counted in `newEntityCount`.
128
+ const deliveredEntities = new Set();
129
+ const warnings = [];
130
+ for (const kind of KIND_ORDER) {
131
+ const ids = nominated.get(kind);
132
+ if (!ids)
133
+ continue;
134
+ const undelivered = [];
135
+ for (const entityId of ids) {
136
+ // Delivery wins over an acknowledgement: a pass that reported a
137
+ // partial failure may still have delivered this kind by another route.
138
+ if (has(delivered, entityId, kind))
139
+ deliveredEntities.add(entityId);
140
+ else if (!has(acknowledged, entityId, kind))
141
+ undelivered.push(entityId);
142
+ }
143
+ // A full export's undelivered pair is not a limitation of the output
144
+ // format - it is an edit that resolved to nothing, such as deleting a
145
+ // set the host never had. There is no other flag to re-export with and
146
+ // nothing for the caller to do, so it is reported by the count alone:
147
+ // zero modifications over a file this export did not change.
148
+ if (deltaOnly && undelivered.length > 0)
149
+ warnings.push(undeliveredWarning(kind, undelivered));
150
+ }
151
+ return { modifiedEntityCount: deliveredEntities.size, warnings };
152
+ },
153
+ };
154
+ }
155
+ /**
156
+ * Record what a rewritten SOURCE LINE delivered for `entityId`.
157
+ *
158
+ * A source line carries every IN-PLACE edit and nothing else: property and
159
+ * quantity sets live in separate records, and a type object's type-owned pset
160
+ * edit is delivered by the `HasPropertySets` REPOINT, not by the line rewrite
161
+ * that carries it — which is why the repoint site records `property-set`
162
+ * itself and the fallback site (where the repoint failed) does not.
163
+ *
164
+ * Only the kinds the mutation pipeline REPORTS having applied. A named
165
+ * attribute whose name resolves to no slot in the record's class is discarded
166
+ * by `applyAttributeMutations`, and calling that delivered would re-create the
167
+ * exact misreport this ledger exists to remove. `attributed` covers BOTH kinds
168
+ * a named-attribute rewrite can deliver: georeferencing edits to an existing
169
+ * `IfcProjectedCRS` / `IfcMapConversion` are queued into the very same
170
+ * `modifiedAttributes` map and applied by the very same call.
171
+ */
172
+ export function recordSourceLineDelivery(ledger, entityId, mutated) {
173
+ if (mutated.attributed) {
174
+ ledger.recordEmitted(entityId, 'attribute');
175
+ ledger.recordEmitted(entityId, 'georeferencing');
176
+ }
177
+ if (mutated.retyped)
178
+ ledger.recordEmitted(entityId, 'retype');
179
+ if (mutated.positional)
180
+ ledger.recordEmitted(entityId, 'positional');
181
+ }
182
+ function undeliveredWarning(kind, undelivered) {
183
+ const shown = undelivered
184
+ .slice(0, UNDELIVERED_IDS_IN_WARNING)
185
+ .map((id) => `#${id}`)
186
+ .join(', ');
187
+ const rest = undelivered.length - UNDELIVERED_IDS_IN_WARNING;
188
+ const subject = undelivered.length === 1 ? 'entity' : 'entities';
189
+ const { nouns, why } = KIND_REPORT[kind];
190
+ return (`deltaOnly export carried no ${nouns} for ${undelivered.length} existing ${subject} `
191
+ + `(${shown}${rest > 0 ? `, +${rest} more` : ''}): ${why}. `
192
+ + `Export with deltaOnly disabled to apply ${undelivered.length === 1 ? 'it' : 'them'}.`);
193
+ }
194
+ //# sourceMappingURL=delta-modification-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-modification-ledger.js","sourceRoot":"","sources":["../src/delta-modification-ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demesh-session.d.ts","sourceRoot":"","sources":["../src/demesh-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demesh-session.d.ts","sourceRoot":"","sources":["../src/demesh-session.ts"],"names":[],"mappings":"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"}
@@ -172,6 +172,13 @@ export class DemeshSession {
172
172
  });
173
173
  upconverted = true;
174
174
  }
175
+ // Deliberately BARE. This view exists to carry `applySimplifiedGeometry`'s
176
+ // representation edits and records no property or quantity mutation of any
177
+ // kind, so it has nothing to resolve a base for; wiring extractors here
178
+ // would buy a per-entity source walk for a lookup nothing performs. It is
179
+ // named in #2487 as a site with no extractors, and it is the one site that
180
+ // does not need them — the exporter supplies the quantity base for any view
181
+ // that turns out to need one.
175
182
  const view = new MutablePropertyView(null, 'default');
176
183
  const editor = new StoreEditor(store, view);
177
184
  const elements = [...this.applied.values()].map((el) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"demesh-session.js","sourceRoot":"","sources":["../src/demesh-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demesh-session.js","sourceRoot":"","sources":["../src/demesh-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Where a FULL export nominates the two NAMED-ATTRIBUTE modification kinds.
3
+ *
4
+ * `attribute` and `georeferencing` are both applied by writing a named slot on
5
+ * the host's own source line, and both used to be nominated where the edit was
6
+ * COLLECTED — before any pass had asked whether the write landed. Two reachable
7
+ * edits write nothing: `setAttribute(id, 'Name', v)` with `v` already in the
8
+ * slot, and `setAttribute(id, name, v)` naming an attribute the class declares
9
+ * no slot for (which `applyAttributeMutations` discards). Either one put
10
+ * "1 modification" in the header of a file byte-identical to its input — the
11
+ * same shape #2462 / #2469 / #2474 removed from the other kinds, and the last
12
+ * member of that family (#2483).
13
+ *
14
+ * The signal already existed: the mutation pipeline reports `attributed` by
15
+ * comparing the line across the named-attribute write, so it is an EFFECT and
16
+ * not an intent. What was missing is a nomination that waits for it.
17
+ *
18
+ * ## Why the nomination moves rather than the count
19
+ *
20
+ * The other direction — nominate at collection, then withdraw — cannot be used
21
+ * here without taking the nomination away from `deltaOnly`, whose per-kind
22
+ * warning exists precisely to NAME an edit the delta format could not carry.
23
+ * There, an undeliverable edit is the one that most needs nominating, so that
24
+ * mode keeps counting intent and settles delivery at the end. A full export has
25
+ * no such warning and no delta format to blame, so the honest report is the
26
+ * count alone: zero modifications over a file this export did not change.
27
+ *
28
+ * So the collection sites keep the eligibility rules (an overlay-CREATED host
29
+ * is already in `newEntityCount`; a host with no emittable source bytes never
30
+ * gets its line rewritten) and record WHO would be nominated, and the emit
31
+ * sites decide WHETHER. {@link InPlaceNominees} is that handoff.
32
+ */
33
+ import type { ModificationLedger, SourceLineDelivery } from './delta-modification-ledger.js';
34
+ /**
35
+ * The hosts whose in-place named-attribute edits are eligible to count, per
36
+ * kind, as decided by the collection pass.
37
+ *
38
+ * Two sets rather than one, because the two kinds are queued into the SAME
39
+ * `modifiedAttributes` map and applied by the SAME call: `attributed` alone
40
+ * cannot say which of them a rewritten line delivered. A host can be in both
41
+ * (an `IfcProjectedCRS` the session also renamed through `setAttribute`), and
42
+ * then both are nominated — `modifiedEntityCount` counts entities, so that is
43
+ * still one modification.
44
+ */
45
+ export interface InPlaceNominees {
46
+ /** Hosts carrying a `setAttribute` edit the source-line pass could apply. */
47
+ readonly attribute: ReadonlySet<number>;
48
+ /** Hosts carrying a georeferencing edit queued as named attributes. */
49
+ readonly georeferencing: ReadonlySet<number>;
50
+ }
51
+ /**
52
+ * Nominate the named-attribute kinds a rewritten SOURCE LINE actually
53
+ * delivered for `entityId`.
54
+ *
55
+ * Call this wherever a full export writes a rewritten source line — the
56
+ * source-iteration pass, and the type-object `HasPropertySets` rewrite that
57
+ * REPLACES it for the hosts that pass skips. Per site, not per feature: a host
58
+ * whose line only ever comes out of the rewrite path would otherwise stop
59
+ * counting a rename that genuinely landed.
60
+ *
61
+ * `retype` and `positional` are not here. They are nominated inline by the pass
62
+ * that measures them and have never had an earlier intent site to move.
63
+ */
64
+ export declare function nominateDeliveredInPlaceEdits(ledger: ModificationLedger, entityId: number, mutated: SourceLineDelivery, nominees: InPlaceNominees): void;
65
+ //# sourceMappingURL=in-place-nomination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-place-nomination.d.ts","sourceRoot":"","sources":["../src/in-place-nomination.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,eAAe,GACxB,IAAI,CAMN"}
@@ -0,0 +1,27 @@
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
+ * Nominate the named-attribute kinds a rewritten SOURCE LINE actually
6
+ * delivered for `entityId`.
7
+ *
8
+ * Call this wherever a full export writes a rewritten source line — the
9
+ * source-iteration pass, and the type-object `HasPropertySets` rewrite that
10
+ * REPLACES it for the hosts that pass skips. Per site, not per feature: a host
11
+ * whose line only ever comes out of the rewrite path would otherwise stop
12
+ * counting a rename that genuinely landed.
13
+ *
14
+ * `retype` and `positional` are not here. They are nominated inline by the pass
15
+ * that measures them and have never had an earlier intent site to move.
16
+ */
17
+ export function nominateDeliveredInPlaceEdits(ledger, entityId, mutated, nominees) {
18
+ // The one gate: a line the named-attribute write left byte-identical carries
19
+ // no modification, whether the edit was a no-op value or a discarded name.
20
+ if (!mutated.attributed)
21
+ return;
22
+ if (nominees.attribute.has(entityId))
23
+ ledger.nominate(entityId, 'attribute');
24
+ if (nominees.georeferencing.has(entityId))
25
+ ledger.nominate(entityId, 'georeferencing');
26
+ }
27
+ //# sourceMappingURL=in-place-nomination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-place-nomination.js","sourceRoot":"","sources":["../src/in-place-nomination.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuD/D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAA0B,EAC1B,QAAgB,EAChB,OAA2B,EAC3B,QAAyB;IAEzB,6EAA6E;IAC7E,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO;IAChC,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACzF,CAAC"}
@@ -5,7 +5,7 @@ import { generateHeader, deterministicGlobalId, IfcParser, asSourceBytes } from
5
5
  import { decodeIfcString } from '@ifc-lite/encoding';
6
6
  import { collectReferencedEntityIds, getVisibleEntityIds, collectStyleEntities } from './reference-collector.js';
7
7
  import { convertStepLine, needsConversion } from './schema-converter.js';
8
- import { assembleStepBytes, assembleStepBlob } from './step-serialization.js';
8
+ import { assembleStepBytes, assembleStepBlob } from './step-file-assembly.js';
9
9
  import { getCompleteEntityIndex, getMaxExpressId } from './entity-iteration.js';
10
10
  import { StepExporter } from './step-exporter.js';
11
11
  import { rescaleEntityLengths, computeNormalizeFactor } from './unit-normalize.js';
@@ -1 +1 @@
1
- {"version":3,"file":"retype.d.ts","sourceRoot":"","sources":["../src/retype.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAoD9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,GACvB,gBAAgB,CA+ClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAsBR"}
1
+ {"version":3,"file":"retype.d.ts","sourceRoot":"","sources":["../src/retype.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAoD9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,GACvB,gBAAgB,CA+ClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAsBR"}
package/dist/retype.js CHANGED
@@ -25,7 +25,8 @@
25
25
  * raw argument tokens are preserved byte-for-byte.
26
26
  */
27
27
  import { ENTITIES_IFC2X3, ENTITIES_IFC4, ENTITIES_IFC4X3 } from '@ifc-lite/data';
28
- import { escapeStepString, splitTopLevelArgs } from './step-serialization.js';
28
+ import { escapeStepString } from './step-serialization.js';
29
+ import { splitTopLevelArgs } from './step-argument-parser.js';
29
30
  function buildSchemaMap(list) {
30
31
  const map = new Map();
31
32
  for (const entity of list) {
@@ -1 +1 @@
1
- {"version":3,"file":"retype.js","sourceRoot":"","sources":["../src/retype.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retype.js","sourceRoot":"","sources":["../src/retype.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
1
  import type { IfcAttributeValue } from '@ifc-lite/parser';
2
+ /**
3
+ * `selectName` → its DEFINED-TYPE leaves, mapped to the EXPRESS primitive each
4
+ * bottoms out in (`IfcText` → `STRING`, `IfcLengthMeasure` → `REAL`). Nested
5
+ * selects are flattened; entity members are skipped (they serialize as `#ref`
6
+ * and are never type-qualified).
7
+ *
8
+ * Exported for `declared-property-type.ts`, which asks the same question of
9
+ * `IfcValue` for a different reason: not "which member does this bare value
10
+ * imply" but "is this token a member at all, and does it agree with the value".
11
+ * One walk, one cache, one definition of what a qualifiable member is.
12
+ */
13
+ export declare function getSelectDefinedLeaves(selectName: string): Map<string, string>;
2
14
  /**
3
15
  * Emit the type-qualified STEP token for a SELECT slot when it can be resolved
4
16
  * unambiguously from the schema, else `null` (the caller falls back to the
@@ -1 +1 @@
1
- {"version":3,"file":"select-qualification.d.ts","sourceRoot":"","sources":["../src/select-qualification.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA2G1D;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,iBAAiB,GACvB,MAAM,GAAG,IAAI,CAOf"}
1
+ {"version":3,"file":"select-qualification.d.ts","sourceRoot":"","sources":["../src/select-qualification.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB9E;AAsED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,iBAAiB,GACvB,MAAM,GAAG,IAAI,CAOf"}
@@ -35,7 +35,18 @@ function isDefinedType(type) {
35
35
  // DEFINED-TYPE leaves (recursing nested selects; entity members are skipped —
36
36
  // they serialize as `#ref`, never qualified).
37
37
  const selectLeafCache = new Map();
38
- function getSelectDefinedLeaves(selectName) {
38
+ /**
39
+ * `selectName` → its DEFINED-TYPE leaves, mapped to the EXPRESS primitive each
40
+ * bottoms out in (`IfcText` → `STRING`, `IfcLengthMeasure` → `REAL`). Nested
41
+ * selects are flattened; entity members are skipped (they serialize as `#ref`
42
+ * and are never type-qualified).
43
+ *
44
+ * Exported for `declared-property-type.ts`, which asks the same question of
45
+ * `IfcValue` for a different reason: not "which member does this bare value
46
+ * imply" but "is this token a member at all, and does it agree with the value".
47
+ * One walk, one cache, one definition of what a qualifiable member is.
48
+ */
49
+ export function getSelectDefinedLeaves(selectName) {
39
50
  const cached = selectLeafCache.get(selectName);
40
51
  if (cached)
41
52
  return cached;
@@ -1 +1 @@
1
- {"version":3,"file":"select-qualification.js","sourceRoot":"","sources":["../src/select-qualification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-qualification.js","sourceRoot":"","sources":["../src/select-qualification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * "Can this record's line actually be read out of this source?"
3
+ *
4
+ * The exporter's byte-range gates used to ask two weaker questions — is there a
5
+ * source at all, and does this ref claim a non-empty range — and relied on an
6
+ * UNSTATED invariant to join them: an empty source implies zero-length refs
7
+ * (#2491). Every producer in the repo happens to honour it (the one source-less
8
+ * store builder adds every ref as `(0, 0)`), and nothing states or enforces it.
9
+ *
10
+ * A store that violates it made the exporter write a CORRUPT file, silently. A
11
+ * ref claiming real bytes over a source that has none passed the presence gates,
12
+ * so the property-set generator wrote an `IfcRelDefinesByProperties` naming the
13
+ * host — while the source-iteration pass emitted the host's own line as the
14
+ * EMPTY STRING, because `IfcSourceBytes.decodeUtf8` clamps a range it cannot
15
+ * address. A relationship pointing at a wall whose line had vanished: no error,
16
+ * no warning.
17
+ *
18
+ * ## Why the ref rather than the invariant
19
+ *
20
+ * The invariant could have been asserted where stores are constructed. There is
21
+ * no single chokepoint for that — stores are built by the parser, by the server
22
+ * data model, by test doubles and by any embedder of the published API — so an
23
+ * assertion would have to be added to each, and the next producer (a partial or
24
+ * streaming source, or one that attaches bytes after building its index) would
25
+ * be free to skip it. Testing the ref puts the check where the value is USED,
26
+ * which is one place per read and cannot be bypassed by a new producer.
27
+ *
28
+ * The degraded behaviour is the one the exporter already handles correctly and
29
+ * has tests for: a record with no emittable bytes. Nothing is generated FOR it,
30
+ * nothing that names it is written, and it does not appear in the file — the
31
+ * same outcome as the source-less store the server path builds.
32
+ *
33
+ * This predicate is deliberately NOT applied to the incidental readers
34
+ * (`getRelatedEntities`, `getPropertySetName`, …). Those decode a range and
35
+ * match a pattern in it; a clamped, empty decode already yields "no match",
36
+ * which is the same answer and needs no gate of its own.
37
+ */
38
+ import type { ExportEntityRef } from './entity-iteration.js';
39
+ /** The half of a source this module needs: how many bytes it can serve. */
40
+ interface SourceExtent {
41
+ readonly byteLength: number;
42
+ }
43
+ /**
44
+ * A predicate over entity refs: true when `[byteOffset, byteOffset+byteLength)`
45
+ * is a non-empty range fully inside `source`.
46
+ *
47
+ * `source` may be absent (a store built with no source at all), in which case
48
+ * nothing is readable. A ref at `(0, 0)` is not readable either — that is the
49
+ * canonical "this record has no source line" marker, not a zero-width read.
50
+ */
51
+ export declare function createSourceRefReader(source: SourceExtent | null | undefined): (ref: Pick<ExportEntityRef, 'byteOffset' | 'byteLength'> | undefined) => boolean;
52
+ export {};
53
+ //# sourceMappingURL=source-ref-bounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-ref-bounds.d.ts","sourceRoot":"","sources":["../src/source-ref-bounds.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2EAA2E;AAC3E,UAAU,YAAY;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACtC,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG,SAAS,KAAK,OAAO,CAUlF"}
@@ -0,0 +1,25 @@
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
+ * A predicate over entity refs: true when `[byteOffset, byteOffset+byteLength)`
6
+ * is a non-empty range fully inside `source`.
7
+ *
8
+ * `source` may be absent (a store built with no source at all), in which case
9
+ * nothing is readable. A ref at `(0, 0)` is not readable either — that is the
10
+ * canonical "this record has no source line" marker, not a zero-width read.
11
+ */
12
+ export function createSourceRefReader(source) {
13
+ const extent = source ? source.byteLength : 0;
14
+ return (ref) => {
15
+ if (!ref)
16
+ return false;
17
+ if (ref.byteOffset < 0 || ref.byteLength <= 0)
18
+ return false;
19
+ // `<=` on the END, so a range that stops exactly at the last byte reads.
20
+ // Written as a sum rather than as two comparisons because a ref whose
21
+ // offset alone is in range can still run off the end.
22
+ return ref.byteOffset + ref.byteLength <= extent;
23
+ };
24
+ }
25
+ //# sourceMappingURL=source-ref-bounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-ref-bounds.js","sourceRoot":"","sources":["../src/source-ref-bounds.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA+C/D;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAuC;IAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,yEAAyE;QACzE,sEAAsE;QACtE,sDAAsD;QACtD,OAAO,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC"}