@itwin/presentation-shared 2.0.0-alpha.14 → 2.0.0-alpha.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,64 @@
1
1
  # @itwin/presentation-shared
2
2
 
3
+ ## 2.0.0-alpha.16
4
+
5
+ ### Major Changes
6
+
7
+ - [#1640](https://github.com/iTwin/presentation/pull/1640): `ECSqlBinding`: The `idset` binding's `value` is now `readonly Id64String[]` (previously `Id64String[]`). This is non-breaking for consumers who only define bindings, but breaking for code that reads `idset` binding values and passes them to APIs expecting a mutable array (e.g., custom `ECSqlQueryExecutor` implementations).
8
+
9
+ Migration example:
10
+
11
+ ```ts
12
+ // Before
13
+ binder.bindIdSet(key, OrderedId64Iterable.sortArray(binding.value));
14
+
15
+ // After
16
+ binder.bindIdSet(key, OrderedId64Iterable.sortArray([...binding.value]));
17
+ ```
18
+ - [#1606](https://github.com/iTwin/presentation/pull/1606): `ECSchemaProvider`: Add a required `getHiddenClassesTree` method, which returns a tree of classes, derived from the given class, whose visibility is changed through `CoreCustomAttributes.HiddenClass` or `CoreCustomAttributes.HiddenSchema` custom attributes. Building the tree requires traversing the whole derived classes' hierarchy, so implementations are expected to cache the result and refresh it when the iModel's schemas change.
19
+
20
+ Additions:
21
+
22
+ - `HiddenClassesTreeNode` describes a node of the tree. Root nodes are the outermost hidden derived classes, their children are derived classes that are explicitly shown, and so on. The selected class itself is always considered visible.
23
+ - `createHiddenClassesTree` builds the tree using the given schema provider. It doesn't cache the result, and is meant for implementing `ECSchemaProvider.getHiddenClassesTree`.
24
+ - `ECSql.createHiddenClassesFilter` creates a filter that excludes instances of classes, derived from the given base class and hidden through the above custom attributes. The tree is requested from the given schema provider once, and the filter's `createWhereClause` creates an ECSQL condition for the given class alias. The condition is an empty string when nothing needs to be excluded.
25
+
26
+ ```ts
27
+ const filter = await ECSql.createHiddenClassesFilter({ schemaProvider, baseClassName: "BisCore.GeometricElement3d" });
28
+ const condition = filter.createWhereClause("e");
29
+ const ecsql = `SELECT e.ECInstanceId FROM BisCore.GeometricElement3d e ${condition ? `WHERE ${condition}` : ""}`;
30
+ ```
31
+
32
+ Custom `ECSchemaProvider` implementations need to implement the new method. The one created by `createECSchemaProvider` from `@itwin/presentation-core-interop` already does that. Example of a custom implementation:
33
+
34
+ ```ts
35
+ const hiddenClassesTrees = new Map<string, Promise<HiddenClassesTreeNode[]>>();
36
+ const schemaProvider: ECSchemaProvider = {
37
+ getSchema: async (schemaName) => getMySchema(schemaName),
38
+ classDerivesFrom: async (derivedClassName, baseClassName) => myClassDerivesFrom(derivedClassName, baseClassName),
39
+ getHiddenClassesTree: async (selectClassName) => {
40
+ let tree = hiddenClassesTrees.get(selectClassName);
41
+ if (!tree) {
42
+ tree = createHiddenClassesTree({ schemaProvider, selectClassName });
43
+ tree.catch(() => hiddenClassesTrees.delete(selectClassName));
44
+ hiddenClassesTrees.set(selectClassName, tree);
45
+ }
46
+ return tree;
47
+ },
48
+ };
49
+ ```
50
+
51
+ ### Minor Changes
52
+
53
+ - [#1654](https://github.com/iTwin/presentation/pull/1654): `ECSqlBinding`: Allow `idset` bindings to use mutable or readonly sets of IDs in addition to arrays.
54
+ - [#1606](https://github.com/iTwin/presentation/pull/1606): Export `DeepReadonly` type for recursively marking all properties as readonly with no depth limit.
55
+
56
+ ## 2.0.0-alpha.15
57
+
58
+ ### Minor Changes
59
+
60
+ - [#1595](https://github.com/iTwin/presentation/pull/1595): `PrimitiveValueDescriptor`: Add an `extendedType` property that carries a primitive property's `extendedTypeName` (e.g. `"Json"`, `"BeGuid"`), when set, so consumers can refine how a `type`-typed value should be interpreted without re-reading schema. `@itwin/presentation-content` now populates it for primitive properties.
61
+
3
62
  ## 2.0.0-alpha.14
4
63
 
5
64
  ### Minor Changes
@@ -371,6 +430,12 @@
371
430
 
372
431
  In reality, consumers will likely use `@itwin/presentation-core-interop` package for creating them, and the package has been updated to handle the change, so reacting to the breaking change is as simple as bumping the version of `@itwin/presentation-core-interop` package in the consumer's `package.json`.
373
432
 
433
+ ## 1.2.23
434
+
435
+ ### Patch Changes
436
+
437
+ - [#1580](https://github.com/iTwin/presentation/pull/1580): Update iTwin.js Core dependencies to `5.14.2`.
438
+
374
439
  ## 1.2.22
375
440
 
376
441
  ### Patch Changes
package/README.md CHANGED
@@ -41,6 +41,16 @@ const ecClassFromUtility = await getClass(schemaProvider, "MySchema.MyClass");
41
41
  const isGeometricElement = await schemaProvider.classDerivesFrom("MySchema.MyClass", "BisCore.GeometricElement");
42
42
  ```
43
43
 
44
+ ### Hidden classes
45
+
46
+ Classes may be hidden from users through `CoreCustomAttributes.HiddenClass` and `CoreCustomAttributes.HiddenSchema` custom attributes. Instances of such classes shouldn't be shown in the UI, unless their class is selected explicitly.
47
+
48
+ - `ECSchemaProvider.getHiddenClassesTree` returns a `HiddenClassesTreeNode` tree of classes, derived from the given class, whose visibility differs from their base class. The tree includes both hidden classes and their explicitly shown descendants. Building the tree requires traversing the whole derived classes' hierarchy, so implementations are expected to cache the result. The provider created by `createECSchemaProvider` from `@itwin/presentation-core-interop` caches it for the provider's lifetime. Create one provider per iModel and share it between consumers; after schema changes, recreate the provider and consumers holding it.
49
+
50
+ - `createHiddenClassesTree` builds the tree for `ECSchemaProvider.getHiddenClassesTree` implementations. It doesn't cache the result.
51
+
52
+ Use `ECSql.createHiddenClassesFilter` to exclude instances of hidden classes in ECSQL queries.
53
+
44
54
  ### `ECClassHierarchyInspector` & `createCachingECClassHierarchyInspector` (deprecated)
45
55
 
46
56
  > **Deprecated:** `ECClassHierarchyInspector` and `createCachingECClassHierarchyInspector` are deprecated. `ECSchemaProvider` now exposes a `classDerivesFrom` method directly, so a separate class hierarchy inspector is no longer needed.
@@ -256,6 +266,19 @@ The ECSql utilities group contains a number of functions to help create complex
256
266
  // `
257
267
  ```
258
268
 
269
+ - `createHiddenClassesFilter` - creates a filter that excludes instances of classes, derived from the given base class and hidden through `HiddenClass` or `HiddenSchema` custom attributes. The base class itself is never excluded, and classes outside its hierarchy are not affected. The hidden classes tree is requested from the schema provider once (see `ECSchemaProvider.getHiddenClassesTree`), and the filter can create conditions for multiple class aliases. Each condition is an empty string when nothing needs to be excluded.
270
+
271
+ Example usage:
272
+
273
+ ```ts
274
+ import { ECSql } from "@itwin/presentation-shared";
275
+
276
+ const filter = await ECSql.createHiddenClassesFilter({ schemaProvider, baseClassName: "MySchema.MyClass" });
277
+ const condition = filter.createWhereClause("x");
278
+ // condition = "[x].[ECClassId] IS NOT ([MySchema].[MyHiddenClass])"
279
+ const ecsql = `SELECT x.ECInstanceId FROM MySchema.MyClass x ${condition ? `WHERE ${condition}` : ""}`;
280
+ ```
281
+
259
282
  ## Values
260
283
 
261
284
  The APIs in Values group contain various value types and utilities to work with them.
@@ -397,8 +420,8 @@ Example usage:
397
420
  ```ts
398
421
  import { Logger as ITwinJsLogger } from "@itwin/core-bentley";
399
422
  import { createLogger } from "@itwin/presentation-core-interop";
400
- import { ILogger } from "@itwin/presentation-shared";
401
423
  import { setLogger as setHierarchiesLogger } from "@itwin/presentation-hierarchies";
424
+ import { ILogger } from "@itwin/presentation-shared";
402
425
 
403
426
  // create an `ILogger` from iTwin.js `Logger`
404
427
  const logger: ILogger = createLogger(ITwinJsLogger);
@@ -13,9 +13,10 @@ export { createBisInstanceLabelSelectClauseFactory } from "./shared/instance-lab
13
13
  export { createIModelInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js";
14
14
  export type { ILogger, LogFunction, LogLevel } from "./shared/Logging.js";
15
15
  export { NOOP_LOGGER } from "./shared/Logging.js";
16
- export type { ArrayElement, OmitOverUnion, Props } from "./shared/MappedTypes.js";
17
- export type { ArrayValueDescriptor, EC, ECClassHierarchyInspector, ECSchemaProvider, NavigationValueDescriptor, PrimitiveValueDescriptor, PrimitiveValueType, RelationshipPath, StructValueDescriptor, ValueDescriptor, } from "./shared/Metadata.js";
16
+ export type { ArrayElement, DeepReadonly, OmitOverUnion, Props } from "./shared/MappedTypes.js";
17
+ export type { ArrayValueDescriptor, EC, ECClassHierarchyInspector, ECSchemaProvider, HiddenClassesTreeNode, NavigationValueDescriptor, PrimitiveValueDescriptor, PrimitiveValueType, RelationshipPath, StructValueDescriptor, ValueDescriptor, } from "./shared/Metadata.js";
18
18
  export { createCachingECClassHierarchyInspector, getClass, } from "./shared/Metadata.js";
19
+ export { createHiddenClassesTree } from "./shared/HiddenClasses.js";
19
20
  export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
20
21
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
21
22
  export type { ArrayValue, StructValue, NavigationValue, Value, Point2dValue, Point3dValue } from "./shared/Values.js";
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvH,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,YAAY,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,6CAA6C,EAAE,MAAM,kFAAkF,CAAC;AACjJ,OAAO,EAAE,gDAAgD,EAAE,MAAM,qFAAqF,CAAC;AACvJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAC;AACzI,OAAO,EAAE,4CAA4C,EAAE,MAAM,iFAAiF,CAAC;AAC/I,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EACV,oBAAoB,EACpB,EAAE,EAEF,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,sCAAsC,EACtC,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtH,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvH,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,YAAY,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,6CAA6C,EAAE,MAAM,kFAAkF,CAAC;AACjJ,OAAO,EAAE,gDAAgD,EAAE,MAAM,qFAAqF,CAAC;AACvJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAC;AACzI,OAAO,EAAE,4CAA4C,EAAE,MAAM,iFAAiF,CAAC;AAC/I,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChG,YAAY,EACV,oBAAoB,EACpB,EAAE,EAEF,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,sCAAsC,EACtC,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtH,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -16,6 +16,7 @@ export { NOOP_LOGGER } from "./shared/Logging.js";
16
16
  export {
17
17
  // eslint-disable-next-line @typescript-eslint/no-deprecated
18
18
  createCachingECClassHierarchyInspector, getClass, } from "./shared/Metadata.js";
19
+ export { createHiddenClassesTree } from "./shared/HiddenClasses.js";
19
20
  export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
20
21
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
21
22
  //# sourceMappingURL=presentation-shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-shared.js","sourceRoot":"","sources":["../src/presentation-shared.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,6CAA6C,EAAE,MAAM,kFAAkF,CAAC;AACjJ,OAAO,EAAE,gDAAgD,EAAE,MAAM,qFAAqF,CAAC;AACvJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAC;AACzI,OAAO,EAAE,4CAA4C,EAAE,MAAM,iFAAiF,CAAC;AAE/I,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAelD,OAAO;AACL,4DAA4D;AAC5D,sCAAsC,EACtC,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"presentation-shared.js","sourceRoot":"","sources":["../src/presentation-shared.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,6CAA6C,EAAE,MAAM,kFAAkF,CAAC;AACjJ,OAAO,EAAE,gDAAgD,EAAE,MAAM,qFAAqF,CAAC;AACvJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,8EAA8E,CAAC;AACzI,OAAO,EAAE,4CAA4C,EAAE,MAAM,iFAAiF,CAAC;AAE/I,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAgBlD,OAAO;AACL,4DAA4D;AAC5D,sCAAsC,EACtC,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -17,7 +17,7 @@ export type ECSqlBinding = {
17
17
  value?: Id64String;
18
18
  } | {
19
19
  type: "idset";
20
- value?: Id64String[];
20
+ value?: ReadonlyArray<Id64String> | ReadonlySet<Id64String>;
21
21
  } | {
22
22
  type: "string";
23
23
  value?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlCore.d.ts","sourceRoot":"","sources":["../../src/shared/ECSqlCore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAErE;;;GAGG;AAEH,yBAAiB,YAAY,CAAC;IAC5B,uEAAuE;IACvE,SAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,GAAG,YAAY,CAqBzE;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;IAC5B,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC;CAC9B;AAED;;;;GAIG;AACH,KAAK,gBAAgB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,uBAAuB,GAAG,gBAAgB,CAAC;CAC7F"}
1
+ {"version":3,"file":"ECSqlCore.d.ts","sourceRoot":"","sources":["../../src/shared/ECSqlCore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAErE;;;GAGG;AAEH,yBAAiB,YAAY,CAAC;IAC5B,uEAAuE;IACvE,SAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,GAAG,YAAY,CAqBzE;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;IAC5B,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC;CAC9B;AAED;;;;GAIG;AACH,KAAK,gBAAgB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,uBAAuB,GAAG,gBAAgB,CAAC;CAC7F"}
@@ -0,0 +1,19 @@
1
+ import type { EC, ECSchemaProvider, HiddenClassesTreeNode } from "./Metadata.js";
2
+ /**
3
+ * Creates a tree of classes, derived from the given class, whose visibility is changed through `HiddenClass`
4
+ * or `HiddenSchema` custom attributes. See `HiddenClassesTreeNode` for details on the tree structure.
5
+ * The selected class itself is included, but this exception does not override the hidden state inherited by its descendants.
6
+ *
7
+ * The function traverses the whole derived classes' hierarchy of the given class, which may be expensive. It's
8
+ * meant to be used by `ECSchemaProvider.getHiddenClassesTree` implementations, which are expected to cache the result.
9
+ *
10
+ * @throws Error if the selected class or any of its derived classes' schemas can't be found.
11
+ * @public
12
+ */
13
+ export declare function createHiddenClassesTree(props: {
14
+ /** Schema provider used to look up the selected class and its derived classes. */
15
+ schemaProvider: Pick<ECSchemaProvider, "getSchema">;
16
+ /** Full name of the class whose derived classes should be inspected. */
17
+ selectClassName: EC.FullClassNameDotNotation;
18
+ }): Promise<HiddenClassesTreeNode[]>;
19
+ //# sourceMappingURL=HiddenClasses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenClasses.d.ts","sourceRoot":"","sources":["../../src/shared/HiddenClasses.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,kFAAkF;IAClF,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACpD,wEAAwE;IACxE,eAAe,EAAE,EAAE,CAAC,wBAAwB,CAAC;CAC9C,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAOnC"}
@@ -0,0 +1,61 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { firstValueFrom, from, groupBy, map, mergeMap, ReplaySubject, toArray } from "rxjs";
6
+ import { getClass } from "./Metadata.js";
7
+ import { parseFullClassName } from "./Utils.js";
8
+ /**
9
+ * Creates a tree of classes, derived from the given class, whose visibility is changed through `HiddenClass`
10
+ * or `HiddenSchema` custom attributes. See `HiddenClassesTreeNode` for details on the tree structure.
11
+ * The selected class itself is included, but this exception does not override the hidden state inherited by its descendants.
12
+ *
13
+ * The function traverses the whole derived classes' hierarchy of the given class, which may be expensive. It's
14
+ * meant to be used by `ECSchemaProvider.getHiddenClassesTree` implementations, which are expected to cache the result.
15
+ *
16
+ * @throws Error if the selected class or any of its derived classes' schemas can't be found.
17
+ * @public
18
+ */
19
+ export async function createHiddenClassesTree(props) {
20
+ const selectClass = await getClass(props.schemaProvider, props.selectClassName);
21
+ return firstValueFrom(collectHiddenClassesTreeNodes(props.schemaProvider, selectClass, "show", getInheritedHiddenState(selectClass)).pipe(toArray()));
22
+ }
23
+ function getInheritedHiddenState(ecClass) {
24
+ for (let currentClass = ecClass; currentClass; currentClass = currentClass.baseClass) {
25
+ if (currentClass.isHidden !== undefined) {
26
+ return currentClass.isHidden ? "hide" : "show";
27
+ }
28
+ if (currentClass.schema.isHidden) {
29
+ return "hide";
30
+ }
31
+ }
32
+ return "show";
33
+ }
34
+ function collectHiddenClassesTreeNodes(schemaProvider, parentClass, parentState, inheritedState = parentState) {
35
+ return from(parentClass.getDerivedClassNames({ onlyDirect: true })).pipe(map(parseFullClassName), groupBy(({ schemaName }) => schemaName, {
36
+ element: ({ className }) => className,
37
+ connector: () => new ReplaySubject(),
38
+ }), mergeMap((classNames) => from(schemaProvider.getSchema(classNames.key)).pipe(mergeMap((schema) => {
39
+ if (!schema) {
40
+ throw new Error(`Schema "${classNames.key}" not found.`);
41
+ }
42
+ return classNames.pipe(mergeMap((className) => {
43
+ const ecClass = schema.getClass(className);
44
+ if (!ecClass) {
45
+ throw new Error(`Class "${className}" not found in schema "${classNames.key}".`);
46
+ }
47
+ const schemaState = schema.isHidden ? "hide" : undefined;
48
+ const classState = ecClass.isHidden === true ? "hide" : ecClass.isHidden === false ? "show" : undefined;
49
+ const effectiveState = classState ?? schemaState ?? inheritedState;
50
+ if (effectiveState === parentState) {
51
+ return collectHiddenClassesTreeNodes(schemaProvider, ecClass, parentState);
52
+ }
53
+ return collectHiddenClassesTreeNodes(schemaProvider, ecClass, effectiveState).pipe(toArray(), map((children) => ({
54
+ fullName: ecClass.fullName,
55
+ state: effectiveState,
56
+ children,
57
+ })));
58
+ }));
59
+ }))));
60
+ }
61
+ //# sourceMappingURL=HiddenClasses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenClasses.js","sourceRoot":"","sources":["../../src/shared/HiddenClasses.ts"],"names":[],"mappings":"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"}
@@ -44,5 +44,12 @@ type PropsFromParameters<TParams> = TParams extends [infer TProps] ? Exclude<TPr
44
44
  * @public
45
45
  */
46
46
  export type Props<TFunc extends (...args: any[]) => any> = PropsFromParameters<OverloadParameters<TFunc>>;
47
+ /**
48
+ * Recursively marks all properties as readonly with no depth limit.
49
+ * @public
50
+ */
51
+ export type DeepReadonly<T> = T extends (...args: any[]) => any ? T : T extends (infer U)[] ? ReadonlyArray<DeepReadonly<U>> : T extends object ? {
52
+ readonly [K in keyof T]: DeepReadonly<T[K]>;
53
+ } : T;
47
54
  export {};
48
55
  //# sourceMappingURL=MappedTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAC7G,WAAW,GACX,KAAK,CAAC;AAEV;;;;;;;GAOG;AACH,KAAK,kBAAkB,CAAC,KAAK,IAAI,KAAK,SAAS;IAC7C,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;CAC1B,GACG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GACjB,KAAK,SAAS;IAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;CAAE,GAC5F,EAAE,GAAG,EAAE,GAAG,EAAE,GACZ,KAAK,SAAS;IAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;CAAE,GAClE,EAAE,GAAG,EAAE,GACP,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,GACtC,EAAE,GACF,KAAK,CAAC;AAEhB;;;;GAIG;AACH,KAAK,mBAAmB,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,MAAM,MAAM,CAAC,GAC9D,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GACN,KAAK,GACP,OAAO,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GAAG,SAAS,GAClB,KAAK,GACP,KAAK,CAAC;AAEZ;;;;;;;GAOG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAC7G,WAAW,GACX,KAAK,CAAC;AAEV;;;;;;;GAOG;AACH,KAAK,kBAAkB,CAAC,KAAK,IAAI,KAAK,SAAS;IAC7C,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACzB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;CAC1B,GACG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GACjB,KAAK,SAAS;IAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;CAAE,GAC5F,EAAE,GAAG,EAAE,GAAG,EAAE,GACZ,KAAK,SAAS;IAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;CAAE,GAClE,EAAE,GAAG,EAAE,GACP,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,GACtC,EAAE,GACF,KAAK,CAAC;AAEhB;;;;GAIG;AACH,KAAK,mBAAmB,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,MAAM,MAAM,CAAC,GAC9D,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GACN,KAAK,GACP,OAAO,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GAAG,SAAS,GAClB,KAAK,GACP,KAAK,CAAC;AAEZ;;;;;;;GAOG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAE1G;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAC3D,CAAC,GACD,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC9B,CAAC,SAAS,MAAM,GACd;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC/C,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ECSqlBinding } from "./ECSqlCore.js";
2
+ import type { DeepReadonly } from "./MappedTypes.js";
2
3
  /**
3
4
  * An interface for an object that knows how to get an ECSchema from an iModel.
4
5
  *
@@ -15,6 +16,58 @@ export interface ECSchemaProvider {
15
16
  * promise otherwise.
16
17
  */
17
18
  classDerivesFrom(derivedClassFullName: EC.FullClassNameDotNotation, candidateBaseClassFullName: EC.FullClassNameDotNotation): Promise<boolean> | boolean;
19
+ /**
20
+ * Returns a tree of classes, derived from the given class, whose visibility is changed through `HiddenClass`
21
+ * or `HiddenSchema` custom attributes. See `HiddenClassesTreeNode` for details on the tree structure.
22
+ *
23
+ * Building the tree requires traversing the whole derived classes' hierarchy, so implementations are expected
24
+ * to cache the result per selected class and share it between callers - including concurrent ones.
25
+ *
26
+ * Query authors should use `ECSql.createHiddenClassesFilter` to exclude instances of hidden classes from their queries.
27
+ * Implementations may use `createHiddenClassesTree` to build the tree.
28
+ *
29
+ * @throws Error if the selected class or any of its derived classes' schemas can't be found.
30
+ */
31
+ getHiddenClassesTree(selectClassName: EC.FullClassNameDotNotation): Promise<DeepReadonly<HiddenClassesTreeNode[]>>;
32
+ }
33
+ /**
34
+ * A node in a tree of classes, derived from some selected class, whose schema-defined visibility differs from
35
+ * their parent's. Visibility is defined through `CoreCustomAttributes.HiddenClass` and `CoreCustomAttributes.HiddenSchema`
36
+ * custom attributes.
37
+ *
38
+ * The tree is relative to the selected class, which is always considered visible - even if it's hidden itself:
39
+ * This exception applies only to the selected class; its descendants still inherit its schema-defined hidden state.
40
+ *
41
+ * - Root nodes are the outermost derived classes that are hidden (`state: "hide"`).
42
+ * - Children of a `"hide"` node are its derived classes that are explicitly shown (`state: "show"`), overriding
43
+ * the inherited hiding.
44
+ * - Children of a `"show"` node are its derived classes that are hidden again, and so on.
45
+ *
46
+ * Derived classes whose visibility matches their parent's are not included - their descendants are attached
47
+ * directly to the closest included ancestor. An empty tree means all instances of the selected class are visible.
48
+ *
49
+ * @see `ECSchemaProvider.getHiddenClassesTree`
50
+ * @see `ECSql.createHiddenClassesFilter`
51
+ * @public
52
+ */
53
+ export type HiddenClassesTreeNode = HiddenClassesTreeNodeShown | HiddenClassesTreeNodeHidden;
54
+ /** @public */
55
+ interface HiddenClassesTreeNodeShown {
56
+ /** Full name of the class this node represents. */
57
+ fullName: EC.FullClassNameDotNotation;
58
+ /** Visibility state of the class and its derived classes, unless overridden by `children`. */
59
+ state: "show";
60
+ /** Derived classes whose visibility state differs from this node's `state`. */
61
+ children: HiddenClassesTreeNodeHidden[];
62
+ }
63
+ /** @public */
64
+ interface HiddenClassesTreeNodeHidden {
65
+ /** Full name of the class this node represents. */
66
+ fullName: EC.FullClassNameDotNotation;
67
+ /** Visibility state of the class and its derived classes, unless overridden by `children`. */
68
+ state: "hide";
69
+ /** Derived classes whose visibility state differs from this node's `state`. */
70
+ children: HiddenClassesTreeNodeShown[];
18
71
  }
19
72
  /**
20
73
  * An interface for a class hierarchy inspector that can be used to determine if one class derives from another.
@@ -324,10 +377,14 @@ export type ValueDescriptor = PrimitiveValueDescriptor | StructValueDescriptor |
324
377
  * and their labels) so consumers can map raw values to display labels without re-reading schema. The
325
378
  * `type` discriminates the enumerator value type (`String` → `string`, `Integer | Long` → `number`).
326
379
  *
380
+ * `extendedType` carries the property's raw `extendedTypeName` (e.g. `"Json"`, `"BeGuid"`), when set,
381
+ * to let consumers refine how a `type`-typed value should be interpreted without re-reading schema.
382
+ *
327
383
  * @public
328
384
  */
329
385
  export type PrimitiveValueDescriptor = {
330
386
  kind: "primitive";
387
+ extendedType?: string;
331
388
  } & ({
332
389
  /** The primitive value type. */
333
390
  type: Extract<PrimitiveValueType, "String">;
@@ -509,6 +566,6 @@ export type RelationshipPath<TStep extends RelationshipPathStep = RelationshipPa
509
566
  * @throws Error if the schema or class is not found.
510
567
  * @public
511
568
  */
512
- export declare function getClass(schemaProvider: ECSchemaProvider, fullClassName: EC.FullClassNameDotNotation): Promise<EC.Class>;
569
+ export declare function getClass(schemaProvider: Pick<ECSchemaProvider, "getSchema">, fullClassName: EC.FullClassNameDotNotation): Promise<EC.Class>;
513
570
  export {};
514
571
  //# sourceMappingURL=Metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../src/shared/Metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../src/shared/Metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../src/shared/Metadata.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuChD;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CAAC,KAMtD;IACC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAqC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACjF,SAAS,cAAc,CAAC,gBAA6C,EAAE,aAA0C;QAC/G,OAAO,GAAG,gBAAgB,IAAI,aAAa,EAAE,CAAC;IAChD,CAAC;IACD,OAAO;QACL,gBAAgB,CACd,oBAAiD,EACjD,0BAAuD;YAEvD,MAAM,QAAQ,GAAG,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;YAClF,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;oBAClF,MAAM,EAAE,UAAU,EAAE,4BAA4B,EAAE,SAAS,EAAE,sBAAsB,EAAE,GACnF,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;oBACjD,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;oBAC7F,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;oBAClC,OAAO,cAAc,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAygBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,cAAgC,EAChC,aAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,cAAc,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,0BAA0B,UAAU,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../src/shared/Metadata.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA8FhD;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CAAC,KAMtD;IACC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAqC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACjF,SAAS,cAAc,CAAC,gBAA6C,EAAE,aAA0C;QAC/G,OAAO,GAAG,gBAAgB,IAAI,aAAa,EAAE,CAAC;IAChD,CAAC;IACD,OAAO;QACL,gBAAgB,CACd,oBAAiD,EACjD,0BAAuD;YAEvD,MAAM,QAAQ,GAAG,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;YAClF,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;oBAClF,MAAM,EAAE,UAAU,EAAE,4BAA4B,EAAE,SAAS,EAAE,sBAAsB,EAAE,GACnF,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;oBACjD,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;oBAC7F,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;oBAClC,OAAO,cAAc,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AA4gBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,cAAmD,EACnD,aAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,cAAc,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,0BAA0B,UAAU,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { EC, ECSchemaProvider } from "../Metadata.js";
2
+ /**
3
+ * Creates a filter that excludes instances of classes hidden through `CoreCustomAttributes.HiddenClass` or
4
+ * `CoreCustomAttributes.HiddenSchema` custom attributes, relative to the given base class:
5
+ * - The base class itself is not excluded, even if it's hidden. Its derived classes are excluded or included
6
+ * according to the rules described by `HiddenClassesTreeNode`, retaining any hidden state inherited from the base class.
7
+ * - Classes outside the base class' hierarchy are not affected, so the filter may be applied to queries selecting
8
+ * the base class, its derived class, or a broader class.
9
+ * - The base class should be the class the query is meant to select. When the query's `FROM` class gets specialized,
10
+ * e.g. by an instance filter, still pass the original class - otherwise, specializing to a hidden class would
11
+ * include its instances.
12
+ *
13
+ * The hidden classes tree is requested from `schemaProvider` once, when creating the filter, and errors are
14
+ * propagated. Caching the tree is the provider's responsibility, so create the filter when building queries and
15
+ * reuse it for all aliases within the same operation, rather than holding on to it.
16
+ *
17
+ * Usage example:
18
+ *
19
+ * ```ts
20
+ * const filter = await ECSql.createHiddenClassesFilter({ schemaProvider, baseClassName: "BisCore.GeometricElement3d" });
21
+ * const whereClause = filter.createWhereClause("e");
22
+ * const ecsql = `SELECT e.ECInstanceId FROM bis.GeometricElement3d e ${whereClause ? `WHERE ${whereClause}` : ""}`;
23
+ * ```
24
+ *
25
+ * @public
26
+ */
27
+ export declare function createHiddenClassesFilter(props: {
28
+ /** Schema provider used to get the hidden classes tree of the base class. */
29
+ schemaProvider: Pick<ECSchemaProvider, "getHiddenClassesTree">;
30
+ /** Full name of the class, relative to which classes are hidden. */
31
+ baseClassName: EC.FullClassNameDotNotation;
32
+ }): Promise<{
33
+ /**
34
+ * Creates an ECSQL condition (without the `WHERE` keyword) that excludes instances of hidden classes, selected
35
+ * under the given alias. Returns an empty string when nothing needs to be excluded.
36
+ */
37
+ createWhereClause(classAlias: string): string;
38
+ }>;
39
+ //# sourceMappingURL=ECSqlHiddenClassesSnippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlHiddenClassesSnippets.d.ts","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlHiddenClassesSnippets.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,6EAA6E;IAC7E,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IAC/D,oEAAoE;IACpE,aAAa,EAAE,EAAE,CAAC,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC;IACV;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/C,CAAC,CAGD"}
@@ -0,0 +1,65 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { createClassSelector } from "./ECSqlValueSelectorSnippets.js";
6
+ /**
7
+ * Creates a filter that excludes instances of classes hidden through `CoreCustomAttributes.HiddenClass` or
8
+ * `CoreCustomAttributes.HiddenSchema` custom attributes, relative to the given base class:
9
+ * - The base class itself is not excluded, even if it's hidden. Its derived classes are excluded or included
10
+ * according to the rules described by `HiddenClassesTreeNode`, retaining any hidden state inherited from the base class.
11
+ * - Classes outside the base class' hierarchy are not affected, so the filter may be applied to queries selecting
12
+ * the base class, its derived class, or a broader class.
13
+ * - The base class should be the class the query is meant to select. When the query's `FROM` class gets specialized,
14
+ * e.g. by an instance filter, still pass the original class - otherwise, specializing to a hidden class would
15
+ * include its instances.
16
+ *
17
+ * The hidden classes tree is requested from `schemaProvider` once, when creating the filter, and errors are
18
+ * propagated. Caching the tree is the provider's responsibility, so create the filter when building queries and
19
+ * reuse it for all aliases within the same operation, rather than holding on to it.
20
+ *
21
+ * Usage example:
22
+ *
23
+ * ```ts
24
+ * const filter = await ECSql.createHiddenClassesFilter({ schemaProvider, baseClassName: "BisCore.GeometricElement3d" });
25
+ * const whereClause = filter.createWhereClause("e");
26
+ * const ecsql = `SELECT e.ECInstanceId FROM bis.GeometricElement3d e ${whereClause ? `WHERE ${whereClause}` : ""}`;
27
+ * ```
28
+ *
29
+ * @public
30
+ */
31
+ export async function createHiddenClassesFilter(props) {
32
+ const tree = await props.schemaProvider.getHiddenClassesTree(props.baseClassName);
33
+ return { createWhereClause: (classAlias) => createHiddenClassesWhereClause({ tree, classAlias }) };
34
+ }
35
+ function createHiddenClassesWhereClause(props) {
36
+ // Instances of the selected class are visible by default, so root `show` nodes are redundant - only their
37
+ // hidden descendants restrict anything.
38
+ const rootNodes = getRestrictingRootNodes(props.tree);
39
+ return createHideClause(rootNodes, props.classAlias) ?? "";
40
+ }
41
+ function getRestrictingRootNodes(nodes) {
42
+ return nodes.flatMap((node) => (node.state === "show" ? getRestrictingRootNodes(node.children) : [node]));
43
+ }
44
+ /** Creates a clause that excludes the given hidden nodes, except for their shown descendants. */
45
+ function createHideClause(nodes, classAlias) {
46
+ if (nodes.length === 0) {
47
+ return undefined;
48
+ }
49
+ const hideClause = `[${classAlias}].[ECClassId] IS NOT (${createClassesList(nodes)})`;
50
+ const showClause = createShowClause(nodes.flatMap(({ children }) => children), classAlias);
51
+ return showClause ? `(${hideClause} OR ${showClause})` : hideClause;
52
+ }
53
+ /** Creates a clause that includes the given shown nodes, except for their hidden descendants. */
54
+ function createShowClause(nodes, classAlias) {
55
+ if (nodes.length === 0) {
56
+ return undefined;
57
+ }
58
+ const showClause = `[${classAlias}].[ECClassId] IS (${createClassesList(nodes)})`;
59
+ const hideClause = createHideClause(nodes.flatMap(({ children }) => children), classAlias);
60
+ return hideClause ? `(${showClause} AND ${hideClause})` : showClause;
61
+ }
62
+ function createClassesList(nodes) {
63
+ return nodes.map(({ fullName }) => createClassSelector(fullName)).join(", ");
64
+ }
65
+ //# sourceMappingURL=ECSqlHiddenClassesSnippets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlHiddenClassesSnippets.js","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlHiddenClassesSnippets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAKtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,KAK/C;IAOC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClF,OAAO,EAAE,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,8BAA8B,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,SAAS,8BAA8B,CAAC,KAGvC;IACC,0GAA0G;IAC1G,wCAAwC;IACxC,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA4C;IAE5C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CACvB,KAAwE,EACxE,UAAkB;IAElB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,UAAU,yBAAyB,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;IACtF,MAAM,UAAU,GAAG,gBAAgB,CACjC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EACzC,UAAU,CACX,CAAC;IACF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AACtE,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CACvB,KAAwE,EACxE,UAAkB;IAElB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,UAAU,qBAAqB,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;IAClF,MAAM,UAAU,GAAG,gBAAgB,CACjC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EACzC,UAAU,CACX,CAAC;IACF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AACvE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA4C;IACrE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
2
2
  export { createRelationshipPathJoinClause, createRelationshipPathJoinInfo } from "./ECSqlJoinSnippets.js";
3
+ export { createHiddenClassesFilter } from "./ECSqlHiddenClassesSnippets.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -4,4 +4,5 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
6
6
  export { createRelationshipPathJoinClause, createRelationshipPathJoinInfo } from "./ECSqlJoinSnippets.js";
7
+ export { createHiddenClassesFilter } from "./ECSqlHiddenClassesSnippets.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/presentation-shared",
3
- "version": "2.0.0-alpha.14",
3
+ "version": "2.0.0-alpha.16",
4
4
  "description": "The package contains types and utilities used across different iTwin.js Presentation packages.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -30,19 +30,19 @@
30
30
  "./package.json": "./package.json"
31
31
  },
32
32
  "dependencies": {
33
- "@itwin/core-bentley": "^5.13.1"
33
+ "@itwin/core-bentley": "^5.14.3",
34
+ "rxjs": "^7.8.2"
34
35
  },
35
36
  "devDependencies": {
36
- "@itwin/build-tools": "^5.13.1",
37
- "@itwin/eslint-plugin": "^6.1.0",
38
- "@types/node": "^24.13.4",
37
+ "@itwin/build-tools": "^5.14.3",
38
+ "@itwin/eslint-plugin": "^6.1.1",
39
+ "@types/node": "^24.19.2",
39
40
  "@typescript/native": "npm:typescript@~7.0.2",
40
- "@vitest/coverage-v8": "^4.1.11",
41
+ "@vitest/coverage-v8": "^4.1.12",
41
42
  "eslint": "^9.39.5",
42
43
  "rimraf": "^6.1.3",
43
- "rxjs": "^7.8.2",
44
44
  "typescript": "npm:@typescript/typescript6@~6.0.2",
45
- "vitest": "^4.1.11",
45
+ "vitest": "^4.1.12",
46
46
  "presentation-test-utilities": "0.0.1"
47
47
  },
48
48
  "scripts": {