@itwin/presentation-shared 2.0.0-alpha.1 → 2.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +296 -1
  2. package/README.md +27 -9
  3. package/lib/cjs/presentation-shared.d.ts +18 -10
  4. package/lib/cjs/presentation-shared.d.ts.map +1 -1
  5. package/lib/cjs/presentation-shared.js +11 -6
  6. package/lib/cjs/presentation-shared.js.map +1 -1
  7. package/lib/cjs/shared/ConcatenatedValue.d.ts +1 -1
  8. package/lib/cjs/shared/ConcatenatedValue.d.ts.map +1 -1
  9. package/lib/cjs/shared/ECSqlCore.d.ts +7 -2
  10. package/lib/cjs/shared/ECSqlCore.d.ts.map +1 -1
  11. package/lib/cjs/shared/Event.d.ts +20 -2
  12. package/lib/cjs/shared/Event.d.ts.map +1 -1
  13. package/lib/cjs/shared/Formatting.d.ts +1 -1
  14. package/lib/cjs/shared/Formatting.d.ts.map +1 -1
  15. package/lib/cjs/shared/Formatting.js +10 -6
  16. package/lib/cjs/shared/Formatting.js.map +1 -1
  17. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
  18. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
  19. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js +0 -136
  20. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
  21. package/lib/cjs/shared/Logging.js +2 -1
  22. package/lib/cjs/shared/Logging.js.map +1 -1
  23. package/lib/cjs/shared/MappedTypes.d.ts +3 -13
  24. package/lib/cjs/shared/MappedTypes.d.ts.map +1 -1
  25. package/lib/cjs/shared/Metadata.d.ts +225 -11
  26. package/lib/cjs/shared/Metadata.d.ts.map +1 -1
  27. package/lib/cjs/shared/Metadata.js +4 -1
  28. package/lib/cjs/shared/Metadata.js.map +1 -1
  29. package/lib/cjs/shared/Utils.d.ts +12 -1
  30. package/lib/cjs/shared/Utils.d.ts.map +1 -1
  31. package/lib/cjs/shared/Utils.js +37 -11
  32. package/lib/cjs/shared/Utils.js.map +1 -1
  33. package/lib/cjs/shared/Values.d.ts +27 -13
  34. package/lib/cjs/shared/Values.d.ts.map +1 -1
  35. package/lib/cjs/shared/Values.js +13 -51
  36. package/lib/cjs/shared/Values.js.map +1 -1
  37. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
  38. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
  39. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
  40. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
  41. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
  42. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
  43. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +21 -6
  44. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
  45. package/lib/cjs/shared/ecsql-snippets/index.d.ts +1 -1
  46. package/lib/cjs/shared/ecsql-snippets/index.d.ts.map +1 -1
  47. package/lib/cjs/shared/ecsql-snippets/index.js +2 -1
  48. package/lib/cjs/shared/ecsql-snippets/index.js.map +1 -1
  49. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
  50. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  51. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +54 -0
  52. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
  53. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
  54. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  55. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +63 -0
  56. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
  57. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
  58. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  59. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +40 -0
  60. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
  61. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
  62. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
  63. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +10 -0
  64. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
  65. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
  66. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  67. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +336 -0
  68. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
  69. package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts +7 -0
  70. package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
  71. package/lib/cjs/shared/instance-label-factory-impls/Utils.js +26 -0
  72. package/lib/cjs/shared/instance-label-factory-impls/Utils.js.map +1 -0
  73. package/lib/esm/presentation-shared.d.ts +18 -10
  74. package/lib/esm/presentation-shared.d.ts.map +1 -1
  75. package/lib/esm/presentation-shared.js +7 -4
  76. package/lib/esm/presentation-shared.js.map +1 -1
  77. package/lib/esm/shared/ConcatenatedValue.d.ts +1 -1
  78. package/lib/esm/shared/ConcatenatedValue.d.ts.map +1 -1
  79. package/lib/esm/shared/ECSqlCore.d.ts +7 -2
  80. package/lib/esm/shared/ECSqlCore.d.ts.map +1 -1
  81. package/lib/esm/shared/Event.d.ts +20 -2
  82. package/lib/esm/shared/Event.d.ts.map +1 -1
  83. package/lib/esm/shared/Formatting.d.ts +1 -1
  84. package/lib/esm/shared/Formatting.d.ts.map +1 -1
  85. package/lib/esm/shared/Formatting.js +10 -6
  86. package/lib/esm/shared/Formatting.js.map +1 -1
  87. package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
  88. package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
  89. package/lib/esm/shared/InstanceLabelSelectClauseFactory.js +0 -133
  90. package/lib/esm/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
  91. package/lib/esm/shared/Logging.js +2 -1
  92. package/lib/esm/shared/Logging.js.map +1 -1
  93. package/lib/esm/shared/MappedTypes.d.ts +3 -13
  94. package/lib/esm/shared/MappedTypes.d.ts.map +1 -1
  95. package/lib/esm/shared/Metadata.d.ts +225 -11
  96. package/lib/esm/shared/Metadata.d.ts.map +1 -1
  97. package/lib/esm/shared/Metadata.js +4 -1
  98. package/lib/esm/shared/Metadata.js.map +1 -1
  99. package/lib/esm/shared/Utils.d.ts +12 -1
  100. package/lib/esm/shared/Utils.d.ts.map +1 -1
  101. package/lib/esm/shared/Utils.js +36 -11
  102. package/lib/esm/shared/Utils.js.map +1 -1
  103. package/lib/esm/shared/Values.d.ts +27 -13
  104. package/lib/esm/shared/Values.d.ts.map +1 -1
  105. package/lib/esm/shared/Values.js +13 -51
  106. package/lib/esm/shared/Values.js.map +1 -1
  107. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
  108. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
  109. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
  110. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
  111. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
  112. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
  113. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +20 -6
  114. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
  115. package/lib/esm/shared/ecsql-snippets/index.d.ts +1 -1
  116. package/lib/esm/shared/ecsql-snippets/index.d.ts.map +1 -1
  117. package/lib/esm/shared/ecsql-snippets/index.js +1 -1
  118. package/lib/esm/shared/ecsql-snippets/index.js.map +1 -1
  119. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
  120. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  121. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +51 -0
  122. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
  123. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
  124. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  125. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +60 -0
  126. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
  127. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
  128. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  129. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +37 -0
  130. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
  131. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
  132. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
  133. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +9 -0
  134. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
  135. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
  136. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  137. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +333 -0
  138. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
  139. package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts +7 -0
  140. package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
  141. package/lib/esm/shared/instance-label-factory-impls/Utils.js +21 -0
  142. package/lib/esm/shared/instance-label-factory-impls/Utils.js.map +1 -0
  143. package/package.json +16 -24
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ // cspell:words rilt
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createIModelInstanceLabelSelectClauseFactory = createIModelInstanceLabelSelectClauseFactory;
9
+ const core_bentley_1 = require("@itwin/core-bentley");
10
+ const ECSqlJoinSnippets_js_1 = require("../ecsql-snippets/ECSqlJoinSnippets.js");
11
+ const ECSqlValueSelectorSnippets_js_1 = require("../ecsql-snippets/ECSqlValueSelectorSnippets.js");
12
+ const Metadata_js_1 = require("../Metadata.js");
13
+ const Utils_js_1 = require("../Utils.js");
14
+ const BisInstanceLabelSelectClauseFactory_js_1 = require("./BisInstanceLabelSelectClauseFactory.js");
15
+ const ClassBasedInstanceLabelSelectClauseFactory_js_1 = require("./ClassBasedInstanceLabelSelectClauseFactory.js");
16
+ const Utils_js_2 = require("./Utils.js");
17
+ /**
18
+ * Creates an instance label select clause factory that reads `InstanceLabelOverride` rules from
19
+ * `PresentationRules` rulesets stored in the iModel and compiles them into ECSQL label selectors.
20
+ *
21
+ * Rules are loaded lazily on first use and cached per factory instance. Rulesets are discovered
22
+ * by querying `PresentationRules.Ruleset`. When the `PresentationRules` schema is not imported
23
+ * into the iModel the factory transparently falls back to `defaultClauseFactory` (defaults
24
+ * to `createBisInstanceLabelSelectClauseFactory`).
25
+ *
26
+ * @public
27
+ */
28
+ function createIModelInstanceLabelSelectClauseFactory(props) {
29
+ let factoryCache;
30
+ async function getCachedFactory() {
31
+ if (!factoryCache) {
32
+ factoryCache = createIModelInstanceLabelSelectClauseFactoryImpl(props);
33
+ }
34
+ return factoryCache;
35
+ }
36
+ return {
37
+ async createSelectClause(clauseProps) {
38
+ const factory = await getCachedFactory();
39
+ return factory.createSelectClause(clauseProps);
40
+ },
41
+ };
42
+ }
43
+ async function createIModelInstanceLabelSelectClauseFactoryImpl(props) {
44
+ const defaultClauseFactory = props.defaultClauseFactory ??
45
+ (0, BisInstanceLabelSelectClauseFactory_js_1.createBisInstanceLabelSelectClauseFactory)({ classHierarchyInspector: props.imodelAccess });
46
+ const rules = await loadOverrideRules(props.imodelAccess);
47
+ if (rules.length === 0) {
48
+ return defaultClauseFactory;
49
+ }
50
+ rules.sort((lhs, rhs) => (rhs.priority ?? 1000) - (lhs.priority ?? 1000));
51
+ const clauses = rules.map((rule) => ({
52
+ className: `${rule.class.schemaName}.${rule.class.className}`,
53
+ clause: async (clauseProps) => compileOverrideClause({
54
+ rule,
55
+ clauseProps,
56
+ // `innerFactory` is declared below but is already assigned by the time this callback is invoked (never called synchronously)
57
+ labelFactory: innerFactory,
58
+ schemaProvider: props.imodelAccess,
59
+ }),
60
+ }));
61
+ const innerFactory = (0, ClassBasedInstanceLabelSelectClauseFactory_js_1.createClassBasedInstanceLabelSelectClauseFactory)({
62
+ classHierarchyInspector: props.imodelAccess,
63
+ clauses,
64
+ defaultClauseFactory,
65
+ });
66
+ return innerFactory;
67
+ }
68
+ // eslint-disable-next-line @typescript-eslint/naming-convention
69
+ const CLASS_NAME_PresentationRules = "PresentationRules.Ruleset";
70
+ async function loadOverrideRules(executor) {
71
+ const rules = [];
72
+ try {
73
+ const reader = executor.createQueryReader({
74
+ ecsql: `SELECT json_extract(JsonProperties, '$.jsonProperties') AS jsonProperties FROM ${CLASS_NAME_PresentationRules}`,
75
+ });
76
+ for await (const row of reader) {
77
+ const payload = row.jsonProperties;
78
+ if (payload === null || payload === undefined) {
79
+ continue;
80
+ }
81
+ let parsed;
82
+ try {
83
+ parsed = JSON.parse(payload);
84
+ }
85
+ catch {
86
+ continue;
87
+ }
88
+ if (!parsed || typeof parsed !== "object") {
89
+ continue;
90
+ }
91
+ const rulesetObj = parsed;
92
+ // Collect from top-level rules[]
93
+ const topRules = Array.isArray(rulesetObj.rules) ? rulesetObj.rules : [];
94
+ for (const rule of topRules) {
95
+ const normalized = normalizeInstanceLabelOverrideRule(rule);
96
+ if (normalized) {
97
+ rules.push(normalized);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ catch (e) {
103
+ if (isPresentationRulesSchemaAbsenceError(e)) {
104
+ return [];
105
+ }
106
+ throw e;
107
+ }
108
+ return rules;
109
+ }
110
+ function isPresentationRulesSchemaAbsenceError(e) {
111
+ if (!(e instanceof Error)) {
112
+ return false;
113
+ }
114
+ return e.message.includes(`'${CLASS_NAME_PresentationRules}' does not exist`);
115
+ }
116
+ function isInstanceLabelOverrideRule(rule) {
117
+ return rule.ruleType === "InstanceLabelOverride";
118
+ }
119
+ function normalizeInstanceLabelOverrideRule(rule) {
120
+ if (!isInstanceLabelOverrideRule(rule)) {
121
+ return undefined;
122
+ }
123
+ if (rule.values.length === 0) {
124
+ return undefined;
125
+ }
126
+ return rule;
127
+ }
128
+ async function compileOverrideClause(props) {
129
+ const { rule, clauseProps, labelFactory, schemaProvider } = props;
130
+ (0, core_bentley_1.assert)(rule.values.length > 0);
131
+ const ctx = {
132
+ classAlias: clauseProps.classAlias,
133
+ selectorsConcatenator: clauseProps.selectorsConcatenator ?? ECSqlValueSelectorSnippets_js_1.createConcatenatedValueJsonSelector,
134
+ labelFactory,
135
+ visitedClasses: clauseProps.visitedClasses ?? new Set(),
136
+ schemaProvider,
137
+ ruleClassName: `${rule.class.schemaName}.${rule.class.className}`,
138
+ depth: clauseProps.depth ?? 0,
139
+ };
140
+ const compiledSpecs = await Promise.all(rule.values.map(async (spec) => compileValueSpec(spec, ctx)));
141
+ if (compiledSpecs.length === 1) {
142
+ return compiledSpecs[0];
143
+ }
144
+ return `COALESCE(${compiledSpecs.join(", ")})`;
145
+ }
146
+ async function compileValueSpec(spec, ctx) {
147
+ switch (spec.specType) {
148
+ case "String": {
149
+ return ctx.selectorsConcatenator([{ value: spec.value, type: "String" }]);
150
+ }
151
+ case "Property": {
152
+ if (spec.propertySource) {
153
+ const steps = normalizeRelationshipPath(spec.propertySource);
154
+ if (steps.length === 0) {
155
+ return "NULL";
156
+ }
157
+ const finalTargetAlias = subqueryAlias(PROPERTY_SOURCE_TARGET_ALIAS, ctx.depth);
158
+ const subquery = await buildRelationshipPathSubquery({
159
+ schemaProvider: ctx.schemaProvider,
160
+ steps,
161
+ ruleClassName: ctx.ruleClassName,
162
+ classAlias: ctx.classAlias,
163
+ selectExpression: (0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(finalTargetAlias, spec.propertyName),
164
+ finalTargetAlias,
165
+ depth: ctx.depth,
166
+ });
167
+ return subquery;
168
+ }
169
+ return (0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(ctx.classAlias, spec.propertyName);
170
+ }
171
+ case "ClassName": {
172
+ return `ec_classname(${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(ctx.classAlias, "ECClassId")}, '${spec.full ? "s.c" : "c"}')`;
173
+ }
174
+ case "ClassLabel": {
175
+ return `(
176
+ SELECT COALESCE(
177
+ ${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)("c", "DisplayLabel")},
178
+ ${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)("c", "Name")}
179
+ )
180
+ FROM [meta].[ECClassDef] AS [c]
181
+ WHERE [c].[ECInstanceId] = ${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(ctx.classAlias, "ECClassId")}
182
+ )`;
183
+ }
184
+ case "BriefcaseId": {
185
+ return `CAST(base36(${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(ctx.classAlias, "ECInstanceId")} >> 40) AS TEXT)`;
186
+ }
187
+ case "LocalId": {
188
+ return `CAST(base36(${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(ctx.classAlias, "ECInstanceId")} & ((1 << 40) - 1)) AS TEXT)`;
189
+ }
190
+ case "Composite": {
191
+ return compileCompositeSpec(spec, ctx);
192
+ }
193
+ case "RelatedInstanceLabel": {
194
+ const steps = normalizeRelationshipPath(spec.pathToRelatedInstance);
195
+ if (steps.length === 0) {
196
+ return "NULL";
197
+ }
198
+ const lastStep = steps[steps.length - 1];
199
+ let targetClassName;
200
+ if (lastStep.targetClass) {
201
+ targetClassName = `${lastStep.targetClass.schemaName}.${lastStep.targetClass.className}`;
202
+ }
203
+ else {
204
+ const relName = `${lastStep.relationship.schemaName}.${lastStep.relationship.className}`;
205
+ const relClass = await (0, Metadata_js_1.getClass)(ctx.schemaProvider, relName);
206
+ if (!relClass.isRelationshipClass()) {
207
+ throw new Error(`Class ${relName} is not a relationship class`);
208
+ }
209
+ const endpoint = lastStep.direction === "Backward" ? relClass.source : relClass.target;
210
+ const constraintClass = await endpoint.abstractConstraint;
211
+ if (!constraintClass) {
212
+ return "''";
213
+ }
214
+ targetClassName = constraintClass.fullName;
215
+ }
216
+ if (ctx.visitedClasses.has(targetClassName)) {
217
+ return "NULL";
218
+ }
219
+ const finalTargetAlias = subqueryAlias(RELATED_INSTANCE_LABEL_TARGET_ALIAS, ctx.depth);
220
+ const selectClauseProps = {
221
+ classAlias: finalTargetAlias,
222
+ className: targetClassName,
223
+ selectorsConcatenator: ctx.selectorsConcatenator,
224
+ visitedClasses: new Set(ctx.visitedClasses).add(targetClassName),
225
+ depth: ctx.depth + 1,
226
+ };
227
+ const subquery = await buildRelationshipPathSubquery({
228
+ schemaProvider: ctx.schemaProvider,
229
+ steps,
230
+ ruleClassName: ctx.ruleClassName,
231
+ classAlias: ctx.classAlias,
232
+ selectExpression: await ctx.labelFactory.createSelectClause(selectClauseProps),
233
+ finalTargetAlias,
234
+ depth: ctx.depth,
235
+ });
236
+ return subquery;
237
+ }
238
+ }
239
+ }
240
+ async function compileCompositeSpec(spec, ctx) {
241
+ if (spec.parts.length === 0) {
242
+ return "''";
243
+ }
244
+ const separator = spec.separator ?? " ";
245
+ const compiledParts = await Promise.all(spec.parts.map(async (part) => ({
246
+ selector: await compileValueSpec(part.spec, ctx),
247
+ isRequired: !!part.isRequired,
248
+ })));
249
+ const selectors = [];
250
+ compiledParts.forEach(({ selector }, index) => {
251
+ if (index > 0 && separator) {
252
+ selectors.push({ value: separator, type: "String" });
253
+ }
254
+ selectors.push({ selector });
255
+ });
256
+ const checkSelectors = compiledParts.filter((p) => p.isRequired).map((p) => `IFNULL(${p.selector}, '') <> ''`);
257
+ const checkSelector = checkSelectors.length > 0 ? checkSelectors.join(" AND ") : undefined;
258
+ return ctx.selectorsConcatenator(selectors, checkSelector);
259
+ }
260
+ function normalizeRelationshipPath(path) {
261
+ return Array.isArray(path) ? path : [path];
262
+ }
263
+ const SUBQUERY_SOURCE_ALIAS = "src";
264
+ const PROPERTY_SOURCE_TARGET_ALIAS = "pst";
265
+ const RELATED_INSTANCE_LABEL_TARGET_ALIAS = "rilt";
266
+ const RELATIONSHIP_ALIAS = "r";
267
+ const INTERMEDIATE_TARGET_ALIAS = "m";
268
+ function subqueryAlias(prefix, depth, stepIndex) {
269
+ const alias = `${Utils_js_2.ALIAS_PREFIX}${prefix}${depth}`;
270
+ return stepIndex !== undefined ? `${alias}_${stepIndex}` : alias;
271
+ }
272
+ async function toJoinRelationshipPath(props) {
273
+ (0, core_bentley_1.assert)(props.steps.length > 0);
274
+ const result = [];
275
+ let currentSourceClassName = props.sourceClassName;
276
+ let currentSourceAlias = props.sourceAlias;
277
+ for (let i = 0; i < props.steps.length; i++) {
278
+ const step = props.steps[i];
279
+ const relationshipName = `${step.relationship.schemaName}.${step.relationship.className}`;
280
+ const relationshipReverse = step.direction === "Backward";
281
+ let targetClassName;
282
+ if (step.targetClass) {
283
+ targetClassName = `${step.targetClass.schemaName}.${step.targetClass.className}`;
284
+ }
285
+ else {
286
+ const relClass = await (0, Metadata_js_1.getClass)(props.schemaProvider, relationshipName);
287
+ if (!relClass.isRelationshipClass()) {
288
+ throw new Error(`Class ${relationshipName} is not a relationship class`);
289
+ }
290
+ const endpoint = relationshipReverse ? relClass.source : relClass.target;
291
+ const constraintClass = await endpoint.abstractConstraint;
292
+ if (!constraintClass) {
293
+ throw new Error(`Relationship's ${relationshipName} endpoint does not have an abstract constraint`);
294
+ }
295
+ targetClassName = constraintClass.fullName;
296
+ }
297
+ const isLastStep = i === props.steps.length - 1;
298
+ const targetAlias = isLastStep ? props.finalTargetAlias : subqueryAlias(INTERMEDIATE_TARGET_ALIAS, props.depth, i);
299
+ const relationshipAlias = subqueryAlias(RELATIONSHIP_ALIAS, props.depth, i);
300
+ result.push({
301
+ sourceClassName: currentSourceClassName,
302
+ targetClassName,
303
+ relationshipName,
304
+ relationshipReverse,
305
+ sourceAlias: currentSourceAlias,
306
+ targetAlias,
307
+ relationshipAlias,
308
+ });
309
+ currentSourceClassName = targetClassName;
310
+ currentSourceAlias = targetAlias;
311
+ }
312
+ return result;
313
+ }
314
+ async function buildRelationshipPathSubquery(props) {
315
+ (0, core_bentley_1.assert)(props.steps.length > 0);
316
+ const sourceAlias = subqueryAlias(SUBQUERY_SOURCE_ALIAS, props.depth);
317
+ const joinPath = await toJoinRelationshipPath({
318
+ schemaProvider: props.schemaProvider,
319
+ steps: props.steps,
320
+ sourceClassName: props.ruleClassName,
321
+ sourceAlias,
322
+ finalTargetAlias: props.finalTargetAlias,
323
+ depth: props.depth,
324
+ });
325
+ const joinResult = await (0, ECSqlJoinSnippets_js_1.createRelationshipPathJoinClause)({ schemaProvider: props.schemaProvider, path: joinPath });
326
+ (0, core_bentley_1.assert)(!joinResult.bindings, "Output of `toJoinRelationshipPath` should not contain an instance filter, thus no bindings");
327
+ const { schemaName, className } = (0, Utils_js_1.parseFullClassName)(props.ruleClassName);
328
+ return `(
329
+ SELECT ${props.selectExpression}
330
+ FROM [${schemaName}].[${className}] [${sourceAlias}]
331
+ ${joinResult.joins}
332
+ WHERE [${sourceAlias}].[ECInstanceId] = [${props.classAlias}].[ECInstanceId]
333
+ LIMIT 1
334
+ )`;
335
+ }
336
+ //# sourceMappingURL=IModelInstanceLabelSelectClauseFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelInstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TypedValueSelectClauseProps } from "../ecsql-snippets/ECSqlValueSelectorSnippets.js";
2
+ export declare const ALIAS_PREFIX = "pres_";
3
+ export declare function createECInstanceIdSuffixSelectors(classAlias: string): TypedValueSelectClauseProps[];
4
+ export declare function concatenate(props: {
5
+ selectorsConcatenator?: (selectors: TypedValueSelectClauseProps[], checkSelector?: string) => string;
6
+ }, selectors: TypedValueSelectClauseProps[], checkSelector?: string): string;
7
+ //# sourceMappingURL=Utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/Utils.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAEnG,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,MAAM,GAAG,2BAA2B,EAAE,CAUnG;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE;IAAE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,EAC/G,SAAS,EAAE,2BAA2B,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAER"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ALIAS_PREFIX = void 0;
8
+ exports.createECInstanceIdSuffixSelectors = createECInstanceIdSuffixSelectors;
9
+ exports.concatenate = concatenate;
10
+ const ECSqlValueSelectorSnippets_js_1 = require("../ecsql-snippets/ECSqlValueSelectorSnippets.js");
11
+ exports.ALIAS_PREFIX = "pres_";
12
+ function createECInstanceIdSuffixSelectors(classAlias) {
13
+ return [
14
+ { value: ` [`, type: "String" },
15
+ { selector: `CAST(base36(${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(classAlias, "ECInstanceId")} >> 40) AS TEXT)` },
16
+ { value: `-`, type: "String" },
17
+ {
18
+ selector: `CAST(base36(${(0, ECSqlValueSelectorSnippets_js_1.createRawPropertyValueSelector)(classAlias, "ECInstanceId")} & ((1 << 40) - 1)) AS TEXT)`,
19
+ },
20
+ { value: `]`, type: "String" },
21
+ ];
22
+ }
23
+ function concatenate(props, selectors, checkSelector) {
24
+ return (props.selectorsConcatenator ?? ECSqlValueSelectorSnippets_js_1.createConcatenatedValueJsonSelector)(selectors, checkSelector);
25
+ }
26
+ //# sourceMappingURL=Utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/Utils.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAWhG,8EAUC;AAED,kCAMC;AA3BD,mGAGyD;AAI5C,QAAA,YAAY,GAAG,OAAO,CAAC;AAEpC,SAAgB,iCAAiC,CAAC,UAAkB;IAClE,OAAO;QACL,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,EAAE,QAAQ,EAAE,eAAe,IAAA,8DAA8B,EAAC,UAAU,EAAE,cAAc,CAAC,kBAAkB,EAAE;QACzG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B;YACE,QAAQ,EAAE,eAAe,IAAA,8DAA8B,EAAC,UAAU,EAAE,cAAc,CAAC,8BAA8B;SAClH;QACD,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CACzB,KAA+G,EAC/G,SAAwC,EACxC,aAAsB;IAEtB,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,mEAAmC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACxG,CAAC"}
@@ -1,13 +1,21 @@
1
- import * as ECSql from "./shared/ecsql-snippets/index.js";
2
- export { ECSql };
1
+ export * as ECSql from "./shared/ecsql-snippets/index.js";
3
2
  export { ConcatenatedValue, ConcatenatedValuePart } from "./shared/ConcatenatedValue.js";
4
- export { ECSqlBinding, ECSqlQueryDef, ECSqlQueryExecutor, ECSqlQueryReaderOptions, ECSqlQueryRow } from "./shared/ECSqlCore.js";
5
- export { createDefaultValueFormatter, formatConcatenatedValue, IPrimitiveValueFormatter } from "./shared/Formatting.js";
6
- export { IInstanceLabelSelectClauseFactory, createDefaultInstanceLabelSelectClauseFactory, createClassBasedInstanceLabelSelectClauseFactory, createBisInstanceLabelSelectClauseFactory, parseInstanceLabel, } from "./shared/InstanceLabelSelectClauseFactory.js";
7
- export { ILogger, NOOP_LOGGER, LogFunction, LogLevel } from "./shared/Logging.js";
8
- export { ArrayElement, EventArgs, EventListener, OmitOverUnion, Props } from "./shared/MappedTypes.js";
9
- export { createCachingECClassHierarchyInspector, EC, getClass, ECClassHierarchyInspector, ECSchemaProvider } from "./shared/Metadata.js";
10
- export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
3
+ export type { ECSqlBinding, ECSqlQueryDef, ECSqlQueryExecutor, ECSqlQueryReaderOptions, ECSqlQueryRow, } from "./shared/ECSqlCore.js";
4
+ export type { IPrimitiveValueFormatter } from "./shared/Formatting.js";
5
+ export { createDefaultValueFormatter, formatConcatenatedValue } from "./shared/Formatting.js";
6
+ export type { IInstanceLabelSelectClauseFactory } from "./shared/InstanceLabelSelectClauseFactory.js";
7
+ export { parseInstanceLabel } from "./shared/InstanceLabelSelectClauseFactory.js";
8
+ export { createDefaultInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js";
9
+ export { createClassBasedInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js";
10
+ export { createBisInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js";
11
+ export { createIModelInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js";
12
+ export type { ILogger, LogFunction, LogLevel } from "./shared/Logging.js";
13
+ export { NOOP_LOGGER } from "./shared/Logging.js";
14
+ export type { ArrayElement, OmitOverUnion, Props } from "./shared/MappedTypes.js";
15
+ export type { ArrayValueDescriptor, EC, ECClassHierarchyInspector, ECSchemaProvider, NavigationValueDescriptor, PrimitiveValueDescriptor, RelationshipPath, StructValueDescriptor, ValueDescriptor, } from "./shared/Metadata.js";
16
+ export { createCachingECClassHierarchyInspector, getClass } from "./shared/Metadata.js";
17
+ export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, compareFullClassNames, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
11
18
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
12
- export { Event } from "./shared/Event.js";
19
+ export type { ArrayValue, StructValue, Value } from "./shared/Values.js";
20
+ export type { Event, RaisableEvent, EventArgs, EventListener } from "./shared/Event.js";
13
21
  //# sourceMappingURL=presentation-shared.d.ts.map
@@ -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,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EACL,iCAAiC,EACjC,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzI,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,OAAO,EAAE,KAAK,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,YAAY,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,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,EACF,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,qBAAqB,EACrB,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,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -2,13 +2,16 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import * as ECSql from "./shared/ecsql-snippets/index.js";
6
- export { ECSql };
5
+ export * as ECSql from "./shared/ecsql-snippets/index.js";
7
6
  export { ConcatenatedValue, ConcatenatedValuePart } from "./shared/ConcatenatedValue.js";
8
7
  export { createDefaultValueFormatter, formatConcatenatedValue } from "./shared/Formatting.js";
9
- export { createDefaultInstanceLabelSelectClauseFactory, createClassBasedInstanceLabelSelectClauseFactory, createBisInstanceLabelSelectClauseFactory, parseInstanceLabel, } from "./shared/InstanceLabelSelectClauseFactory.js";
8
+ export { parseInstanceLabel } from "./shared/InstanceLabelSelectClauseFactory.js";
9
+ export { createDefaultInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js";
10
+ export { createClassBasedInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js";
11
+ export { createBisInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js";
12
+ export { createIModelInstanceLabelSelectClauseFactory } from "./shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js";
10
13
  export { NOOP_LOGGER } from "./shared/Logging.js";
11
14
  export { createCachingECClassHierarchyInspector, getClass } from "./shared/Metadata.js";
12
- export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
15
+ export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, compareFullClassNames, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
13
16
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
14
17
  //# 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,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAA4B,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAEL,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAW,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,sCAAsC,EAAM,QAAQ,EAA+C,MAAM,sBAAsB,CAAC;AACzI,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;AASzF,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;AAalD,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { TypedPrimitiveValue } from "./Values.js";
1
+ import type { TypedPrimitiveValue } from "./Values.js";
2
2
  /**
3
3
  * A part of a `ConcatenatedValue`, describing one piece of the value. Possible types:
4
4
  * - `ConcatenatedValue` describes a nested concatenated value.
@@ -1 +1 @@
1
- {"version":3,"file":"ConcatenatedValue.d.ts","sourceRoot":"","sources":["../../../src/shared/ConcatenatedValue.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAErF,cAAc;AAEd,yBAAiB,qBAAqB,CAAC;IACrC,cAAc;IACd,SAAgB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,MAAM,CAEpE;IAED,cAAc;IACd,SAAgB,WAAW,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,mBAAmB,CAEpF;IAED,cAAc;IACd,SAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,iBAAiB,CAE1F;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,EAAE,CAAC;AAExD,cAAc;AAEd,yBAAiB,iBAAiB,CAAC;IACjC;;;;;OAKG;IACH,SAAsB,SAAS,CAAC,KAAK,EAAE;QACrC,yBAAyB;QACzB,KAAK,EAAE,iBAAiB,CAAC;QACzB,qDAAqD;QACrD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5F,6EAA6E;QAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;CACF"}
1
+ {"version":3,"file":"ConcatenatedValue.d.ts","sourceRoot":"","sources":["../../../src/shared/ConcatenatedValue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAErF,cAAc;AAEd,yBAAiB,qBAAqB,CAAC;IACrC,cAAc;IACd,SAAgB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,MAAM,CAEpE;IAED,cAAc;IACd,SAAgB,WAAW,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,mBAAmB,CAEpF;IAED,cAAc;IACd,SAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,IAAI,iBAAiB,CAE1F;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,EAAE,CAAC;AAExD,cAAc;AAEd,yBAAiB,iBAAiB,CAAC;IACjC;;;;;OAKG;IACH,SAAsB,SAAS,CAAC,KAAK,EAAE;QACrC,yBAAyB;QACzB,KAAK,EAAE,iBAAiB,CAAC;QACzB,qDAAqD;QACrD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5F,6EAA6E;QAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;CACF"}
@@ -1,4 +1,4 @@
1
- import { Id64String } from "@itwin/core-bentley";
1
+ import type { Id64String } from "@itwin/core-bentley";
2
2
  /**
3
3
  * Defines an ECSql binding consisting of a value and its type. Necessary to differentiate between numeric
4
4
  * types and `Id64String` vs `string`.
@@ -48,9 +48,14 @@ export interface ECSqlQueryDef {
48
48
  ecsql: string;
49
49
  /**
50
50
  * Values to bind to the query.
51
+ *
52
+ * Provide bindings either as an array or as a record:
53
+ * - `ECSqlBinding[]` binds values by parameter position.
54
+ * - `Record<string, ECSqlBinding>` binds values by parameter name, where each key is the ECSQL parameter name.
55
+ *
51
56
  * @see https://www.itwinjs.org/learning/ecsql/#ecsql-parameters
52
57
  */
53
- bindings?: ECSqlBinding[];
58
+ bindings?: ECSqlBinding[] | Record<string, ECSqlBinding>;
54
59
  }
55
60
  /**
56
61
  * Defines requested ECSQL result row format.
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlCore.d.ts","sourceRoot":"","sources":["../../../src/shared/ECSqlCore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACD;IACE,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEN;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;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;AAEtD;;;;;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;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,9 +1,27 @@
1
+ import type { Props } from "./MappedTypes.js";
1
2
  /**
2
3
  * An interface that allows subscribing and unsubscribing listeners that are called upon an event.
3
4
  * @public
4
5
  */
5
6
  export interface Event<TListener extends (...args: any[]) => void = () => void> {
6
- addListener(listener: TListener): () => void;
7
- removeListener(listener: TListener): void;
7
+ addListener: (listener: TListener) => () => void;
8
+ removeListener: (listener: TListener) => void;
8
9
  }
10
+ /**
11
+ * An `Event` that can be raised.
12
+ * @public
13
+ */
14
+ export interface RaisableEvent<TListener extends (...args: any[]) => void = () => void> extends Event<TListener> {
15
+ raiseEvent: (...args: Parameters<TListener>) => void;
16
+ }
17
+ /**
18
+ * Returns type of the given `Event` listener.
19
+ * @public
20
+ */
21
+ export type EventListener<TEvent extends {}> = TEvent extends Event<infer TListener> ? TListener : never;
22
+ /**
23
+ * Returns type of the given `Event` arguments.
24
+ * @public
25
+ */
26
+ export type EventArgs<TEvent extends {}> = Props<EventListener<TEvent>>;
9
27
  //# sourceMappingURL=Event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../../src/shared/Event.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,KAAK,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAC5E,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,IAAI,CAAC;IAC7C,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3C"}
1
+ {"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../../src/shared/Event.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,KAAK,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAC5E,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAE,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC9G,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,EAAE,IAAI,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;AAEzG;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { ConcatenatedValue } from "./ConcatenatedValue.js";
2
- import { TypedPrimitiveValue } from "./Values.js";
2
+ import type { TypedPrimitiveValue } from "./Values.js";
3
3
  /**
4
4
  * A type definition for a function that knows how to create a display string for a typed primitive value.
5
5
  * @see `createDefaultValueFormatter`
@@ -1 +1 @@
1
- {"version":3,"file":"Formatting.d.ts","sourceRoot":"","sources":["../../../src/shared/Formatting.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAyB,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAAC,cAAc,EAAE,wBAAwB,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBrJ;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAatE"}
1
+ {"version":3,"file":"Formatting.d.ts","sourceRoot":"","sources":["../../../src/shared/Formatting.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAyB,MAAM,wBAAwB,CAAC;AAGlF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClC,cAAc,EAAE,wBAAwB,CAAC;CAC1C,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAkBtE"}
@@ -21,10 +21,7 @@ export async function formatConcatenatedValue(props) {
21
21
  partFormatter: async (part) => {
22
22
  // strings are converted to typed strings
23
23
  if (ConcatenatedValuePart.isString(part)) {
24
- part = {
25
- value: part,
26
- type: "String",
27
- };
24
+ part = { value: part, type: "String" };
28
25
  }
29
26
  // finally, use provided value formatter to create a string from `TypedPrimitiveValue`
30
27
  return valueFormatter(part);
@@ -64,7 +61,10 @@ export function createDefaultValueFormatter() {
64
61
  return result;
65
62
  }
66
63
  }
67
- assert(typeof value.value === "undefined" || typeof value.value === "boolean" || typeof value.value === "number" || typeof value.value === "string");
64
+ assert(typeof value.value === "undefined" ||
65
+ typeof value.value === "boolean" ||
66
+ typeof value.value === "number" ||
67
+ typeof value.value === "string");
68
68
  return value.value.toString();
69
69
  };
70
70
  }
@@ -85,7 +85,11 @@ function applyNumericFormatting(value) {
85
85
  }
86
86
  function applyDatesFormatting(value) {
87
87
  function getDate(julianOrDate) {
88
- return typeof julianOrDate === "number" ? julianToDateTime(julianOrDate) : typeof julianOrDate === "string" ? new Date(julianOrDate) : julianOrDate;
88
+ return typeof julianOrDate === "number"
89
+ ? julianToDateTime(julianOrDate)
90
+ : typeof julianOrDate === "string"
91
+ ? new Date(julianOrDate)
92
+ : julianOrDate;
89
93
  }
90
94
  if (value.type !== "DateTime") {
91
95
  return undefined;