@ifc-lite/export 4.0.1 → 4.3.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.
Files changed (123) hide show
  1. package/README.md +7 -0
  2. package/dist/anonymize-export.d.ts.map +1 -1
  3. package/dist/anonymize-export.js +10 -4
  4. package/dist/anonymize-export.js.map +1 -1
  5. package/dist/anonymize-placement.d.ts.map +1 -1
  6. package/dist/anonymize-placement.js +5 -6
  7. package/dist/anonymize-placement.js.map +1 -1
  8. package/dist/appearance-dependencies.d.ts +12 -0
  9. package/dist/appearance-dependencies.d.ts.map +1 -0
  10. package/dist/appearance-dependencies.js +195 -0
  11. package/dist/appearance-dependencies.js.map +1 -0
  12. package/dist/authored-resource-cleanup.d.ts +14 -0
  13. package/dist/authored-resource-cleanup.d.ts.map +1 -0
  14. package/dist/authored-resource-cleanup.js +156 -0
  15. package/dist/authored-resource-cleanup.js.map +1 -0
  16. package/dist/csv-table.d.ts +10 -0
  17. package/dist/csv-table.d.ts.map +1 -0
  18. package/dist/csv-table.js +39 -0
  19. package/dist/csv-table.js.map +1 -0
  20. package/dist/effective-appearance-record.d.ts +8 -0
  21. package/dist/effective-appearance-record.d.ts.map +1 -0
  22. package/dist/effective-appearance-record.js +49 -0
  23. package/dist/effective-appearance-record.js.map +1 -0
  24. package/dist/ifc5-appearance.d.ts +20 -0
  25. package/dist/ifc5-appearance.d.ts.map +1 -0
  26. package/dist/ifc5-appearance.js +106 -0
  27. package/dist/ifc5-appearance.js.map +1 -0
  28. package/dist/ifc5-export-helpers.d.ts +19 -0
  29. package/dist/ifc5-export-helpers.d.ts.map +1 -1
  30. package/dist/ifc5-export-helpers.js +41 -0
  31. package/dist/ifc5-export-helpers.js.map +1 -1
  32. package/dist/ifc5-exporter.d.ts +12 -10
  33. package/dist/ifc5-exporter.d.ts.map +1 -1
  34. package/dist/ifc5-exporter.js +24 -41
  35. package/dist/ifc5-exporter.js.map +1 -1
  36. package/dist/index.d.ts +6 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/lod0-generator.js +1 -1
  41. package/dist/lod0-generator.js.map +1 -1
  42. package/dist/merged-context.d.ts.map +1 -1
  43. package/dist/merged-context.js +15 -1
  44. package/dist/merged-context.js.map +1 -1
  45. package/dist/merged-empty-containers.d.ts.map +1 -1
  46. package/dist/merged-empty-containers.js +9 -11
  47. package/dist/merged-empty-containers.js.map +1 -1
  48. package/dist/merged-subcontext.d.ts.map +1 -1
  49. package/dist/merged-subcontext.js +19 -1
  50. package/dist/merged-subcontext.js.map +1 -1
  51. package/dist/obj.d.ts +20 -0
  52. package/dist/obj.d.ts.map +1 -0
  53. package/dist/obj.js +40 -0
  54. package/dist/obj.js.map +1 -0
  55. package/dist/parquet-exporter.d.ts.map +1 -1
  56. package/dist/parquet-exporter.js +5 -5
  57. package/dist/parquet-exporter.js.map +1 -1
  58. package/dist/reference-collector.d.ts +21 -8
  59. package/dist/reference-collector.d.ts.map +1 -1
  60. package/dist/reference-collector.js +38 -45
  61. package/dist/reference-collector.js.map +1 -1
  62. package/dist/retype.d.ts +1 -1
  63. package/dist/retype.d.ts.map +1 -1
  64. package/dist/retype.js +13 -3
  65. package/dist/retype.js.map +1 -1
  66. package/dist/schema-converter-attr-remap.d.ts +18 -7
  67. package/dist/schema-converter-attr-remap.d.ts.map +1 -1
  68. package/dist/schema-converter-attr-remap.js +42 -48
  69. package/dist/schema-converter-attr-remap.js.map +1 -1
  70. package/dist/schema-converter.d.ts.map +1 -1
  71. package/dist/schema-converter.js +16 -78
  72. package/dist/schema-converter.js.map +1 -1
  73. package/dist/step-argument-parser.d.ts +20 -3
  74. package/dist/step-argument-parser.d.ts.map +1 -1
  75. package/dist/step-argument-parser.js +60 -11
  76. package/dist/step-argument-parser.js.map +1 -1
  77. package/dist/step-attribute-mutations.d.ts +32 -2
  78. package/dist/step-attribute-mutations.d.ts.map +1 -1
  79. package/dist/step-attribute-mutations.js +87 -6
  80. package/dist/step-attribute-mutations.js.map +1 -1
  81. package/dist/step-comment-skip.d.ts +13 -0
  82. package/dist/step-comment-skip.d.ts.map +1 -0
  83. package/dist/step-comment-skip.js +19 -0
  84. package/dist/step-comment-skip.js.map +1 -0
  85. package/dist/step-export-types.d.ts +51 -0
  86. package/dist/step-export-types.d.ts.map +1 -1
  87. package/dist/step-export-types.js +38 -0
  88. package/dist/step-export-types.js.map +1 -1
  89. package/dist/step-outer-args.d.ts +27 -0
  90. package/dist/step-outer-args.d.ts.map +1 -0
  91. package/dist/step-outer-args.js +64 -0
  92. package/dist/step-outer-args.js.map +1 -0
  93. package/dist/step-overlay-attribute-overrides.d.ts.map +1 -1
  94. package/dist/step-overlay-attribute-overrides.js +6 -2
  95. package/dist/step-overlay-attribute-overrides.js.map +1 -1
  96. package/dist/step-property-sets.d.ts.map +1 -1
  97. package/dist/step-property-sets.js +8 -2
  98. package/dist/step-property-sets.js.map +1 -1
  99. package/dist/step-serialization.d.ts +1 -1
  100. package/dist/step-serialization.js +1 -1
  101. package/dist/step-slot-grammar.d.ts +24 -0
  102. package/dist/step-slot-grammar.d.ts.map +1 -0
  103. package/dist/step-slot-grammar.js +201 -0
  104. package/dist/step-slot-grammar.js.map +1 -0
  105. package/dist/step-source-iteration.d.ts.map +1 -1
  106. package/dist/step-source-iteration.js +26 -2
  107. package/dist/step-source-iteration.js.map +1 -1
  108. package/dist/style-closure.d.ts +3 -1
  109. package/dist/style-closure.d.ts.map +1 -1
  110. package/dist/style-closure.js +16 -1
  111. package/dist/style-closure.js.map +1 -1
  112. package/dist/subset-entity-reader.d.ts +12 -4
  113. package/dist/subset-entity-reader.d.ts.map +1 -1
  114. package/dist/subset-entity-reader.js +4 -16
  115. package/dist/subset-entity-reader.js.map +1 -1
  116. package/dist/texture-map-closure.d.ts +10 -0
  117. package/dist/texture-map-closure.d.ts.map +1 -0
  118. package/dist/texture-map-closure.js +22 -0
  119. package/dist/texture-map-closure.js.map +1 -0
  120. package/dist/unit-normalize.d.ts.map +1 -1
  121. package/dist/unit-normalize.js +12 -49
  122. package/dist/unit-normalize.js.map +1 -1
  123. package/package.json +8 -8
@@ -14,11 +14,12 @@
14
14
  * pipeline is now `step-overlay-attribute-overrides.ts`, and the shared
15
15
  * serializers are `step-attribute-serializers.ts`.
16
16
  */
17
- import { splitTopLevelArgs } from './step-argument-parser.js';
17
+ import { splitTopLevelStepArguments } from './step-argument-parser.js';
18
18
  import { getRealTypedSlots } from './attribute-real-slots.js';
19
19
  import { retypeStepLine } from './retype.js';
20
20
  import { attrIndex, stepSourceSchema } from './subset-entity-reader.js';
21
21
  import { serializeNamedAttribute, serializePositionalOverride } from './step-attribute-serializers.js';
22
+ import { unreadableRecordEditsDroppedWarning } from './step-export-types.js';
22
23
  /**
23
24
  * THE mutation pipeline for a line read out of the source buffer: retype,
24
25
  * then named attribute edits, then positional edits.
@@ -47,8 +48,8 @@ import { serializeNamedAttribute, serializePositionalOverride } from './step-att
47
48
  * The expressId is unchanged by all of this, so geometry / placement /
48
49
  * representation and every IfcRel* reference (keyed by #id) carry over.
49
50
  *
50
- * All three flags report EFFECT, not intent — each is the answer to "did this
51
- * operation change the line", measured across that operation alone. The count
51
+ * The three delivery flags report EFFECT, not intent — each is the answer to
52
+ * "did this operation change the line", measured across that operation alone. The count
52
53
  * and the ledger are claims about the FILE, so an edit that resolves to the
53
54
  * text already there has delivered nothing and must not be reported: retyping
54
55
  * an entity to the class it already is, or writing a positional slot the token
@@ -62,6 +63,13 @@ import { serializeNamedAttribute, serializePositionalOverride } from './step-att
62
63
  * two are nominated (their edits have no earlier nomination site); named
63
64
  * attribute edits are nominated by the collection pass and `attributed` only
64
65
  * settles their delivery.
66
+ *
67
+ * `unreadable` is the fourth field and answers a different question: not what
68
+ * this line carries, but whether the pipeline could read it at all. Every edit
69
+ * kind above writes a slot BY INDEX, so all of them refuse together on a record
70
+ * whose argument list does not scan — and three false delivery flags cannot say
71
+ * that, because a discarded edit sets them too. Both call sites turn it into a
72
+ * warning naming the entity (#4125).
65
73
  */
66
74
  export function applySourceLineMutations(mutationView, expressId, entityText, recordType, attributeMutations, sourceSchema, overlayActive, onRejected) {
67
75
  let text = entityText;
@@ -97,7 +105,68 @@ export function applySourceLineMutations(mutationView, expressId, entityText, re
97
105
  text = applyPositionalMutations(text, positionals, workingType, sourceSchema);
98
106
  positional = text !== beforePositionals;
99
107
  }
100
- return { text, attributed, retyped, positional };
108
+ // All three edit kinds above address this line's arguments BY INDEX, so all
109
+ // three refuse together when the argument list does not scan into slots —
110
+ // and all three then look exactly like an edit that resolved to the text
111
+ // already there. That is the failure this whole family is about, so the
112
+ // refusal is stated rather than left to be inferred from three false flags
113
+ // (#4125). Only ever set when an edit was actually asked for: a malformed
114
+ // record nobody edited has refused nothing.
115
+ //
116
+ // The three delivery flags are tested FIRST because any one of them being
117
+ // true already answers the question, without splitting the record a second
118
+ // time. Each of `retypeStepLine`, `applyAttributeMutations` and
119
+ // `applyPositionalMutations` returns its input UNCHANGED when it refuses, so
120
+ // a flag that is true means that writer replaced a slot, which means it
121
+ // scanned the argument list — over the same substring, between the same
122
+ // `indexOf('(')` and `lastIndexOf(');')` bounds `argumentListScans` uses. So
123
+ // the added conjuncts only ever skip a call that would have returned true;
124
+ // they cannot turn a refusal into a readable record.
125
+ const requested = typeMutation !== null
126
+ || (attributeMutations?.size ?? 0) > 0
127
+ || (positionals?.size ?? 0) > 0;
128
+ const unreadable = requested
129
+ && !attributed
130
+ && !retyped
131
+ && !positional
132
+ && !argumentListScans(entityText);
133
+ return { text, attributed, retyped, positional, unreadable };
134
+ }
135
+ /**
136
+ * Run the pipeline for a writing pass and report BOTH ways it can decline to
137
+ * write, into that pass's warnings.
138
+ *
139
+ * Two passes emit a source entity's defining line — the source-iteration pass
140
+ * and the type-object `HasPropertySets` rewrite that REPLACES it — and each
141
+ * needs the same pair: the per-attribute rejection (a REAL-typed slot handed a
142
+ * non-number) and the whole-record refusal ({@link SourceLineMutations.unreadable}).
143
+ * They were two identical blocks at the two call sites, which is one block per
144
+ * pass too many: a third pass copying one of them gets a report that is right
145
+ * about one channel and silent about the other, and silence is what #4125 is
146
+ * about. So the call and both reports are one thing here.
147
+ */
148
+ export function applySourceLineMutationsReported(apply, warnings, expressId, entityText, recordType, attributeMutations, sourceSchema, overlayActive) {
149
+ const mutated = apply(expressId, entityText, recordType, attributeMutations, sourceSchema, overlayActive, (attr, value) => warnings.push(`entity #${expressId}: attribute ${attr} not written - ` +
150
+ `${JSON.stringify(value)} is not a number and the slot is REAL-typed`));
151
+ if (mutated.unreadable) {
152
+ warnings.push(unreadableRecordEditsDroppedWarning(expressId, recordType));
153
+ }
154
+ return mutated;
155
+ }
156
+ /**
157
+ * Does this line's own argument list scan into slots?
158
+ *
159
+ * Scoped to the arguments deliberately. Text that is not a `#N=CLASS(...);`
160
+ * record at all is a different fact, and one every writer here already returns
161
+ * untouched without claiming anything; this answers only the question the
162
+ * by-index writers below actually ask.
163
+ */
164
+ function argumentListScans(entityText) {
165
+ const openParen = entityText.indexOf('(');
166
+ const closeParen = entityText.lastIndexOf(');');
167
+ if (openParen < 0 || closeParen < openParen)
168
+ return true;
169
+ return splitTopLevelStepArguments(entityText.slice(openParen + 1, closeParen)) !== null;
101
170
  }
102
171
  /**
103
172
  * Rewrite root IFC attributes directly on the original STEP entity line.
@@ -108,7 +177,15 @@ function applyAttributeMutations(entityText, entityType, attributeMutations, sch
108
177
  if (openParen < 0 || closeParen < openParen) {
109
178
  return entityText;
110
179
  }
111
- const args = splitTopLevelArgs(entityText.slice(openParen + 1, closeParen));
180
+ // Validating, not permissive. Every write below is BY INDEX into these
181
+ // parts, so parts that are not the record's slots put the value on another
182
+ // attribute and delete whatever was there, while `changed` still says the
183
+ // edit landed (#2470, #4125). A `null` refuses the whole line's named edits
184
+ // rather than handing back a success that did not happen; the caller reports
185
+ // it (see {@link applySourceLineMutations}).
186
+ const args = splitTopLevelStepArguments(entityText.slice(openParen + 1, closeParen));
187
+ if (args === null)
188
+ return entityText;
112
189
  // A source line NEVER pads (unlike the overlay-created path): a short
113
190
  // argument list here means the file speaks a different schema, and growing
114
191
  // a record we did not author would corrupt it.
@@ -159,7 +236,11 @@ function applyPositionalMutations(entityText, positionals, entityType, schemaVer
159
236
  const closeParen = entityText.lastIndexOf(');');
160
237
  if (openParen < 0 || closeParen < openParen)
161
238
  return entityText;
162
- const args = splitTopLevelArgs(entityText.slice(openParen + 1, closeParen));
239
+ // Validating for the same reason as the named path above: `args[index] = …`
240
+ // is only an edit to attribute `index` when the parts ARE the record's slots.
241
+ const args = splitTopLevelStepArguments(entityText.slice(openParen + 1, closeParen));
242
+ if (args === null)
243
+ return entityText;
163
244
  const realSlots = getRealTypedSlots(entityType, schemaVersion);
164
245
  let changed = false;
165
246
  for (const [index, value] of positionals) {
@@ -1 +1 @@
1
- {"version":3,"file":"step-attribute-mutations.js","sourceRoot":"","sources":["../src/step-attribute-mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-attribute-mutations.js","sourceRoot":"","sources":["../src/step-attribute-mutations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Skip a comment-delimiter-bounded region atomically, starting at the index
3
+ * of its opening `/` marker (caller has already checked `text[i] === '/' &&
4
+ * text[i + 1] === '*'`). Returns the index one past the region's end — the
5
+ * matching close marker, or end-of-text when unterminated — so its content
6
+ * (a comma, an unbalanced paren, an odd number of `'`) is skipped as one
7
+ * unit rather than read as argument-list structure. Shared by both
8
+ * `step-argument-parser.ts` splitters so the skip rule can't drift between
9
+ * them again (#4227: `splitTopLevelListItems` shipped with no comment handling
10
+ * at all while `splitTopLevelStepArguments` had this same logic inline).
11
+ */
12
+ export declare function skipStepComment(text: string, i: number): number;
13
+ //# sourceMappingURL=step-comment-skip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-comment-skip.d.ts","sourceRoot":"","sources":["../src/step-comment-skip.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/D"}
@@ -0,0 +1,19 @@
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
+ * Skip a comment-delimiter-bounded region atomically, starting at the index
6
+ * of its opening `/` marker (caller has already checked `text[i] === '/' &&
7
+ * text[i + 1] === '*'`). Returns the index one past the region's end — the
8
+ * matching close marker, or end-of-text when unterminated — so its content
9
+ * (a comma, an unbalanced paren, an odd number of `'`) is skipped as one
10
+ * unit rather than read as argument-list structure. Shared by both
11
+ * `step-argument-parser.ts` splitters so the skip rule can't drift between
12
+ * them again (#4227: `splitTopLevelListItems` shipped with no comment handling
13
+ * at all while `splitTopLevelStepArguments` had this same logic inline).
14
+ */
15
+ export function skipStepComment(text, i) {
16
+ const end = text.indexOf('*/', i + 2);
17
+ return end === -1 ? text.length : end + 2;
18
+ }
19
+ //# sourceMappingURL=step-comment-skip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-comment-skip.js","sourceRoot":"","sources":["../src/step-comment-skip.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,CAAS;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC"}
@@ -202,6 +202,44 @@ export declare const relationshipWithheldWarning: (expressId: number, type: stri
202
202
  * attribute, e.g. `IfcStyledItem.Item`, naming an entity this export omits).
203
203
  */
204
204
  export declare const styleEntityWithheldWarning: (expressId: number, type: string) => string;
205
+ /**
206
+ * The edits queued for a source record were dropped because its own argument
207
+ * list could not be read as a list of slots.
208
+ *
209
+ * Said out loud, because the alternative was worse in both directions. Writing
210
+ * by index into parts a mis-scan produced lands the value on a different
211
+ * attribute and deletes what was there, while reporting success; refusing
212
+ * without saying so leaves an export that looks like it carried the edit. The
213
+ * usual cause is an undoubled apostrophe inside a string-typed attribute, which
214
+ * an authoring tool emits when it forgets to double one — two of those leave
215
+ * quote parity even and paren depth at zero, so nothing structural notices
216
+ * (#4125).
217
+ *
218
+ * It says what was DROPPED and nothing about what was written. It used to open
219
+ * "was written exactly as the source file has it", which is a claim this
220
+ * sentence is in no position to make: the pipeline that produces it runs before
221
+ * `writeSourceEntityLines` hands the record to `convertStepLine`, and a
222
+ * cross-schema export can rename the record's type, trim or pad its attribute
223
+ * list, replace it with an `IFCPROXY`, or drop it from the output entirely. So
224
+ * on exactly the path where a caller most needs to know what became of a
225
+ * dropped edit, the diagnostic was false (#4213).
226
+ *
227
+ * Buffering the report until the line's fate is known — the treatment
228
+ * `step-source-iteration.ts` already applies to the withholding branches — does
229
+ * not fit here. The refusal is produced one layer below the two writers, and
230
+ * the other of them (`step-property-sets.ts`'s type-object rewrite) never
231
+ * converts at all, so a message about the output would have to be assembled
232
+ * differently per caller for a fact neither caller is reporting. A sentence
233
+ * about the refusal is true on every path, which is what a shared message needs
234
+ * to be. It does not replace the dropped clause with a weaker one either — "the
235
+ * record keeps the values the source gave it" is false on the same conversion
236
+ * path, for the same reason.
237
+ *
238
+ * `type` is the class the SOURCE record carries, which is the class the dropped
239
+ * edits were queued against; it is not a claim about the class the export
240
+ * writes, which on that same conversion path can differ.
241
+ */
242
+ export declare const unreadableRecordEditsDroppedWarning: (expressId: number, type: string) => string;
205
243
  /**
206
244
  * What `step-attribute-mutations.ts`'s `applySourceLineMutations` produced: the rewritten
207
245
  * line, plus which edit kinds that rewrite actually delivered. The delivery
@@ -211,6 +249,19 @@ export declare const styleEntityWithheldWarning: (expressId: number, type: strin
211
249
  */
212
250
  export type SourceLineMutations = SourceLineDelivery & {
213
251
  text: string;
252
+ /**
253
+ * The line's argument list did not scan into slots, so NONE of the edits
254
+ * queued for it was applied and `text` is the source's own bytes.
255
+ *
256
+ * Separate from the three delivery flags because it answers a different
257
+ * question. Those say what this line carries; this says the pipeline refused
258
+ * to write it at all. Without it a refusal is indistinguishable from an edit
259
+ * that resolved to the text already there — three false flags either way —
260
+ * and writing by index into an argument list this scanner could not read is
261
+ * exactly how an edit lands on the wrong attribute while reporting success
262
+ * (#2470, #4125).
263
+ */
264
+ unreadable: boolean;
214
265
  };
215
266
  /**
216
267
  * The state one `export()` call shares across its seven phases.
@@ -1 +1 @@
1
- {"version":3,"file":"step-export-types.d.ts","sourceRoot":"","sources":["../src/step-export-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-export-types.d.ts","sourceRoot":"","sources":["../src/step-export-types.ts"],"names":[],"mappings":"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"}
@@ -29,4 +29,42 @@ export const relationshipWithheldWarning = (expressId, type) => `Relationship #$
29
29
  * attribute, e.g. `IfcStyledItem.Item`, naming an entity this export omits).
30
30
  */
31
31
  export const styleEntityWithheldWarning = (expressId, type) => `Entity #${expressId} (${type}) was withheld from the export: it names at least one entity that has no line in this export, in a slot with no spelling for an omitted reference (a single-valued attribute, or a set whose every member is omitted).`;
32
+ /**
33
+ * The edits queued for a source record were dropped because its own argument
34
+ * list could not be read as a list of slots.
35
+ *
36
+ * Said out loud, because the alternative was worse in both directions. Writing
37
+ * by index into parts a mis-scan produced lands the value on a different
38
+ * attribute and deletes what was there, while reporting success; refusing
39
+ * without saying so leaves an export that looks like it carried the edit. The
40
+ * usual cause is an undoubled apostrophe inside a string-typed attribute, which
41
+ * an authoring tool emits when it forgets to double one — two of those leave
42
+ * quote parity even and paren depth at zero, so nothing structural notices
43
+ * (#4125).
44
+ *
45
+ * It says what was DROPPED and nothing about what was written. It used to open
46
+ * "was written exactly as the source file has it", which is a claim this
47
+ * sentence is in no position to make: the pipeline that produces it runs before
48
+ * `writeSourceEntityLines` hands the record to `convertStepLine`, and a
49
+ * cross-schema export can rename the record's type, trim or pad its attribute
50
+ * list, replace it with an `IFCPROXY`, or drop it from the output entirely. So
51
+ * on exactly the path where a caller most needs to know what became of a
52
+ * dropped edit, the diagnostic was false (#4213).
53
+ *
54
+ * Buffering the report until the line's fate is known — the treatment
55
+ * `step-source-iteration.ts` already applies to the withholding branches — does
56
+ * not fit here. The refusal is produced one layer below the two writers, and
57
+ * the other of them (`step-property-sets.ts`'s type-object rewrite) never
58
+ * converts at all, so a message about the output would have to be assembled
59
+ * differently per caller for a fact neither caller is reporting. A sentence
60
+ * about the refusal is true on every path, which is what a shared message needs
61
+ * to be. It does not replace the dropped clause with a weaker one either — "the
62
+ * record keeps the values the source gave it" is false on the same conversion
63
+ * path, for the same reason.
64
+ *
65
+ * `type` is the class the SOURCE record carries, which is the class the dropped
66
+ * edits were queued against; it is not a claim about the class the export
67
+ * writes, which on that same conversion path can differ.
68
+ */
69
+ export const unreadableRecordEditsDroppedWarning = (expressId, type) => `Entity #${expressId} (${type}): its argument list could not be read as a list of attributes, so every edit queued for it (attribute, retype and positional alike) was dropped rather than applied to a slot that may not be the one meant. The usual cause is an apostrophe inside a string attribute that was not doubled.`;
32
70
  //# sourceMappingURL=step-export-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"step-export-types.js","sourceRoot":"","sources":["../src/step-export-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmM/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAU,EAAE,CACrF,iBAAiB,SAAS,KAAK,IAAI,0SAA0S,CAAC;AAEhV;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAU,EAAE,CACpF,WAAW,SAAS,KAAK,IAAI,wNAAwN,CAAC"}
1
+ {"version":3,"file":"step-export-types.js","sourceRoot":"","sources":["../src/step-export-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmM/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAU,EAAE,CACrF,iBAAiB,SAAS,KAAK,IAAI,0SAA0S,CAAC;AAEhV;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAU,EAAE,CACpF,WAAW,SAAS,KAAK,IAAI,wNAAwN,CAAC;AAExP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAU,EAAE,CAC7F,WAAW,SAAS,KAAK,IAAI,gSAAgS,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Locate the outer STEP argument list of one entity line: the first `(` (nothing
3
+ * is quoted before the type name) and its matching `)`, honouring quoted strings
4
+ * (with the `''` escape) and `/* ... *​/` comments so a literal `)`, `'`, or `(`
5
+ * inside either never shifts the match. Returns `null` for a line without
6
+ * arguments, or one whose span this scan cannot delimit cleanly.
7
+ *
8
+ * Split out of `unit-normalize.ts` (which has no line-count headroom left under
9
+ * `scripts/check-module-size.mjs`) so this scan — shared in spirit with
10
+ * `splitTopLevelStepArguments`'s outer scan in `step-argument-parser.ts` — has
11
+ * somewhere to carry its comment-awareness fix.
12
+ *
13
+ * ISO-10303-21 comment content is unrestricted: a `/* ... *​/` can hold an
14
+ * apostrophe or an unbalanced paren, neither of which is argument-list
15
+ * structure. Before this fix, an apostrophe inside a comment toggled quote
16
+ * state and an unbalanced paren inside one shifted the depth count, so a scan
17
+ * over an otherwise well-formed line could miss the record's real closing `)`
18
+ * and return `null` — which `rescaleEntityLengths` reads as "no arguments to
19
+ * rescale" and silently hands the line back with its length/area/volume data
20
+ * UNSCALED, the same silent-corruption class `splitTopLevelStepArguments` was
21
+ * hardened against for LTplus-AG/ifc-lite#4162.
22
+ */
23
+ export declare function findOuterArgs(line: string): {
24
+ open: number;
25
+ close: number;
26
+ } | null;
27
+ //# sourceMappingURL=step-outer-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-outer-args.d.ts","sourceRoot":"","sources":["../src/step-outer-args.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA4BlF"}
@@ -0,0 +1,64 @@
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
+ * Locate the outer STEP argument list of one entity line: the first `(` (nothing
6
+ * is quoted before the type name) and its matching `)`, honouring quoted strings
7
+ * (with the `''` escape) and `/* ... *​/` comments so a literal `)`, `'`, or `(`
8
+ * inside either never shifts the match. Returns `null` for a line without
9
+ * arguments, or one whose span this scan cannot delimit cleanly.
10
+ *
11
+ * Split out of `unit-normalize.ts` (which has no line-count headroom left under
12
+ * `scripts/check-module-size.mjs`) so this scan — shared in spirit with
13
+ * `splitTopLevelStepArguments`'s outer scan in `step-argument-parser.ts` — has
14
+ * somewhere to carry its comment-awareness fix.
15
+ *
16
+ * ISO-10303-21 comment content is unrestricted: a `/* ... *​/` can hold an
17
+ * apostrophe or an unbalanced paren, neither of which is argument-list
18
+ * structure. Before this fix, an apostrophe inside a comment toggled quote
19
+ * state and an unbalanced paren inside one shifted the depth count, so a scan
20
+ * over an otherwise well-formed line could miss the record's real closing `)`
21
+ * and return `null` — which `rescaleEntityLengths` reads as "no arguments to
22
+ * rescale" and silently hands the line back with its length/area/volume data
23
+ * UNSCALED, the same silent-corruption class `splitTopLevelStepArguments` was
24
+ * hardened against for LTplus-AG/ifc-lite#4162.
25
+ */
26
+ export function findOuterArgs(line) {
27
+ const open = line.indexOf('(');
28
+ if (open === -1)
29
+ return null;
30
+ let depth = 0;
31
+ let inString = false;
32
+ for (let i = open; i < line.length; i++) {
33
+ const ch = line[i];
34
+ if (!inString && ch === '/' && line[i + 1] === '*') {
35
+ const end = line.indexOf('*/', i + 2);
36
+ if (end === -1)
37
+ return null; // unterminated comment: nothing past it is trustworthy
38
+ i = end + 1; // loop's i++ lands one past the closing '/'
39
+ continue;
40
+ }
41
+ if (inString) {
42
+ if (ch === "'") {
43
+ if (line[i + 1] === "'")
44
+ i++; // escaped quote
45
+ else
46
+ inString = false;
47
+ }
48
+ continue;
49
+ }
50
+ if (ch === "'") {
51
+ inString = true;
52
+ continue;
53
+ }
54
+ if (ch === '(')
55
+ depth++;
56
+ else if (ch === ')') {
57
+ depth--;
58
+ if (depth === 0)
59
+ return { open, close: i };
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ //# sourceMappingURL=step-outer-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-outer-args.js","sourceRoot":"","sources":["../src/step-outer-args.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,uDAAuD;YACpF,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,4CAA4C;YACzD,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB;;oBACzC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"step-overlay-attribute-overrides.d.ts","sourceRoot":"","sources":["../src/step-overlay-attribute-overrides.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,EAC9C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,EAC1D,aAAa,EAAE,gBAAgB,EAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACrD,MAAM,CAoER"}
1
+ {"version":3,"file":"step-overlay-attribute-overrides.d.ts","sourceRoot":"","sources":["../src/step-overlay-attribute-overrides.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,EAC9C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,EAC1D,aAAa,EAAE,gBAAgB,EAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACrD,MAAM,CAwER"}
@@ -2,7 +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 { getAttributeNamesAcrossSchemas } from '@ifc-lite/parser';
5
- import { splitTopLevelArgs } from './step-argument-parser.js';
5
+ import { splitTopLevelStepArguments } from './step-argument-parser.js';
6
6
  import { getRealTypedSlots } from './attribute-real-slots.js';
7
7
  import { serializeNamedAttribute, serializePositionalOverride } from './step-attribute-serializers.js';
8
8
  /**
@@ -27,7 +27,11 @@ import { serializeNamedAttribute, serializePositionalOverride } from './step-att
27
27
  * two APIs queued the edit.
28
28
  */
29
29
  export function applyOverlayEntityOverrides(argsText, entityType, attributeOverrides, positionalOverrides, schemaVersion, onRejected) {
30
- const args = argsText.length > 0 ? splitTopLevelArgs(argsText) : [];
30
+ const parsed = splitTopLevelStepArguments(argsText);
31
+ if (parsed === null) {
32
+ throw new Error('Cannot apply an overlay override to an invalid STEP argument list.');
33
+ }
34
+ const args = parsed;
31
35
  const attrNames = getAttributeNamesAcrossSchemas(entityType);
32
36
  const named = [];
33
37
  for (const [attrName, value] of attributeOverrides ?? []) {
@@ -1 +1 @@
1
- {"version":3,"file":"step-overlay-attribute-overrides.js","sourceRoot":"","sources":["../src/step-overlay-attribute-overrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-overlay-attribute-overrides.js","sourceRoot":"","sources":["../src/step-overlay-attribute-overrides.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAW/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAGvG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,UAAkB,EAClB,kBAA8C,EAC9C,mBAA0D,EAC1D,aAA+B,EAC/B,UAAsD;IAEtD,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,MAAM,SAAS,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,kBAAkB,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,wEAAwE;IACxE,6BAA6B;IAC7B,EAAE;IACF,uEAAuE;IACvE,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,mBAAmB,EAAE,CAAC;YAC1C,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrD,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC/D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,uBAAuB,CACxC,UAAU,EACV,KAAK,EACL,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,EACX,SAAS,CACV,CAAC;QACF,0EAA0E;QAC1E,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,mBAAmB,EAAE,CAAC;YACjD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;gBAAE,SAAS;YAChD,IAAI,CAAC,KAAK,CAAC,GAAG,2BAA2B,CACvC,UAAU,EACV,KAAK,EACL,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,EACX,SAAS,EACT,aAAa,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"step-property-sets.d.ts","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7F;;;;;;;;;GASG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,kBAAkB,GACtB,IAAI,CAgLN"}
1
+ {"version":3,"file":"step-property-sets.d.ts","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7F;;;;;;;;;GASG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,kBAAkB,GACtB,IAAI,CAmLN"}
@@ -25,6 +25,7 @@
25
25
  import { decodeRange } from './source-ref-bounds.js';
26
26
  import { resolveTypeOwnedPsetIds, rewriteTypeOwnedPsetLine, typeOwnedPsetRewriteWarning, } from './type-owned-psets.js';
27
27
  import { recordSourceLineDelivery } from './delta-modification-ledger.js';
28
+ import { applySourceLineMutationsReported } from './step-attribute-mutations.js';
28
29
  import { nominateDeliveredInPlaceEdits } from './in-place-nomination.js';
29
30
  import { getPropertySetName } from './step-property-set-readers.js';
30
31
  import { generatePropertySetEntities, generateQuantitySetEntities } from './step-property-set-generators.js';
@@ -97,8 +98,13 @@ export function generatePropertyAndQuantitySetEntities(pass, options, ctx) {
97
98
  sourceLine = decodeRange(ctx.dataStore.source, record.byteOffset, record.byteOffset + record.byteLength);
98
99
  // The RECORD's class is the from-type: the bytes are still the source
99
100
  // class, whatever `typeOf` now says the entity effectively is.
100
- mutated = ctx.applySourceLineMutations(entityId, sourceLine, record.type, pass.modifiedAttributes.get(entityId), pass.sourceSchema, pass.overlayActive, (attr, value) => pass.warnings.push(`entity #${entityId}: attribute ${attr} not written - ` +
101
- `${JSON.stringify(value)} is not a number and the slot is REAL-typed`));
101
+ //
102
+ // The reporting travels with the call (`applySourceLineMutationsReported`)
103
+ // because this rewrite REPLACES the source-iteration pass's line for these
104
+ // ids (`rewrittenEntityIds`) — a refusal reported only there would be
105
+ // silent for exactly the entities this branch owns, and a pass that
106
+ // remembered one of the two warnings would be silent about the other.
107
+ mutated = applySourceLineMutationsReported(ctx.applySourceLineMutations, pass.warnings, entityId, sourceLine, record.type, pass.modifiedAttributes.get(entityId), pass.sourceSchema, pass.overlayActive);
102
108
  }
103
109
  if (mutated === null) {
104
110
  // `willBeEmitted` already required real source bytes for a non-overlay
@@ -1 +1 @@
1
- {"version":3,"file":"step-property-sets.js","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-property-sets.js","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * Three neighbours are deliberately NOT here, because none turns a value into
8
8
  * a token and each has rules of its own worth finding on its own:
9
9
  * - `step-argument-parser.ts` reads a record's arguments back OUT of a line
10
- * and writes one slot by index (`splitTopLevelArgs`, `replaceStepArgument`,
10
+ * and writes one slot by index (`splitTopLevelListItems`, `replaceStepArgument`,
11
11
  * `splitTopLevelStepArguments`);
12
12
  * - `step-file-assembly.ts` joins a finished header and finished entity lines
13
13
  * into the delivered file (`assembleStepBytes`, `assembleStepBlob`);
@@ -10,7 +10,7 @@
10
10
  * Three neighbours are deliberately NOT here, because none turns a value into
11
11
  * a token and each has rules of its own worth finding on its own:
12
12
  * - `step-argument-parser.ts` reads a record's arguments back OUT of a line
13
- * and writes one slot by index (`splitTopLevelArgs`, `replaceStepArgument`,
13
+ * and writes one slot by index (`splitTopLevelListItems`, `replaceStepArgument`,
14
14
  * `splitTopLevelStepArguments`);
15
15
  * - `step-file-assembly.ts` joins a finished header and finished entity lines
16
16
  * into the delivered file (`assembleStepBytes`, `assembleStepBlob`);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Whether `part` — one slot `splitTopLevelStepArguments` already separated on
3
+ * a top-level comma, raw text including any surrounding whitespace/comments —
4
+ * is a single well-formed STEP value (a string literal, a binary literal
5
+ * (`"..."`), `$`, `*`, a bare keyword / enumeration / number / `#`-reference
6
+ * token, or a typed value or list `NAME(...)` / `(...)`), or is empty.
7
+ *
8
+ * Empty is deliberately accepted, matching `splitTopLevelStepArguments`'s
9
+ * docstring: `a,,b` is one empty part, not a rejection, so slot indices after it
10
+ * stay aligned with what the entity parser counts. A part that is ONLY a comment
11
+ * (no value) is NOT given that same pass — a lone `/* c *​/` between two commas
12
+ * is not a value at all, so treating it as one more empty slot is exactly the
13
+ * index shift that produces a phantom slot; rejecting the whole split is the
14
+ * correct answer there, same as any other malformed argument list.
15
+ *
16
+ * A `/` that is not opening a comment cannot be swallowed into a bare token:
17
+ * it is outside every token's character set, so it stops the scan and the
18
+ * top-of-function "consumed to the end" check then fails the whole part.
19
+ *
20
+ * Nesting past {@link MAX_SLOT_NESTING_DEPTH} is refused like any other
21
+ * malformed part, for the reason recorded on that constant.
22
+ */
23
+ export declare function isWellFormedStepSlot(part: string): boolean;
24
+ //# sourceMappingURL=step-slot-grammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-slot-grammar.d.ts","sourceRoot":"","sources":["../src/step-slot-grammar.ts"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmH1D"}