@itwin/presentation-shared 2.0.0-alpha.10 → 2.0.0-alpha.12

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 (209) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/lib/{esm/presentation-shared.d.ts → presentation-shared.d.ts} +6 -5
  3. package/lib/presentation-shared.d.ts.map +1 -0
  4. package/lib/{esm/presentation-shared.js → presentation-shared.js} +3 -3
  5. package/lib/presentation-shared.js.map +1 -0
  6. package/lib/shared/ConcatenatedValue.d.ts.map +1 -0
  7. package/lib/shared/ConcatenatedValue.js.map +1 -0
  8. package/lib/{cjs/shared → shared}/ECSqlCore.d.ts +15 -1
  9. package/lib/shared/ECSqlCore.d.ts.map +1 -0
  10. package/lib/shared/ECSqlCore.js +37 -0
  11. package/lib/shared/ECSqlCore.js.map +1 -0
  12. package/lib/shared/Event.d.ts.map +1 -0
  13. package/lib/{esm/shared → shared}/Event.js.map +1 -1
  14. package/lib/shared/Formatting.d.ts.map +1 -0
  15. package/lib/shared/Formatting.js.map +1 -0
  16. package/lib/{cjs/shared → shared}/InstanceLabelSelectClauseFactory.d.ts +1 -1
  17. package/lib/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -0
  18. package/lib/shared/InstanceLabelSelectClauseFactory.js.map +1 -0
  19. package/lib/shared/Logging.d.ts.map +1 -0
  20. package/lib/shared/Logging.js.map +1 -0
  21. package/lib/shared/MappedTypes.d.ts +48 -0
  22. package/lib/shared/MappedTypes.d.ts.map +1 -0
  23. package/lib/shared/MappedTypes.js.map +1 -0
  24. package/lib/{cjs/shared → shared}/Metadata.d.ts +225 -11
  25. package/lib/shared/Metadata.d.ts.map +1 -0
  26. package/lib/shared/Metadata.js.map +1 -0
  27. package/lib/{cjs/shared → shared}/Utils.d.ts +0 -6
  28. package/lib/shared/Utils.d.ts.map +1 -0
  29. package/lib/{esm/shared → shared}/Utils.js +16 -19
  30. package/lib/shared/Utils.js.map +1 -0
  31. package/lib/{esm/shared → shared}/Values.d.ts +44 -20
  32. package/lib/shared/Values.d.ts.map +1 -0
  33. package/lib/shared/Values.js +121 -0
  34. package/lib/shared/Values.js.map +1 -0
  35. package/lib/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +167 -0
  36. package/lib/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -0
  37. package/lib/shared/ecsql-snippets/ECSqlJoinSnippets.js +177 -0
  38. package/lib/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -0
  39. package/lib/{cjs/shared → shared}/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +9 -1
  40. package/lib/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -0
  41. package/lib/{esm/shared → shared}/ecsql-snippets/ECSqlValueSelectorSnippets.js +12 -0
  42. package/lib/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -0
  43. package/lib/shared/ecsql-snippets/index.d.ts +3 -0
  44. package/lib/shared/ecsql-snippets/index.d.ts.map +1 -0
  45. package/lib/shared/ecsql-snippets/index.js +7 -0
  46. package/lib/shared/ecsql-snippets/index.js.map +1 -0
  47. package/lib/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  48. package/lib/{esm/shared → shared}/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +9 -6
  49. package/lib/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
  50. package/lib/{esm/shared → shared}/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +1 -1
  51. package/lib/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  52. package/lib/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
  53. package/lib/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  54. package/lib/{esm/shared → shared}/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +6 -5
  55. package/lib/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
  56. package/lib/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
  57. package/lib/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
  58. package/lib/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
  59. package/lib/{esm/shared → shared}/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +4 -3
  60. package/lib/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
  61. package/lib/{esm/shared → shared}/instance-label-factory-impls/Utils.d.ts +1 -0
  62. package/lib/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
  63. package/lib/{esm/shared → shared}/instance-label-factory-impls/Utils.js +1 -0
  64. package/lib/shared/instance-label-factory-impls/Utils.js.map +1 -0
  65. package/package.json +16 -18
  66. package/lib/cjs/package.json +0 -1
  67. package/lib/cjs/presentation-shared.d.ts +0 -21
  68. package/lib/cjs/presentation-shared.d.ts.map +0 -1
  69. package/lib/cjs/presentation-shared.js +0 -76
  70. package/lib/cjs/presentation-shared.js.map +0 -1
  71. package/lib/cjs/shared/ConcatenatedValue.d.ts.map +0 -1
  72. package/lib/cjs/shared/ConcatenatedValue.js +0 -49
  73. package/lib/cjs/shared/ConcatenatedValue.js.map +0 -1
  74. package/lib/cjs/shared/ECSqlCore.d.ts.map +0 -1
  75. package/lib/cjs/shared/ECSqlCore.js +0 -7
  76. package/lib/cjs/shared/ECSqlCore.js.map +0 -1
  77. package/lib/cjs/shared/Event.d.ts.map +0 -1
  78. package/lib/cjs/shared/Event.js +0 -7
  79. package/lib/cjs/shared/Event.js.map +0 -1
  80. package/lib/cjs/shared/Formatting.d.ts.map +0 -1
  81. package/lib/cjs/shared/Formatting.js +0 -118
  82. package/lib/cjs/shared/Formatting.js.map +0 -1
  83. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts.map +0 -1
  84. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js +0 -30
  85. package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js.map +0 -1
  86. package/lib/cjs/shared/Logging.d.ts.map +0 -1
  87. package/lib/cjs/shared/Logging.js +0 -21
  88. package/lib/cjs/shared/Logging.js.map +0 -1
  89. package/lib/cjs/shared/MappedTypes.d.ts +0 -17
  90. package/lib/cjs/shared/MappedTypes.d.ts.map +0 -1
  91. package/lib/cjs/shared/MappedTypes.js +0 -7
  92. package/lib/cjs/shared/MappedTypes.js.map +0 -1
  93. package/lib/cjs/shared/Metadata.d.ts.map +0 -1
  94. package/lib/cjs/shared/Metadata.js +0 -56
  95. package/lib/cjs/shared/Metadata.js.map +0 -1
  96. package/lib/cjs/shared/Utils.d.ts.map +0 -1
  97. package/lib/cjs/shared/Utils.js +0 -111
  98. package/lib/cjs/shared/Utils.js.map +0 -1
  99. package/lib/cjs/shared/Values.d.ts +0 -107
  100. package/lib/cjs/shared/Values.d.ts.map +0 -1
  101. package/lib/cjs/shared/Values.js +0 -122
  102. package/lib/cjs/shared/Values.js.map +0 -1
  103. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +0 -51
  104. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +0 -1
  105. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js +0 -138
  106. package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +0 -1
  107. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +0 -1
  108. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +0 -262
  109. package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +0 -1
  110. package/lib/cjs/shared/ecsql-snippets/index.d.ts +0 -3
  111. package/lib/cjs/shared/ecsql-snippets/index.d.ts.map +0 -1
  112. package/lib/cjs/shared/ecsql-snippets/index.js +0 -18
  113. package/lib/cjs/shared/ecsql-snippets/index.js.map +0 -1
  114. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  115. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +0 -51
  116. package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +0 -1
  117. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +0 -39
  118. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  119. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +0 -63
  120. package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +0 -1
  121. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  122. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +0 -39
  123. package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +0 -1
  124. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +0 -1
  125. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +0 -10
  126. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +0 -1
  127. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  128. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +0 -335
  129. package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +0 -1
  130. package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts +0 -6
  131. package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts.map +0 -1
  132. package/lib/cjs/shared/instance-label-factory-impls/Utils.js +0 -24
  133. package/lib/cjs/shared/instance-label-factory-impls/Utils.js.map +0 -1
  134. package/lib/esm/presentation-shared.d.ts.map +0 -1
  135. package/lib/esm/presentation-shared.js.map +0 -1
  136. package/lib/esm/shared/ConcatenatedValue.d.ts +0 -46
  137. package/lib/esm/shared/ConcatenatedValue.d.ts.map +0 -1
  138. package/lib/esm/shared/ConcatenatedValue.js.map +0 -1
  139. package/lib/esm/shared/ECSqlCore.d.ts +0 -94
  140. package/lib/esm/shared/ECSqlCore.d.ts.map +0 -1
  141. package/lib/esm/shared/ECSqlCore.js +0 -6
  142. package/lib/esm/shared/ECSqlCore.js.map +0 -1
  143. package/lib/esm/shared/Event.d.ts +0 -27
  144. package/lib/esm/shared/Event.d.ts.map +0 -1
  145. package/lib/esm/shared/Formatting.d.ts +0 -44
  146. package/lib/esm/shared/Formatting.d.ts.map +0 -1
  147. package/lib/esm/shared/Formatting.js.map +0 -1
  148. package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts +0 -73
  149. package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts.map +0 -1
  150. package/lib/esm/shared/InstanceLabelSelectClauseFactory.js.map +0 -1
  151. package/lib/esm/shared/Logging.d.ts +0 -27
  152. package/lib/esm/shared/Logging.d.ts.map +0 -1
  153. package/lib/esm/shared/Logging.js.map +0 -1
  154. package/lib/esm/shared/MappedTypes.d.ts +0 -17
  155. package/lib/esm/shared/MappedTypes.d.ts.map +0 -1
  156. package/lib/esm/shared/MappedTypes.js.map +0 -1
  157. package/lib/esm/shared/Metadata.d.ts +0 -294
  158. package/lib/esm/shared/Metadata.d.ts.map +0 -1
  159. package/lib/esm/shared/Metadata.js.map +0 -1
  160. package/lib/esm/shared/Utils.d.ts +0 -66
  161. package/lib/esm/shared/Utils.d.ts.map +0 -1
  162. package/lib/esm/shared/Utils.js.map +0 -1
  163. package/lib/esm/shared/Values.d.ts.map +0 -1
  164. package/lib/esm/shared/Values.js +0 -119
  165. package/lib/esm/shared/Values.js.map +0 -1
  166. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +0 -51
  167. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +0 -1
  168. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js +0 -135
  169. package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +0 -1
  170. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +0 -122
  171. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +0 -1
  172. package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +0 -1
  173. package/lib/esm/shared/ecsql-snippets/index.d.ts +0 -3
  174. package/lib/esm/shared/ecsql-snippets/index.d.ts.map +0 -1
  175. package/lib/esm/shared/ecsql-snippets/index.js +0 -7
  176. package/lib/esm/shared/ecsql-snippets/index.js.map +0 -1
  177. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +0 -17
  178. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  179. package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +0 -1
  180. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  181. package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +0 -1
  182. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +0 -12
  183. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  184. package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +0 -1
  185. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +0 -198
  186. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +0 -1
  187. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +0 -1
  188. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +0 -34
  189. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +0 -1
  190. package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +0 -1
  191. package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts.map +0 -1
  192. package/lib/esm/shared/instance-label-factory-impls/Utils.js.map +0 -1
  193. /package/lib/{cjs/shared → shared}/ConcatenatedValue.d.ts +0 -0
  194. /package/lib/{esm/shared → shared}/ConcatenatedValue.js +0 -0
  195. /package/lib/{cjs/shared → shared}/Event.d.ts +0 -0
  196. /package/lib/{esm/shared → shared}/Event.js +0 -0
  197. /package/lib/{cjs/shared → shared}/Formatting.d.ts +0 -0
  198. /package/lib/{esm/shared → shared}/Formatting.js +0 -0
  199. /package/lib/{esm/shared → shared}/InstanceLabelSelectClauseFactory.js +0 -0
  200. /package/lib/{cjs/shared → shared}/Logging.d.ts +0 -0
  201. /package/lib/{esm/shared → shared}/Logging.js +0 -0
  202. /package/lib/{esm/shared → shared}/MappedTypes.js +0 -0
  203. /package/lib/{esm/shared → shared}/Metadata.js +0 -0
  204. /package/lib/{cjs/shared → shared}/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +0 -0
  205. /package/lib/{esm/shared → shared}/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +0 -0
  206. /package/lib/{cjs/shared → shared}/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +0 -0
  207. /package/lib/{cjs/shared → shared}/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +0 -0
  208. /package/lib/{esm/shared → shared}/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +0 -0
  209. /package/lib/{cjs/shared → shared}/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +0 -0
@@ -0,0 +1,121 @@
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 { compareStrings, Id64 } from "@itwin/core-bentley";
6
+ /** @public */
7
+ export var InstanceKey;
8
+ (function (InstanceKey) {
9
+ /**
10
+ * Checks whether the two given instance keys are equal.
11
+ * @public
12
+ */
13
+ function equals(lhs, rhs) {
14
+ return compare(lhs, rhs) === 0;
15
+ }
16
+ InstanceKey.equals = equals;
17
+ /**
18
+ * Compares two given instance keys.
19
+ * @returns
20
+ *- `0` if they are equal
21
+ *- `negative value` if lhs key is less than rhs key
22
+ *- `positive value` if lhs key is more than rhs key
23
+ */
24
+ function compare(lhs, rhs) {
25
+ const classNameCompareResult = compareStrings(lhs.className.toLocaleLowerCase(), rhs.className.toLocaleLowerCase());
26
+ if (classNameCompareResult !== 0) {
27
+ return classNameCompareResult;
28
+ }
29
+ return compareStrings(lhs.id, rhs.id);
30
+ }
31
+ InstanceKey.compare = compare;
32
+ })(InstanceKey || (InstanceKey = {}));
33
+ /** @public */
34
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
35
+ export var PrimitiveValue;
36
+ (function (PrimitiveValue) {
37
+ /**
38
+ * Checks whether the given value is a `Point2dValue`.
39
+ * @note Since `Point3dValue` is a superset of `Point2dValue`, this function will return `true` for `Point3dValue` as well.
40
+ * @public
41
+ */
42
+ function isPoint2d(value) {
43
+ if (typeof value !== "object") {
44
+ return false;
45
+ }
46
+ return "x" in value && "y" in value;
47
+ }
48
+ PrimitiveValue.isPoint2d = isPoint2d;
49
+ /**
50
+ * Checks whether the given value is a `Point3dValue`.
51
+ * @public
52
+ */
53
+ function isPoint3d(value) {
54
+ if (typeof value !== "object") {
55
+ return false;
56
+ }
57
+ return "x" in value && "y" in value && "z" in value;
58
+ }
59
+ PrimitiveValue.isPoint3d = isPoint3d;
60
+ })(PrimitiveValue || (PrimitiveValue = {}));
61
+ /** @public */
62
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
63
+ export var TypedPrimitiveValue;
64
+ (function (TypedPrimitiveValue) {
65
+ /**
66
+ * A function for a creating a `TypedPrimitiveValue` object.
67
+ * @throws Error if primitive type and value are incompatible.
68
+ * @public
69
+ */
70
+ function create(value, type, koqName, extendedType) {
71
+ // The function's return type narrows `TypedPrimitiveValue` based on the generic `TType`. TypeScript can't verify that the
72
+ // objects created below satisfy that narrowed type, because narrowing the `type`/`value` variables via control flow doesn't
73
+ // narrow the `TType` type parameter itself (it stays generic within the function body). So we build the value with a concrete
74
+ // `TypedPrimitiveValue` return type - which TypeScript does check branch-by-branch - and apply the narrowing with a single
75
+ // cast at the boundary, rather than casting every `return` statement individually.
76
+ return (function () {
77
+ switch (type) {
78
+ case "Double":
79
+ case "Integer":
80
+ case "Long":
81
+ if (typeof value === "number") {
82
+ return { type, koqName, extendedType, value };
83
+ }
84
+ break;
85
+ case "Boolean":
86
+ if (typeof value === "boolean") {
87
+ return { type, extendedType, value };
88
+ }
89
+ break;
90
+ case "Id":
91
+ if (typeof value === "string" && Id64.isId64(value)) {
92
+ return { type, extendedType, value };
93
+ }
94
+ break;
95
+ case "String":
96
+ if (typeof value === "string") {
97
+ return { type, extendedType, value };
98
+ }
99
+ break;
100
+ case "DateTime":
101
+ if (typeof value === "string" || typeof value === "number" || value instanceof Date) {
102
+ return { type, extendedType, value };
103
+ }
104
+ break;
105
+ case "Point3d":
106
+ if (PrimitiveValue.isPoint3d(value)) {
107
+ return { type, extendedType, value };
108
+ }
109
+ break;
110
+ case "Point2d":
111
+ if (PrimitiveValue.isPoint2d(value)) {
112
+ return { type, extendedType, value };
113
+ }
114
+ break;
115
+ }
116
+ throw new Error(`PrimitiveValueType ${type} isn't compatible with value ${JSON.stringify(value)}`);
117
+ })();
118
+ }
119
+ TypedPrimitiveValue.create = create;
120
+ })(TypedPrimitiveValue || (TypedPrimitiveValue = {}));
121
+ //# sourceMappingURL=Values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Values.js","sourceRoot":"","sources":["../../src/shared/Values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import type { ECSqlBinding } from "../ECSqlCore.js";
2
+ import type { EC, ECSchemaProvider, RelationshipPath, RelationshipPathStep } from "../Metadata.js";
3
+ /**
4
+ * Describes a single JOIN step from source to target through a relationship.
5
+ * @public
6
+ */
7
+ interface JoinRelationshipPathStep extends RelationshipPathStep {
8
+ sourceAlias: string;
9
+ targetAlias: string;
10
+ relationshipAlias: string;
11
+ joinType?: "inner" | "outer";
12
+ }
13
+ /**
14
+ * Describes a path of JOINs from source to target.
15
+ * @public
16
+ */
17
+ type JoinRelationshipPath = RelationshipPath<JoinRelationshipPathStep>;
18
+ /**
19
+ * Props for `createRelationshipPathJoinClause` and `createRelationshipPathJoinInfo`.
20
+ * @public
21
+ */
22
+ export interface CreateRelationshipPathJoinClauseProps {
23
+ schemaProvider: ECSchemaProvider;
24
+ path: JoinRelationshipPath;
25
+ }
26
+ /**
27
+ * A join onto a plain class table.
28
+ * @public
29
+ */
30
+ interface JoinTargetClass {
31
+ kind: "class";
32
+ className: EC.FullClassNameDotNotation;
33
+ }
34
+ /**
35
+ * A join onto a pre-joined relationship subquery (the outer link-table case), i.e.
36
+ * `(SELECT [rel].* FROM [relationship] [rel] INNER JOIN [target] [t] ON <innerJoinCondition>)`.
37
+ * Rendering emits the subquery; the outer target is a separate `RelationshipJoinInfo` entry.
38
+ * @public
39
+ */
40
+ interface JoinTargetRelationshipSelect {
41
+ kind: "relationship-select";
42
+ relationshipClassName: EC.FullClassNameDotNotation;
43
+ relationshipAlias: string;
44
+ /** The class inner-joined inside the subquery, its alias, and the inner `ON` condition. */
45
+ innerTarget: JoinTargetClass;
46
+ innerTargetAlias: string;
47
+ innerJoinCondition: string;
48
+ }
49
+ /**
50
+ * One concrete JOIN clause rendered as either `INNER JOIN ... ON ...` or `OUTER JOIN ... ON ...`.
51
+ * @public
52
+ */
53
+ interface RelationshipJoinInfo {
54
+ joinType: "inner" | "outer";
55
+ /** What is joined: a class table, or (outer link-table case) a nested relationship SELECT. */
56
+ joinTarget: JoinTargetClass | JoinTargetRelationshipSelect;
57
+ /** Alias assigned to the joined table. */
58
+ joinAlias: string;
59
+ /** The `ON` condition expression (without the `ON` keyword). */
60
+ joinCondition: string;
61
+ }
62
+ /**
63
+ * Per-path-step resolution info that is not tied to a specific JOIN clause.
64
+ * @public
65
+ */
66
+ interface RelationshipPathStepJoinInfo {
67
+ /**
68
+ * The ordered JOIN clauses to emit — one entry per JOIN. A path step contributes 1 (navigation
69
+ * property) or 2 (link-table) entries. Note the join-table count is not `joins.length`: an
70
+ * outer link-table entry (`JoinTargetRelationshipSelect`) wraps a subquery that itself joins the
71
+ * relationship + target.
72
+ */
73
+ joins: RelationshipJoinInfo[];
74
+ /**
75
+ * An ECSQL selector that yields the step's concrete relationship `ECClassId` for the actual data
76
+ * row being traversed. The concept is the same for every step; only the expression differs by how
77
+ * the relationship is represented:
78
+ * - link-table step: `[relationship_alias].[ECClassId]` (the joined relationship table),
79
+ * - navigation-property step: `[owner_alias].[navigation_property_name].[RelECClassId]`, where the
80
+ * owner alias is the source or target of the step depending on the navigation property direction.
81
+ *
82
+ * Note: for `outer` joins the relationship row / navigation value may be `NULL` when nothing is
83
+ * related, in which case this selector yields `NULL`.
84
+ */
85
+ relationshipClassIdSelector: string;
86
+ /**
87
+ * An ECSQL selector that yields the step's concrete source `ECClassId` for the actual data row
88
+ * being traversed, i.e. `[source_alias].[ECClassId]` of the class the step is joined from.
89
+ */
90
+ sourceClassIdSelector: string;
91
+ /**
92
+ * An ECSQL selector that yields the step's concrete target `ECClassId` for the actual data row
93
+ * being traversed, i.e. `[target_alias].[ECClassId]` of the class the step is joined to.
94
+ *
95
+ * Note: for `outer` joins the target row may be `NULL` when nothing is related, in which case this
96
+ * selector yields `NULL`.
97
+ */
98
+ targetClassIdSelector: string;
99
+ }
100
+ /**
101
+ * A resolved, render-ready description of a relationship-path JOIN, as a flat, ordered list of
102
+ * concrete join clauses. Produced by `createRelationshipPathJoinInfo`; consumed by the
103
+ * `createRelationshipPathJoinClause` render overload.
104
+ * @public
105
+ */
106
+ interface RelationshipPathJoinInfo {
107
+ /** Per-path-step resolution info, one entry per input path step, in path order. */
108
+ steps: RelationshipPathStepJoinInfo[];
109
+ /** `instanceFilter` bindings collected across all steps, or `undefined` when none. */
110
+ bindings?: Record<string, ECSqlBinding>;
111
+ }
112
+ /**
113
+ * Resolves a relationship path into a `RelationshipPathJoinInfo` (schema-reading pass; produces no ECSQL).
114
+ * @public
115
+ */
116
+ export declare function createRelationshipPathJoinInfo(props: CreateRelationshipPathJoinClauseProps): Promise<RelationshipPathJoinInfo>;
117
+ /**
118
+ * Result of `createRelationshipPathJoinClause`.
119
+ * @public
120
+ */
121
+ interface RelationshipPathJoinClauseResult {
122
+ joins: string;
123
+ bindings?: Record<string, ECSqlBinding>;
124
+ }
125
+ /**
126
+ * Creates an ECSQL JOIN snippet for given relationships' path.
127
+ *
128
+ * When a step specifies `instanceFilter`, its resolved expression is appended as an `AND`
129
+ * condition to the target class JOIN's `ON` clause. In the outer-join case the condition also
130
+ * appears on the `INNER JOIN` inside the subquery so the pre-joined subquery is already
131
+ * filtered. Bindings declared in `instanceFilter.bindings` across all steps are collected
132
+ * and returned alongside the SQL string.
133
+ *
134
+ * Possible results:
135
+ * - When the relationship is represented by a navigation property on either source or target:
136
+ * ```SQL
137
+ * INNER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[navigation_property_name].[Id] = [source_alias].[ECInstanceId]
138
+ * ```
139
+ * - When outer joining through a non-navigation-property relationship:
140
+ * ```SQL
141
+ * OUTER JOIN (
142
+ * SELECT [relationship_alias].*
143
+ * FROM [relationship_schema_name].[relationship_class_name] [relationship_alias]
144
+ * INNER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
145
+ * ) [relationship_alias] ON [relationship_alias].[SourceECInstanceId] = [source_alias].[ECInstanceId]
146
+ * OUTER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
147
+ * ```
148
+ * - When inner joining through a non-navigation-property relationship:
149
+ * ```SQL
150
+ * INNER JOIN [relationship_schema_name].[relationship_class_name] [relationship_alias] ON [relationship_alias].[SourceECInstanceId] = [source_alias].[ECInstanceId]
151
+ * INNER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
152
+ * ```
153
+ *
154
+ * @returns An object containing:
155
+ * - `joins`: the ECSQL JOIN clause string to embed in a query.
156
+ * - `bindings`: ECSQL parameter bindings collected from `instanceFilter.bindings` across all steps,
157
+ * or `undefined` if no step specified any bindings.
158
+ * @public
159
+ */
160
+ export declare function createRelationshipPathJoinClause(props: CreateRelationshipPathJoinClauseProps): Promise<RelationshipPathJoinClauseResult>;
161
+ /**
162
+ * Render a pre-resolved `RelationshipPathJoinInfo` into an ECSQL JOIN clause (sync, no schema access).
163
+ * @public
164
+ */
165
+ export declare function createRelationshipPathJoinClause(info: RelationshipPathJoinInfo): RelationshipPathJoinClauseResult;
166
+ export {};
167
+ //# sourceMappingURL=ECSqlJoinSnippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlJoinSnippets.d.ts","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlJoinSnippets.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEnG;;;GAGG;AACH,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,KAAK,oBAAoB,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,qCAAqC;IACpD,cAAc,EAAE,gBAAgB,CAAC;IACjC,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED;;;GAGG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC;CACxC;AAED;;;;;GAKG;AACH,UAAU,4BAA4B;IACpC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,qBAAqB,EAAE,EAAE,CAAC,wBAAwB,CAAC;IACnD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2FAA2F;IAC3F,WAAW,EAAE,eAAe,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,8FAA8F;IAC9F,UAAU,EAAE,eAAe,GAAG,4BAA4B,CAAC;IAC3D,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,UAAU,4BAA4B;IACpC;;;;;OAKG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,2BAA2B,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,UAAU,wBAAwB;IAChC,mFAAmF;IACnF,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACtC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,CAsGnC;AAED;;;GAGG;AACH,UAAU,gCAAgC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CAAC;AAC7C;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,wBAAwB,GAAG,gCAAgC,CAAC"}
@@ -0,0 +1,177 @@
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 { getClass } from "../Metadata.js";
6
+ import { createClassSelector, createRawPropertyValueSelector } from "./ECSqlValueSelectorSnippets.js";
7
+ /**
8
+ * Resolves a relationship path into a `RelationshipPathJoinInfo` (schema-reading pass; produces no ECSQL).
9
+ * @public
10
+ */
11
+ export async function createRelationshipPathJoinInfo(props) {
12
+ if (props.path.length === 0) {
13
+ return { steps: [] };
14
+ }
15
+ let prev = {
16
+ alias: props.path[0].sourceAlias,
17
+ joinPropertyName: "ECInstanceId",
18
+ className: props.path[0].sourceClassName,
19
+ };
20
+ const steps = [];
21
+ const bindings = {};
22
+ for (const stepDef of props.path) {
23
+ const step = await getRelationshipPathStepClasses(props.schemaProvider, stepDef);
24
+ const navigationProperty = await getNavigationProperty(step);
25
+ const filterCondition = resolveInstanceFilterCondition(step);
26
+ // Source/target `ECClassId` selectors are resolved the same way regardless of how the
27
+ // relationship is represented: read from the source/target aliases actually joined for this step.
28
+ const sourceClassIdSelector = createRawPropertyValueSelector(prev.alias, "ECClassId");
29
+ const targetClassIdSelector = createRawPropertyValueSelector(step.targetAlias, "ECClassId");
30
+ if (step.instanceFilter?.bindings) {
31
+ for (const [key, value] of Object.entries(step.instanceFilter.bindings)) {
32
+ if (key in bindings) {
33
+ throw new Error(`Binding key "${key}" is used in multiple steps of the relationship path. Each binding key must be unique across all steps.`);
34
+ }
35
+ bindings[key] = value;
36
+ }
37
+ }
38
+ if (navigationProperty) {
39
+ const isNavigationPropertyForward = navigationProperty.direction === "Forward";
40
+ // The navigation value (`.Id` and `.RelECClassId`) lives on the same alias that holds the
41
+ // navigation property in the join condition below.
42
+ const navigationValueAlias = isNavigationPropertyForward === !step.relationshipReverse ? prev.alias : step.targetAlias;
43
+ const joinCondition = isNavigationPropertyForward === !step.relationshipReverse
44
+ ? `${createRawPropertyValueSelector(step.targetAlias, "ECInstanceId")} = ${createRawPropertyValueSelector(prev.alias, navigationProperty.name, "Id")}${filterCondition}`
45
+ : `${createRawPropertyValueSelector(step.targetAlias, navigationProperty.name, "Id")} = ${createRawPropertyValueSelector(prev.alias, prev.joinPropertyName)}${filterCondition}`;
46
+ steps.push({
47
+ relationshipClassIdSelector: createRawPropertyValueSelector(navigationValueAlias, navigationProperty.name, "RelECClassId"),
48
+ sourceClassIdSelector,
49
+ targetClassIdSelector,
50
+ joins: [
51
+ {
52
+ joinType: step.joinType ?? "inner",
53
+ joinTarget: { kind: "class", className: step.target.fullName },
54
+ joinAlias: step.targetAlias,
55
+ joinCondition,
56
+ },
57
+ ],
58
+ });
59
+ }
60
+ else {
61
+ const joins = [];
62
+ const relPropNames = !step.relationshipReverse
63
+ ? { this: "SourceECInstanceId", next: "TargetECInstanceId" }
64
+ : { this: "TargetECInstanceId", next: "SourceECInstanceId" };
65
+ const targetJoinCondition = `${createRawPropertyValueSelector(step.targetAlias, "ECInstanceId")} = ${createRawPropertyValueSelector(step.relationshipAlias, relPropNames.next)}${filterCondition}`;
66
+ if (step.joinType === "outer") {
67
+ joins.push({
68
+ joinType: "outer",
69
+ joinTarget: {
70
+ kind: "relationship-select",
71
+ relationshipClassName: step.relationship.fullName,
72
+ relationshipAlias: step.relationshipAlias,
73
+ innerTarget: { kind: "class", className: step.target.fullName },
74
+ innerTargetAlias: step.targetAlias,
75
+ innerJoinCondition: targetJoinCondition,
76
+ },
77
+ joinAlias: step.relationshipAlias,
78
+ joinCondition: `${createRawPropertyValueSelector(step.relationshipAlias, relPropNames.this)} = ${createRawPropertyValueSelector(prev.alias, prev.joinPropertyName)}`,
79
+ });
80
+ }
81
+ else {
82
+ joins.push({
83
+ joinType: "inner",
84
+ joinTarget: { kind: "class", className: step.relationship.fullName },
85
+ joinAlias: step.relationshipAlias,
86
+ joinCondition: `${createRawPropertyValueSelector(step.relationshipAlias, relPropNames.this)} = ${createRawPropertyValueSelector(prev.alias, prev.joinPropertyName)}`,
87
+ });
88
+ }
89
+ joins.push({
90
+ joinType: step.joinType ?? "inner",
91
+ joinTarget: { kind: "class", className: step.target.fullName },
92
+ joinAlias: step.targetAlias,
93
+ joinCondition: targetJoinCondition,
94
+ });
95
+ steps.push({
96
+ relationshipClassIdSelector: createRawPropertyValueSelector(step.relationshipAlias, "ECClassId"),
97
+ sourceClassIdSelector,
98
+ targetClassIdSelector,
99
+ joins,
100
+ });
101
+ }
102
+ prev = { alias: step.targetAlias, className: step.target.fullName, joinPropertyName: "ECInstanceId" };
103
+ }
104
+ return { steps, bindings: Object.keys(bindings).length > 0 ? bindings : undefined };
105
+ }
106
+ export function createRelationshipPathJoinClause(arg) {
107
+ if ("steps" in arg) {
108
+ return renderRelationshipPathJoinClause(arg);
109
+ }
110
+ return createRelationshipPathJoinInfo(arg).then(renderRelationshipPathJoinClause);
111
+ }
112
+ function renderRelationshipPathJoinClause(info) {
113
+ let joins = "";
114
+ const flatJoins = info.steps.flatMap((step) => step.joins);
115
+ for (const entry of flatJoins) {
116
+ const joinKw = entry.joinType === "outer" ? "OUTER JOIN" : "INNER JOIN";
117
+ if (entry.joinTarget.kind === "class") {
118
+ joins += `
119
+ ${joinKw} ${createClassSelector(entry.joinTarget.className)} [${entry.joinAlias}] ON ${entry.joinCondition}
120
+ `;
121
+ }
122
+ else {
123
+ const t = entry.joinTarget;
124
+ joins += `
125
+ ${joinKw} (
126
+ SELECT [${t.relationshipAlias}].*
127
+ FROM ${createClassSelector(t.relationshipClassName)} [${t.relationshipAlias}]
128
+ INNER JOIN ${createClassSelector(t.innerTarget.className)} [${t.innerTargetAlias}] ON ${t.innerJoinCondition}
129
+ ) [${entry.joinAlias}] ON ${entry.joinCondition}
130
+ `;
131
+ }
132
+ }
133
+ return { joins, bindings: info.bindings };
134
+ }
135
+ function resolveInstanceFilterCondition(step) {
136
+ if (!step.instanceFilter) {
137
+ return "";
138
+ }
139
+ const { expression, targetAlias = "this", relationshipAlias = "rel" } = step.instanceFilter;
140
+ const resolvedExpression = expression
141
+ .replaceAll(`[${targetAlias}].`, `[${step.targetAlias}].`)
142
+ .replaceAll(`${targetAlias}.`, `[${step.targetAlias}].`)
143
+ .replaceAll(`[${relationshipAlias}].`, `[${step.relationshipAlias}].`)
144
+ .replaceAll(`${relationshipAlias}.`, `[${step.relationshipAlias}].`);
145
+ return ` AND (${resolvedExpression})`;
146
+ }
147
+ async function getRelationshipPathStepClasses(schemaProvider, step) {
148
+ const { sourceClassName, relationshipName, targetClassName, ...rest } = step;
149
+ return {
150
+ ...rest,
151
+ source: await getClass(schemaProvider, sourceClassName),
152
+ relationship: (await getClass(schemaProvider, relationshipName)),
153
+ target: await getClass(schemaProvider, targetClassName),
154
+ };
155
+ }
156
+ async function getNavigationProperty(step) {
157
+ const source = !step.relationshipReverse ? step.source : step.target;
158
+ const target = !step.relationshipReverse ? step.target : step.source;
159
+ for (const prop of await source.getProperties()) {
160
+ /* v8 ignore else -- @preserve */
161
+ if (prop.isNavigation() &&
162
+ prop.direction === "Forward" &&
163
+ (await prop.relationshipClass).fullName === step.relationship.fullName) {
164
+ return prop;
165
+ }
166
+ }
167
+ for (const prop of await target.getProperties()) {
168
+ /* v8 ignore else -- @preserve */
169
+ if (prop.isNavigation() &&
170
+ prop.direction === "Backward" &&
171
+ (await prop.relationshipClass).fullName === step.relationship.fullName) {
172
+ return prop;
173
+ }
174
+ }
175
+ return undefined;
176
+ }
177
+ //# sourceMappingURL=ECSqlJoinSnippets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlJoinSnippets.js","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlJoinSnippets.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export declare function createPrimitivePropertyValueSelectorProps({ schemaProvid
38
38
  /** Access to schema information. */
39
39
  schemaProvider: ECSchemaProvider;
40
40
  /** Full class name of the property. Format: `SchemaName.ClassName`. */
41
- propertyClassName: EC.FullClassName;
41
+ propertyClassName: EC.FullClassNameDotNotation;
42
42
  /** Query alias of the class that contains the property. */
43
43
  propertyClassAlias: string;
44
44
  /** Name of the property to create `TypedPrimitiveValue` for. */
@@ -61,6 +61,14 @@ export declare function createRawPropertyValueSelector(classAlias: string, prope
61
61
  * @public
62
62
  */
63
63
  export declare function createRawPrimitiveValueSelector(value: PrimitiveValue | undefined): string;
64
+ /**
65
+ * Converts a full class name (`SchemaName.ClassName`) into a
66
+ * bracket-quoted ECSQL class selector: `[SchemaName].[ClassName]`.
67
+ *
68
+ * @throws Error if the provided full class name is not valid.
69
+ * @public
70
+ */
71
+ export declare function createClassSelector(fullClassName: EC.FullClassNameDotNotation): string;
64
72
  /**
65
73
  * Creates an ECSQL selector that results in a stringified `InstanceKey` object.
66
74
  * @public
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlValueSelectorSnippets.d.ts","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;;GAGG;AACH,KAAK,gCAAgC,GAAG;IACtC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,CACA;IACE,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAC3F,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG,gCAAgC,CAAC;AAEjG,cAAc;AAEd,yBAAiB,2BAA2B,CAAC;IAC3C,SAAgB,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,IAAI,mBAAmB,CAEjG;IACD,SAAgB,wBAAwB,CACtC,KAAK,EAAE,2BAA2B,GACjC,KAAK,IAAI,gCAAgC,CAE3C;CACF;AAED;;;;GAIG;AACH,wBAAsB,yCAAyC,CAAC,EAC9D,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,EAAE;IACD,oCAAoC;IACpC,cAAc,EAAE,gBAAgB,CAAC;IACjC,uEAAuE;IACvE,iBAAiB,EAAE,EAAE,CAAC,wBAAwB,CAAC;IAC/C,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAsD5C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAMR;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,UAqBhF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAGtF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAIjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEtG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,2BAA2B,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,UAMnH;AA2CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,2BAA2B,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,UASvB"}
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { Id64 } from "@itwin/core-bentley";
6
6
  import { getClass } from "../Metadata.js";
7
+ import { parseFullClassName } from "../Utils.js";
7
8
  import { PrimitiveValue } from "../Values.js";
8
9
  /** @public */
9
10
  // eslint-disable-next-line @typescript-eslint/no-redeclare
@@ -117,6 +118,17 @@ export function createRawPrimitiveValueSelector(value) {
117
118
  return value ? "TRUE" : "FALSE";
118
119
  }
119
120
  }
121
+ /**
122
+ * Converts a full class name (`SchemaName.ClassName`) into a
123
+ * bracket-quoted ECSQL class selector: `[SchemaName].[ClassName]`.
124
+ *
125
+ * @throws Error if the provided full class name is not valid.
126
+ * @public
127
+ */
128
+ export function createClassSelector(fullClassName) {
129
+ const { schemaName, className } = parseFullClassName(fullClassName);
130
+ return `[${schemaName}].[${className}]`;
131
+ }
120
132
  /**
121
133
  * Creates an ECSQL selector that results in a stringified `InstanceKey` object.
122
134
  * @public
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECSqlValueSelectorSnippets.js","sourceRoot":"","sources":["../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
2
+ export { createRelationshipPathJoinClause, createRelationshipPathJoinInfo } from "./ECSqlJoinSnippets.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
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
+ export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
6
+ export { createRelationshipPathJoinClause, createRelationshipPathJoinInfo } from "./ECSqlJoinSnippets.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BisInstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE;;;GAGG;AACH,UAAU,wCAAwC;IAChD,uBAAuB,EAAE,yBAAyB,CAAC;CACpD;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,wCAAwC,GAC9C,iCAAiC,CA6CnC"}
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { createRawPropertyValueSelector } from "../ecsql-snippets/ECSqlValueSelectorSnippets.js";
6
6
  import { createClassBasedInstanceLabelSelectClauseFactory } from "./ClassBasedInstanceLabelSelectClauseFactory.js";
7
- import { concatenate, createECInstanceIdSuffixSelectors } from "./Utils.js";
7
+ import { ALIAS_PREFIX, concatenate, createECInstanceIdSuffixSelectors } from "./Utils.js";
8
8
  /**
9
9
  * Creates a label select clause according to BIS instance label rules.
10
10
  * @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
@@ -37,11 +37,14 @@ export function createBisInstanceLabelSelectClauseFactory(props) {
37
37
  `,
38
38
  }, {
39
39
  className: "BisCore.Model",
40
- clause: async ({ classAlias, ...rest }) => `(
41
- SELECT ${await factory.createSelectClause({ ...rest, classAlias: "e", className: "BisCore.Element" })}
42
- FROM [bis].[Element] AS [e]
43
- WHERE [e].[ECInstanceId] = ${createRawPropertyValueSelector(classAlias, "ModeledElement", "Id")}
44
- )`,
40
+ clause: async ({ classAlias, ...rest }) => {
41
+ const elementAlias = `${ALIAS_PREFIX}e`;
42
+ return `(
43
+ SELECT ${await factory.createSelectClause({ ...rest, classAlias: elementAlias, className: "BisCore.Element" })}
44
+ FROM [bis].[Element] AS ${elementAlias}
45
+ WHERE ${elementAlias}.[ECInstanceId] = ${createRawPropertyValueSelector(classAlias, "ModeledElement", "Id")}
46
+ )`;
47
+ },
45
48
  });
46
49
  return factory;
47
50
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BisInstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../src/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,gDAAgD,EAAE,MAAM,iDAAiD,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAc1F;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,KAA+C;IAE/C,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,gDAAgD,CAAC;QAC/D,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;QACtD,OAAO;KACR,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CACV;QACE,SAAS,EAAE,0BAA0B;QACrC,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;;YAErC,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;YACvD,WAAW,CACX,IAAI,EACJ;YACE,EAAE,QAAQ,EAAE,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YACrE,GAAG,iCAAiC,CAAC,UAAU,CAAC;SACjD,EACD,GAAG,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,cAAc,CACzE;;OAEJ;KACF,EACD;QACE,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;;YAE5B,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;YACvD,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;;OAE5D;KACF,EACD;QACE,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,GAAG,YAAY,GAAG,CAAC;YACxC,OAAO;iBACE,MAAM,OAAO,CAAC,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;kCACpF,YAAY;gBAC9B,YAAY,qBAAqB,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC;QAC3G,CAAC;QACH,CAAC;KACF,CACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -6,7 +6,7 @@ import type { EC, ECClassHierarchyInspector } from "../Metadata.js";
6
6
  */
7
7
  export interface ClassBasedLabelSelectClause {
8
8
  /** Full class name */
9
- className: EC.FullClassName;
9
+ className: EC.FullClassNameDotNotation;
10
10
  /** A factory method to create an instance label select clause */
11
11
  clause: (props: CreateInstanceLabelSelectClauseProps) => Promise<string>;
12
12
  }