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

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 +50 -1
  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 +9 -9
@@ -1,156 +1,156 @@
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
- /** @packageDocumentation
6
- * @module Utils
7
- */
8
- import { assert } from "./Assert";
9
- import { Id64 } from "./Id";
10
- /** Allows the contents of an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
11
- * to be consumed sequentially using methods to extract
12
- * data of a particular type from the bytes beginning at the current read position.
13
- * Methods and properties beginning with 'read' and taking no arguments consume data at the current read position and advance it
14
- * by the size of the data read. The read position can also be directly adjusted by the caller.
15
- * @public
16
- */
17
- export class ByteStream {
18
- /** Construct a new ByteStream with the read position set to the beginning.
19
- * @param buffer The underlying buffer from which data is to be extracted.
20
- * @param subView If defined, specifies the subset of the underlying buffer's data to use.
21
- * This constructor is subject to two common mistakes:
22
- *
23
- * 1. Given `bytes: Uint8Array`, `new ByteStream(bytes)` will compile but at run-time will produce an error asserting that
24
- * the DataView constructor requires an ArrayBuffer. The correct usage is `new ByteStream(bytes.buffer)`.
25
- * 2. Given `bytes: Uint8Array`, `new ByteStream(bytes.buffer)` creates a stream for the entire range of bytes represented by the underlying
26
- * ArrayBuffer. If `bytes` represents only a **sub-range** of the underlying buffer's data, the results will be unexpected unless the optional `subView`
27
- * argument is supplied, with correct offset and length.
28
- *
29
- * For both of the above reasons, prefer to use [[fromUint8Array]].
30
- * @deprecated in 3.x. Use [[fromUint8Array]] or [[fromArrayBuffer]].
31
- */
32
- constructor(buffer, subView) {
33
- this._curPos = 0;
34
- if (undefined !== subView) {
35
- this._view = new DataView(buffer, subView.byteOffset, subView.byteLength);
36
- this._byteOffset = subView.byteOffset;
37
- }
38
- else {
39
- this._view = new DataView(buffer);
40
- this._byteOffset = 0;
41
- }
42
- }
43
- /** Construct a new ByteStream for the range of bytes represented by `bytes`, which may be a subset of the range of bytes
44
- * represented by the underlying ArrayBuffer. The read position will be set to the beginning of the range of bytes.
45
- */
46
- static fromUint8Array(bytes) {
47
- const { byteOffset, byteLength } = bytes;
48
- return new ByteStream(bytes.buffer, { byteOffset, byteLength }); // eslint-disable-line deprecation/deprecation
49
- }
50
- /** Construct a new ByteStream with the read position set to the beginning.
51
- * @param buffer The underlying buffer from which data is to be extracted.
52
- * @param subView If defined, specifies the subset of the underlying buffer's data to use.
53
- */
54
- static fromArrayBuffer(buffer, subView) {
55
- return new ByteStream(buffer, subView); // eslint-disable-line deprecation/deprecation
56
- }
57
- /** The number of bytes in this stream */
58
- get length() {
59
- return this._view.byteLength;
60
- }
61
- /** The number of bytes remaining to be read, from [[curPos]] to the end of the stream. */
62
- get remainingLength() {
63
- return this.length - this.curPos;
64
- }
65
- /** Returns true if the current read position has been advanced past the end of the stream. This generally indicates that an attempt was made to read more data than is available.
66
- * @see [[isAtTheEnd]]
67
- */
68
- get isPastTheEnd() {
69
- return this.curPos > this.length;
70
- }
71
- /** Returns true if the current read position has advanced precisely to the end of the stream, indicating all of the data has been consumed.
72
- * @see [[isPastTheEnd]].
73
- */
74
- get isAtTheEnd() {
75
- return this.curPos === this.length;
76
- }
77
- /** The current read position as an index into the stream of bytes. */
78
- get curPos() { return this._curPos; }
79
- set curPos(pos) {
80
- this._curPos = pos;
81
- assert(!this.isPastTheEnd);
82
- }
83
- /** Adds the specified number of bytes to the current read position */
84
- advance(numBytes) {
85
- this.curPos = (this.curPos + numBytes);
86
- return !this.isPastTheEnd;
87
- }
88
- /** Subtracts the specified number of bytes from the current read position */
89
- rewind(numBytes) {
90
- if (this.curPos - numBytes < 0)
91
- return false;
92
- this.curPos = this.curPos - numBytes;
93
- return true;
94
- }
95
- /** Resets the current read position to the beginning of the stream */
96
- reset() { this.curPos = 0; }
97
- /** Read a unsigned 8-bit integer from the current read position and advance by 1 byte. */
98
- readUint8() { return this.read(1, (view) => view.getUint8(this.curPos)); }
99
- /** Read an unsigned 16-bit integer from the current read position and advance by 2 bytes. */
100
- readUint16() { return this.read(2, (view) => view.getUint16(this.curPos, true)); }
101
- /** Read an unsigned 32-bit integer from the current read position and advance by 4 bytes. */
102
- readUint32() { return this.read(4, (view) => view.getUint32(this.curPos, true)); }
103
- /** Read a signed 32-bit integer from the current read position and advance by 4 bytes. */
104
- readInt32() { return this.read(4, (view) => view.getInt32(this.curPos, true)); }
105
- /** Read a 32-bit floating point number from the current read position and advance by 4 bytes. */
106
- readFloat32() { return this.read(4, (view) => view.getFloat32(this.curPos, true)); }
107
- /** Read a 64-bit floating point number from the current read position and advance by 8 bytes. */
108
- readFloat64() { return this.read(8, (view) => view.getFloat64(this.curPos, true)); }
109
- /** Read an unsigned 64-bit integer from the current read position, advance by 8 bytes, and return the 64-bit value as an Id64String. */
110
- readId64() { return Id64.fromUint32Pair(this.readUint32(), this.readUint32()); }
111
- /** Read an unsigned 24-bit integer from the current read position and advance by 3 bytes. */
112
- readUint24() { return this.readUint8() | (this.readUint8() << 8) | (this.readUint8() << 16); }
113
- /** @deprecated in 3.x. use [[readUint8]]. */
114
- get nextUint8() { return this.readUint8(); }
115
- /** @deprecated in 3.x. use [[readUint16]]. */
116
- get nextUint16() { return this.readUint16(); }
117
- /** @deprecated in 3.x. use [[readUint32]]. */
118
- get nextUint32() { return this.readUint32(); }
119
- /** @deprecated in 3.x. use [[readInt32]]. */
120
- get nextInt32() { return this.readInt32(); }
121
- /** @deprecated in 3.x. use [[readFloat32]]. */
122
- get nextFloat32() { return this.readFloat32(); }
123
- /** @deprecated in 3.x. use [[readFloat64]]. */
124
- get nextFloat64() { return this.readFloat64(); }
125
- /** @deprecated in 3.x. use [[readId64]]. */
126
- get nextId64() { return this.readId64(); }
127
- /** @deprecated in 3.x. use [[readUint32]]. */
128
- get nextUint24() { return this.readUint24(); }
129
- /** Read the specified number of bytes beginning at the current read position into a Uint8Array and advance by the specified number of byte.
130
- * @param numBytes The number of bytes to read.
131
- */
132
- nextBytes(numBytes) {
133
- const bytes = new Uint8Array(this.arrayBuffer, this.curPos + this._byteOffset, numBytes);
134
- this.advance(numBytes);
135
- return bytes;
136
- }
137
- /** Read the specified number of bytes at the specified offset without changing the read position. */
138
- readBytes(readPos, numBytes) {
139
- return new Uint8Array(this.arrayBuffer, readPos + this._byteOffset, numBytes);
140
- }
141
- /** Read the specified number of unsigned 32-bit integers from the current read position and advance the read position. */
142
- nextUint32s(numUint32s) {
143
- const numBytes = numUint32s * 4;
144
- const uint32s = new Uint32Array(this.arrayBuffer, this.curPos + this._byteOffset, numUint32s);
145
- this.advance(numBytes);
146
- return uint32s;
147
- }
148
- /** Returns the underlying array buffer */
149
- get arrayBuffer() { return this._view.buffer; }
150
- read(numBytes, read) {
151
- const result = read(this._view);
152
- this.advance(numBytes);
153
- return result;
154
- }
155
- }
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
+ /** @packageDocumentation
6
+ * @module Utils
7
+ */
8
+ import { assert } from "./Assert";
9
+ import { Id64 } from "./Id";
10
+ /** Allows the contents of an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
11
+ * to be consumed sequentially using methods to extract
12
+ * data of a particular type from the bytes beginning at the current read position.
13
+ * Methods and properties beginning with 'read' and taking no arguments consume data at the current read position and advance it
14
+ * by the size of the data read. The read position can also be directly adjusted by the caller.
15
+ * @public
16
+ */
17
+ export class ByteStream {
18
+ /** Construct a new ByteStream with the read position set to the beginning.
19
+ * @param buffer The underlying buffer from which data is to be extracted.
20
+ * @param subView If defined, specifies the subset of the underlying buffer's data to use.
21
+ * This constructor is subject to two common mistakes:
22
+ *
23
+ * 1. Given `bytes: Uint8Array`, `new ByteStream(bytes)` will compile but at run-time will produce an error asserting that
24
+ * the DataView constructor requires an ArrayBuffer. The correct usage is `new ByteStream(bytes.buffer)`.
25
+ * 2. Given `bytes: Uint8Array`, `new ByteStream(bytes.buffer)` creates a stream for the entire range of bytes represented by the underlying
26
+ * ArrayBuffer. If `bytes` represents only a **sub-range** of the underlying buffer's data, the results will be unexpected unless the optional `subView`
27
+ * argument is supplied, with correct offset and length.
28
+ *
29
+ * For both of the above reasons, prefer to use [[fromUint8Array]].
30
+ * @deprecated in 3.x. Use [[fromUint8Array]] or [[fromArrayBuffer]].
31
+ */
32
+ constructor(buffer, subView) {
33
+ this._curPos = 0;
34
+ if (undefined !== subView) {
35
+ this._view = new DataView(buffer, subView.byteOffset, subView.byteLength);
36
+ this._byteOffset = subView.byteOffset;
37
+ }
38
+ else {
39
+ this._view = new DataView(buffer);
40
+ this._byteOffset = 0;
41
+ }
42
+ }
43
+ /** Construct a new ByteStream for the range of bytes represented by `bytes`, which may be a subset of the range of bytes
44
+ * represented by the underlying ArrayBuffer. The read position will be set to the beginning of the range of bytes.
45
+ */
46
+ static fromUint8Array(bytes) {
47
+ const { byteOffset, byteLength } = bytes;
48
+ return new ByteStream(bytes.buffer, { byteOffset, byteLength }); // eslint-disable-line deprecation/deprecation
49
+ }
50
+ /** Construct a new ByteStream with the read position set to the beginning.
51
+ * @param buffer The underlying buffer from which data is to be extracted.
52
+ * @param subView If defined, specifies the subset of the underlying buffer's data to use.
53
+ */
54
+ static fromArrayBuffer(buffer, subView) {
55
+ return new ByteStream(buffer, subView); // eslint-disable-line deprecation/deprecation
56
+ }
57
+ /** The number of bytes in this stream */
58
+ get length() {
59
+ return this._view.byteLength;
60
+ }
61
+ /** The number of bytes remaining to be read, from [[curPos]] to the end of the stream. */
62
+ get remainingLength() {
63
+ return this.length - this.curPos;
64
+ }
65
+ /** Returns true if the current read position has been advanced past the end of the stream. This generally indicates that an attempt was made to read more data than is available.
66
+ * @see [[isAtTheEnd]]
67
+ */
68
+ get isPastTheEnd() {
69
+ return this.curPos > this.length;
70
+ }
71
+ /** Returns true if the current read position has advanced precisely to the end of the stream, indicating all of the data has been consumed.
72
+ * @see [[isPastTheEnd]].
73
+ */
74
+ get isAtTheEnd() {
75
+ return this.curPos === this.length;
76
+ }
77
+ /** The current read position as an index into the stream of bytes. */
78
+ get curPos() { return this._curPos; }
79
+ set curPos(pos) {
80
+ this._curPos = pos;
81
+ assert(!this.isPastTheEnd);
82
+ }
83
+ /** Adds the specified number of bytes to the current read position */
84
+ advance(numBytes) {
85
+ this.curPos = (this.curPos + numBytes);
86
+ return !this.isPastTheEnd;
87
+ }
88
+ /** Subtracts the specified number of bytes from the current read position */
89
+ rewind(numBytes) {
90
+ if (this.curPos - numBytes < 0)
91
+ return false;
92
+ this.curPos = this.curPos - numBytes;
93
+ return true;
94
+ }
95
+ /** Resets the current read position to the beginning of the stream */
96
+ reset() { this.curPos = 0; }
97
+ /** Read a unsigned 8-bit integer from the current read position and advance by 1 byte. */
98
+ readUint8() { return this.read(1, (view) => view.getUint8(this.curPos)); }
99
+ /** Read an unsigned 16-bit integer from the current read position and advance by 2 bytes. */
100
+ readUint16() { return this.read(2, (view) => view.getUint16(this.curPos, true)); }
101
+ /** Read an unsigned 32-bit integer from the current read position and advance by 4 bytes. */
102
+ readUint32() { return this.read(4, (view) => view.getUint32(this.curPos, true)); }
103
+ /** Read a signed 32-bit integer from the current read position and advance by 4 bytes. */
104
+ readInt32() { return this.read(4, (view) => view.getInt32(this.curPos, true)); }
105
+ /** Read a 32-bit floating point number from the current read position and advance by 4 bytes. */
106
+ readFloat32() { return this.read(4, (view) => view.getFloat32(this.curPos, true)); }
107
+ /** Read a 64-bit floating point number from the current read position and advance by 8 bytes. */
108
+ readFloat64() { return this.read(8, (view) => view.getFloat64(this.curPos, true)); }
109
+ /** Read an unsigned 64-bit integer from the current read position, advance by 8 bytes, and return the 64-bit value as an Id64String. */
110
+ readId64() { return Id64.fromUint32Pair(this.readUint32(), this.readUint32()); }
111
+ /** Read an unsigned 24-bit integer from the current read position and advance by 3 bytes. */
112
+ readUint24() { return this.readUint8() | (this.readUint8() << 8) | (this.readUint8() << 16); }
113
+ /** @deprecated in 3.x. use [[readUint8]]. */
114
+ get nextUint8() { return this.readUint8(); }
115
+ /** @deprecated in 3.x. use [[readUint16]]. */
116
+ get nextUint16() { return this.readUint16(); }
117
+ /** @deprecated in 3.x. use [[readUint32]]. */
118
+ get nextUint32() { return this.readUint32(); }
119
+ /** @deprecated in 3.x. use [[readInt32]]. */
120
+ get nextInt32() { return this.readInt32(); }
121
+ /** @deprecated in 3.x. use [[readFloat32]]. */
122
+ get nextFloat32() { return this.readFloat32(); }
123
+ /** @deprecated in 3.x. use [[readFloat64]]. */
124
+ get nextFloat64() { return this.readFloat64(); }
125
+ /** @deprecated in 3.x. use [[readId64]]. */
126
+ get nextId64() { return this.readId64(); }
127
+ /** @deprecated in 3.x. use [[readUint32]]. */
128
+ get nextUint24() { return this.readUint24(); }
129
+ /** Read the specified number of bytes beginning at the current read position into a Uint8Array and advance by the specified number of byte.
130
+ * @param numBytes The number of bytes to read.
131
+ */
132
+ nextBytes(numBytes) {
133
+ const bytes = new Uint8Array(this.arrayBuffer, this.curPos + this._byteOffset, numBytes);
134
+ this.advance(numBytes);
135
+ return bytes;
136
+ }
137
+ /** Read the specified number of bytes at the specified offset without changing the read position. */
138
+ readBytes(readPos, numBytes) {
139
+ return new Uint8Array(this.arrayBuffer, readPos + this._byteOffset, numBytes);
140
+ }
141
+ /** Read the specified number of unsigned 32-bit integers from the current read position and advance the read position. */
142
+ nextUint32s(numUint32s) {
143
+ const numBytes = numUint32s * 4;
144
+ const uint32s = new Uint32Array(this.arrayBuffer, this.curPos + this._byteOffset, numUint32s);
145
+ this.advance(numBytes);
146
+ return uint32s;
147
+ }
148
+ /** Returns the underlying array buffer */
149
+ get arrayBuffer() { return this._view.buffer; }
150
+ read(numBytes, read) {
151
+ const result = read(this._view);
152
+ this.advance(numBytes);
153
+ return result;
154
+ }
155
+ }
156
156
  //# sourceMappingURL=ByteStream.js.map
@@ -1,15 +1,15 @@
1
- /** Check if class `subclass` is a different class from `superclass` but extends from `superclass`
2
- * @internal
3
- * @param subclass the class that may be a subclass of `superclass`
4
- * @param superclass the class that may be a base class of `subclass`
5
- * @returns whether `subclass` is a proper subclass of `superclass`
6
- */
7
- export declare function isProperSubclassOf<SuperClass extends new (..._: any[]) => any, NonSubClass extends new (..._: any[]) => any, SubClass extends new (..._: any[]) => InstanceType<SuperClass>>(subclass: SubClass | NonSubClass, superclass: SuperClass): subclass is SubClass;
8
- /** Check if class `subclass` is `superclass` or extends from `superclass`
9
- * @internal
10
- * @param subclass the class that may be a subclass of `superclass`
11
- * @param superclass the class that may be a base class of `subclass`
12
- * @returns whether `subclass` is a subclass of `superclass`
13
- */
14
- export declare function isSubclassOf<SuperClass extends new (..._: any[]) => any, NonSubClass extends new (..._: any[]) => any, SubClass extends new (..._: any[]) => InstanceType<SuperClass>>(subclass: SuperClass | SubClass | NonSubClass, superclass: SuperClass): subclass is SubClass | SuperClass;
1
+ /** Check if class `subclass` is a different class from `superclass` but extends from `superclass`
2
+ * @internal
3
+ * @param subclass the class that may be a subclass of `superclass`
4
+ * @param superclass the class that may be a base class of `subclass`
5
+ * @returns whether `subclass` is a proper subclass of `superclass`
6
+ */
7
+ export declare function isProperSubclassOf<SuperClass extends new (..._: any[]) => any, NonSubClass extends new (..._: any[]) => any, SubClass extends new (..._: any[]) => InstanceType<SuperClass>>(subclass: SubClass | NonSubClass, superclass: SuperClass): subclass is SubClass;
8
+ /** Check if class `subclass` is `superclass` or extends from `superclass`
9
+ * @internal
10
+ * @param subclass the class that may be a subclass of `superclass`
11
+ * @param superclass the class that may be a base class of `subclass`
12
+ * @returns whether `subclass` is a subclass of `superclass`
13
+ */
14
+ export declare function isSubclassOf<SuperClass extends new (..._: any[]) => any, NonSubClass extends new (..._: any[]) => any, SubClass extends new (..._: any[]) => InstanceType<SuperClass>>(subclass: SuperClass | SubClass | NonSubClass, superclass: SuperClass): subclass is SubClass | SuperClass;
15
15
  //# sourceMappingURL=ClassUtils.d.ts.map
@@ -1,23 +1,23 @@
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
- /** Check if class `subclass` is a different class from `superclass` but extends from `superclass`
6
- * @internal
7
- * @param subclass the class that may be a subclass of `superclass`
8
- * @param superclass the class that may be a base class of `subclass`
9
- * @returns whether `subclass` is a proper subclass of `superclass`
10
- */
11
- export function isProperSubclassOf(subclass, superclass) {
12
- return subclass.prototype instanceof superclass;
13
- }
14
- /** Check if class `subclass` is `superclass` or extends from `superclass`
15
- * @internal
16
- * @param subclass the class that may be a subclass of `superclass`
17
- * @param superclass the class that may be a base class of `subclass`
18
- * @returns whether `subclass` is a subclass of `superclass`
19
- */
20
- export function isSubclassOf(subclass, superclass) {
21
- return subclass === superclass || isProperSubclassOf(subclass, superclass);
22
- }
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
+ /** Check if class `subclass` is a different class from `superclass` but extends from `superclass`
6
+ * @internal
7
+ * @param subclass the class that may be a subclass of `superclass`
8
+ * @param superclass the class that may be a base class of `subclass`
9
+ * @returns whether `subclass` is a proper subclass of `superclass`
10
+ */
11
+ export function isProperSubclassOf(subclass, superclass) {
12
+ return subclass.prototype instanceof superclass;
13
+ }
14
+ /** Check if class `subclass` is `superclass` or extends from `superclass`
15
+ * @internal
16
+ * @param subclass the class that may be a subclass of `superclass`
17
+ * @param superclass the class that may be a base class of `subclass`
18
+ * @returns whether `subclass` is a subclass of `superclass`
19
+ */
20
+ export function isSubclassOf(subclass, superclass) {
21
+ return subclass === superclass || isProperSubclassOf(subclass, superclass);
22
+ }
23
23
  //# sourceMappingURL=ClassUtils.js.map
@@ -1,48 +1,48 @@
1
- /** @packageDocumentation
2
- * @module Utils
3
- */
4
- /**
5
- * A function that returns a numerical value indicating how two objects are ordered in relation to one another.
6
- * Such functions are used by various collection classes throughout the library.
7
- * Given values `lhs` and `rhs`, the function returns:
8
- * - Zero if lhs == rhs
9
- * - A negative number if lhs < rhs
10
- * - A positive number if lhs > rhs
11
- *
12
- * An OrderedComparator `must` implement [strict weak ordering](https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings), which can be summarized by the following rules:
13
- * - `compare(x, x)` returns zero.
14
- * - If `compare(x, y)` returns zero, then so does `compare(y, x)` (i.e., `x == y` implies `y == x`).
15
- * - If `compare(x, y)` returns non-zero, then `compare(y, x)` returns a value with an opposite sign (i.e., `x < y` implies `y > x`).
16
- * - If `compare(x, y)` and `compare(y, z)` return non-zero values with the same sign, then `compare(x, z)` returns a value with the same sign (i.e., `x < y < z` implies `x < z`).
17
- *
18
- * @see SortedArray
19
- * @see Dictionary
20
- * @see IndexMap
21
- * @see PriorityQueue
22
- * @public
23
- */
24
- export declare type OrderedComparator<T, U = T> = (lhs: T, rhs: U) => number;
25
- /**
26
- * An [[OrderedComparator]] for numbers that treats two numbers as equal if the absolute value of their difference is less than a specified tolerance.
27
- * @public
28
- */
29
- export declare function compareWithTolerance(a: number, b: number, tolerance?: number): number;
30
- /** @public */
31
- export declare function compareNumbers(a: number, b: number): number;
32
- /** @public */
33
- export declare function compareBooleans(a: boolean, b: boolean): number;
34
- /** @public */
35
- export declare function compareStrings(a: string, b: string): number;
36
- /** @public */
37
- export declare function comparePossiblyUndefined<T>(compareDefined: (lhs: T, rhs: T) => number, lhs?: T, rhs?: T): number;
38
- /** @public */
39
- export declare function compareStringsOrUndefined(lhs?: string, rhs?: string): number;
40
- /** @public */
41
- export declare function compareNumbersOrUndefined(lhs?: number, rhs?: number): number;
42
- /** @public */
43
- export declare function compareBooleansOrUndefined(lhs?: boolean, rhs?: boolean): number;
44
- /** Compare two possibly-undefined values for equality. If both are undefined, the comparison is performed by the supplied `areEqual` function.
45
- * @public
46
- */
47
- export declare function areEqualPossiblyUndefined<T, U>(t: T | undefined, u: U | undefined, areEqual: (t: T, u: U) => boolean): boolean;
1
+ /** @packageDocumentation
2
+ * @module Utils
3
+ */
4
+ /**
5
+ * A function that returns a numerical value indicating how two objects are ordered in relation to one another.
6
+ * Such functions are used by various collection classes throughout the library.
7
+ * Given values `lhs` and `rhs`, the function returns:
8
+ * - Zero if lhs == rhs
9
+ * - A negative number if lhs < rhs
10
+ * - A positive number if lhs > rhs
11
+ *
12
+ * An OrderedComparator `must` implement [strict weak ordering](https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings), which can be summarized by the following rules:
13
+ * - `compare(x, x)` returns zero.
14
+ * - If `compare(x, y)` returns zero, then so does `compare(y, x)` (i.e., `x == y` implies `y == x`).
15
+ * - If `compare(x, y)` returns non-zero, then `compare(y, x)` returns a value with an opposite sign (i.e., `x < y` implies `y > x`).
16
+ * - If `compare(x, y)` and `compare(y, z)` return non-zero values with the same sign, then `compare(x, z)` returns a value with the same sign (i.e., `x < y < z` implies `x < z`).
17
+ *
18
+ * @see SortedArray
19
+ * @see Dictionary
20
+ * @see IndexMap
21
+ * @see PriorityQueue
22
+ * @public
23
+ */
24
+ export type OrderedComparator<T, U = T> = (lhs: T, rhs: U) => number;
25
+ /**
26
+ * An [[OrderedComparator]] for numbers that treats two numbers as equal if the absolute value of their difference is less than a specified tolerance.
27
+ * @public
28
+ */
29
+ export declare function compareWithTolerance(a: number, b: number, tolerance?: number): number;
30
+ /** @public */
31
+ export declare function compareNumbers(a: number, b: number): number;
32
+ /** @public */
33
+ export declare function compareBooleans(a: boolean, b: boolean): number;
34
+ /** @public */
35
+ export declare function compareStrings(a: string, b: string): number;
36
+ /** @public */
37
+ export declare function comparePossiblyUndefined<T>(compareDefined: (lhs: T, rhs: T) => number, lhs?: T, rhs?: T): number;
38
+ /** @public */
39
+ export declare function compareStringsOrUndefined(lhs?: string, rhs?: string): number;
40
+ /** @public */
41
+ export declare function compareNumbersOrUndefined(lhs?: number, rhs?: number): number;
42
+ /** @public */
43
+ export declare function compareBooleansOrUndefined(lhs?: boolean, rhs?: boolean): number;
44
+ /** Compare two possibly-undefined values for equality. If both are undefined, the comparison is performed by the supplied `areEqual` function.
45
+ * @public
46
+ */
47
+ export declare function areEqualPossiblyUndefined<T, U>(t: T | undefined, u: U | undefined, areEqual: (t: T, u: U) => boolean): boolean;
48
48
  //# sourceMappingURL=Compare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../src/Compare.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,oBAAY,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAErE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAOlF;AAED,cAAc;AACd,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,cAAc;AACd,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAE9D;AAED,cAAc;AACd,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,cAAc;AACd,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAOhH;AAED,cAAc;AACd,wBAAgB,yBAAyB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,cAAc;AACd,wBAAgB,yBAAyB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,cAAc;AACd,wBAAgB,0BAA0B,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAO9H"}
1
+ {"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../src/Compare.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAErE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAOlF;AAED,cAAc;AACd,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,cAAc;AACd,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAE9D;AAED,cAAc;AACd,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,cAAc;AACd,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAOhH;AAED,cAAc;AACd,wBAAgB,yBAAyB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,cAAc;AACd,wBAAgB,yBAAyB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,cAAc;AACd,wBAAgB,0BAA0B,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAO9H"}
@@ -1,64 +1,64 @@
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
- /** @packageDocumentation
6
- * @module Utils
7
- */
8
- /**
9
- * An [[OrderedComparator]] for numbers that treats two numbers as equal if the absolute value of their difference is less than a specified tolerance.
10
- * @public
11
- */
12
- export function compareWithTolerance(a, b, tolerance = 0.1) {
13
- if (a < b - tolerance)
14
- return -1;
15
- else if (a > b + tolerance)
16
- return 1;
17
- else
18
- return 0;
19
- }
20
- /** @public */
21
- export function compareNumbers(a, b) {
22
- return a - b;
23
- }
24
- /** @public */
25
- export function compareBooleans(a, b) {
26
- return a !== b ? (a < b ? -1 : 1) : 0;
27
- }
28
- /** @public */
29
- export function compareStrings(a, b) {
30
- return a === b ? 0 : (a < b ? -1 : 1);
31
- }
32
- /** @public */
33
- export function comparePossiblyUndefined(compareDefined, lhs, rhs) {
34
- if (undefined === lhs)
35
- return undefined === rhs ? 0 : -1;
36
- else if (undefined === rhs)
37
- return 1;
38
- else
39
- return compareDefined(lhs, rhs);
40
- }
41
- /** @public */
42
- export function compareStringsOrUndefined(lhs, rhs) {
43
- return comparePossiblyUndefined(compareStrings, lhs, rhs);
44
- }
45
- /** @public */
46
- export function compareNumbersOrUndefined(lhs, rhs) {
47
- return comparePossiblyUndefined(compareNumbers, lhs, rhs);
48
- }
49
- /** @public */
50
- export function compareBooleansOrUndefined(lhs, rhs) {
51
- return comparePossiblyUndefined(compareBooleans, lhs, rhs);
52
- }
53
- /** Compare two possibly-undefined values for equality. If both are undefined, the comparison is performed by the supplied `areEqual` function.
54
- * @public
55
- */
56
- export function areEqualPossiblyUndefined(t, u, areEqual) {
57
- if (undefined === t)
58
- return undefined === u;
59
- else if (undefined === u)
60
- return false;
61
- else
62
- return areEqual(t, u);
63
- }
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
+ /** @packageDocumentation
6
+ * @module Utils
7
+ */
8
+ /**
9
+ * An [[OrderedComparator]] for numbers that treats two numbers as equal if the absolute value of their difference is less than a specified tolerance.
10
+ * @public
11
+ */
12
+ export function compareWithTolerance(a, b, tolerance = 0.1) {
13
+ if (a < b - tolerance)
14
+ return -1;
15
+ else if (a > b + tolerance)
16
+ return 1;
17
+ else
18
+ return 0;
19
+ }
20
+ /** @public */
21
+ export function compareNumbers(a, b) {
22
+ return a - b;
23
+ }
24
+ /** @public */
25
+ export function compareBooleans(a, b) {
26
+ return a !== b ? (a < b ? -1 : 1) : 0;
27
+ }
28
+ /** @public */
29
+ export function compareStrings(a, b) {
30
+ return a === b ? 0 : (a < b ? -1 : 1);
31
+ }
32
+ /** @public */
33
+ export function comparePossiblyUndefined(compareDefined, lhs, rhs) {
34
+ if (undefined === lhs)
35
+ return undefined === rhs ? 0 : -1;
36
+ else if (undefined === rhs)
37
+ return 1;
38
+ else
39
+ return compareDefined(lhs, rhs);
40
+ }
41
+ /** @public */
42
+ export function compareStringsOrUndefined(lhs, rhs) {
43
+ return comparePossiblyUndefined(compareStrings, lhs, rhs);
44
+ }
45
+ /** @public */
46
+ export function compareNumbersOrUndefined(lhs, rhs) {
47
+ return comparePossiblyUndefined(compareNumbers, lhs, rhs);
48
+ }
49
+ /** @public */
50
+ export function compareBooleansOrUndefined(lhs, rhs) {
51
+ return comparePossiblyUndefined(compareBooleans, lhs, rhs);
52
+ }
53
+ /** Compare two possibly-undefined values for equality. If both are undefined, the comparison is performed by the supplied `areEqual` function.
54
+ * @public
55
+ */
56
+ export function areEqualPossiblyUndefined(t, u, areEqual) {
57
+ if (undefined === t)
58
+ return undefined === u;
59
+ else if (undefined === u)
60
+ return false;
61
+ else
62
+ return areEqual(t, u);
63
+ }
64
64
  //# sourceMappingURL=Compare.js.map