@ifc-lite/export 4.5.0 → 4.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/appearance-dependencies.d.ts.map +1 -1
- package/dist/appearance-dependencies.js +1 -0
- package/dist/appearance-dependencies.js.map +1 -1
- package/dist/attribute-real-slots.d.ts.map +1 -1
- package/dist/attribute-real-slots.js +7 -1
- package/dist/attribute-real-slots.js.map +1 -1
- package/dist/attribute-slot-types.js +2 -2
- package/dist/attribute-slot-types.js.map +1 -1
- package/dist/demesh-prune.d.ts.map +1 -1
- package/dist/demesh-prune.js +1 -0
- package/dist/demesh-prune.js.map +1 -1
- package/dist/demesh-writer.d.ts.map +1 -1
- package/dist/demesh-writer.js +1 -0
- package/dist/demesh-writer.js.map +1 -1
- package/dist/effective-index.d.ts.map +1 -1
- package/dist/effective-index.js +2 -0
- package/dist/effective-index.js.map +1 -1
- package/dist/entity-iteration.d.ts.map +1 -1
- package/dist/entity-iteration.js +1 -0
- package/dist/entity-iteration.js.map +1 -1
- package/dist/entity-type-sets.js +2 -2
- package/dist/entity-type-sets.js.map +1 -1
- package/dist/generated/ifc4-required-slots.d.ts +17 -0
- package/dist/generated/ifc4-required-slots.d.ts.map +1 -0
- package/dist/generated/ifc4-required-slots.js +619 -0
- package/dist/generated/ifc4-required-slots.js.map +1 -0
- package/dist/georef-closure.d.ts.map +1 -1
- package/dist/georef-closure.js +5 -0
- package/dist/georef-closure.js.map +1 -1
- package/dist/ifc5-effective-rows.d.ts +16 -0
- package/dist/ifc5-effective-rows.d.ts.map +1 -0
- package/dist/ifc5-effective-rows.js +90 -0
- package/dist/ifc5-effective-rows.js.map +1 -0
- package/dist/ifc5-export-helpers.d.ts +19 -0
- package/dist/ifc5-export-helpers.d.ts.map +1 -1
- package/dist/ifc5-export-helpers.js +16 -0
- package/dist/ifc5-export-helpers.js.map +1 -1
- package/dist/ifc5-exporter.d.ts +9 -11
- package/dist/ifc5-exporter.d.ts.map +1 -1
- package/dist/ifc5-exporter.js +38 -95
- package/dist/ifc5-exporter.js.map +1 -1
- package/dist/ifc5-pset-properties.d.ts +61 -0
- package/dist/ifc5-pset-properties.d.ts.map +1 -0
- package/dist/ifc5-pset-properties.js +100 -0
- package/dist/ifc5-pset-properties.js.map +1 -0
- package/dist/ifc5-tree-scope.js +3 -0
- package/dist/ifc5-tree-scope.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lod0-generator.d.ts.map +1 -1
- package/dist/lod0-generator.js +2 -0
- package/dist/lod0-generator.js.map +1 -1
- package/dist/merged-context.d.ts.map +1 -1
- package/dist/merged-context.js +3 -0
- package/dist/merged-context.js.map +1 -1
- package/dist/merged-decomposition-parents.d.ts +99 -0
- package/dist/merged-decomposition-parents.d.ts.map +1 -0
- package/dist/merged-decomposition-parents.js +142 -0
- package/dist/merged-decomposition-parents.js.map +1 -0
- package/dist/merged-empty-containers-refs.d.ts +24 -0
- package/dist/merged-empty-containers-refs.d.ts.map +1 -0
- package/dist/merged-empty-containers-refs.js +126 -0
- package/dist/merged-empty-containers-refs.js.map +1 -0
- package/dist/merged-empty-containers.d.ts +31 -0
- package/dist/merged-empty-containers.d.ts.map +1 -1
- package/dist/merged-empty-containers.js +14 -123
- package/dist/merged-empty-containers.js.map +1 -1
- package/dist/merged-exporter.d.ts +7 -18
- package/dist/merged-exporter.d.ts.map +1 -1
- package/dist/merged-exporter.js +80 -70
- package/dist/merged-exporter.js.map +1 -1
- package/dist/merged-header.d.ts +11 -0
- package/dist/merged-header.d.ts.map +1 -0
- package/dist/merged-header.js +23 -0
- package/dist/merged-header.js.map +1 -0
- package/dist/nonrel-positional-ref-narrowing.d.ts +3 -0
- package/dist/nonrel-positional-ref-narrowing.d.ts.map +1 -0
- package/dist/nonrel-positional-ref-narrowing.js +194 -0
- package/dist/nonrel-positional-ref-narrowing.js.map +1 -0
- package/dist/nonrel-ref-list-types.d.ts +13 -0
- package/dist/nonrel-ref-list-types.d.ts.map +1 -0
- package/dist/nonrel-ref-list-types.js +162 -0
- package/dist/nonrel-ref-list-types.js.map +1 -0
- package/dist/parquet-created-entity-rows.d.ts +20 -0
- package/dist/parquet-created-entity-rows.d.ts.map +1 -0
- package/dist/parquet-created-entity-rows.js +40 -0
- package/dist/parquet-created-entity-rows.js.map +1 -0
- package/dist/parquet-exporter-ondemand.d.ts +3 -2
- package/dist/parquet-exporter-ondemand.d.ts.map +1 -1
- package/dist/parquet-exporter-ondemand.js +15 -6
- package/dist/parquet-exporter-ondemand.js.map +1 -1
- package/dist/parquet-exporter.d.ts +5 -12
- package/dist/parquet-exporter.d.ts.map +1 -1
- package/dist/parquet-exporter.js +57 -84
- package/dist/parquet-exporter.js.map +1 -1
- package/dist/parquet-relationship-rows.d.ts +11 -0
- package/dist/parquet-relationship-rows.d.ts.map +1 -0
- package/dist/parquet-relationship-rows.js +57 -0
- package/dist/parquet-relationship-rows.js.map +1 -0
- package/dist/parquet-spatial-rows.d.ts +14 -0
- package/dist/parquet-spatial-rows.d.ts.map +1 -0
- package/dist/parquet-spatial-rows.js +57 -0
- package/dist/parquet-spatial-rows.js.map +1 -0
- package/dist/reference-collector.d.ts +17 -1
- package/dist/reference-collector.d.ts.map +1 -1
- package/dist/reference-collector.js +30 -1
- package/dist/reference-collector.js.map +1 -1
- package/dist/registry-entity-names.d.ts +3 -0
- package/dist/registry-entity-names.d.ts.map +1 -0
- package/dist/registry-entity-names.js +38 -0
- package/dist/registry-entity-names.js.map +1 -0
- package/dist/relationship-slot-bounds.d.ts +14 -0
- package/dist/relationship-slot-bounds.d.ts.map +1 -0
- package/dist/relationship-slot-bounds.js +64 -0
- package/dist/relationship-slot-bounds.js.map +1 -0
- package/dist/retype.d.ts.map +1 -1
- package/dist/retype.js +5 -2
- package/dist/retype.js.map +1 -1
- package/dist/schema-conversion-loss-report.d.ts +97 -0
- package/dist/schema-conversion-loss-report.d.ts.map +1 -0
- package/dist/schema-conversion-loss-report.js +116 -0
- package/dist/schema-conversion-loss-report.js.map +1 -0
- package/dist/schema-converter-attr-remap.d.ts +8 -0
- package/dist/schema-converter-attr-remap.d.ts.map +1 -1
- package/dist/schema-converter-attr-remap.js +14 -1
- package/dist/schema-converter-attr-remap.js.map +1 -1
- package/dist/schema-converter-enums.d.ts +27 -0
- package/dist/schema-converter-enums.d.ts.map +1 -0
- package/dist/schema-converter-enums.js +117 -0
- package/dist/schema-converter-enums.js.map +1 -0
- package/dist/schema-converter-ifc4-slots.d.ts +36 -0
- package/dist/schema-converter-ifc4-slots.d.ts.map +1 -0
- package/dist/schema-converter-ifc4-slots.js +70 -0
- package/dist/schema-converter-ifc4-slots.js.map +1 -0
- package/dist/schema-converter.d.ts +41 -19
- package/dist/schema-converter.d.ts.map +1 -1
- package/dist/schema-converter.js +73 -42
- package/dist/schema-converter.js.map +1 -1
- package/dist/schema-enum-policy.d.ts +48 -0
- package/dist/schema-enum-policy.d.ts.map +1 -0
- package/dist/schema-enum-policy.js +26 -0
- package/dist/schema-enum-policy.js.map +1 -0
- package/dist/schema-untranslatable.d.ts +84 -2
- package/dist/schema-untranslatable.d.ts.map +1 -1
- package/dist/schema-untranslatable.js +98 -3
- package/dist/schema-untranslatable.js.map +1 -1
- package/dist/step-collection.js +1 -1
- package/dist/step-collection.js.map +1 -1
- package/dist/step-export-types.d.ts +13 -3
- package/dist/step-export-types.d.ts.map +1 -1
- package/dist/step-exporter.d.ts.map +1 -1
- package/dist/step-exporter.js +4 -2
- package/dist/step-exporter.js.map +1 -1
- package/dist/step-georeferencing.js +2 -0
- package/dist/step-georeferencing.js.map +1 -1
- package/dist/step-header.d.ts.map +1 -1
- package/dist/step-header.js +1 -0
- package/dist/step-header.js.map +1 -1
- package/dist/step-map-unit.d.ts.map +1 -1
- package/dist/step-map-unit.js +4 -0
- package/dist/step-map-unit.js.map +1 -1
- package/dist/step-overlay-entities.d.ts.map +1 -1
- package/dist/step-overlay-entities.js +5 -1
- package/dist/step-overlay-entities.js.map +1 -1
- package/dist/step-pass-builder.d.ts.map +1 -1
- package/dist/step-pass-builder.js +8 -1
- package/dist/step-pass-builder.js.map +1 -1
- package/dist/step-property-set-generators.d.ts.map +1 -1
- package/dist/step-property-set-generators.js +17 -0
- package/dist/step-property-set-generators.js.map +1 -1
- package/dist/step-property-set-index.d.ts +4 -10
- package/dist/step-property-set-index.d.ts.map +1 -1
- package/dist/step-property-set-index.js +52 -8
- package/dist/step-property-set-index.js.map +1 -1
- package/dist/step-property-set-readers.d.ts.map +1 -1
- package/dist/step-property-set-readers.js +4 -0
- package/dist/step-property-set-readers.js.map +1 -1
- package/dist/step-ref-scan.d.ts +6 -0
- package/dist/step-ref-scan.d.ts.map +1 -0
- package/dist/step-ref-scan.js +52 -0
- package/dist/step-ref-scan.js.map +1 -0
- package/dist/step-serialization.d.ts.map +1 -1
- package/dist/step-serialization.js +18 -2
- package/dist/step-serialization.js.map +1 -1
- package/dist/step-shared-atom-retention.d.ts +5 -0
- package/dist/step-shared-atom-retention.d.ts.map +1 -0
- package/dist/step-shared-atom-retention.js +60 -0
- package/dist/step-shared-atom-retention.js.map +1 -0
- package/dist/step-source-iteration.d.ts +1 -1
- package/dist/step-source-iteration.d.ts.map +1 -1
- package/dist/step-source-iteration.js +50 -45
- package/dist/step-source-iteration.js.map +1 -1
- package/dist/style-closure.d.ts.map +1 -1
- package/dist/style-closure.js +11 -0
- package/dist/style-closure.js.map +1 -1
- package/dist/subset-entity-reader.d.ts.map +1 -1
- package/dist/subset-entity-reader.js +3 -2
- package/dist/subset-entity-reader.js.map +1 -1
- package/dist/subset-roots.js +2 -2
- package/dist/subset-roots.js.map +1 -1
- package/package.json +11 -10
- package/dist/merged-rel-aggregates.d.ts +0 -63
- package/dist/merged-rel-aggregates.d.ts.map +0 -1
- package/dist/merged-rel-aggregates.js +0 -122
- package/dist/merged-rel-aggregates.js.map +0 -1
package/dist/parquet-exporter.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import { IfcTypeEnum, EntityFlags, IFC_ENTITY_NAMES, exactTypeName
|
|
4
|
+
import { IfcTypeEnum, EntityFlags, IFC_ENTITY_NAMES, exactTypeName } from '@ifc-lite/data';
|
|
5
5
|
import { getEffectiveEntityIndex } from './effective-index.js';
|
|
6
|
+
import { parquetSpatialRows } from './parquet-spatial-rows.js';
|
|
6
7
|
import { columnsToParquet } from './columns-to-parquet.js';
|
|
7
8
|
import { PARQUET_UINT32_COLUMNS } from './parquet-uint32-columns.js';
|
|
8
9
|
import { writePropertiesOnDemand, writeQuantitiesOnDemand } from './parquet-exporter-ondemand.js';
|
|
9
10
|
import { propertyValueTypeToString, quantityTypeToString } from './parquet-type-strings.js';
|
|
11
|
+
import { appendCreatedParquetEntityRows } from './parquet-created-entity-rows.js';
|
|
12
|
+
import { parquetRelationshipRows } from './parquet-relationship-rows.js';
|
|
10
13
|
/**
|
|
11
14
|
* Export to ara3d BIM Open Schema compatible Parquet files.
|
|
12
15
|
* Creates a .bos archive (ZIP of Parquet files).
|
|
@@ -20,18 +23,11 @@ export class ParquetExporter {
|
|
|
20
23
|
* (README example, `tests/integration.test.ts`) keep working unchanged and
|
|
21
24
|
* keep exporting the source model as parsed.
|
|
22
25
|
*
|
|
23
|
-
* When supplied, entities
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* joined the set after they were found still emitting a deleted
|
|
29
|
-
* entity's mesh into an otherwise-filtered archive). Unlike
|
|
30
|
-
* `StepExporter`/`Ifc5Exporter`, this is deletion-only: unlike those
|
|
31
|
-
* two, the writers below column-copy typed arrays out of the store in
|
|
32
|
-
* one shot rather than looping per entity, so they cannot also apply
|
|
33
|
-
* the overlay's pset/quantity/attribute edits the way a per-entity
|
|
34
|
-
* emission pass can. That is a known, separate gap.
|
|
26
|
+
* When supplied, tombstoned entities and rows that reference them are
|
|
27
|
+
* dropped from every table (#2046), and overlay-created entities are
|
|
28
|
+
* appended to `Entities.parquet`. Relationship rows resolve authored
|
|
29
|
+
* records and edited endpoints; property and quantity rows resolve live
|
|
30
|
+
* overlays. Geometry payload edits remain a separate gap.
|
|
35
31
|
*/
|
|
36
32
|
constructor(store, geometryResult, mutationView) {
|
|
37
33
|
this.store = store;
|
|
@@ -62,9 +58,12 @@ export class ParquetExporter {
|
|
|
62
58
|
const files = new Map();
|
|
63
59
|
// Non-geometry files
|
|
64
60
|
files.set('Entities.parquet', await this.writeEntities());
|
|
65
|
-
|
|
61
|
+
let propertyCount = 0;
|
|
62
|
+
files.set('Properties.parquet', await this.writeProperties(count => { propertyCount = count; }));
|
|
66
63
|
files.set('Quantities.parquet', await this.writeQuantities());
|
|
67
|
-
|
|
64
|
+
const effective = this.getEffective();
|
|
65
|
+
const relationshipRows = parquetRelationshipRows(this.store, this.mutationView, effective);
|
|
66
|
+
files.set('Relationships.parquet', await this.toParquet(relationshipRows));
|
|
68
67
|
files.set('Strings.parquet', await this.writeStrings());
|
|
69
68
|
// Geometry files (if available)
|
|
70
69
|
if (options.includeGeometry !== false && this.geometryResult) {
|
|
@@ -73,11 +72,11 @@ export class ParquetExporter {
|
|
|
73
72
|
files.set('Meshes.parquet', await this.writeMeshes());
|
|
74
73
|
}
|
|
75
74
|
// Spatial hierarchy
|
|
76
|
-
if (this.store.spatialHierarchy) {
|
|
77
|
-
files.set('SpatialHierarchy.parquet', await this.writeSpatialHierarchy());
|
|
75
|
+
if (this.store.spatialHierarchy || effective) {
|
|
76
|
+
files.set('SpatialHierarchy.parquet', await this.writeSpatialHierarchy(relationshipRows, effective));
|
|
78
77
|
}
|
|
79
78
|
// Metadata
|
|
80
|
-
files.set('Metadata.json', this.writeMetadata());
|
|
79
|
+
files.set('Metadata.json', this.writeMetadata(new Set(relationshipRows.RelId).size, propertyCount));
|
|
81
80
|
return this.createZipArchive(files);
|
|
82
81
|
}
|
|
83
82
|
/**
|
|
@@ -103,11 +102,7 @@ export class ParquetExporter {
|
|
|
103
102
|
const { entities, strings } = this.store;
|
|
104
103
|
const effective = this.getEffective();
|
|
105
104
|
const expressId = Array.from(entities.expressId);
|
|
106
|
-
|
|
107
|
-
// parsed entity) — the same predicate every other column below is
|
|
108
|
-
// filtered by.
|
|
109
|
-
const keep = effective ? expressId.map((id) => !effective.isDeleted(id)) : null;
|
|
110
|
-
return this.toParquet(filterColumns({
|
|
105
|
+
const columns = {
|
|
111
106
|
ExpressId: expressId,
|
|
112
107
|
GlobalId: mapTypedArray(entities.globalId, i => strings.get(i)),
|
|
113
108
|
Name: mapTypedArray(entities.name, i => strings.get(i)),
|
|
@@ -146,11 +141,20 @@ export class ParquetExporter {
|
|
|
146
141
|
ContainedInStorey: Array.from(entities.containedInStorey),
|
|
147
142
|
DefinedByType: Array.from(entities.definedByType),
|
|
148
143
|
GeometryIndex: Array.from(entities.geometryIndex),
|
|
149
|
-
}
|
|
144
|
+
};
|
|
145
|
+
appendCreatedParquetEntityRows(columns, this.store, this.mutationView, effective);
|
|
146
|
+
// Source rows retain their columnar order; live creations follow in
|
|
147
|
+
// allocation order. Tombstones are filtered from both domains.
|
|
148
|
+
const keep = effective ? columns.ExpressId.map((id) => !effective.isDeleted(id)) : null;
|
|
149
|
+
return this.toParquet(filterColumns(columns, keep));
|
|
150
150
|
}
|
|
151
|
-
async writeProperties() {
|
|
151
|
+
async writeProperties(onCount) {
|
|
152
152
|
const { properties, strings } = this.store;
|
|
153
153
|
const effective = this.getEffective();
|
|
154
|
+
if (this.mutationView) {
|
|
155
|
+
const onDemand = properties.entityId.length === 0;
|
|
156
|
+
return writePropertiesOnDemand(this.store, effective, this.mutationView, onDemand ? this.store.onDemandPropertyMap?.keys() ?? [] : properties.entityIndex.keys(), onDemand ? id => this.store.getProperties(id) : id => properties.getForEntity(id), onCount);
|
|
157
|
+
}
|
|
154
158
|
// `IfcParser.parseColumnar` (the sole parse path every real caller of
|
|
155
159
|
// this exporter goes through — `packages/parser`'s `parseLite`) never
|
|
156
160
|
// populates `store.properties`: it builds a `PropertyTableBuilder` but
|
|
@@ -165,12 +169,13 @@ export class ParquetExporter {
|
|
|
165
169
|
// this file's own tests). Route through the on-demand path first;
|
|
166
170
|
// fall back to the bulk table when it was actually populated.
|
|
167
171
|
if (properties.entityId.length === 0 && this.store.onDemandPropertyMap && this.store.onDemandPropertyMap.size > 0) {
|
|
168
|
-
return writePropertiesOnDemand(this.store, effective);
|
|
172
|
+
return writePropertiesOnDemand(this.store, effective, null, undefined, undefined, onCount);
|
|
169
173
|
}
|
|
170
174
|
const entityId = Array.from(properties.entityId);
|
|
171
175
|
// A property row belongs to the entity named in its own EntityId
|
|
172
176
|
// column, not to its own row index — filter on that, not on ExpressId.
|
|
173
177
|
const keep = effective ? entityId.map((id) => !effective.isDeleted(id)) : null;
|
|
178
|
+
onCount?.(keep ? keep.filter(Boolean).length : entityId.length);
|
|
174
179
|
return this.toParquet(filterColumns({
|
|
175
180
|
EntityId: entityId,
|
|
176
181
|
PsetName: mapTypedArray(properties.psetName, i => strings.get(i)),
|
|
@@ -186,6 +191,10 @@ export class ParquetExporter {
|
|
|
186
191
|
async writeQuantities() {
|
|
187
192
|
const { quantities, strings } = this.store;
|
|
188
193
|
const effective = this.getEffective();
|
|
194
|
+
if (this.mutationView) {
|
|
195
|
+
const onDemand = quantities.entityId.length === 0;
|
|
196
|
+
return writeQuantitiesOnDemand(this.store, effective, this.mutationView, onDemand ? this.store.onDemandQuantityMap?.keys() ?? [] : quantities.entityIndex.keys(), onDemand ? id => this.store.getQuantities(id) : id => quantities.getForEntity(id));
|
|
197
|
+
}
|
|
189
198
|
// Same gap as `writeProperties`: `store.quantities` is only ever
|
|
190
199
|
// populated when a caller bulk-builds it directly (this file's own
|
|
191
200
|
// tests); the real `parseColumnar` path leaves it empty and serves
|
|
@@ -206,41 +215,7 @@ export class ParquetExporter {
|
|
|
206
215
|
}, keep), new Set(['Value']));
|
|
207
216
|
}
|
|
208
217
|
async writeRelationships() {
|
|
209
|
-
|
|
210
|
-
const effective = this.getEffective();
|
|
211
|
-
// One row per `IfcRel*` STEP record, including any collapsed into
|
|
212
|
-
// an edge's `shadowedRelationshipIds` (#3760/#3782) — not one row
|
|
213
|
-
// per deduped edge; see `flattenRelationshipEdges`'s doc comment.
|
|
214
|
-
const sourceIds = [];
|
|
215
|
-
const targetIds = [];
|
|
216
|
-
const relTypes = [];
|
|
217
|
-
const relIds = [];
|
|
218
|
-
for (const row of flattenRelationshipEdges(relationships.forward)) {
|
|
219
|
-
// An edge naming a tombstoned entity on either end no longer
|
|
220
|
-
// has a live entity to relate — drop the row rather than
|
|
221
|
-
// leave a dangling SourceId/TargetId in the export.
|
|
222
|
-
//
|
|
223
|
-
// `relationshipId` gets the same treatment: an `IfcRel*` record
|
|
224
|
-
// is itself a row in Entities.parquet (the columnar parser
|
|
225
|
-
// indexes it like any other line), so emitting a RelId for a
|
|
226
|
-
// deleted one leaves a dangling reference too. Because each
|
|
227
|
-
// shadowed id is its own row here, this drops exactly the
|
|
228
|
-
// deleted record and keeps a live sibling — the same rule
|
|
229
|
-
// `edgeSurvives` applies to the CLI/MCP `related()` path
|
|
230
|
-
// (#3782 review).
|
|
231
|
-
if (effective && (effective.isDeleted(row.sourceId) || effective.isDeleted(row.targetId) || effective.isDeleted(row.relationshipId)))
|
|
232
|
-
continue;
|
|
233
|
-
sourceIds.push(row.sourceId);
|
|
234
|
-
targetIds.push(row.targetId);
|
|
235
|
-
relTypes.push(relationshipTypeName(row.type));
|
|
236
|
-
relIds.push(row.relationshipId);
|
|
237
|
-
}
|
|
238
|
-
return this.toParquet({
|
|
239
|
-
SourceId: sourceIds,
|
|
240
|
-
TargetId: targetIds,
|
|
241
|
-
RelType: relTypes,
|
|
242
|
-
RelId: relIds,
|
|
243
|
-
});
|
|
218
|
+
return this.toParquet(parquetRelationshipRows(this.store, this.mutationView, this.getEffective()));
|
|
244
219
|
}
|
|
245
220
|
async writeStrings() {
|
|
246
221
|
const { strings } = this.store;
|
|
@@ -372,13 +347,22 @@ export class ParquetExporter {
|
|
|
372
347
|
IndexCount: indexCounts,
|
|
373
348
|
});
|
|
374
349
|
}
|
|
375
|
-
async writeSpatialHierarchy() {
|
|
350
|
+
async writeSpatialHierarchy(relationships, effective) {
|
|
351
|
+
if (effective) {
|
|
352
|
+
const rows = parquetSpatialRows(relationships, effective);
|
|
353
|
+
return this.toParquet({
|
|
354
|
+
ElementId: rows.map(r => r.ElementId),
|
|
355
|
+
StoreyId: rows.map(r => r.StoreyId),
|
|
356
|
+
BuildingId: rows.map(r => r.BuildingId),
|
|
357
|
+
SiteId: rows.map(r => r.SiteId),
|
|
358
|
+
SpaceId: rows.map(r => r.SpaceId),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
376
361
|
if (!this.store.spatialHierarchy) {
|
|
377
362
|
throw new Error('Spatial hierarchy not available');
|
|
378
363
|
}
|
|
379
364
|
const rows = [];
|
|
380
365
|
const { spatialHierarchy } = this.store;
|
|
381
|
-
const effective = this.getEffective();
|
|
382
366
|
// Build lookup maps for fast parent access
|
|
383
367
|
const storeyToBuilding = new Map();
|
|
384
368
|
const buildingToSite = new Map();
|
|
@@ -407,18 +391,6 @@ export class ParquetExporter {
|
|
|
407
391
|
const buildingId = storeyToBuilding.get(storeyId) ?? -1;
|
|
408
392
|
const siteId = buildingId >= 0 ? (buildingToSite.get(buildingId) ?? -1) : -1;
|
|
409
393
|
for (const elementId of elementIds) {
|
|
410
|
-
// A tombstoned element is not a row in Entities.parquet either
|
|
411
|
-
// (see writeEntities) — leaving it here would point
|
|
412
|
-
// SpatialHierarchy.parquet at an id no other table has.
|
|
413
|
-
//
|
|
414
|
-
// Deletion-only, and only for the element itself: a deleted
|
|
415
|
-
// STOREY/BUILDING/SITE still surfaces as StoreyId/BuildingId/
|
|
416
|
-
// SiteId on a surviving element's row (spatialHierarchy is a
|
|
417
|
-
// source-parse snapshot with no overlay-aware re-parenting —
|
|
418
|
-
// the same class of problem Ifc5Exporter's re-parenting pass
|
|
419
|
-
// solves, #2047 — not addressed here).
|
|
420
|
-
if (effective?.isDeleted(elementId))
|
|
421
|
-
continue;
|
|
422
394
|
// Check if element is in a space by iterating bySpace
|
|
423
395
|
let spaceId = -1;
|
|
424
396
|
for (const [sid, spaceElementIds] of spatialHierarchy.bySpace) {
|
|
@@ -444,7 +416,7 @@ export class ParquetExporter {
|
|
|
444
416
|
SpaceId: rows.map(r => r.SpaceId),
|
|
445
417
|
});
|
|
446
418
|
}
|
|
447
|
-
writeMetadata() {
|
|
419
|
+
writeMetadata(relationshipCount, propertyCount) {
|
|
448
420
|
const metadata = {
|
|
449
421
|
version: '2.0.0',
|
|
450
422
|
generator: 'IFC-Lite',
|
|
@@ -461,8 +433,8 @@ export class ParquetExporter {
|
|
|
461
433
|
meshCount: this.geometryResult?.meshes.length ?? 0,
|
|
462
434
|
vertexCount: this.geometryResult ? this.geometryResult.totalVertices : 0,
|
|
463
435
|
triangleCount: this.geometryResult ? this.geometryResult.totalTriangles : 0,
|
|
464
|
-
propertyCount
|
|
465
|
-
relationshipCount
|
|
436
|
+
propertyCount,
|
|
437
|
+
relationshipCount, // distinct exported IfcRel records, not raw edges (#3760/#4205)
|
|
466
438
|
},
|
|
467
439
|
};
|
|
468
440
|
return new TextEncoder().encode(JSON.stringify(metadata, null, 2));
|
|
@@ -473,13 +445,14 @@ export class ParquetExporter {
|
|
|
473
445
|
async toParquet(columns, floatColumns) {
|
|
474
446
|
return columnsToParquet(columns, floatColumns, PARQUET_UINT32_COLUMNS);
|
|
475
447
|
}
|
|
448
|
+
// fflate, not JSZip: JSZip writes "version needed to extract" 1.0 on
|
|
449
|
+
// DEFLATE entries, where the ZIP APPNOTE requires 2.0 (#3612).
|
|
476
450
|
async createZipArchive(files) {
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
}
|
|
482
|
-
return zip.generateAsync({ type: 'uint8array', compression: 'DEFLATE' });
|
|
451
|
+
const { zipSync } = await import('fflate');
|
|
452
|
+
// Entry names are file names with an extension, never integer-like
|
|
453
|
+
// keys, so the object keeps the Map's insertion order. zipSync rather
|
|
454
|
+
// than async `zip`, which starts uncapped workers (see bcf writer-archive).
|
|
455
|
+
return zipSync(Object.fromEntries(files), { level: 6 });
|
|
483
456
|
}
|
|
484
457
|
}
|
|
485
458
|
// Helper functions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-exporter.js","sourceRoot":"","sources":["../src/parquet-exporter.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3I,OAAO,EAAE,uBAAuB,EAA6B,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAM5F;;;GAGG;AACH,MAAM,OAAO,eAAe;IAChB,KAAK,CAAe;IACpB,cAAc,CAAkB;IAChC,YAAY,CAA6B;IAEjD;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,KAAmB,EAAE,cAA+B,EAAE,YAAkC;QAChG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACK,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,mEAAmE;QACnE,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,mDAAmD;QACnD,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,UAAgC,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE5C,qBAAqB;QACrB,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAExD,gCAAgC;QAChC,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3D,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAChE,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,WAAW;QACX,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QAC/B,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,KAAK,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvD,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjD,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,cAAc;IACd,kEAAkE;IAE1D,KAAK,CAAC,aAAa;QACvB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjD,iEAAiE;QACjE,kEAAkE;QAClE,eAAe;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhF,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAChC,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrE,uDAAuD;YACvD,0DAA0D;YAC1D,sEAAsE;YACtE,qEAAqE;YACrE,2DAA2D;YAC3D,+DAA+D;YAC/D,aAAa;YACb,EAAE;YACF,mEAAmE;YACnE,gEAAgE;YAChE,4DAA4D;YAC5D,gEAAgE;YAChE,iEAAiE;YACjE,gEAAgE;YAChE,kEAAkE;YAClE,iEAAiE;YACjE,EAAE;YACF,oEAAoE;YACpE,oEAAoE;YACpE,wDAAwD;YACxD,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,aAAa,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxE,OAAO,MAAM,CAAC;gBAClB,CAAC;gBACD,OAAO,gBAAgB,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC;YAC5D,CAAC,CAAC;YACF,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACrF,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3E,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACzD,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YACjD,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;SACpD,EAAE,IAAI,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,iEAAiE;QACjE,iEAAiE;QACjE,gEAAgE;QAChE,qEAAqE;QACrE,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,8DAA8D;QAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChH,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,iEAAiE;QACjE,uEAAuE;QACvE,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/E,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAChC,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAC/E,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC3C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAClF,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,oDAAoD;QACpD,2BAA2B;QAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChH,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/E,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAChC,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzE,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAClF,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACnC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACjF,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,6DAA6D;YAC7D,yDAAyD;YACzD,oDAAoD;YACpD,EAAE;YACF,gEAAgE;YAChE,2DAA2D;YAC3D,6DAA6D;YAC7D,4DAA4D;YAC5D,0DAA0D;YAC1D,0DAA0D;YAC1D,yDAAyD;YACzD,kBAAkB;YAClB,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAAE,SAAS;YAC/I,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAM;SAChB,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,kEAAkE;IAClE,uCAAuC;IACvC,kEAAkE;IAE1D,KAAK,CAAC,iBAAiB;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,gDAAgD;QAChD,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC5C,4DAA4D;YAC5D,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,OAAO;YACP,IAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,SAAS;YACnD,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,iCAAiC;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5C,4DAA4D;QAC5D,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,kCAAkC;QAClC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,SAAS;YACnD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IAEO,KAAK,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YACxB,iEAAiE;YACjE,gEAAgE;YAChE,6DAA6D;YAC7D,2CAA2C;YAC3C,IAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,SAAS;YACnD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEtC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE,WAAW;SAC1B,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,qBAAqB;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAML,EAAE,CAAC;QAER,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEjD,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,CAAC,IAAqC,EAAE,cAAuB,EAAE,UAAmB,EAAQ,EAAE;YAC3G,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;gBACxC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC3B,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACnD,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC3C,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,iBAAiB,EAAE,CAAC;gBACrD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACzD,CAAC;YACL,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;QACL,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,+DAA+D;gBAC/D,oDAAoD;gBACpD,wDAAwD;gBACxD,EAAE;gBACF,4DAA4D;gBAC5D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,6DAA6D;gBAC7D,6DAA6D;gBAC7D,uCAAuC;gBACvC,IAAI,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAE9C,sDAAsD;gBACtD,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;gBACjB,KAAK,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAC5D,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBACtC,OAAO,GAAG,GAAG,CAAC;wBACd,MAAM;oBACV,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC;oBACN,SAAS,EAAE,SAAS;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO;iBACnB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SACpC,CAAC,CAAC;IACP,CAAC;IAEO,aAAa;QACjB,MAAM,QAAQ,GAAG;YACb,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBAChC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;aACtC;YACD,MAAM,EAAE;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,sBAAsB;aACjC;YACD,UAAU,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;gBAClD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACxE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC3E,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;gBAC1C,iBAAiB,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,wDAAwD;aAC1M;SACJ,CAAC;QAEF,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,kEAAkE;IAClE,YAAY;IACZ,kEAAkE;IAE1D,KAAK,CAAC,SAAS,CAAC,OAA8B,EAAE,YAA0B;QAC9E,OAAO,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAA8B;QACzD,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;CACJ;AAED,mBAAmB;AACnB,SAAS,aAAa,CAA0B,GAAM,EAAE,EAAoB;IACxE,MAAM,MAAM,GAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAID;;;;GAIG;AACH,SAAS,aAAa,CAAsC,OAAU,EAAE,IAAsB;IAC1F,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAO,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAmB,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,CAAC,GAAI,OAAO,CAAC,GAAG,CAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAe,CAAC;IACnF,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,6EAA6E;AAC7E,+EAA+E;AAC/E,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"parquet-exporter.js","sourceRoot":"","sources":["../src/parquet-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
2
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
3
|
+
import type { EffectiveEntityIndex } from './effective-index.js';
|
|
4
|
+
/** The four columns of the BOS relationship table, one row per relationship edge. */
|
|
5
|
+
export declare function parquetRelationshipRows(store: IfcDataStore, view: MutablePropertyView | null, effective: EffectiveEntityIndex | null): {
|
|
6
|
+
SourceId: number[];
|
|
7
|
+
TargetId: number[];
|
|
8
|
+
RelType: string[];
|
|
9
|
+
RelId: number[];
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=parquet-relationship-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet-relationship-rows.d.ts","sourceRoot":"","sources":["../src/parquet-relationship-rows.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,qFAAqF;AACrF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,SAAS,EAAE,oBAAoB,GAAG,IAAI,GACrC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CA8ChF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
import { flattenRelationshipEdges, relationshipTypeName } from '@ifc-lite/data';
|
|
5
|
+
import { resolveEffectiveRelationshipOverlay } from '@ifc-lite/parser';
|
|
6
|
+
/** The four columns of the BOS relationship table, one row per relationship edge. */
|
|
7
|
+
export function parquetRelationshipRows(store, view, effective) {
|
|
8
|
+
const rows = { SourceId: [], TargetId: [], RelType: [], RelId: [] };
|
|
9
|
+
const overlay = view ? resolveEffectiveRelationshipOverlay(store, {
|
|
10
|
+
createdEntities: () => view.getNewEntities(),
|
|
11
|
+
mutatedEntityIds: () => {
|
|
12
|
+
const ids = new Set([
|
|
13
|
+
...view.getTypeMutations().keys(),
|
|
14
|
+
...view.getAttributeMutationsByEntity().keys(),
|
|
15
|
+
]);
|
|
16
|
+
// Positional edits may deliberately skip undo history. Ask the live
|
|
17
|
+
// overlay for each effective IfcRel record rather than replaying history.
|
|
18
|
+
for (const [type, relationIds] of effective?.byType ?? []) {
|
|
19
|
+
if (!type.startsWith('IFCREL'))
|
|
20
|
+
continue;
|
|
21
|
+
for (const id of relationIds) {
|
|
22
|
+
if (view.getPositionalMutationsForEntity(id)?.size)
|
|
23
|
+
ids.add(id);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return [...ids].filter(id => !view.isDeleted(id));
|
|
27
|
+
},
|
|
28
|
+
namedAttributes: id => view.getAttributeMutationsForEntity(id).map(({ name, value }) => [name, value]),
|
|
29
|
+
positionalAttributes: id => view.getPositionalMutationsForEntity(id) ?? [],
|
|
30
|
+
entityType: id => view.getEntityTypeMutation(id)?.newType,
|
|
31
|
+
isDeleted: id => view.isDeleted(id),
|
|
32
|
+
}) : null;
|
|
33
|
+
const add = (source, target, type, relation) => {
|
|
34
|
+
if (effective && (effective.isDeleted(source) || effective.isDeleted(target) || effective.isDeleted(relation)))
|
|
35
|
+
return;
|
|
36
|
+
rows.SourceId.push(source);
|
|
37
|
+
rows.TargetId.push(target);
|
|
38
|
+
rows.RelType.push(type);
|
|
39
|
+
rows.RelId.push(relation);
|
|
40
|
+
};
|
|
41
|
+
// The parsed graph preserves distinct IfcRel records that name the same
|
|
42
|
+
// endpoints. Suppress only records whose effective payload was rebuilt.
|
|
43
|
+
for (const edge of flattenRelationshipEdges(store.relationships.forward)) {
|
|
44
|
+
if (overlay?.supersededSourceIds.has(edge.relationshipId))
|
|
45
|
+
continue;
|
|
46
|
+
add(edge.sourceId, edge.targetId, relationshipTypeName(edge.type), edge.relationshipId);
|
|
47
|
+
}
|
|
48
|
+
for (const relation of overlay?.relationships ?? []) {
|
|
49
|
+
for (const source of relation.relating) {
|
|
50
|
+
for (const target of relation.related) {
|
|
51
|
+
add(source, target, relation.relationshipType, relation.relationshipId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return rows;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=parquet-relationship-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet-relationship-rows.js","sourceRoot":"","sources":["../src/parquet-relationship-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EffectiveEntityIndex } from './effective-index.js';
|
|
2
|
+
import type { parquetRelationshipRows } from './parquet-relationship-rows.js';
|
|
3
|
+
type RelationshipRows = ReturnType<typeof parquetRelationshipRows>;
|
|
4
|
+
export interface SpatialRow {
|
|
5
|
+
ElementId: number;
|
|
6
|
+
StoreyId: number;
|
|
7
|
+
BuildingId: number;
|
|
8
|
+
SiteId: number;
|
|
9
|
+
SpaceId: number;
|
|
10
|
+
}
|
|
11
|
+
/** Resolve the spatial table from the same live relationship edges exported to BOS. */
|
|
12
|
+
export declare function parquetSpatialRows(relationships: RelationshipRows, effective: EffectiveEntityIndex): SpatialRow[];
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=parquet-spatial-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet-spatial-rows.d.ts","sourceRoot":"","sources":["../src/parquet-spatial-rows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,oBAAoB,GAC9B,UAAU,EAAE,CAoCd"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
/** Resolve the spatial table from the same live relationship edges exported to BOS. */
|
|
5
|
+
export function parquetSpatialRows(relationships, effective) {
|
|
6
|
+
const parentOf = new Map();
|
|
7
|
+
const containerOf = new Map();
|
|
8
|
+
for (let i = 0; i < relationships.RelId.length; i++) {
|
|
9
|
+
const source = relationships.SourceId[i];
|
|
10
|
+
const target = relationships.TargetId[i];
|
|
11
|
+
if (relationships.RelType[i] === 'IfcRelAggregates')
|
|
12
|
+
parentOf.set(target, source);
|
|
13
|
+
if (relationships.RelType[i] === 'IfcRelContainedInSpatialStructure')
|
|
14
|
+
containerOf.set(target, source);
|
|
15
|
+
}
|
|
16
|
+
const rows = [];
|
|
17
|
+
for (const [elementId, containerId] of containerOf) {
|
|
18
|
+
if (!effective.has(elementId))
|
|
19
|
+
continue;
|
|
20
|
+
let storeyId = -1;
|
|
21
|
+
let buildingId = -1;
|
|
22
|
+
let siteId = -1;
|
|
23
|
+
let spaceId = -1;
|
|
24
|
+
let current = containerId;
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
// File-supplied aggregation can cycle. Iteration and the visited set
|
|
27
|
+
// bound the walk without rejecting legitimate deep spatial hierarchies.
|
|
28
|
+
while (current !== undefined && !seen.has(current) && effective.has(current)) {
|
|
29
|
+
seen.add(current);
|
|
30
|
+
switch (effective.typeOf(current)) {
|
|
31
|
+
case 'IFCSPACE':
|
|
32
|
+
if (spaceId < 0)
|
|
33
|
+
spaceId = current;
|
|
34
|
+
break;
|
|
35
|
+
case 'IFCBUILDINGSTOREY':
|
|
36
|
+
if (storeyId < 0)
|
|
37
|
+
storeyId = current;
|
|
38
|
+
break;
|
|
39
|
+
case 'IFCBUILDING':
|
|
40
|
+
if (buildingId < 0)
|
|
41
|
+
buildingId = current;
|
|
42
|
+
break;
|
|
43
|
+
case 'IFCSITE':
|
|
44
|
+
if (siteId < 0)
|
|
45
|
+
siteId = current;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
current = parentOf.get(current);
|
|
49
|
+
}
|
|
50
|
+
if (storeyId < 0)
|
|
51
|
+
continue;
|
|
52
|
+
rows.push({ ElementId: elementId, StoreyId: storeyId, BuildingId: buildingId, SiteId: siteId, SpaceId: spaceId });
|
|
53
|
+
}
|
|
54
|
+
rows.sort((a, b) => a.ElementId - b.ElementId);
|
|
55
|
+
return rows;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=parquet-spatial-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet-spatial-rows.js","sourceRoot":"","sources":["../src/parquet-spatial-rows.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAe/D,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAChC,aAA+B,EAC/B,SAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC1C,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,kBAAkB;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClF,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,mCAAmC;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QACxC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,GAAuB,WAAW,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,qEAAqE;QACrE,wEAAwE;QACxE,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,QAAQ,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,KAAK,UAAU;oBAAE,IAAI,OAAO,GAAG,CAAC;wBAAE,OAAO,GAAG,OAAO,CAAC;oBAAC,MAAM;gBAC3D,KAAK,mBAAmB;oBAAE,IAAI,QAAQ,GAAG,CAAC;wBAAE,QAAQ,GAAG,OAAO,CAAC;oBAAC,MAAM;gBACtE,KAAK,aAAa;oBAAE,IAAI,UAAU,GAAG,CAAC;wBAAE,UAAU,GAAG,OAAO,CAAC;oBAAC,MAAM;gBACpE,KAAK,SAAS;oBAAE,IAAI,MAAM,GAAG,CAAC;wBAAE,MAAM,GAAG,OAAO,CAAC;oBAAC,MAAM;YAC1D,CAAC;YACD,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC;YAAE,SAAS;QAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import type { IfcDataStore, IfcSourceBytes } from '@ifc-lite/parser';
|
|
26
26
|
import type { EffectiveEntityIndex } from './effective-index.js';
|
|
27
|
+
import type { IfcSchemaVersion } from './schema-converter.js';
|
|
27
28
|
import { INFRASTRUCTURE_TYPES, PRODUCT_TYPES, collectDescendantNames } from './entity-type-sets.js';
|
|
28
29
|
export { INFRASTRUCTURE_TYPES, PRODUCT_TYPES, collectDescendantNames };
|
|
29
30
|
/**
|
|
@@ -180,8 +181,23 @@ export declare function collectReferencedEntityIds(rootIds: Set<number>, source:
|
|
|
180
181
|
* this exact dangling-ref shape (#2398): a relationship that still names an
|
|
181
182
|
* entity the session deleted ships the same `#N` with no `#N=` line, on a
|
|
182
183
|
* path with no `visibleOnly` involved at all.
|
|
184
|
+
*
|
|
185
|
+
* `schemaVersion` is optional and, when given, holds a narrowed list to its
|
|
186
|
+
* OWN declared lower bound (`relationship-slot-bounds.ts`, reading the line's
|
|
187
|
+
* own `record.type` against the version-correct schema registry) before
|
|
188
|
+
* accepting the narrowing — see that file's doc for why: an `IFCREL*` line's
|
|
189
|
+
* own list attributes are never declared above `[1:?]` in any of the three
|
|
190
|
+
* schemas this repo ships (checked across all `IfcRel*` entities), so every
|
|
191
|
+
* EXISTING caller that omits it keeps its exact prior behaviour. A
|
|
192
|
+
* `STYLE_RESCUE_TYPES` line CAN carry a higher bound —
|
|
193
|
+
* `IfcTextureMap.Vertices` is `LIST [3:?]` — so callers on that path (#5262)
|
|
194
|
+
* pass it. When narrowing would still drop a slot below its own bound, the
|
|
195
|
+
* slot is left exactly as the source wrote it, the excluded ref(s) still
|
|
196
|
+
* dangling: the same "narrow reach only, never a new invalid shape" choice
|
|
197
|
+
* `narrowNonRelPositionalRefLists` already makes for the sibling
|
|
198
|
+
* non-relationship rule (#5181).
|
|
183
199
|
*/
|
|
184
|
-
export declare function filterHiddenRefsFromRelationshipLine(line: string, isExcluded: (id: number) => boolean): string | null;
|
|
200
|
+
export declare function filterHiddenRefsFromRelationshipLine(line: string, isExcluded: (id: number) => boolean, schemaVersion?: IfcSchemaVersion): string | null;
|
|
185
201
|
/**
|
|
186
202
|
* The "does this relationship's own line survive at all" half of
|
|
187
203
|
* {@link filterHiddenRefsFromRelationshipLine}, extracted as a standalone
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-collector.d.ts","sourceRoot":"","sources":["../src/reference-collector.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"reference-collector.d.ts","sourceRoot":"","sources":["../src/reference-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { asSourceBytes, STEP_TRIVIA } from '@ifc-lite/parser';
|
|
5
5
|
import { readStepSlots, splitTopLevelListItems } from './step-argument-parser.js';
|
|
6
|
+
import { readRelationshipSlotLowerBound } from './relationship-slot-bounds.js';
|
|
6
7
|
// Schema-derived type-set machinery (INFRASTRUCTURE_TYPES, PRODUCT_TYPES,
|
|
7
8
|
// collectDescendantNames) lives in `entity-type-sets.ts` — shared with
|
|
8
9
|
// `subset-roots.ts`, which derives IFC_ROOT_TYPES the same way. Re-exported
|
|
@@ -470,8 +471,23 @@ export function collectReferencedEntityIds(rootIds, source, entityIndex, exclude
|
|
|
470
471
|
* this exact dangling-ref shape (#2398): a relationship that still names an
|
|
471
472
|
* entity the session deleted ships the same `#N` with no `#N=` line, on a
|
|
472
473
|
* path with no `visibleOnly` involved at all.
|
|
474
|
+
*
|
|
475
|
+
* `schemaVersion` is optional and, when given, holds a narrowed list to its
|
|
476
|
+
* OWN declared lower bound (`relationship-slot-bounds.ts`, reading the line's
|
|
477
|
+
* own `record.type` against the version-correct schema registry) before
|
|
478
|
+
* accepting the narrowing — see that file's doc for why: an `IFCREL*` line's
|
|
479
|
+
* own list attributes are never declared above `[1:?]` in any of the three
|
|
480
|
+
* schemas this repo ships (checked across all `IfcRel*` entities), so every
|
|
481
|
+
* EXISTING caller that omits it keeps its exact prior behaviour. A
|
|
482
|
+
* `STYLE_RESCUE_TYPES` line CAN carry a higher bound —
|
|
483
|
+
* `IfcTextureMap.Vertices` is `LIST [3:?]` — so callers on that path (#5262)
|
|
484
|
+
* pass it. When narrowing would still drop a slot below its own bound, the
|
|
485
|
+
* slot is left exactly as the source wrote it, the excluded ref(s) still
|
|
486
|
+
* dangling: the same "narrow reach only, never a new invalid shape" choice
|
|
487
|
+
* `narrowNonRelPositionalRefLists` already makes for the sibling
|
|
488
|
+
* non-relationship rule (#5181).
|
|
473
489
|
*/
|
|
474
|
-
export function filterHiddenRefsFromRelationshipLine(line, isExcluded) {
|
|
490
|
+
export function filterHiddenRefsFromRelationshipLine(line, isExcluded, schemaVersion) {
|
|
475
491
|
const record = readStepSlots(line);
|
|
476
492
|
// This helper is also the output gate for relationship/source-style lines.
|
|
477
493
|
// Once a line identifies itself as a STEP entity, refusing its slot layout
|
|
@@ -498,6 +514,19 @@ export function filterHiddenRefsFromRelationshipLine(line, isExcluded) {
|
|
|
498
514
|
if (survivors.length !== items.length) {
|
|
499
515
|
if (survivors.length === 0)
|
|
500
516
|
return null;
|
|
517
|
+
if (schemaVersion !== undefined) {
|
|
518
|
+
const lowerBound = readRelationshipSlotLowerBound(entityType, index, schemaVersion);
|
|
519
|
+
if (lowerBound !== undefined && survivors.length < lowerBound) {
|
|
520
|
+
// Narrowing would still leave this slot below its OWN declared
|
|
521
|
+
// lower bound (#5262) — e.g. `IfcTextureMap.Vertices`,
|
|
522
|
+
// `LIST [3:?]`: 2 survivors is a DIFFERENT invalid file than the
|
|
523
|
+
// dangling ref it would replace. Leave it exactly as the source
|
|
524
|
+
// wrote it; the excluded ref stays dangling, the pre-existing
|
|
525
|
+
// defect class this whole gate only narrows the REACH of.
|
|
526
|
+
nextAttrs.push(rawAttr);
|
|
527
|
+
continue;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
501
530
|
changed = true;
|
|
502
531
|
nextAttrs.push(`${leading}(${survivors.join(',')})${trailing}`);
|
|
503
532
|
continue;
|