@ifc-lite/lists 2.3.3 → 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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ifc-lite/lists
2
2
 
3
- Configurable property tables and schedules from IFC data. Define a list once (entity types, columns, filter conditions, grouping) and execute it against any model through a `ListDataProvider` interface to get typed rows, group summaries, and CSV output. This is the engine behind entity tables and schedules in the ifc-lite viewer.
3
+ Configurable property tables and schedules from IFC data. Define a list once (entity types, Rules filter groups, columns, grouping) and execute it against model data to get typed rows, group summaries, and CSV output. The viewer evaluates Rules filters before the provider-only Lists engine builds rows.
4
4
 
5
5
  ## Install
6
6
 
@@ -27,9 +27,10 @@ const csv = listResultToCSV(result);
27
27
 
28
28
  ## Features
29
29
 
30
- - `ListDefinition`: entity types, columns, property conditions, grouping, or an explicit express-ID scope per model
30
+ - `ListDefinition`: entity types, Rules `FilterGroup[]`, columns, grouping, or an explicit express-ID scope per model
31
31
  - Column sources: entity attributes, property sets, quantity sets, materials, classifications, spatial containers (storey, building, site, project), and source model
32
- - Filtering with typed `PropertyCondition` operators, including Bonsai-style `/regex/` name patterns (`compileNameMatcher`, `isNamePattern`)
32
+ - Viewer filtering uses `@ifc-lite/rules` for `groups`. The provider-only `executeList` projects an already-filtered source set and rejects nonempty Rules filters, so callers cannot silently skip them.
33
+ - `migrateLegacyListDefinition` converts v1 JSON and earlier provider-only rows to `groups`: a property comparison becomes a `property` rule and every other Lists predicate a `listCondition` rule the Lists engine answers (`listConditionMatcher(provider)`). Only unreadable data stays in `unreadableConditions`. `legacyConditions` is for provider-only `executeList` callers (the SDK's flat conditions).
33
34
  - Grouping with per-group summaries (`summariseListRows`)
34
35
  - `discoverColumns` finds available columns from the actual model data
35
36
  - CSV export with formula-injection guarding (`listResultToCSV`)
@@ -0,0 +1,4 @@
1
+ import type { PropertyCondition } from './types.js';
2
+ export type ListConditionValueKind = 'number' | 'boolean' | 'text' | 'texts' | 'any';
3
+ export declare function listConditionValueKind(source: PropertyCondition['source'], propertyName: string): ListConditionValueKind;
4
+ //# sourceMappingURL=condition-value-kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-value-kind.d.ts","sourceRoot":"","sources":["../src/condition-value-kind.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAErF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAexH"}
@@ -0,0 +1,28 @@
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
+ /** What kind of value the Lists engine compares for a condition (#6190), so an
5
+ * editor offers the operators that can match it. It follows the engine's own
6
+ * reads (`getConditionValue`): a zone VOLUME mode is a number, `Straddles` a
7
+ * boolean, the zone name and the breakdown text, spatial levels, model file and
8
+ * attributes text; material and classification are several texts; a property
9
+ * may hold either, so it keeps every operator. */
10
+ import { isZoneVolumeMode } from './engine.js';
11
+ export function listConditionValueKind(source, propertyName) {
12
+ switch (source) {
13
+ case 'quantity':
14
+ case 'geometry': return 'number';
15
+ case 'property': return 'any';
16
+ case 'material':
17
+ case 'classification': return 'texts';
18
+ case 'zone': {
19
+ const mode = propertyName.toLowerCase();
20
+ if (isZoneVolumeMode(mode))
21
+ return 'number';
22
+ // The zone name, or every straddled zone joined, and the breakdown are text.
23
+ return mode === 'straddles' ? 'boolean' : 'text';
24
+ }
25
+ default: return 'text';
26
+ }
27
+ }
28
+ //# sourceMappingURL=condition-value-kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-value-kind.js","sourceRoot":"","sources":["../src/condition-value-kind.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;kDAKkD;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,UAAU,sBAAsB,CAAC,MAAmC,EAAE,YAAoB;IAC9F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC;QACjC,KAAK,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC;QAC9B,KAAK,UAAU,CAAC;QAChB,KAAK,gBAAgB,CAAC,CAAC,OAAO,OAAO,CAAC;QACtC,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC5C,6EAA6E;YAC7E,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC"}
package/dist/engine.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ListDataProvider, ListDefinition, ListResult, ListRow, ListGroup, ListGrouping, ListSummary, ListScheduleRow } from './types.js';
1
+ import type { ListDataProvider, ListDefinition, ListResult, ListRow, ListGroup, ListGrouping, ListSummary, ListScheduleRow, PropertyCondition } from './types.js';
2
2
  /**
3
3
  * Execute a list definition against a data provider.
4
4
  * Returns a flat table result with matched entities and column values.
@@ -47,6 +47,7 @@ export declare function groupPathKey(path: string[]): string;
47
47
  * `[]` rather than inventing a single all-rows row.
48
48
  */
49
49
  export declare function toScheduleRows(groups: ListGroup[] | undefined, levelCount: number): ListScheduleRow[];
50
+ export declare function matchesCondition(entityId: number, condition: PropertyCondition, provider: ListDataProvider): boolean;
50
51
  /**
51
52
  * `zone` column/condition modes that carry a VOLUME rather than a name.
52
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,EAIhB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,SAAY,GAClB,UAAU,CAiDZ;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,EAAE,CAM9E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,OAAO,EAAE,GACd;IAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,CAsEjD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAWrG;AA4LD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAM7D;;0DAE0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElE;AA4TD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,SAAM,GAAG,MAAM,CAgD3E"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,SAAY,GAClB,UAAU,CAkDZ;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,EAAE,CAM9E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,OAAO,EAAE,GACd;IAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,CAsEjD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAWrG;AAyDD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAoCT;AA2FD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAM7D;;0DAE0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElE;AA4TD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,SAAM,GAAG,MAAM,CAgD3E"}
package/dist/engine.js CHANGED
@@ -10,8 +10,9 @@ import { withAggregateInheritance } from './condition-inherit.js';
10
10
  * Returns a flat table result with matched entities and column values.
11
11
  */
12
12
  export function executeList(definition, provider, modelId = 'default') {
13
+ if (definition.groups.some((group) => group.rules.length > 0))
14
+ throw new Error('executeList requires Rules groups to be evaluated before provider-only execution');
13
15
  const startTime = performance.now();
14
- // Step 1: Resolve source set (which entities match)
15
16
  const matchedIds = resolveSourceSet(definition, provider, modelId);
16
17
  // Step 2: Extract column values for matched entities. `columnMeta` collects,
17
18
  // per quantity/property column, the QuantityType / measure dataType of the
@@ -186,7 +187,7 @@ export function toScheduleRows(groups, levelCount) {
186
187
  // Source Set Resolution
187
188
  // ============================================================================
188
189
  function resolveSourceSet(definition, provider, modelId) {
189
- const { entityTypes, conditions, expressIdsByModel } = definition;
190
+ const { entityTypes, legacyConditions = [], expressIdsByModel } = definition;
190
191
  let entityIds;
191
192
  if (expressIdsByModel) {
192
193
  // Explicit snapshot scope (e.g. from a filter result) — target exactly
@@ -213,10 +214,10 @@ function resolveSourceSet(definition, provider, modelId) {
213
214
  entityIds = chunks.length === 1 ? chunks[0] : chunks.flat();
214
215
  }
215
216
  // Apply conditions as filters
216
- if (conditions.length === 0) {
217
+ if (legacyConditions.length === 0) {
217
218
  return entityIds;
218
219
  }
219
- return entityIds.filter(id => matchesAllConditions(id, conditions, provider));
220
+ return entityIds.filter(id => matchesAllConditions(id, legacyConditions, provider));
220
221
  }
221
222
  function matchesAllConditions(entityId, conditions, provider) {
222
223
  for (const condition of conditions) {
@@ -226,7 +227,7 @@ function matchesAllConditions(entityId, conditions, provider) {
226
227
  }
227
228
  return true;
228
229
  }
229
- function matchesCondition(entityId, condition, provider) {
230
+ export function matchesCondition(entityId, condition, provider) {
230
231
  // Material and classification are multi-valued (an element can have many
231
232
  // material layers or classification refs) so they use any/none semantics
232
233
  // rather than the scalar comparison below.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- export type { ListDataProvider, ListDefinition, ListResult, ListRow, CellValue, ColumnDefinition, PropertyCondition, ConditionOperator, ListClassificationRef, ListGrouping, ListGroup, ListSummary, ListScheduleRow, DiscoveredColumns, } from './types.js';
1
+ export type { ListDataProvider, ListDefinition, ListResult, ListRow, CellValue, ColumnDefinition, PropertyCondition, ConditionOperator, UnreadableListCondition, ListClassificationRef, ListGrouping, ListGroup, ListSummary, ListScheduleRow, DiscoveredColumns, } from './types.js';
2
2
  export type { ListModelTagScope } from './model-tag-scope.js';
3
3
  export { ENTITY_ATTRIBUTES, type EntityAttribute } from './entity-attributes.js';
4
4
  export { executeList, listResultToCSV, summariseListRows, groupingColumnIds, groupPathKey, toScheduleRows, ZONE_MODE_VOLUME, ZONE_MODE_BREAKDOWN, isZoneVolumeMode, } from './engine.js';
5
5
  export { compileNameMatcher, isNamePattern } from './name-pattern.js';
6
+ export { isSavedListShape, migrateLegacyListConditions, migrateLegacyListDefinition } from './legacy-condition-migration.js';
7
+ export { listConditionMatcher } from './list-condition-matcher.js';
8
+ export { listConditionValueKind, type ListConditionValueKind } from './condition-value-kind.js';
6
9
  export { discoverColumns } from './discovery.js';
7
10
  export { LIST_PRESETS } from './presets.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGjF,OAAO,EACL,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAChG,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,GACxD,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGjF,OAAO,EACL,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAChG,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,GACxD,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGhG,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,9 @@ export { ENTITY_ATTRIBUTES } from './entity-attributes.js';
6
6
  export { executeList, listResultToCSV, summariseListRows, groupingColumnIds, groupPathKey, toScheduleRows, ZONE_MODE_VOLUME, ZONE_MODE_BREAKDOWN, isZoneVolumeMode, } from './engine.js';
7
7
  // Name pattern matching (Bonsai-style `/regex/` set/property names)
8
8
  export { compileNameMatcher, isNamePattern } from './name-pattern.js';
9
+ export { isSavedListShape, migrateLegacyListConditions, migrateLegacyListDefinition } from './legacy-condition-migration.js';
10
+ export { listConditionMatcher } from './list-condition-matcher.js';
11
+ export { listConditionValueKind } from './condition-value-kind.js';
9
12
  // Column discovery
10
13
  export { discoverColumns } from './discovery.js';
11
14
  // Presets
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wBAAwB,CAAC;AAEjF,SAAS;AACT,OAAO,EACL,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAChG,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,GACxD,MAAM,aAAa,CAAC;AAErB,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEtE,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqB/D,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wBAAwB,CAAC;AAEjF,SAAS;AACT,OAAO,EACL,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAChG,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,GACxD,MAAM,aAAa,CAAC;AAErB,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAA+B,MAAM,2BAA2B,CAAC;AAEhG,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** Decode saved List conditions into Rules groups (#5894, #6190). A property
2
+ * comparison becomes a canonical `property` rule; every other Lists predicate
3
+ * becomes a `listCondition` rule, which the Lists engine still answers, so no
4
+ * saved predicate changes the rows it keeps. Only data no build can evaluate
5
+ * (malformed members, an unknown operator or source, a rule this build cannot
6
+ * read) stays in `unreadableConditions`, visible and removable. */
7
+ import { type FilterGroup } from '@ifc-lite/rules';
8
+ import type { ListDefinition, UnreadableListCondition } from './types.js';
9
+ type MigrationResult = {
10
+ groups: FilterGroup[];
11
+ unreadableConditions: UnreadableListCondition[];
12
+ };
13
+ /** Saved JSON crosses a trust boundary before the typed Lists API sees it.
14
+ * Group CONTENTS are checked by `migrateLegacyListDefinition`, which keeps an
15
+ * unreadable rule visible instead of rejecting the whole list. */
16
+ export declare function isSavedListShape(value: unknown): value is Record<string, unknown>;
17
+ export declare function migrateLegacyListConditions(conditions: readonly unknown[]): MigrationResult;
18
+ /** Normalize a saved definition before it enters the public Lists API:
19
+ * v1 `conditions` and earlier provider-only rows become Rules, idempotently. */
20
+ export declare function migrateLegacyListDefinition(definition: unknown): ListDefinition;
21
+ export {};
22
+ //# sourceMappingURL=legacy-condition-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-condition-migration.d.ts","sourceRoot":"","sources":["../src/legacy-condition-migration.ts"],"names":[],"mappings":"AAIA;;;;;mEAKmE;AACnE,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,cAAc,EAAqB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7F,KAAK,eAAe,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,oBAAoB,EAAE,uBAAuB,EAAE,CAAA;CAAE,CAAC;AAWlG;;kEAEkE;AAClE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBjF;AAkCD,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,eAAe,CAS3F;AAkCD;gFACgF;AAChF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO,GAAG,cAAc,CAwB/E"}
@@ -0,0 +1,160 @@
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
+ /** Decode saved List conditions into Rules groups (#5894, #6190). A property
5
+ * comparison becomes a canonical `property` rule; every other Lists predicate
6
+ * becomes a `listCondition` rule, which the Lists engine still answers, so no
7
+ * saved predicate changes the rows it keeps. Only data no build can evaluate
8
+ * (malformed members, an unknown operator or source, a rule this build cannot
9
+ * read) stays in `unreadableConditions`, visible and removable. */
10
+ import { LIST_CONDITION_OPERATORS, LIST_CONDITION_SOURCES, Rule, isFilterRule, legacyListOperatorToFilterRule, } from '@ifc-lite/rules';
11
+ import { isNamePattern } from './name-pattern.js';
12
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
13
+ const COLUMN_SOURCES = new Set(['attribute', 'property', 'quantity', 'material', 'classification', 'spatial', 'model', 'zone', 'geometry']);
14
+ const UNREADABLE_REASONS = new Set(['unsupported-source', 'unsupported-attribute', 'name-pattern', 'inherit', 'operator', 'invalid-value', 'mixed-groups']);
15
+ const OPERATORS = new Set(LIST_CONDITION_OPERATORS);
16
+ const SOURCES = new Set(LIST_CONDITION_SOURCES);
17
+ /** Saved JSON crosses a trust boundary before the typed Lists API sees it.
18
+ * Group CONTENTS are checked by `migrateLegacyListDefinition`, which keeps an
19
+ * unreadable rule visible instead of rejecting the whole list. */
20
+ export function isSavedListShape(value) {
21
+ if (!isRecord(value) || typeof value.id !== 'string' || value.id.length === 0 || typeof value.name !== 'string'
22
+ || typeof value.createdAt !== 'number' || !Number.isFinite(value.createdAt)
23
+ || typeof value.updatedAt !== 'number' || !Number.isFinite(value.updatedAt)
24
+ || !Array.isArray(value.entityTypes) || !value.entityTypes.every((item) => typeof item === 'number' && Number.isInteger(item))
25
+ || !Array.isArray(value.columns) || !value.columns.every((column) => isRecord(column)
26
+ && typeof column.id === 'string' && typeof column.source === 'string' && COLUMN_SOURCES.has(column.source)
27
+ && typeof column.propertyName === 'string'))
28
+ return false;
29
+ if (value.groups !== undefined && !Array.isArray(value.groups))
30
+ return false;
31
+ if (value.unreadableConditions !== undefined && (!Array.isArray(value.unreadableConditions)
32
+ || !value.unreadableConditions.every((row) => isRecord(row) && ((row.reason === 'invalid-condition' && 'condition' in row)
33
+ || (typeof row.reason === 'string' && UNREADABLE_REASONS.has(row.reason) && isStoredCondition(row.condition))))))
34
+ return false;
35
+ if (value.expressIdsByModel !== undefined && (!isRecord(value.expressIdsByModel)
36
+ || !Object.values(value.expressIdsByModel).every((ids) => Array.isArray(ids)
37
+ && ids.every((id) => typeof id === 'number' && Number.isInteger(id) && id > 0))))
38
+ return false;
39
+ if (value.grouping !== undefined && (!isRecord(value.grouping)
40
+ || typeof value.grouping.columnId !== 'string'
41
+ || !Array.isArray(value.grouping.sumColumnIds)
42
+ || !value.grouping.sumColumnIds.every((id) => typeof id === 'string')
43
+ || (value.grouping.columnIds !== undefined && (!Array.isArray(value.grouping.columnIds)
44
+ || !value.grouping.columnIds.every((id) => typeof id === 'string')))
45
+ || (value.grouping.view !== undefined && value.grouping.view !== 'nested' && value.grouping.view !== 'schedule')))
46
+ return false;
47
+ return true;
48
+ }
49
+ function isStoredCondition(value) {
50
+ if (typeof value !== 'object' || value === null)
51
+ return false;
52
+ const row = value;
53
+ return typeof row.source === 'string' && typeof row.propertyName === 'string'
54
+ && typeof row.operator === 'string'
55
+ && (row.psetName === undefined || typeof row.psetName === 'string')
56
+ && (row.inherit === undefined || row.inherit === 'type' || row.inherit === 'aggregation');
57
+ }
58
+ /** One saved condition as the Rules rule that keeps its rows, or why it has none. */
59
+ function convertCondition(condition) {
60
+ if (!isStoredCondition(condition))
61
+ return { unreadable: { condition, reason: 'invalid-condition' } };
62
+ const { source, psetName, propertyName, operator, value, inherit } = condition;
63
+ if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean') {
64
+ return { unreadable: { condition, reason: 'invalid-value' } };
65
+ }
66
+ if (!OPERATORS.has(operator))
67
+ return { unreadable: { condition, reason: 'operator' } };
68
+ if (!SOURCES.has(source))
69
+ return { unreadable: { condition, reason: 'unsupported-source' } };
70
+ // A plain property comparison has a canonical form with the v1 first-match contract (#5894).
71
+ if (source === 'property' && !inherit && !isNamePattern(psetName ?? '') && !isNamePattern(propertyName)) {
72
+ const converted = legacyListOperatorToFilterRule(operator, {
73
+ kind: 'property', setName: psetName ?? '', propertyName,
74
+ nameCaseMode: 'exact', legacyListFirst: true, op: 'eq', value: String(value),
75
+ });
76
+ if (converted.status === 'readable')
77
+ return { rule: converted.value };
78
+ }
79
+ return { rule: Rule.listCondition({
80
+ source, propertyName, operator, value,
81
+ ...(psetName !== undefined ? { psetName } : {}), ...(inherit ? { inherit } : {}),
82
+ }) };
83
+ }
84
+ export function migrateLegacyListConditions(conditions) {
85
+ const rules = [];
86
+ const unreadableConditions = [];
87
+ for (const condition of conditions) {
88
+ const converted = convertCondition(condition);
89
+ if ('rule' in converted)
90
+ rules.push(converted.rule);
91
+ else
92
+ unreadableConditions.push(converted.unreadable);
93
+ }
94
+ return { groups: conjoin([], rules), unreadableConditions };
95
+ }
96
+ /** Groups OR; saved flat conditions narrow every one. AND them into each
97
+ * group, splitting an OR group into one AND group per rule, so
98
+ * `(a OR b) AND c` is kept as `(a AND c) OR (b AND c)`. */
99
+ function conjoin(groups, rules) {
100
+ if (rules.length === 0)
101
+ return [...groups];
102
+ const active = groups.filter((group) => group.rules.length > 0);
103
+ if (active.length === 0)
104
+ return [{ combinator: 'AND', rules: [...rules] }];
105
+ return active.flatMap((group) => group.combinator === 'AND' || group.rules.length === 1
106
+ ? [{ combinator: 'AND', rules: [...group.rules, ...rules] }]
107
+ : group.rules.map((rule) => ({ combinator: 'AND', rules: [rule, ...rules] })));
108
+ }
109
+ /** Rules this build cannot read leave their group as visible, removable rows
110
+ * rather than making the whole saved list disappear. */
111
+ function readGroups(raw) {
112
+ const groups = [];
113
+ const unreadableConditions = [];
114
+ for (const group of raw) {
115
+ if (!isRecord(group) || !Array.isArray(group.rules) || (group.combinator !== 'AND' && group.combinator !== 'OR')) {
116
+ unreadableConditions.push({ condition: group, reason: 'invalid-condition' });
117
+ continue;
118
+ }
119
+ const rules = [];
120
+ for (const rule of group.rules) {
121
+ if (isFilterRule(rule))
122
+ rules.push(rule);
123
+ else
124
+ unreadableConditions.push({ condition: rule, reason: 'invalid-condition' });
125
+ }
126
+ groups.push({ rules, combinator: group.combinator });
127
+ }
128
+ return { groups, unreadableConditions };
129
+ }
130
+ /** Normalize a saved definition before it enters the public Lists API:
131
+ * v1 `conditions` and earlier provider-only rows become Rules, idempotently. */
132
+ export function migrateLegacyListDefinition(definition) {
133
+ if (!isSavedListShape(definition))
134
+ throw new Error('Invalid saved list definition');
135
+ const { conditions, groups: rawGroups, unreadableConditions: saved, ...rest } = definition;
136
+ const read = readGroups(rawGroups ?? []);
137
+ const rules = [];
138
+ const unreadable = [...read.unreadableConditions];
139
+ // Rows saved while the scoped compatibility editor existed: convertible ones become rules.
140
+ for (const row of saved ?? []) {
141
+ const converted = row.reason === 'invalid-condition' ? null : convertCondition(row.condition);
142
+ if (converted && 'rule' in converted)
143
+ rules.push(converted.rule);
144
+ else
145
+ unreadable.push(row);
146
+ }
147
+ const legacy = conditions === undefined ? [] : Array.isArray(conditions) ? conditions : [conditions];
148
+ for (const condition of legacy) {
149
+ const converted = convertCondition(condition);
150
+ if ('rule' in converted)
151
+ rules.push(converted.rule);
152
+ else
153
+ unreadable.push(converted.unreadable);
154
+ }
155
+ return {
156
+ ...rest, groups: conjoin(read.groups, rules),
157
+ ...(unreadable.length > 0 || saved !== undefined ? { unreadableConditions: unreadable } : {}),
158
+ };
159
+ }
160
+ //# sourceMappingURL=legacy-condition-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-condition-migration.js","sourceRoot":"","sources":["../src/legacy-condition-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** The reader behind Rules' `listCondition` adapter (#6190): the Lists
2
+ * engine's own predicate, so a condition inside a Rules group keeps exactly
3
+ * the rows it keeps as a list scope. Attach one per model to the evaluator
4
+ * model (`EvaluatorModel.listConditions`). */
5
+ import type { ListConditionMatcher } from '@ifc-lite/rules';
6
+ import type { ListDataProvider } from './types.js';
7
+ export declare function listConditionMatcher(provider: ListDataProvider): ListConditionMatcher;
8
+ //# sourceMappingURL=list-condition-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-condition-matcher.d.ts","sourceRoot":"","sources":["../src/list-condition-matcher.ts"],"names":[],"mappings":"AAIA;;;8CAG8C;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB,CAErF"}
@@ -0,0 +1,8 @@
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 { matchesCondition } from './engine.js';
5
+ export function listConditionMatcher(provider) {
6
+ return (expressId, rule) => matchesCondition(expressId, rule, provider);
7
+ }
8
+ //# sourceMappingURL=list-condition-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-condition-matcher.js","sourceRoot":"","sources":["../src/list-condition-matcher.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,UAAU,oBAAoB,CAAC,QAA0B;IAC7D,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,43 +1,3 @@
1
- type NameMatcher = (name: string) => boolean;
2
- /** True when `pattern` uses the `/regex/` form (a valid slash-delimited literal). */
3
- export declare function isNamePattern(pattern: string): boolean;
4
- /**
5
- * Returns a human-readable rejection reason when `source` is not safe to
6
- * compile and run `.test()` with, or `undefined` when it's fine. Pure, never
7
- * throws — delegates to `@ifc-lite/regex-guard`'s `assertGuardedRegexPattern`
8
- * so this package shares the same catastrophic-backtracking-shape and
9
- * length-cap checks as `@ifc-lite/ids`, `@ifc-lite/extensions` and
10
- * `@ifc-lite/mutations`, instead of carrying its own copy. Exposed so a
11
- * caller that wants to reject a dangerous pattern WITHOUT triggering
12
- * `compileNameMatcher`'s throw (e.g. a live "does this pattern look right"
13
- * preview) can check first.
14
- */
15
- export declare function unsafeNamePatternReason(source: string): string | undefined;
16
- /**
17
- * Compile a name pattern into a predicate. `/body/flags` compiles to a RegExp;
18
- * anything else (including a malformed literal, which is logged) becomes an
19
- * exact, case-sensitive match.
20
- *
21
- * `compileNameMatcher` hands its returned predicate straight to `.test()`
22
- * against untrusted data: a viewer list column, an SDK `psetName`/`propName`
23
- * argument, or an LLM/agent-authored sandbox script's own call arguments
24
- * (`packages/sandbox/src/bridge-query.ts`'s `property` tool forwards its
25
- * args unmodified into `sdk.property` → `compileNameMatcher`, and the regex
26
- * compiles and runs on the HOST's main thread, outside the QuickJS sandbox —
27
- * a pattern the sandboxed script "owns" can hang the real browser tab). For
28
- * that reason, before compiling a `/regex/` literal's body, this runs it
29
- * through `@ifc-lite/regex-guard`'s `assertGuardedRegexPattern`, which
30
- * rejects the well-known catastrophic-backtracking shapes and overlong
31
- * patterns.
32
- *
33
- * Throws a plain `Error` — naming the pattern and the reason — when the body
34
- * is syntactically valid but rejected by the guard: unlike a malformed
35
- * literal, there is no safe fallback here, because the whole point of
36
- * rejecting it is to never call `.test()` with it. A caller that cannot let
37
- * an exception propagate (the sandbox bridge, in particular) MUST catch
38
- * this — see the callers' own comments for why a throw is safe to cross
39
- * that boundary.
40
- */
41
- export declare function compileNameMatcher(pattern: string): NameMatcher;
42
- export {};
1
+ /** Preserve the Lists API while the shared rules engine uses the same matcher. */
2
+ export { compileNameMatcher, isNamePattern, unsafeNamePatternReason } from '@ifc-lite/regex-guard';
43
3
  //# sourceMappingURL=name-pattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-pattern.d.ts","sourceRoot":"","sources":["../src/name-pattern.ts"],"names":[],"mappings":"AAmBA,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAU7C,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAoB/D"}
1
+ {"version":3,"file":"name-pattern.d.ts","sourceRoot":"","sources":["../src/name-pattern.ts"],"names":[],"mappings":"AAIA,kFAAkF;AAClF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,122 +1,6 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
- /**
5
- * Property-set / property NAME matching for list columns and queries.
6
- *
7
- * A name wrapped in slashes (`/Qto_.*BaseQuantities/`, optionally with trailing
8
- * flags such as `/qto_.+/i`) is treated as a regular expression matched against
9
- * the candidate name; anything else is an exact, case-sensitive string match
10
- * (the historical behaviour). This lets one column / query pull a value from
11
- * several property or quantity sets at once — e.g. `NetVolume` from
12
- * `Qto_WallBaseQuantities` AND `Qto_SlabBaseQuantities` — the way Bonsai's
13
- * `/regex/` syntax works (issue #1591). IFC set / property names never contain
14
- * slashes, so the `/.../` form is unambiguous.
15
- */
16
- import { assertGuardedRegexPattern, UnsafeRegexPatternError } from '@ifc-lite/regex-guard';
17
- // Compiled matchers are cached by pattern string: `findPropertyEntry` /
18
- // `findQuantityEntry` run per row, and the pattern is fixed per column, so
19
- // without this a regex column would recompile its RegExp for every element.
20
- // Distinct patterns are bounded by the user's column/query configs; the cap is
21
- // a backstop against a pathological loop that mints unique patterns.
22
- const CACHE_CAP = 256;
23
- const matcherCache = new Map();
24
- /** True when `pattern` uses the `/regex/` form (a valid slash-delimited literal). */
25
- export function isNamePattern(pattern) {
26
- return parseRegexLiteral(pattern) !== null;
27
- }
28
- /**
29
- * Returns a human-readable rejection reason when `source` is not safe to
30
- * compile and run `.test()` with, or `undefined` when it's fine. Pure, never
31
- * throws — delegates to `@ifc-lite/regex-guard`'s `assertGuardedRegexPattern`
32
- * so this package shares the same catastrophic-backtracking-shape and
33
- * length-cap checks as `@ifc-lite/ids`, `@ifc-lite/extensions` and
34
- * `@ifc-lite/mutations`, instead of carrying its own copy. Exposed so a
35
- * caller that wants to reject a dangerous pattern WITHOUT triggering
36
- * `compileNameMatcher`'s throw (e.g. a live "does this pattern look right"
37
- * preview) can check first.
38
- */
39
- export function unsafeNamePatternReason(source) {
40
- try {
41
- assertGuardedRegexPattern(source);
42
- return undefined;
43
- }
44
- catch (err) {
45
- if (err instanceof UnsafeRegexPatternError)
46
- return err.reason;
47
- throw err;
48
- }
49
- }
50
- /**
51
- * Compile a name pattern into a predicate. `/body/flags` compiles to a RegExp;
52
- * anything else (including a malformed literal, which is logged) becomes an
53
- * exact, case-sensitive match.
54
- *
55
- * `compileNameMatcher` hands its returned predicate straight to `.test()`
56
- * against untrusted data: a viewer list column, an SDK `psetName`/`propName`
57
- * argument, or an LLM/agent-authored sandbox script's own call arguments
58
- * (`packages/sandbox/src/bridge-query.ts`'s `property` tool forwards its
59
- * args unmodified into `sdk.property` → `compileNameMatcher`, and the regex
60
- * compiles and runs on the HOST's main thread, outside the QuickJS sandbox —
61
- * a pattern the sandboxed script "owns" can hang the real browser tab). For
62
- * that reason, before compiling a `/regex/` literal's body, this runs it
63
- * through `@ifc-lite/regex-guard`'s `assertGuardedRegexPattern`, which
64
- * rejects the well-known catastrophic-backtracking shapes and overlong
65
- * patterns.
66
- *
67
- * Throws a plain `Error` — naming the pattern and the reason — when the body
68
- * is syntactically valid but rejected by the guard: unlike a malformed
69
- * literal, there is no safe fallback here, because the whole point of
70
- * rejecting it is to never call `.test()` with it. A caller that cannot let
71
- * an exception propagate (the sandbox bridge, in particular) MUST catch
72
- * this — see the callers' own comments for why a throw is safe to cross
73
- * that boundary.
74
- */
75
- export function compileNameMatcher(pattern) {
76
- const cached = matcherCache.get(pattern);
77
- if (cached)
78
- return cached;
79
- const re = parseRegexLiteral(pattern);
80
- if (re) {
81
- try {
82
- assertGuardedRegexPattern(re.source);
83
- }
84
- catch (err) {
85
- if (err instanceof UnsafeRegexPatternError) {
86
- throw new Error(`[lists] rejected name pattern ${JSON.stringify(pattern)}: ${err.reason}`);
87
- }
88
- throw err;
89
- }
90
- }
91
- const matcher = re ? (name) => re.test(name) : (name) => name === pattern;
92
- if (matcherCache.size >= CACHE_CAP)
93
- matcherCache.clear();
94
- matcherCache.set(pattern, matcher);
95
- return matcher;
96
- }
97
- /**
98
- * Parse a `/body/flags` regex literal, or return null for a plain name. A
99
- * malformed literal is NOT silently swallowed: it's logged and treated as a
100
- * plain name (so it matches only itself), keeping behaviour predictable.
101
- *
102
- * This only validates SYNTAX (does it compile at all) — `isNamePattern` uses
103
- * it as-is, unaffected by the ReDoS guard above, because merely
104
- * *constructing* a RegExp never runs it and so cannot ReDoS; only
105
- * `compileNameMatcher`'s returned predicate ever calls `.test()`.
106
- */
107
- function parseRegexLiteral(pattern) {
108
- const m = /^\/(.+)\/([a-z]*)$/.exec(pattern);
109
- if (!m)
110
- return null;
111
- try {
112
- // Strip the stateful `g`/`y` flags: the compiled matcher is cached and
113
- // shared across rows, and `.test()` on a global/sticky RegExp advances
114
- // `lastIndex`, which would make matching alternate true/false per call.
115
- return new RegExp(m[1], m[2].replace(/[gy]/g, ''));
116
- }
117
- catch (err) {
118
- console.warn(`[lists] invalid name pattern ${JSON.stringify(pattern)}: ${err.message}`);
119
- return null;
120
- }
121
- }
4
+ /** Preserve the Lists API while the shared rules engine uses the same matcher. */
5
+ export { compileNameMatcher, isNamePattern, unsafeNamePatternReason } from '@ifc-lite/regex-guard';
122
6
  //# sourceMappingURL=name-pattern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-pattern.js","sourceRoot":"","sources":["../src/name-pattern.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAI3F,wEAAwE;AACxE,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,qEAAqE;AACrE,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEpD,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,IAAI,CAAC;QACH,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,uBAAuB;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QAC9D,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC;YACH,yBAAyB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;IAEvF,IAAI,YAAY,CAAC,IAAI,IAAI,SAAS;QAAE,YAAY,CAAC,KAAK,EAAE,CAAC;IACzD,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC;QACH,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"name-pattern.js","sourceRoot":"","sources":["../src/name-pattern.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,kFAAkF;AAClF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/presets.js CHANGED
@@ -13,7 +13,7 @@ function makePreset(name, description, entityTypes, columns) {
13
13
  createdAt: 0,
14
14
  updatedAt: 0,
15
15
  entityTypes,
16
- conditions: [],
16
+ groups: [],
17
17
  columns,
18
18
  };
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /** Result rows, grouping, and discovery shapes for Lists. */
2
+ import type { ColumnDefinition } from './types.js';
3
+ export interface ListResult {
4
+ columns: ColumnDefinition[];
5
+ rows: ListRow[];
6
+ /** Total matched entities before pagination */
7
+ totalCount: number;
8
+ /** Execution time in ms */
9
+ executionTime: number;
10
+ /** Per-group breakdown — present only when `grouping` is configured. */
11
+ groups?: ListGroup[];
12
+ /** Whole-result aggregates (count + per-column sums). Present when
13
+ * `grouping` is configured. */
14
+ summary?: ListSummary;
15
+ }
16
+ /** One group in a grouped list result. With multi-criteria grouping (issue
17
+ * #1790) groups are emitted as a FLAT pre-order list: each parent group is
18
+ * immediately followed by its subgroups (`level` gives the nesting depth). */
19
+ export interface ListGroup {
20
+ /** Opaque unique group key - the JSON encoding of `path` (see
21
+ * `groupPathKey`), collision-free even when a model-derived label contains
22
+ * separator-like characters. */
23
+ key: string;
24
+ /** Display label for the group header (this level's value only). */
25
+ label: string;
26
+ /** Number of rows in the group (the Count aggregate, issue #1790). */
27
+ count: number;
28
+ /** columnId → summed numeric value, for the configured sum columns. */
29
+ sums: Record<string, number>;
30
+ /** 0-based nesting depth (0 = outermost grouping column). Always emitted by
31
+ * `summariseListRows`; optional for backward type compatibility. */
32
+ level?: number;
33
+ /** Group-by labels from the outermost level down to this group. */
34
+ path?: string[];
35
+ }
36
+ /** Whole-result aggregates. */
37
+ export interface ListSummary {
38
+ count: number;
39
+ sums: Record<string, number>;
40
+ }
41
+ /**
42
+ * One row of the `schedule` presentation (issue #1790 round 2) — a single
43
+ * group-value tuple (a leaf group combination) carrying its Count and sums,
44
+ * projected from the LEAF entries of `ListGroup[]` (see `toScheduleRows`).
45
+ * Unlike `ListGroup`, a schedule row is never a parent: there is exactly one
46
+ * row per distinct combination of group-by values, matching Bonsai's
47
+ * "Building | Storey | Type | Count" schedule format.
48
+ */
49
+ export interface ListScheduleRow {
50
+ /** Collision-free key — `groupPathKey(path)`, matching the source `ListGroup.key`. */
51
+ key: string;
52
+ /** Group-by values, outermost first — one per active grouping level. */
53
+ path: string[];
54
+ /** Count aggregate: number of matched elements in this group combination. */
55
+ count: number;
56
+ /** columnId -> summed numeric value, for the configured sum columns. */
57
+ sums: Record<string, number>;
58
+ }
59
+ export interface ListRow {
60
+ /** Entity reference for 3D selection */
61
+ entityId: number;
62
+ modelId: string;
63
+ /** Column values in same order as ListResult.columns */
64
+ values: CellValue[];
65
+ }
66
+ export type CellValue = string | number | boolean | null;
67
+ /** Available columns discovered from the model */
68
+ export interface DiscoveredColumns {
69
+ attributes: string[];
70
+ properties: Map<string, string[]>;
71
+ quantities: Map<string, string[]>;
72
+ }
73
+ //# sourceMappingURL=result-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-types.d.ts","sourceRoot":"","sources":["../src/result-types.ts"],"names":[],"mappings":"AAIA,6DAA6D;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB;oCACgC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;+EAE+E;AAC/E,MAAM,WAAW,SAAS;IACxB;;qCAEiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;yEACqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAMzD,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC"}
@@ -0,0 +1,5 @@
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
+ export {};
5
+ //# sourceMappingURL=result-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-types.js","sourceRoot":"","sources":["../src/result-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /** Types for the Lists feature - configurable property tables from IFC data */
2
2
  import type { ListModelTagScope } from './model-tag-scope.js';
3
+ import type { DiscoveredColumns } from './result-types.js';
3
4
  import type { IfcTypeEnum, PropertySet, QuantitySet } from '@ifc-lite/data';
5
+ import type { FilterGroup, ListConditionOperator, ListConditionSource } from '@ifc-lite/rules';
4
6
  /**
5
7
  * Abstract interface for accessing IFC data during list execution.
6
8
  *
@@ -173,14 +175,21 @@ export interface ListDefinition {
173
175
  * Optional explicit element scope — a snapshot of express IDs per model
174
176
  * (e.g. from a search/filter result), keyed by modelId. When present, the
175
177
  * list targets exactly these elements per model and `entityTypes` is
176
- * ignored; `conditions` still apply on top. Keyed by model so federated
178
+ * ignored; filter groups still apply on top. Keyed by model so federated
177
179
  * snapshots don't over-select when local express IDs collide across files.
178
180
  */
179
181
  expressIdsByModel?: Record<string, number[]>;
180
182
  /** Optional MODEL scope by model tag (#4215, `model-tag-scope.ts`); absent = every model. */
181
183
  modelTagScope?: ListModelTagScope;
182
- /** Optional property-based filter conditions */
183
- conditions: PropertyCondition[];
184
+ /** Canonical Rules filters for migrated and newly-authored lists. */
185
+ groups: FilterGroup[];
186
+ /** Flat predicates for provider-only `executeList` callers (the SDK). Saved
187
+ * lists carry every predicate in `groups` instead (`listCondition`, #6190). */
188
+ legacyConditions?: PropertyCondition[];
189
+ /** Saved filters migration could not read (malformed, unknown operator or
190
+ * source, a rule this build does not know). Kept visible; a list with any
191
+ * cannot run until they are removed. */
192
+ unreadableConditions?: UnreadableListCondition[];
184
193
  /** Columns to display */
185
194
  columns: ColumnDefinition[];
186
195
  /** Current sort state */
@@ -234,7 +243,7 @@ export interface PropertyCondition {
234
243
  * or the straddled zones joined when the element crosses a boundary) or
235
244
  * `Straddles` (boolean); `geometry` is the World Coordinate (#3671) — `propertyName` selects axis `X` (default) | `Y` | `Z`
236
245
  */
237
- source: 'attribute' | 'property' | 'quantity' | 'material' | 'classification' | 'spatial' | 'model' | 'zone' | 'geometry';
246
+ source: ListConditionSource;
238
247
  /** Property set name (for property/quantity sources); the zone-SET id for `zone`. */
239
248
  psetName?: string;
240
249
  /** Attribute / property / quantity name, the spatial level for `spatial`
@@ -247,7 +256,15 @@ export interface PropertyCondition {
247
256
  /** property/quantity only: `'aggregation'` takes the nearest aggregate parent's value when the element has none (#5433). Type values are always read. */
248
257
  inherit?: 'type' | 'aggregation';
249
258
  }
250
- export type ConditionOperator = 'equals' | 'notEquals' | 'contains' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists';
259
+ /** One vocabulary with the Rules `listCondition` adapter (#6190), which carries these predicates in groups. */
260
+ export type ConditionOperator = ListConditionOperator;
261
+ export type UnreadableListCondition = {
262
+ condition: PropertyCondition;
263
+ reason: 'unsupported-source' | 'unsupported-attribute' | 'name-pattern' | 'inherit' | 'operator' | 'invalid-value' | 'mixed-groups';
264
+ } | {
265
+ condition: unknown;
266
+ reason: 'invalid-condition';
267
+ };
251
268
  export interface ColumnDefinition {
252
269
  id: string;
253
270
  /**
@@ -285,74 +302,5 @@ export interface ColumnDefinition {
285
302
  */
286
303
  dataType?: string;
287
304
  }
288
- export interface ListResult {
289
- columns: ColumnDefinition[];
290
- rows: ListRow[];
291
- /** Total matched entities before pagination */
292
- totalCount: number;
293
- /** Execution time in ms */
294
- executionTime: number;
295
- /** Per-group breakdown — present only when `grouping` is configured. */
296
- groups?: ListGroup[];
297
- /** Whole-result aggregates (count + per-column sums). Present when
298
- * `grouping` is configured. */
299
- summary?: ListSummary;
300
- }
301
- /** One group in a grouped list result. With multi-criteria grouping (issue
302
- * #1790) groups are emitted as a FLAT pre-order list: each parent group is
303
- * immediately followed by its subgroups (`level` gives the nesting depth). */
304
- export interface ListGroup {
305
- /** Opaque unique group key - the JSON encoding of `path` (see
306
- * `groupPathKey`), collision-free even when a model-derived label contains
307
- * separator-like characters. */
308
- key: string;
309
- /** Display label for the group header (this level's value only). */
310
- label: string;
311
- /** Number of rows in the group (the Count aggregate, issue #1790). */
312
- count: number;
313
- /** columnId → summed numeric value, for the configured sum columns. */
314
- sums: Record<string, number>;
315
- /** 0-based nesting depth (0 = outermost grouping column). Always emitted by
316
- * `summariseListRows`; optional for backward type compatibility. */
317
- level?: number;
318
- /** Group-by labels from the outermost level down to this group. */
319
- path?: string[];
320
- }
321
- /** Whole-result aggregates. */
322
- export interface ListSummary {
323
- count: number;
324
- sums: Record<string, number>;
325
- }
326
- /**
327
- * One row of the `schedule` presentation (issue #1790 round 2) — a single
328
- * group-value tuple (a leaf group combination) carrying its Count and sums,
329
- * projected from the LEAF entries of `ListGroup[]` (see `toScheduleRows`).
330
- * Unlike `ListGroup`, a schedule row is never a parent: there is exactly one
331
- * row per distinct combination of group-by values, matching Bonsai's
332
- * "Building | Storey | Type | Count" schedule format.
333
- */
334
- export interface ListScheduleRow {
335
- /** Collision-free key — `groupPathKey(path)`, matching the source `ListGroup.key`. */
336
- key: string;
337
- /** Group-by values, outermost first — one per active grouping level. */
338
- path: string[];
339
- /** Count aggregate: number of matched elements in this group combination. */
340
- count: number;
341
- /** columnId -> summed numeric value, for the configured sum columns. */
342
- sums: Record<string, number>;
343
- }
344
- export interface ListRow {
345
- /** Entity reference for 3D selection */
346
- entityId: number;
347
- modelId: string;
348
- /** Column values in same order as ListResult.columns */
349
- values: CellValue[];
350
- }
351
- export type CellValue = string | number | boolean | null;
352
- /** Available columns discovered from the model */
353
- export interface DiscoveredColumns {
354
- attributes: string[];
355
- properties: Map<string, string[]>;
356
- quantities: Map<string, string[]>;
357
- }
305
+ export type { ListResult, ListGroup, ListSummary, ListScheduleRow, ListRow, CellValue, DiscoveredColumns } from './result-types.js';
358
306
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -2,4 +2,6 @@
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
  export {};
5
+ /* Result row and schedule shapes live in result-types.ts so the persisted
6
+ * definition and provider contracts remain below the module-size limit. */
5
7
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;;AAmV/D;2EAC2E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/lists",
3
- "version": "2.3.3",
3
+ "version": "3.0.0",
4
4
  "description": "Configurable property tables and schedules from IFC data for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,14 +13,15 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@ifc-lite/data": "6.0.0",
17
- "@ifc-lite/encoding": "2.2.0",
18
- "@ifc-lite/regex-guard": "0.2.0"
16
+ "@ifc-lite/data": "6.1.0",
17
+ "@ifc-lite/encoding": "2.3.0",
18
+ "@ifc-lite/regex-guard": "0.3.0",
19
+ "@ifc-lite/rules": "0.5.0"
19
20
  },
20
21
  "devDependencies": {
21
- "csv-parse": "7.0.2",
22
+ "csv-parse": "7.0.3",
22
23
  "typescript": "^6.0.3",
23
- "vitest": "^5.0.1"
24
+ "vitest": "^5.0.2"
24
25
  },
25
26
  "license": "MPL-2.0",
26
27
  "author": "Louis True",