@ifc-lite/export 2.9.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/csv-cell.d.ts +101 -0
  2. package/dist/csv-cell.d.ts.map +1 -0
  3. package/dist/csv-cell.js +90 -0
  4. package/dist/csv-cell.js.map +1 -0
  5. package/dist/demesh-session.d.ts.map +1 -1
  6. package/dist/demesh-session.js +2 -1
  7. package/dist/demesh-session.js.map +1 -1
  8. package/dist/effective-index.js +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +9 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/lod1-generator.d.ts +0 -2
  14. package/dist/lod1-generator.d.ts.map +1 -1
  15. package/dist/lod1-generator.js +1 -1
  16. package/dist/lod1-generator.js.map +1 -1
  17. package/dist/merged-exporter.d.ts.map +1 -1
  18. package/dist/merged-exporter.js +23 -41
  19. package/dist/merged-exporter.js.map +1 -1
  20. package/dist/reference-collector.js +1 -1
  21. package/dist/step-attribute-mutations.d.ts +91 -0
  22. package/dist/step-attribute-mutations.d.ts.map +1 -0
  23. package/dist/step-attribute-mutations.js +302 -0
  24. package/dist/step-attribute-mutations.js.map +1 -0
  25. package/dist/step-collection.d.ts +55 -0
  26. package/dist/step-collection.d.ts.map +1 -0
  27. package/dist/step-collection.js +125 -0
  28. package/dist/step-collection.js.map +1 -0
  29. package/dist/step-export-contexts.d.ts +63 -0
  30. package/dist/step-export-contexts.d.ts.map +1 -0
  31. package/dist/step-export-contexts.js +51 -0
  32. package/dist/step-export-contexts.js.map +1 -0
  33. package/dist/step-export-types.d.ts +262 -0
  34. package/dist/step-export-types.d.ts.map +1 -0
  35. package/dist/step-export-types.js +22 -0
  36. package/dist/step-export-types.js.map +1 -0
  37. package/dist/step-exporter.d.ts +20 -351
  38. package/dist/step-exporter.d.ts.map +1 -1
  39. package/dist/step-exporter.js +73 -1257
  40. package/dist/step-exporter.js.map +1 -1
  41. package/dist/step-geometry-types.d.ts +19 -0
  42. package/dist/step-geometry-types.d.ts.map +1 -0
  43. package/dist/step-geometry-types.js +57 -0
  44. package/dist/step-geometry-types.js.map +1 -0
  45. package/dist/step-header.d.ts +43 -0
  46. package/dist/step-header.d.ts.map +1 -0
  47. package/dist/step-header.js +70 -0
  48. package/dist/step-header.js.map +1 -0
  49. package/dist/step-omission-predicates.d.ts +51 -0
  50. package/dist/step-omission-predicates.d.ts.map +1 -0
  51. package/dist/step-omission-predicates.js +268 -0
  52. package/dist/step-omission-predicates.js.map +1 -0
  53. package/dist/step-overlay-entities.d.ts +64 -0
  54. package/dist/step-overlay-entities.d.ts.map +1 -0
  55. package/dist/step-overlay-entities.js +119 -0
  56. package/dist/step-overlay-entities.js.map +1 -0
  57. package/dist/step-pass-builder.d.ts +44 -0
  58. package/dist/step-pass-builder.d.ts.map +1 -0
  59. package/dist/step-pass-builder.js +249 -0
  60. package/dist/step-pass-builder.js.map +1 -0
  61. package/dist/step-property-sets.d.ts +7 -5
  62. package/dist/step-property-sets.d.ts.map +1 -1
  63. package/dist/step-property-sets.js.map +1 -1
  64. package/dist/step-serialization.d.ts +16 -1
  65. package/dist/step-serialization.d.ts.map +1 -1
  66. package/dist/step-serialization.js +50 -3
  67. package/dist/step-serialization.js.map +1 -1
  68. package/dist/step-source-iteration.d.ts +95 -0
  69. package/dist/step-source-iteration.d.ts.map +1 -0
  70. package/dist/step-source-iteration.js +178 -0
  71. package/dist/step-source-iteration.js.map +1 -0
  72. package/package.json +7 -7
@@ -4,232 +4,16 @@
4
4
  * Exports IFC data store to ISO 10303-21 STEP format.
5
5
  * Supports applying property and root attribute mutations before export.
6
6
  */
7
- import type { IfcDataStore, IfcAttributeValue, IfcSourceHeader } from '@ifc-lite/parser';
8
- import { type MapConversion, type ProjectedCRS } from '@ifc-lite/parser';
7
+ import type { IfcDataStore } from '@ifc-lite/parser';
9
8
  import type { MutablePropertyView } from '@ifc-lite/mutations';
10
- import type { PropertySet, QuantitySet } from '@ifc-lite/data';
11
- import type { RandomSource } from '@ifc-lite/encoding';
12
- import { type IfcSchemaVersion } from './schema-converter.js';
13
- import { type ModificationLedger, type SourceLineDelivery } from './delta-modification-ledger.js';
14
- import { createSourceRefReader } from './source-ref-bounds.js';
15
- import { type EffectiveEntityIndex } from './effective-index.js';
16
9
  /**
17
- * Options for STEP export
10
+ * The export vocabulary lives in `step-export-types.ts` (#2475). Re-exported
11
+ * here, unchanged, so that the package entry point and the seven sibling
12
+ * modules that import `ExportPass` / `SourceLineMutations` from this file
13
+ * carry on doing exactly that -- the split moved declarations, not call sites.
18
14
  */
19
- export interface StepExportOptions {
20
- /** IFC schema version for the output file (any version, will convert if needed) */
21
- schema: 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
22
- /** File description */
23
- description?: string;
24
- /** Author name */
25
- author?: string;
26
- /** Organization name */
27
- organization?: string;
28
- /** Application name (defaults to 'ifc-lite') */
29
- application?: string;
30
- /** Output filename */
31
- filename?: string;
32
- /** Include original geometry entities (default: true) */
33
- includeGeometry?: boolean;
34
- /** Include property sets (default: true) */
35
- includeProperties?: boolean;
36
- /** Include quantity sets (default: true) */
37
- includeQuantities?: boolean;
38
- /** Include relationships (default: true) */
39
- includeRelationships?: boolean;
40
- /** Apply mutations from MutablePropertyView (default: true if provided) */
41
- applyMutations?: boolean;
42
- /** Only export entities with mutations (delta export) */
43
- deltaOnly?: boolean;
44
- /** Only export entities currently visible in the viewer */
45
- visibleOnly?: boolean;
46
- /** Hidden entity IDs (local expressIds) — required when visibleOnly is true */
47
- hiddenEntityIds?: Set<number>;
48
- /** Isolated entity IDs (local expressIds, null = no isolation active) */
49
- isolatedEntityIds?: Set<number> | null;
50
- /** Georeferencing mutations to apply (IfcProjectedCRS / IfcMapConversion edits) */
51
- georefMutations?: {
52
- projectedCRS?: Partial<ProjectedCRS>;
53
- mapConversion?: Partial<MapConversion>;
54
- };
55
- /**
56
- * Seeded randomness for the GlobalIds this exporter SYNTHESIZES:
57
- * the `IfcPropertySet` / `IfcElementQuantity` roots regenerated for
58
- * mutated (or overlay-created) property and quantity sets, their
59
- * `IfcRelDefinesByProperties` links. Without it those come from the platform
60
- * CSPRNG, so two exports of the same model differ in exactly those bytes -
61
- * which breaks byte-reproducibility for in-store builds that call
62
- * `addPropertySet` / `addQuantitySet` (the sets themselves live in the
63
- * mutation overlay and only become IFC roots here). Pass the same seeded
64
- * source used for `SpatialAnchor.guidRandom` to close that gap. Default
65
- * (omitted) behaviour for THESE ids is unchanged: random.
66
- *
67
- * NOT the `IFCPROXY` placeholders any more (#2733). Those used to be minted
68
- * from this source too, so an omitted `guidRandom` made every downgraded
69
- * IFC4X3 entity differ on re-export. They are now derived from the source
70
- * line when this is omitted, and only fall back to this source when it is
71
- * supplied - so passing a seeded source still pins them, but NOT passing one
72
- * no longer makes them random. See `convertStepLine`.
73
- */
74
- guidRandom?: RandomSource;
75
- /**
76
- * Pin the STEP header `FILE_NAME` timestamp (STEP format, e.g.
77
- * `20240101T000000`). Omitted = the wall clock, as before. Required for
78
- * genuinely byte-identical exports, since the header otherwise carries the
79
- * export instant.
80
- */
81
- timeStamp?: string;
82
- /** Progress callback for async export */
83
- onProgress?: (progress: StepExportProgress) => void;
84
- }
85
- /**
86
- * Progress information during STEP export
87
- */
88
- export interface StepExportProgress {
89
- /** Current phase of export */
90
- phase: 'preparing' | 'entities' | 'assembling';
91
- /** Progress 0-1 */
92
- percent: number;
93
- /** Number of entities processed so far */
94
- entitiesProcessed: number;
95
- /** Total entities to process */
96
- entitiesTotal: number;
97
- }
98
- /**
99
- * Result of STEP export
100
- */
101
- export interface StepExportResult {
102
- /** STEP file content as bytes (avoids V8 string length limit for large files) */
103
- content: Uint8Array;
104
- /** Statistics about the export */
105
- stats: {
106
- /** Total entities exported */
107
- entityCount: number;
108
- /** New entities created for mutations */
109
- newEntityCount: number;
110
- /** Entities modified by mutations */
111
- modifiedEntityCount: number;
112
- /** File size in bytes */
113
- fileSize: number;
114
- /**
115
- * Non-fatal refusals: things the caller asked for that this export could
116
- * not write. Empty when the export did everything it was asked to do.
117
- *
118
- * A requested `georefMutations.mapConversion` is one case: with no
119
- * `IfcGeometricRepresentationContext` to reference as `SourceCRS`, the
120
- * `IfcMapConversion` is skipped (writing it would produce a dangling
121
- * reference) while the `IfcProjectedCRS` is still written — so the output
122
- * is indistinguishable from "no map conversion was requested" unless the
123
- * caller reads this (#2067).
124
- *
125
- * A WITHHELD RELATIONSHIP is the other: when a relationship names an
126
- * entity this export is not writing, in a slot with no spelling for an
127
- * omitted reference, the whole relationship line is dropped rather than
128
- * shipped dangling — see {@link relationshipWithheldWarning}. This can
129
- * happen on a plain full export with no options set at all, so it is
130
- * reported rather than left to be discovered by a diff.
131
- *
132
- * Same `string[]` shape as `MergeExportResult.stats.warnings`.
133
- */
134
- warnings: string[];
135
- };
136
- }
137
- /**
138
- * What {@link StepExporter.applySourceLineMutations} produced: the rewritten
139
- * line, plus which edit kinds that rewrite actually delivered. The delivery
140
- * half is {@link SourceLineDelivery} rather than three loose booleans so that
141
- * the pipeline and the ledger cannot disagree about what a source line carries
142
- * — an added kind has one place to be added.
143
- */
144
- export type SourceLineMutations = SourceLineDelivery & {
145
- text: string;
146
- };
147
- /**
148
- * The state one `export()` call shares across its seven phases.
149
- *
150
- * Introduced by step 1 of #2475: `export()` is ~1267 lines and the phases a
151
- * split would separate are held together by ~30 local bindings, most of which
152
- * are read in three or more phases. Naming that set once — as an interface
153
- * with a single construction site at the top of `export()` — is what lets a
154
- * later phase extraction take one parameter instead of fifteen.
155
- *
156
- * Two properties of this object are load-bearing and must survive every later
157
- * move:
158
- *
159
- * 1. **The predicates are members, not duplicated expressions.** Six of them
160
- * (`isOverlayCreated`, `isReadableSourceRef`, `isGeometryExcluded`,
161
- * `hasEmittableHostBytes`, `willBeEmitted`,
162
- * `isRefExcludedDuringClosureWalk`) exist precisely so two phases cannot
163
- * disagree about a gate — see the comments at their construction sites for
164
- * the corrupt files the earlier, per-phase versions let through (#2491,
165
- * #2414, #2398, #2637). A phase that reimplements one of these instead of
166
- * reading it off the pass reintroduces exactly that class of defect.
167
- * 2. **`allowedEntityIds` and `hiddenProductIds` are mutable, and the
168
- * predicates close over the pass rather than over a snapshot.** The
169
- * visible-only closure walk assigns both AFTER construction, and
170
- * `isRefExcludedDuringClosureWalk` is handed to that walk while they are
171
- * still null. The output-line filter reads them too, through
172
- * `isOmittedFromOutput` -> `willBeEmitted`, so neither can be a snapshot
173
- * taken before the walk ran — that is the invariant the #2637 regression
174
- * broke.
175
- *
176
- * Deliberately NOT on the pass, and why: `isOmittedFromOutput`,
177
- * `mayNameOmittedRefs` and
178
- * `overlayNewEntityCount` are eagerly-computed values whose value is only
179
- * defined after work that runs past this construction site, so hoisting them
180
- * would change what they compute rather than where they are named;
181
- * `generatedTypeOwnedPsetIds` is read in one phase only — a local inside
182
- * `step-property-sets.ts:generatePropertyAndQuantitySetEntities`, which holds
183
- * both the loop that writes it and the loop that reads it (#2475).
184
- */
185
- export interface ExportPass {
186
- /** Output accumulator: every DATA-section line this export will write. */
187
- readonly entities: string[];
188
- /** Lines contributed by entities that have no source record. */
189
- newEntityCount: number;
190
- readonly schema: IfcSchemaVersion;
191
- readonly sourceSchema: IfcSchemaVersion;
192
- readonly converting: boolean;
193
- readonly sourceHeader: IfcSourceHeader | undefined;
194
- readonly schemaToken: string;
195
- readonly overlayActive: boolean;
196
- readonly effective: EffectiveEntityIndex;
197
- readonly modifications: ModificationLedger;
198
- /** Widened from the imported `InPlaceNominees` (whose sets are readonly)
199
- * because the collection passes below add to them. */
200
- readonly inPlaceNominees: {
201
- attribute: Set<number>;
202
- georeferencing: Set<number>;
203
- };
204
- allowedEntityIds: Set<number> | null;
205
- hiddenProductIds: ReadonlySet<number> | null;
206
- readonly modifiedEntities: Set<number>;
207
- readonly modifiedAttributes: Map<number, Map<string, string>>;
208
- readonly newPropertySets: Array<{
209
- entityId: number;
210
- psets: PropertySet[];
211
- }>;
212
- readonly newQuantitySets: Array<{
213
- entityId: number;
214
- qsets: QuantitySet[];
215
- }>;
216
- readonly typeOwnedPsetNamesByEntity: Map<number, Set<string>>;
217
- readonly typeOwnedPsetIdsByEntity: Map<number, number[]>;
218
- readonly rewrittenEntityIds: Set<number>;
219
- readonly rewrittenEntityLines: Map<number, string>;
220
- readonly overlayTypeOwnedPsets: Map<number, IfcAttributeValue>;
221
- readonly skipPropertySetIds: Set<number>;
222
- readonly skipRelationshipIds: Set<number>;
223
- readonly newGeorefLines: string[];
224
- readonly warnings: string[];
225
- readonly buildHeader: (modifications: number) => string;
226
- readonly isOverlayCreated: (entityId: number) => boolean;
227
- readonly isReadableSourceRef: ReturnType<typeof createSourceRefReader>;
228
- readonly isGeometryExcluded: (entityId: number, recordType: string) => boolean;
229
- readonly hasEmittableHostBytes: (entityId: number) => boolean;
230
- readonly willBeEmitted: (entityId: number) => boolean;
231
- readonly isRefExcludedDuringClosureWalk: (id: number) => boolean;
232
- }
15
+ export type { StepExportOptions, StepExportProgress, StepExportResult, SourceLineMutations, ExportPass, } from './step-export-types.js';
16
+ import type { StepExportOptions, StepExportResult } from './step-export-types.js';
233
17
  /**
234
18
  * IFC STEP file exporter
235
19
  */
@@ -269,115 +53,6 @@ export declare class StepExporter {
269
53
  * Export only property/quantity changes (lightweight export)
270
54
  */
271
55
  exportPropertiesOnly(options: Omit<StepExportOptions, 'includeGeometry'>): StepExportResult;
272
- /**
273
- * THE mutation pipeline for a line read out of the source buffer: retype,
274
- * then named attribute edits, then positional edits.
275
- *
276
- * **One implementation, two call sites**, and that is the whole point. Two
277
- * passes can write the defining line of a source entity — the
278
- * source-iteration pass, and the type-object `HasPropertySets` rewrite that
279
- * REPLACES it (`rewrittenEntityIds` makes the source pass skip those ids).
280
- * The rewrite used to do its own thing (replace slot 5, nothing else), so
281
- * every other edit to a type object with a type-owned pset edit was dropped
282
- * in silence: first the renames (#2462 follow-up), and after those were
283
- * special-cased here, still the retypes and the positional edits. Whatever
284
- * the source pass applies, the rewrite has to apply too, or the next edit
285
- * kind added to one site goes missing at the other.
286
- *
287
- * The order is load-bearing:
288
- *
289
- * - the retype runs FIRST so named attribute edits resolve against the
290
- * TARGET class's attribute names, and so positional slots are indexed
291
- * into the retyped argument list;
292
- * - the `HasPropertySets` replacement (rewrite path only) runs LAST, on
293
- * the text this returns. Run it first and a positional edit to slot 5 —
294
- * or a retype's argument-list rebuild — overwrites the resolved pset
295
- * list with the stale one, which is the same silent drop one slot over.
296
- *
297
- * The expressId is unchanged by all of this, so geometry / placement /
298
- * representation and every IfcRel* reference (keyed by #id) carry over.
299
- *
300
- * All three flags report EFFECT, not intent — each is the answer to "did this
301
- * operation change the line", measured across that operation alone. The count
302
- * and the ledger are claims about the FILE, so an edit that resolves to the
303
- * text already there has delivered nothing and must not be reported: retyping
304
- * an entity to the class it already is, or writing a positional slot the token
305
- * it already holds, used to count as a modification and reach the ledger as a
306
- * landed edit, over a byte-identical line. Discarded edits read the same way:
307
- * `applyAttributeMutations` drops a name its class has no slot for and
308
- * `retypeStepLine` returns an unparseable line untouched, and neither is a
309
- * modification of anything.
310
- *
311
- * `retyped` / `positional` matter most in a FULL export, which is where the
312
- * two are nominated (their edits have no earlier nomination site); named
313
- * attribute edits are nominated by the collection pass and `attributed` only
314
- * settles their delivery.
315
- */
316
- private applySourceLineMutations;
317
- /**
318
- * Rewrite root IFC attributes directly on the original STEP entity line.
319
- */
320
- private applyAttributeMutations;
321
- /**
322
- * Serialize one NAMED attribute override into its slot — the single point
323
- * both the source-buffer rewrite and the overlay-created rewrite go through.
324
- *
325
- * `serializeAttributeValue` decides the STEP form by reading the token being
326
- * replaced, which is sound only while that token carries type information. A
327
- * `$` slot carries none, and both paths have plenty: a source record's
328
- * optional attributes are `$`, and overlay-created records pad missing slots
329
- * with `$`. So the declared type decides first, and inference is the fallback
330
- * for slots the schema does not classify (references, SELECTs, numerics),
331
- * where reading the old token is exactly the right heuristic.
332
- *
333
- * Before this REAL check existed, "the declared type decides first" was true
334
- * for enum/string slots only — a REAL-backed slot (`IfcMapConversion.
335
- * OrthogonalHeight`, any other `IfcLengthMeasure`/`IfcReal`-typed attribute)
336
- * fell straight to `serializeAttributeValue`'s token inference, which quotes
337
- * anything it cannot recognize as numeric. A schema-legal `$` placeholder
338
- * carries no digits to recognize, so setting such a field for the first time
339
- * wrote `'12345'` in a slot ISO 10303-21 requires to be an unquoted REAL —
340
- * silently invalid output (#2724, LTplus-AG/ifc-lite#2475).
341
- */
342
- private serializeNamedAttribute;
343
- /**
344
- * Apply overlay attribute + positional overrides to an OVERLAY-CREATED
345
- * entity's argument list (#2006).
346
- *
347
- * Distinct from {@link applyAttributeMutations} / {@link applyPositionalMutations},
348
- * which rewrite a line read out of the source buffer. Here the whole line is
349
- * ours: it was serialized moments ago from the creation payload, so the
350
- * argument list is the authoring payload's, not the file's. That difference
351
- * is why this PADS — `entity_create` takes whatever positional list the
352
- * caller passes, so a wall authored with three arguments still has a real
353
- * `Tag` slot at index 7, and dropping the edit because the payload was short
354
- * would be the very data loss this fixes. The source-buffer path must not
355
- * pad: there a short line means a different schema, and growing a record we
356
- * did not author would corrupt it.
357
- *
358
- * Named and positional overrides resolve to a slot index up front and share
359
- * ONE padding rule. Two padding rules on one record is how the next bug
360
- * starts, and the argument for padding — the class is fixed at creation time,
361
- * so a short payload is partial authoring — never depended on which of the
362
- * two APIs queued the edit.
363
- */
364
- private applyOverlayEntityOverrides;
365
- /**
366
- * Apply positional STEP argument overrides to an entity line.
367
- * Used for non-IfcRoot edits (e.g. profile dimensions) where attributes
368
- * have no symbolic names. Indexes that fall outside the existing arg list
369
- * are silently ignored.
370
- */
371
- private applyPositionalMutations;
372
- /**
373
- * Serialize one positional override, composing the schema-aware passes:
374
- * explicit `{ real }`/`{ typed }` marker → SELECT auto-qualification
375
- * (`IFCBOOLEAN(.T.)`) → REAL forcing. For REAL forcing the current source
376
- * token is a secondary signal: replacing a value that was already a REAL
377
- * (`0.4`, `1.5E-7`) keeps it REAL even for entities the XSD index doesn't
378
- * cover, so a whole-number edit can't silently downgrade the slot.
379
- */
380
- private serializePositionalOverride;
381
56
  /**
382
57
  * Find the maximum EXPRESS ID in the data store
383
58
  */
@@ -401,31 +76,25 @@ export declare class StepExporter {
401
76
  * `ownerHistory` is passed by reference — the object is this exporter's, and
402
77
  * `export()` resets it. `isReadableSourceRef` is the instance predicate, not
403
78
  * `pass.isReadableSourceRef`, because two consumers of that module
404
- * (`buildRelDefinesByPropertiesIndex`, `retainSharedAtoms`) run with no pass
405
- * in hand; both readers are built over the same source.
79
+ * (`buildRelDefinesByPropertiesIndex`, and `retainSharedAtoms` in
80
+ * `step-source-iteration.ts`) run with no pass in hand; both readers are
81
+ * built over the same source.
406
82
  *
407
83
  * Rebuilt per call, as `georefContext` is: every call site runs once per
408
- * export bar `retainSharedAtoms`, which hoists it out of its loop.
84
+ * export bar `retainSharedAtoms`, which hoists it out of its loop — hence
85
+ * `buildSourceIterationContext` (`step-export-contexts.ts`) takes this as a
86
+ * thunk rather than a value.
409
87
  */
410
88
  private propertySetContext;
411
89
  /**
412
- * Check if an entity type is a geometry-related type
413
- */
414
- private isGeometryEntity;
415
- /**
416
- * Un-skip property/quantity atoms that a surviving (non-skipped, and under
417
- * visible-only export — still-included) IfcPropertySet / IfcElementQuantity
418
- * still references.
419
- *
420
- * When a property is edited, the modified pset is replaced and its member atoms
421
- * are added to `skipIds` wholesale. Because exporters deduplicate shared
422
- * Pset_*Common atoms (e.g. a single IsExternal / IsLoadBearing value referenced
423
- * by many psets), that wholesale skip can drop an atom another pset still needs.
424
- * This pass restores any such atom: the edited pset still emits its replacement
425
- * with the new value, while the shared atom stays for the psets that keep their
426
- * original value.
90
+ * The state `step-collection.ts` cannot read off the pass (#2475, the
91
+ * collection block). `propertySetContext` and `georefContext` are handed
92
+ * over as the SAME thunks {@link propertySetContext} and
93
+ * {@link georefContext} already are — this phase calls the first twice per
94
+ * export and the second once, and nothing here should change how often
95
+ * either is rebuilt.
427
96
  */
428
- private retainSharedAtoms;
97
+ private collectionContext;
429
98
  }
430
99
  /**
431
100
  * Quick export function for simple use cases.
@@ -1 +1 @@
1
- {"version":3,"file":"step-exporter.d.ts","sourceRoot":"","sources":["../src/step-exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-exporter.d.ts","sourceRoot":"","sources":["../src/step-exporter.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgB/D;;;;;GAKG;AACH,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAc,MAAM,wBAAwB,CAAC;AAU9F;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAyB;IAChD;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY,CAAsE;IAC1F;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB,CAA2C;gBAE1D,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,mBAAmB;IAYvE;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB;IA4IpD;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBxE;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,gBAAgB;IAQ3F;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;CAW1B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,MAAM,CAOR"}