@itwin/core-bentley 4.0.0-dev.7 → 4.0.0-dev.70

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 (211) hide show
  1. package/CHANGELOG.md +29 -12
  2. package/lib/cjs/AccessToken.d.ts +10 -10
  3. package/lib/cjs/AccessToken.d.ts.map +1 -1
  4. package/lib/cjs/AccessToken.js +9 -9
  5. package/lib/cjs/Assert.d.ts +25 -25
  6. package/lib/cjs/Assert.js +45 -45
  7. package/lib/cjs/Assert.js.map +1 -1
  8. package/lib/cjs/BeEvent.d.ts +81 -81
  9. package/lib/cjs/BeEvent.d.ts.map +1 -1
  10. package/lib/cjs/BeEvent.js +156 -156
  11. package/lib/cjs/BeSQLite.d.ts +172 -170
  12. package/lib/cjs/BeSQLite.d.ts.map +1 -1
  13. package/lib/cjs/BeSQLite.js +185 -183
  14. package/lib/cjs/BeSQLite.js.map +1 -1
  15. package/lib/cjs/BentleyError.d.ts +378 -378
  16. package/lib/cjs/BentleyError.d.ts.map +1 -1
  17. package/lib/cjs/BentleyError.js +703 -702
  18. package/lib/cjs/BentleyError.js.map +1 -1
  19. package/lib/cjs/BentleyLoggerCategory.d.ts +11 -11
  20. package/lib/cjs/BentleyLoggerCategory.js +19 -19
  21. package/lib/cjs/ByteStream.d.ts +110 -110
  22. package/lib/cjs/ByteStream.js +159 -159
  23. package/lib/cjs/ClassUtils.d.ts +14 -14
  24. package/lib/cjs/ClassUtils.js +27 -27
  25. package/lib/cjs/Compare.d.ts +47 -47
  26. package/lib/cjs/Compare.d.ts.map +1 -1
  27. package/lib/cjs/Compare.js +75 -75
  28. package/lib/cjs/CompressedId64Set.d.ts +134 -134
  29. package/lib/cjs/CompressedId64Set.d.ts.map +1 -1
  30. package/lib/cjs/CompressedId64Set.js +428 -428
  31. package/lib/cjs/CompressedId64Set.js.map +1 -1
  32. package/lib/cjs/Dictionary.d.ts +125 -125
  33. package/lib/cjs/Dictionary.js +203 -203
  34. package/lib/cjs/Disposable.d.ts +80 -80
  35. package/lib/cjs/Disposable.d.ts.map +1 -1
  36. package/lib/cjs/Disposable.js +120 -120
  37. package/lib/cjs/Id.d.ts +285 -285
  38. package/lib/cjs/Id.d.ts.map +1 -1
  39. package/lib/cjs/Id.js +643 -643
  40. package/lib/cjs/IndexMap.d.ts +65 -65
  41. package/lib/cjs/IndexMap.js +91 -91
  42. package/lib/cjs/JsonSchema.d.ts +77 -77
  43. package/lib/cjs/JsonSchema.d.ts.map +1 -1
  44. package/lib/cjs/JsonSchema.js +9 -9
  45. package/lib/cjs/JsonUtils.d.ts +78 -78
  46. package/lib/cjs/JsonUtils.js +151 -151
  47. package/lib/cjs/LRUMap.d.ts +129 -129
  48. package/lib/cjs/LRUMap.js +333 -333
  49. package/lib/cjs/LRUMap.js.map +1 -1
  50. package/lib/cjs/Logger.d.ts +143 -143
  51. package/lib/cjs/Logger.d.ts.map +1 -1
  52. package/lib/cjs/Logger.js +256 -258
  53. package/lib/cjs/Logger.js.map +1 -1
  54. package/lib/cjs/ObservableSet.d.ts +23 -23
  55. package/lib/cjs/ObservableSet.js +51 -51
  56. package/lib/cjs/OneAtATimeAction.d.ts +31 -31
  57. package/lib/cjs/OneAtATimeAction.js +94 -94
  58. package/lib/cjs/OneAtATimeAction.js.map +1 -1
  59. package/lib/cjs/OrderedId64Iterable.d.ts +74 -74
  60. package/lib/cjs/OrderedId64Iterable.d.ts.map +1 -1
  61. package/lib/cjs/OrderedId64Iterable.js +235 -235
  62. package/lib/cjs/OrderedSet.d.ts +40 -40
  63. package/lib/cjs/OrderedSet.js +64 -64
  64. package/lib/cjs/PriorityQueue.d.ts +70 -70
  65. package/lib/cjs/PriorityQueue.d.ts.map +1 -1
  66. package/lib/cjs/PriorityQueue.js +140 -140
  67. package/lib/cjs/ProcessDetector.d.ts +59 -59
  68. package/lib/cjs/ProcessDetector.js +71 -71
  69. package/lib/cjs/SortedArray.d.ts +236 -232
  70. package/lib/cjs/SortedArray.d.ts.map +1 -1
  71. package/lib/cjs/SortedArray.js +315 -303
  72. package/lib/cjs/SortedArray.js.map +1 -1
  73. package/lib/cjs/StatusCategory.d.ts +30 -30
  74. package/lib/cjs/StatusCategory.d.ts.map +1 -1
  75. package/lib/cjs/StatusCategory.js +460 -460
  76. package/lib/cjs/StatusCategory.js.map +1 -1
  77. package/lib/cjs/StringUtils.d.ts +22 -22
  78. package/lib/cjs/StringUtils.js +148 -148
  79. package/lib/cjs/Time.d.ts +122 -122
  80. package/lib/cjs/Time.js +152 -152
  81. package/lib/cjs/Time.js.map +1 -1
  82. package/lib/cjs/Tracing.d.ts +43 -40
  83. package/lib/cjs/Tracing.d.ts.map +1 -1
  84. package/lib/cjs/Tracing.js +134 -130
  85. package/lib/cjs/Tracing.js.map +1 -1
  86. package/lib/cjs/TupleKeyedMap.d.ts +36 -36
  87. package/lib/cjs/TupleKeyedMap.js +102 -102
  88. package/lib/cjs/TypedArrayBuilder.d.ts +155 -155
  89. package/lib/cjs/TypedArrayBuilder.d.ts.map +1 -1
  90. package/lib/cjs/TypedArrayBuilder.js +206 -208
  91. package/lib/cjs/TypedArrayBuilder.js.map +1 -1
  92. package/lib/cjs/UnexpectedErrors.d.ts +43 -43
  93. package/lib/cjs/UnexpectedErrors.d.ts.map +1 -1
  94. package/lib/cjs/UnexpectedErrors.js +68 -68
  95. package/lib/cjs/UnexpectedErrors.js.map +1 -1
  96. package/lib/cjs/UtilityTypes.d.ts +112 -96
  97. package/lib/cjs/UtilityTypes.d.ts.map +1 -1
  98. package/lib/cjs/UtilityTypes.js +40 -40
  99. package/lib/cjs/UtilityTypes.js.map +1 -1
  100. package/lib/cjs/YieldManager.d.ts +18 -18
  101. package/lib/cjs/YieldManager.js +34 -34
  102. package/lib/cjs/core-bentley.d.ts +74 -74
  103. package/lib/cjs/core-bentley.js +94 -90
  104. package/lib/cjs/core-bentley.js.map +1 -1
  105. package/lib/cjs/partitionArray.d.ts +21 -21
  106. package/lib/cjs/partitionArray.js +43 -43
  107. package/lib/esm/AccessToken.d.ts +10 -10
  108. package/lib/esm/AccessToken.d.ts.map +1 -1
  109. package/lib/esm/AccessToken.js +8 -8
  110. package/lib/esm/Assert.d.ts +25 -25
  111. package/lib/esm/Assert.js +41 -41
  112. package/lib/esm/Assert.js.map +1 -1
  113. package/lib/esm/BeEvent.d.ts +81 -81
  114. package/lib/esm/BeEvent.d.ts.map +1 -1
  115. package/lib/esm/BeEvent.js +150 -150
  116. package/lib/esm/BeSQLite.d.ts +172 -170
  117. package/lib/esm/BeSQLite.d.ts.map +1 -1
  118. package/lib/esm/BeSQLite.js +182 -180
  119. package/lib/esm/BeSQLite.js.map +1 -1
  120. package/lib/esm/BentleyError.d.ts +378 -378
  121. package/lib/esm/BentleyError.d.ts.map +1 -1
  122. package/lib/esm/BentleyError.js +699 -698
  123. package/lib/esm/BentleyError.js.map +1 -1
  124. package/lib/esm/BentleyLoggerCategory.d.ts +11 -11
  125. package/lib/esm/BentleyLoggerCategory.js +16 -16
  126. package/lib/esm/ByteStream.d.ts +110 -110
  127. package/lib/esm/ByteStream.js +155 -155
  128. package/lib/esm/ClassUtils.d.ts +14 -14
  129. package/lib/esm/ClassUtils.js +22 -22
  130. package/lib/esm/Compare.d.ts +47 -47
  131. package/lib/esm/Compare.d.ts.map +1 -1
  132. package/lib/esm/Compare.js +63 -63
  133. package/lib/esm/CompressedId64Set.d.ts +134 -134
  134. package/lib/esm/CompressedId64Set.d.ts.map +1 -1
  135. package/lib/esm/CompressedId64Set.js +423 -423
  136. package/lib/esm/CompressedId64Set.js.map +1 -1
  137. package/lib/esm/Dictionary.d.ts +125 -125
  138. package/lib/esm/Dictionary.js +199 -199
  139. package/lib/esm/Disposable.d.ts +80 -80
  140. package/lib/esm/Disposable.d.ts.map +1 -1
  141. package/lib/esm/Disposable.js +112 -112
  142. package/lib/esm/Id.d.ts +285 -285
  143. package/lib/esm/Id.d.ts.map +1 -1
  144. package/lib/esm/Id.js +639 -639
  145. package/lib/esm/IndexMap.d.ts +65 -65
  146. package/lib/esm/IndexMap.js +86 -86
  147. package/lib/esm/JsonSchema.d.ts +77 -77
  148. package/lib/esm/JsonSchema.d.ts.map +1 -1
  149. package/lib/esm/JsonSchema.js +8 -8
  150. package/lib/esm/JsonUtils.d.ts +78 -78
  151. package/lib/esm/JsonUtils.js +148 -148
  152. package/lib/esm/LRUMap.d.ts +129 -129
  153. package/lib/esm/LRUMap.js +326 -326
  154. package/lib/esm/LRUMap.js.map +1 -1
  155. package/lib/esm/Logger.d.ts +143 -143
  156. package/lib/esm/Logger.d.ts.map +1 -1
  157. package/lib/esm/Logger.js +253 -253
  158. package/lib/esm/Logger.js.map +1 -1
  159. package/lib/esm/ObservableSet.d.ts +23 -23
  160. package/lib/esm/ObservableSet.js +47 -47
  161. package/lib/esm/OneAtATimeAction.d.ts +31 -31
  162. package/lib/esm/OneAtATimeAction.js +89 -89
  163. package/lib/esm/OneAtATimeAction.js.map +1 -1
  164. package/lib/esm/OrderedId64Iterable.d.ts +74 -74
  165. package/lib/esm/OrderedId64Iterable.d.ts.map +1 -1
  166. package/lib/esm/OrderedId64Iterable.js +232 -232
  167. package/lib/esm/OrderedSet.d.ts +40 -40
  168. package/lib/esm/OrderedSet.js +59 -59
  169. package/lib/esm/PriorityQueue.d.ts +70 -70
  170. package/lib/esm/PriorityQueue.d.ts.map +1 -1
  171. package/lib/esm/PriorityQueue.js +136 -136
  172. package/lib/esm/ProcessDetector.d.ts +59 -59
  173. package/lib/esm/ProcessDetector.js +67 -67
  174. package/lib/esm/SortedArray.d.ts +236 -232
  175. package/lib/esm/SortedArray.d.ts.map +1 -1
  176. package/lib/esm/SortedArray.js +308 -296
  177. package/lib/esm/SortedArray.js.map +1 -1
  178. package/lib/esm/StatusCategory.d.ts +30 -30
  179. package/lib/esm/StatusCategory.d.ts.map +1 -1
  180. package/lib/esm/StatusCategory.js +455 -454
  181. package/lib/esm/StatusCategory.js.map +1 -1
  182. package/lib/esm/StringUtils.d.ts +22 -22
  183. package/lib/esm/StringUtils.js +142 -142
  184. package/lib/esm/Time.d.ts +122 -122
  185. package/lib/esm/Time.js +146 -146
  186. package/lib/esm/Time.js.map +1 -1
  187. package/lib/esm/Tracing.d.ts +43 -40
  188. package/lib/esm/Tracing.d.ts.map +1 -1
  189. package/lib/esm/Tracing.js +130 -126
  190. package/lib/esm/Tracing.js.map +1 -1
  191. package/lib/esm/TupleKeyedMap.d.ts +36 -36
  192. package/lib/esm/TupleKeyedMap.js +98 -98
  193. package/lib/esm/TypedArrayBuilder.d.ts +155 -155
  194. package/lib/esm/TypedArrayBuilder.d.ts.map +1 -1
  195. package/lib/esm/TypedArrayBuilder.js +198 -200
  196. package/lib/esm/TypedArrayBuilder.js.map +1 -1
  197. package/lib/esm/UnexpectedErrors.d.ts +43 -43
  198. package/lib/esm/UnexpectedErrors.d.ts.map +1 -1
  199. package/lib/esm/UnexpectedErrors.js +65 -64
  200. package/lib/esm/UnexpectedErrors.js.map +1 -1
  201. package/lib/esm/UtilityTypes.d.ts +112 -96
  202. package/lib/esm/UtilityTypes.d.ts.map +1 -1
  203. package/lib/esm/UtilityTypes.js +34 -34
  204. package/lib/esm/UtilityTypes.js.map +1 -1
  205. package/lib/esm/YieldManager.d.ts +18 -18
  206. package/lib/esm/YieldManager.js +30 -30
  207. package/lib/esm/core-bentley.d.ts +74 -74
  208. package/lib/esm/core-bentley.js +78 -78
  209. package/lib/esm/partitionArray.d.ts +21 -21
  210. package/lib/esm/partitionArray.js +39 -39
  211. package/package.json +8 -8
@@ -1,75 +1,75 @@
1
- /** @packageDocumentation
2
- * @module Ids
3
- */
4
- import { CompressedId64Set } from "./CompressedId64Set";
5
- import { Id64Array, Id64String } from "./Id";
6
- /** @public */
7
- export declare type OrderedId64Iterable = Iterable<Id64String>;
8
- /** A collection of **valid** [[Id64String]]s sorted in ascending order by the unsigned 64-bit integer value of the Ids.
9
- * This ordering is a requirement for several groups of APIs including [[CompressedId64Set]].
10
- * When used as input to a function, duplicate Ids are ignored; when returned as a function output, no duplicates are present.
11
- * @see [[CompressedId64Set]] for a compact string representation of such an ordered collection.
12
- * @see [[OrderedId64Iterable.compare]] for a function that compares Ids based on this criterion.
13
- * @see [[OrderedId64Array]] for a mutable implementation.
14
- * @public
15
- */
16
- export declare namespace OrderedId64Iterable {
17
- /** An ordered comparison of [[Id64String]]s suitable for use with sorting routines like
18
- * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) and sorted containers
19
- * like [[SortedArray]] and [[Dictionary]]. The comparison compares the 64-bit numerical values of the two Ids, returning a negative number if lhs < rhs,
20
- * a positive number if lhs > rhs, or zero if lhs == rhs.
21
- * The default string comparison is fine (and more efficient) when numerical ordering is not required; use this instead if you want e.g., "0x100" to be greater than "0xf".
22
- * @see [[OrderedId64Iterable.sortArray]] for a convenient way to sort an array of Id64Strings.
23
- */
24
- function compare(lhs: Id64String, rhs: Id64String): number;
25
- /** Sort an array of [[Id64String]]s **in-place** in ascending order by their 64-bit numerical values.
26
- * @see [[OrderedId64Iterable.compare]] for the comparison routine used.
27
- * @returns the input array.
28
- * @note This function returns its input for consistency with Javascript's
29
- * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) method.
30
- * It **does not** create a **new** array.
31
- */
32
- function sortArray(ids: Id64Array): Id64Array;
33
- /** Given two ordered collections of [[Id64String]]s, determine whether they are identical sets. Duplicate Ids are ignored.
34
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
35
- */
36
- function areEqualSets(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): boolean;
37
- /** Given an ordered collection of [[Id64String]]s, determine if it contains any Ids.
38
- * @param ids A well-formed, ordered collection of zero or more valid Ids.
39
- * @returns true if the input represents an empty set of Ids. The result is unspecified if the input does not meet the criteria for the input type.
40
- */
41
- function isEmptySet(ids: OrderedId64Iterable | CompressedId64Set): boolean;
42
- /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered collection containing no duplicates.
43
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
44
- */
45
- function unique(ids: OrderedId64Iterable): OrderedId64Iterable;
46
- /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered iterator over the distinct Ids, eliminating duplicates.
47
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
48
- */
49
- function uniqueIterator(ids: OrderedId64Iterable): Generator<string, void, unknown>;
50
- /** Given two ordered collections of [[Id64String]]s, produce a collection representing their union - i.e., the Ids that are present in either or both collections.
51
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
52
- */
53
- function union(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
54
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
55
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
56
- */
57
- function intersection(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
58
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
59
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
60
- */
61
- function difference(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
62
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their union - i.e., the Ids that are present in either or both collections.
63
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
64
- */
65
- function unionIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
66
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
67
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
68
- */
69
- function intersectionIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
70
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
71
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
72
- */
73
- function differenceIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
74
- }
1
+ /** @packageDocumentation
2
+ * @module Ids
3
+ */
4
+ import { CompressedId64Set } from "./CompressedId64Set";
5
+ import { Id64Array, Id64String } from "./Id";
6
+ /** @public */
7
+ export type OrderedId64Iterable = Iterable<Id64String>;
8
+ /** A collection of **valid** [[Id64String]]s sorted in ascending order by the unsigned 64-bit integer value of the Ids.
9
+ * This ordering is a requirement for several groups of APIs including [[CompressedId64Set]].
10
+ * When used as input to a function, duplicate Ids are ignored; when returned as a function output, no duplicates are present.
11
+ * @see [[CompressedId64Set]] for a compact string representation of such an ordered collection.
12
+ * @see [[OrderedId64Iterable.compare]] for a function that compares Ids based on this criterion.
13
+ * @see [[OrderedId64Array]] for a mutable implementation.
14
+ * @public
15
+ */
16
+ export declare namespace OrderedId64Iterable {
17
+ /** An ordered comparison of [[Id64String]]s suitable for use with sorting routines like
18
+ * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) and sorted containers
19
+ * like [[SortedArray]] and [[Dictionary]]. The comparison compares the 64-bit numerical values of the two Ids, returning a negative number if lhs < rhs,
20
+ * a positive number if lhs > rhs, or zero if lhs == rhs.
21
+ * The default string comparison is fine (and more efficient) when numerical ordering is not required; use this instead if you want e.g., "0x100" to be greater than "0xf".
22
+ * @see [[OrderedId64Iterable.sortArray]] for a convenient way to sort an array of Id64Strings.
23
+ */
24
+ function compare(lhs: Id64String, rhs: Id64String): number;
25
+ /** Sort an array of [[Id64String]]s **in-place** in ascending order by their 64-bit numerical values.
26
+ * @see [[OrderedId64Iterable.compare]] for the comparison routine used.
27
+ * @returns the input array.
28
+ * @note This function returns its input for consistency with Javascript's
29
+ * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) method.
30
+ * It **does not** create a **new** array.
31
+ */
32
+ function sortArray(ids: Id64Array): Id64Array;
33
+ /** Given two ordered collections of [[Id64String]]s, determine whether they are identical sets. Duplicate Ids are ignored.
34
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
35
+ */
36
+ function areEqualSets(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): boolean;
37
+ /** Given an ordered collection of [[Id64String]]s, determine if it contains any Ids.
38
+ * @param ids A well-formed, ordered collection of zero or more valid Ids.
39
+ * @returns true if the input represents an empty set of Ids. The result is unspecified if the input does not meet the criteria for the input type.
40
+ */
41
+ function isEmptySet(ids: OrderedId64Iterable | CompressedId64Set): boolean;
42
+ /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered collection containing no duplicates.
43
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
44
+ */
45
+ function unique(ids: OrderedId64Iterable): OrderedId64Iterable;
46
+ /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered iterator over the distinct Ids, eliminating duplicates.
47
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
48
+ */
49
+ function uniqueIterator(ids: OrderedId64Iterable): Generator<string, void, unknown>;
50
+ /** Given two ordered collections of [[Id64String]]s, produce a collection representing their union - i.e., the Ids that are present in either or both collections.
51
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
52
+ */
53
+ function union(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
54
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
55
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
56
+ */
57
+ function intersection(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
58
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
59
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
60
+ */
61
+ function difference(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): OrderedId64Iterable;
62
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their union - i.e., the Ids that are present in either or both collections.
63
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
64
+ */
65
+ function unionIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
66
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
67
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
68
+ */
69
+ function intersectionIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
70
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
71
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
72
+ */
73
+ function differenceIterator(ids1: OrderedId64Iterable, ids2: OrderedId64Iterable): Generator<string, void, unknown>;
74
+ }
75
75
  //# sourceMappingURL=OrderedId64Iterable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderedId64Iterable.d.ts","sourceRoot":"","sources":["../../src/OrderedId64Iterable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAE7C,cAAc;AACd,oBAAY,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEvD;;;;;;;GAOG;AACH,yBAAiB,mBAAmB,CAAC;IACnC;;;;;;OAMG;IACH,SAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAUhE;IAED;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAGnD;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAoB1F;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,OAAO,CAKhF;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,CAEpE;IAED;;OAEG;IACH,SAAiB,cAAc,CAAC,GAAG,EAAE,mBAAmB,oCAavD;IAED;;OAEG;IACH,SAAgB,KAAK,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAE/F;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAEtG;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAEpG;IAED;;OAEG;IACH,SAAiB,aAAa,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCA0ClF;IAED;;OAEG;IACH,SAAiB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCA6BzF;IAED;;OAEG;IACH,SAAiB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCAiCvF;CACF"}
1
+ {"version":3,"file":"OrderedId64Iterable.d.ts","sourceRoot":"","sources":["../../src/OrderedId64Iterable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAE7C,cAAc;AACd,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEvD;;;;;;;GAOG;AACH,yBAAiB,mBAAmB,CAAC;IACnC;;;;;;OAMG;IACH,SAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAUhE;IAED;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAGnD;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAoB1F;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,OAAO,CAKhF;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,CAEpE;IAED;;OAEG;IACH,SAAiB,cAAc,CAAC,GAAG,EAAE,mBAAmB,oCAavD;IAED;;OAEG;IACH,SAAgB,KAAK,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAE/F;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAEtG;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAEpG;IAED;;OAEG;IACH,SAAiB,aAAa,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCA0ClF;IAED;;OAEG;IACH,SAAiB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCA6BzF;IAED;;OAEG;IACH,SAAiB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,oCAiCvF;CACF"}
@@ -1,236 +1,236 @@
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
- /** @packageDocumentation
7
- * @module Ids
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.OrderedId64Iterable = void 0;
11
- const Assert_1 = require("./Assert");
12
- /** A collection of **valid** [[Id64String]]s sorted in ascending order by the unsigned 64-bit integer value of the Ids.
13
- * This ordering is a requirement for several groups of APIs including [[CompressedId64Set]].
14
- * When used as input to a function, duplicate Ids are ignored; when returned as a function output, no duplicates are present.
15
- * @see [[CompressedId64Set]] for a compact string representation of such an ordered collection.
16
- * @see [[OrderedId64Iterable.compare]] for a function that compares Ids based on this criterion.
17
- * @see [[OrderedId64Array]] for a mutable implementation.
18
- * @public
19
- */
20
- var OrderedId64Iterable;
21
- (function (OrderedId64Iterable) {
22
- /** An ordered comparison of [[Id64String]]s suitable for use with sorting routines like
23
- * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) and sorted containers
24
- * like [[SortedArray]] and [[Dictionary]]. The comparison compares the 64-bit numerical values of the two Ids, returning a negative number if lhs < rhs,
25
- * a positive number if lhs > rhs, or zero if lhs == rhs.
26
- * The default string comparison is fine (and more efficient) when numerical ordering is not required; use this instead if you want e.g., "0x100" to be greater than "0xf".
27
- * @see [[OrderedId64Iterable.sortArray]] for a convenient way to sort an array of Id64Strings.
28
- */
29
- function compare(lhs, rhs) {
30
- if (lhs.length !== rhs.length)
31
- return lhs.length < rhs.length ? -1 : 1;
32
- // This is faster than localeCompare(). Unclear why there is no string.compare() - would be generally useful in
33
- // array sort functions...
34
- if (lhs !== rhs)
35
- return lhs < rhs ? -1 : 1;
36
- return 0;
37
- }
38
- OrderedId64Iterable.compare = compare;
39
- /** Sort an array of [[Id64String]]s **in-place** in ascending order by their 64-bit numerical values.
40
- * @see [[OrderedId64Iterable.compare]] for the comparison routine used.
41
- * @returns the input array.
42
- * @note This function returns its input for consistency with Javascript's
43
- * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) method.
44
- * It **does not** create a **new** array.
45
- */
46
- function sortArray(ids) {
47
- ids.sort((x, y) => compare(x, y));
48
- return ids;
49
- }
50
- OrderedId64Iterable.sortArray = sortArray;
51
- /** Given two ordered collections of [[Id64String]]s, determine whether they are identical sets. Duplicate Ids are ignored.
52
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
53
- */
54
- function areEqualSets(ids1, ids2) {
55
- const leftIter = uniqueIterator(ids1);
56
- const rightIter = uniqueIterator(ids2);
57
- let leftState = leftIter.next();
58
- let rightState = rightIter.next();
59
- while (!leftState.done && !rightState.done) {
60
- const left = leftState.value;
61
- const right = rightState.value;
62
- if (0 !== compare(left, right))
63
- return false;
64
- leftState = leftIter.next();
65
- rightState = rightIter.next();
66
- }
67
- if (leftState.done && rightState.done)
68
- return true;
69
- return false;
70
- }
71
- OrderedId64Iterable.areEqualSets = areEqualSets;
72
- /** Given an ordered collection of [[Id64String]]s, determine if it contains any Ids.
73
- * @param ids A well-formed, ordered collection of zero or more valid Ids.
74
- * @returns true if the input represents an empty set of Ids. The result is unspecified if the input does not meet the criteria for the input type.
75
- */
76
- function isEmptySet(ids) {
77
- if (typeof ids === "string")
78
- return "" === ids;
79
- return true === ids[Symbol.iterator]().next().done;
80
- }
81
- OrderedId64Iterable.isEmptySet = isEmptySet;
82
- /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered collection containing no duplicates.
83
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
84
- */
85
- function unique(ids) {
86
- return { [Symbol.iterator]: () => uniqueIterator(ids) };
87
- }
88
- OrderedId64Iterable.unique = unique;
89
- /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered iterator over the distinct Ids, eliminating duplicates.
90
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
91
- */
92
- function* uniqueIterator(ids) {
93
- const iter = ids[Symbol.iterator]();
94
- let state = iter.next();
95
- let prev;
96
- while (!state.done) {
97
- const id = state.value;
98
- state = iter.next();
99
- if (id !== prev) {
100
- prev = id;
101
- yield id;
102
- }
103
- }
104
- }
105
- OrderedId64Iterable.uniqueIterator = uniqueIterator;
106
- /** Given two ordered collections of [[Id64String]]s, produce a collection representing their union - i.e., the Ids that are present in either or both collections.
107
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
108
- */
109
- function union(ids1, ids2) {
110
- return { [Symbol.iterator]: () => unionIterator(ids1, ids2) };
111
- }
112
- OrderedId64Iterable.union = union;
113
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
114
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
115
- */
116
- function intersection(ids1, ids2) {
117
- return { [Symbol.iterator]: () => intersectionIterator(ids1, ids2) };
118
- }
119
- OrderedId64Iterable.intersection = intersection;
120
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
121
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
122
- */
123
- function difference(ids1, ids2) {
124
- return { [Symbol.iterator]: () => differenceIterator(ids1, ids2) };
125
- }
126
- OrderedId64Iterable.difference = difference;
127
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their union - i.e., the Ids that are present in either or both collections.
128
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
129
- */
130
- function* unionIterator(ids1, ids2) {
131
- const leftIter = ids1[Symbol.iterator]();
132
- const rightIter = ids2[Symbol.iterator]();
133
- let leftState = leftIter.next();
134
- let rightState = rightIter.next();
135
- let prev;
136
- while (!leftState.done || !rightState.done) {
137
- const left = leftState.done ? undefined : leftState.value;
138
- const right = rightState.done ? undefined : rightState.value;
139
- (0, Assert_1.assert)(undefined !== left || undefined !== right);
140
- if (undefined === left && undefined === right)
141
- break;
142
- let next;
143
- if (undefined === left) {
144
- (0, Assert_1.assert)(undefined !== right);
145
- next = right;
146
- rightState = rightIter.next();
147
- }
148
- else if (undefined === right) {
149
- next = left;
150
- leftState = leftIter.next();
151
- }
152
- else {
153
- const cmp = compare(left, right);
154
- if (cmp <= 0) {
155
- next = left;
156
- leftState = leftIter.next();
157
- if (0 === cmp)
158
- rightState = rightIter.next();
159
- }
160
- else {
161
- next = right;
162
- rightState = rightIter.next();
163
- }
164
- }
165
- if (prev === next)
166
- continue;
167
- prev = next;
168
- yield next;
169
- }
170
- }
171
- OrderedId64Iterable.unionIterator = unionIterator;
172
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
173
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
174
- */
175
- function* intersectionIterator(ids1, ids2) {
176
- const leftIter = ids1[Symbol.iterator]();
177
- const rightIter = ids2[Symbol.iterator]();
178
- let leftState = leftIter.next();
179
- let rightState = rightIter.next();
180
- let prev;
181
- while (!leftState.done && !rightState.done) {
182
- const left = leftState.value;
183
- leftState = leftIter.next();
184
- if (left === prev)
185
- continue;
186
- prev = left;
187
- let right = rightState.value;
188
- let cmp = compare(left, right);
189
- while (cmp > 0) {
190
- rightState = rightIter.next();
191
- if (rightState.done)
192
- return;
193
- right = rightState.value;
194
- cmp = compare(left, right);
195
- }
196
- if (0 === cmp)
197
- yield left;
198
- }
199
- }
200
- OrderedId64Iterable.intersectionIterator = intersectionIterator;
201
- /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
202
- * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
203
- */
204
- function* differenceIterator(ids1, ids2) {
205
- const leftIter = ids1[Symbol.iterator]();
206
- const rightIter = ids2[Symbol.iterator]();
207
- let leftState = leftIter.next();
208
- let rightState = rightIter.next();
209
- let prev;
210
- while (!leftState.done) {
211
- const left = leftState.value;
212
- leftState = leftIter.next();
213
- if (left === prev)
214
- continue;
215
- else if (rightState.done) {
216
- yield prev = left;
217
- continue;
218
- }
219
- let right = rightState.value;
220
- let cmp = compare(left, right);
221
- while (cmp > 0 && !rightState.done) {
222
- rightState = rightIter.next();
223
- if (rightState.done) {
224
- yield prev = left;
225
- continue;
226
- }
227
- right = rightState.value;
228
- cmp = compare(left, right);
229
- }
230
- if (cmp < 0)
231
- yield prev = left;
232
- }
233
- }
234
- OrderedId64Iterable.differenceIterator = differenceIterator;
235
- })(OrderedId64Iterable = exports.OrderedId64Iterable || (exports.OrderedId64Iterable = {}));
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
+ /** @packageDocumentation
7
+ * @module Ids
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.OrderedId64Iterable = void 0;
11
+ const Assert_1 = require("./Assert");
12
+ /** A collection of **valid** [[Id64String]]s sorted in ascending order by the unsigned 64-bit integer value of the Ids.
13
+ * This ordering is a requirement for several groups of APIs including [[CompressedId64Set]].
14
+ * When used as input to a function, duplicate Ids are ignored; when returned as a function output, no duplicates are present.
15
+ * @see [[CompressedId64Set]] for a compact string representation of such an ordered collection.
16
+ * @see [[OrderedId64Iterable.compare]] for a function that compares Ids based on this criterion.
17
+ * @see [[OrderedId64Array]] for a mutable implementation.
18
+ * @public
19
+ */
20
+ var OrderedId64Iterable;
21
+ (function (OrderedId64Iterable) {
22
+ /** An ordered comparison of [[Id64String]]s suitable for use with sorting routines like
23
+ * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) and sorted containers
24
+ * like [[SortedArray]] and [[Dictionary]]. The comparison compares the 64-bit numerical values of the two Ids, returning a negative number if lhs < rhs,
25
+ * a positive number if lhs > rhs, or zero if lhs == rhs.
26
+ * The default string comparison is fine (and more efficient) when numerical ordering is not required; use this instead if you want e.g., "0x100" to be greater than "0xf".
27
+ * @see [[OrderedId64Iterable.sortArray]] for a convenient way to sort an array of Id64Strings.
28
+ */
29
+ function compare(lhs, rhs) {
30
+ if (lhs.length !== rhs.length)
31
+ return lhs.length < rhs.length ? -1 : 1;
32
+ // This is faster than localeCompare(). Unclear why there is no string.compare() - would be generally useful in
33
+ // array sort functions...
34
+ if (lhs !== rhs)
35
+ return lhs < rhs ? -1 : 1;
36
+ return 0;
37
+ }
38
+ OrderedId64Iterable.compare = compare;
39
+ /** Sort an array of [[Id64String]]s **in-place** in ascending order by their 64-bit numerical values.
40
+ * @see [[OrderedId64Iterable.compare]] for the comparison routine used.
41
+ * @returns the input array.
42
+ * @note This function returns its input for consistency with Javascript's
43
+ * [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) method.
44
+ * It **does not** create a **new** array.
45
+ */
46
+ function sortArray(ids) {
47
+ ids.sort((x, y) => compare(x, y));
48
+ return ids;
49
+ }
50
+ OrderedId64Iterable.sortArray = sortArray;
51
+ /** Given two ordered collections of [[Id64String]]s, determine whether they are identical sets. Duplicate Ids are ignored.
52
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
53
+ */
54
+ function areEqualSets(ids1, ids2) {
55
+ const leftIter = uniqueIterator(ids1);
56
+ const rightIter = uniqueIterator(ids2);
57
+ let leftState = leftIter.next();
58
+ let rightState = rightIter.next();
59
+ while (!leftState.done && !rightState.done) {
60
+ const left = leftState.value;
61
+ const right = rightState.value;
62
+ if (0 !== compare(left, right))
63
+ return false;
64
+ leftState = leftIter.next();
65
+ rightState = rightIter.next();
66
+ }
67
+ if (leftState.done && rightState.done)
68
+ return true;
69
+ return false;
70
+ }
71
+ OrderedId64Iterable.areEqualSets = areEqualSets;
72
+ /** Given an ordered collection of [[Id64String]]s, determine if it contains any Ids.
73
+ * @param ids A well-formed, ordered collection of zero or more valid Ids.
74
+ * @returns true if the input represents an empty set of Ids. The result is unspecified if the input does not meet the criteria for the input type.
75
+ */
76
+ function isEmptySet(ids) {
77
+ if (typeof ids === "string")
78
+ return "" === ids;
79
+ return true === ids[Symbol.iterator]().next().done;
80
+ }
81
+ OrderedId64Iterable.isEmptySet = isEmptySet;
82
+ /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered collection containing no duplicates.
83
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
84
+ */
85
+ function unique(ids) {
86
+ return { [Symbol.iterator]: () => uniqueIterator(ids) };
87
+ }
88
+ OrderedId64Iterable.unique = unique;
89
+ /** Given an ordered collection of [[Id64String]]s possibly containing duplicates, produce an ordered iterator over the distinct Ids, eliminating duplicates.
90
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
91
+ */
92
+ function* uniqueIterator(ids) {
93
+ const iter = ids[Symbol.iterator]();
94
+ let state = iter.next();
95
+ let prev;
96
+ while (!state.done) {
97
+ const id = state.value;
98
+ state = iter.next();
99
+ if (id !== prev) {
100
+ prev = id;
101
+ yield id;
102
+ }
103
+ }
104
+ }
105
+ OrderedId64Iterable.uniqueIterator = uniqueIterator;
106
+ /** Given two ordered collections of [[Id64String]]s, produce a collection representing their union - i.e., the Ids that are present in either or both collections.
107
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
108
+ */
109
+ function union(ids1, ids2) {
110
+ return { [Symbol.iterator]: () => unionIterator(ids1, ids2) };
111
+ }
112
+ OrderedId64Iterable.union = union;
113
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
114
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
115
+ */
116
+ function intersection(ids1, ids2) {
117
+ return { [Symbol.iterator]: () => intersectionIterator(ids1, ids2) };
118
+ }
119
+ OrderedId64Iterable.intersection = intersection;
120
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
121
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
122
+ */
123
+ function difference(ids1, ids2) {
124
+ return { [Symbol.iterator]: () => differenceIterator(ids1, ids2) };
125
+ }
126
+ OrderedId64Iterable.difference = difference;
127
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their union - i.e., the Ids that are present in either or both collections.
128
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
129
+ */
130
+ function* unionIterator(ids1, ids2) {
131
+ const leftIter = ids1[Symbol.iterator]();
132
+ const rightIter = ids2[Symbol.iterator]();
133
+ let leftState = leftIter.next();
134
+ let rightState = rightIter.next();
135
+ let prev;
136
+ while (!leftState.done || !rightState.done) {
137
+ const left = leftState.done ? undefined : leftState.value;
138
+ const right = rightState.done ? undefined : rightState.value;
139
+ (0, Assert_1.assert)(undefined !== left || undefined !== right);
140
+ if (undefined === left && undefined === right)
141
+ break;
142
+ let next;
143
+ if (undefined === left) {
144
+ (0, Assert_1.assert)(undefined !== right);
145
+ next = right;
146
+ rightState = rightIter.next();
147
+ }
148
+ else if (undefined === right) {
149
+ next = left;
150
+ leftState = leftIter.next();
151
+ }
152
+ else {
153
+ const cmp = compare(left, right);
154
+ if (cmp <= 0) {
155
+ next = left;
156
+ leftState = leftIter.next();
157
+ if (0 === cmp)
158
+ rightState = rightIter.next();
159
+ }
160
+ else {
161
+ next = right;
162
+ rightState = rightIter.next();
163
+ }
164
+ }
165
+ if (prev === next)
166
+ continue;
167
+ prev = next;
168
+ yield next;
169
+ }
170
+ }
171
+ OrderedId64Iterable.unionIterator = unionIterator;
172
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their intersection - i.e., the Ids that are present in both collections.
173
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
174
+ */
175
+ function* intersectionIterator(ids1, ids2) {
176
+ const leftIter = ids1[Symbol.iterator]();
177
+ const rightIter = ids2[Symbol.iterator]();
178
+ let leftState = leftIter.next();
179
+ let rightState = rightIter.next();
180
+ let prev;
181
+ while (!leftState.done && !rightState.done) {
182
+ const left = leftState.value;
183
+ leftState = leftIter.next();
184
+ if (left === prev)
185
+ continue;
186
+ prev = left;
187
+ let right = rightState.value;
188
+ let cmp = compare(left, right);
189
+ while (cmp > 0) {
190
+ rightState = rightIter.next();
191
+ if (rightState.done)
192
+ return;
193
+ right = rightState.value;
194
+ cmp = compare(left, right);
195
+ }
196
+ if (0 === cmp)
197
+ yield left;
198
+ }
199
+ }
200
+ OrderedId64Iterable.intersectionIterator = intersectionIterator;
201
+ /** Given two ordered collections of [[Id64String]]s, produce an iterator representing their difference - i.e., the Ids that are present in `ids1` but not present in `ids2`.
202
+ * @note If the inputs are not ordered as required by [[OrderedId64Iterable]], the results are unpredictable.
203
+ */
204
+ function* differenceIterator(ids1, ids2) {
205
+ const leftIter = ids1[Symbol.iterator]();
206
+ const rightIter = ids2[Symbol.iterator]();
207
+ let leftState = leftIter.next();
208
+ let rightState = rightIter.next();
209
+ let prev;
210
+ while (!leftState.done) {
211
+ const left = leftState.value;
212
+ leftState = leftIter.next();
213
+ if (left === prev)
214
+ continue;
215
+ else if (rightState.done) {
216
+ yield prev = left;
217
+ continue;
218
+ }
219
+ let right = rightState.value;
220
+ let cmp = compare(left, right);
221
+ while (cmp > 0 && !rightState.done) {
222
+ rightState = rightIter.next();
223
+ if (rightState.done) {
224
+ yield prev = left;
225
+ continue;
226
+ }
227
+ right = rightState.value;
228
+ cmp = compare(left, right);
229
+ }
230
+ if (cmp < 0)
231
+ yield prev = left;
232
+ }
233
+ }
234
+ OrderedId64Iterable.differenceIterator = differenceIterator;
235
+ })(OrderedId64Iterable = exports.OrderedId64Iterable || (exports.OrderedId64Iterable = {}));
236
236
  //# sourceMappingURL=OrderedId64Iterable.js.map