@itwin/core-common 3.0.0-dev.127 → 3.0.0-dev.131

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 (59) hide show
  1. package/lib/cjs/ConcurrentQuery.d.ts +27 -10
  2. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  3. package/lib/cjs/ConcurrentQuery.js +25 -11
  4. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  5. package/lib/cjs/ECSqlReader.d.ts +17 -5
  6. package/lib/cjs/ECSqlReader.d.ts.map +1 -1
  7. package/lib/cjs/ECSqlReader.js +55 -22
  8. package/lib/cjs/ECSqlReader.js.map +1 -1
  9. package/lib/cjs/NativeAppProps.d.ts +2 -36
  10. package/lib/cjs/NativeAppProps.d.ts.map +1 -1
  11. package/lib/cjs/NativeAppProps.js.map +1 -1
  12. package/lib/cjs/RenderSchedule.d.ts +4 -0
  13. package/lib/cjs/RenderSchedule.d.ts.map +1 -1
  14. package/lib/cjs/RenderSchedule.js +4 -0
  15. package/lib/cjs/RenderSchedule.js.map +1 -1
  16. package/lib/cjs/TileProps.d.ts +4 -0
  17. package/lib/cjs/TileProps.d.ts.map +1 -1
  18. package/lib/cjs/TileProps.js.map +1 -1
  19. package/lib/cjs/ViewFlags.d.ts.map +1 -1
  20. package/lib/cjs/ViewFlags.js +20 -6
  21. package/lib/cjs/ViewFlags.js.map +1 -1
  22. package/lib/cjs/geometry/FrustumPlanes.d.ts +1 -1
  23. package/lib/cjs/geometry/FrustumPlanes.d.ts.map +1 -1
  24. package/lib/cjs/geometry/FrustumPlanes.js +26 -13
  25. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  26. package/lib/cjs/tile/TileMetadata.d.ts +1 -4
  27. package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
  28. package/lib/cjs/tile/TileMetadata.js +11 -33
  29. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  30. package/lib/esm/ConcurrentQuery.d.ts +27 -10
  31. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  32. package/lib/esm/ConcurrentQuery.js +25 -11
  33. package/lib/esm/ConcurrentQuery.js.map +1 -1
  34. package/lib/esm/ECSqlReader.d.ts +17 -5
  35. package/lib/esm/ECSqlReader.d.ts.map +1 -1
  36. package/lib/esm/ECSqlReader.js +56 -23
  37. package/lib/esm/ECSqlReader.js.map +1 -1
  38. package/lib/esm/NativeAppProps.d.ts +2 -36
  39. package/lib/esm/NativeAppProps.d.ts.map +1 -1
  40. package/lib/esm/NativeAppProps.js.map +1 -1
  41. package/lib/esm/RenderSchedule.d.ts +4 -0
  42. package/lib/esm/RenderSchedule.d.ts.map +1 -1
  43. package/lib/esm/RenderSchedule.js +4 -0
  44. package/lib/esm/RenderSchedule.js.map +1 -1
  45. package/lib/esm/TileProps.d.ts +4 -0
  46. package/lib/esm/TileProps.d.ts.map +1 -1
  47. package/lib/esm/TileProps.js.map +1 -1
  48. package/lib/esm/ViewFlags.d.ts.map +1 -1
  49. package/lib/esm/ViewFlags.js +20 -6
  50. package/lib/esm/ViewFlags.js.map +1 -1
  51. package/lib/esm/geometry/FrustumPlanes.d.ts +1 -1
  52. package/lib/esm/geometry/FrustumPlanes.d.ts.map +1 -1
  53. package/lib/esm/geometry/FrustumPlanes.js +26 -13
  54. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  55. package/lib/esm/tile/TileMetadata.d.ts +1 -4
  56. package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
  57. package/lib/esm/tile/TileMetadata.js +12 -34
  58. package/lib/esm/tile/TileMetadata.js.map +1 -1
  59. package/package.json +7 -9
@@ -14,14 +14,14 @@ export declare enum QueryRowFormat {
14
14
  * Null values are omitted.
15
15
  */
16
16
  UseECSqlPropertyNames = 0,
17
- /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).
18
- * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.
19
- */
20
- UseJsPropertyNames = 1,
21
17
  /** Each row is an array of values accessed by an index corresponding to the property's position in the ECSql SELECT statement.
22
18
  * Null values are included if they are followed by a non-null column, but trailing null values at the end of the array are omitted.
23
19
  */
24
- UseArrayIndexes = 2
20
+ UseECSqlPropertyIndexes = 1,
21
+ /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).
22
+ * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.
23
+ */
24
+ UseJsPropertyNames = 2
25
25
  }
26
26
  /**
27
27
  * Specify limit or range of rows to return
@@ -40,7 +40,7 @@ export interface QueryPropertyMetaData {
40
40
  index: number;
41
41
  jsonName: string;
42
42
  name: string;
43
- system: boolean;
43
+ extendType: string;
44
44
  typeName: string;
45
45
  }
46
46
  /** @beta */
@@ -101,6 +101,10 @@ export interface QueryOptions extends BaseReaderOptions {
101
101
  * When true, XXXXClassId property will be returned as className.
102
102
  * */
103
103
  convertClassIdsToClassNames?: boolean;
104
+ /**
105
+ * Determine row format.
106
+ */
107
+ rowFormat?: QueryRowFormat;
104
108
  }
105
109
  /** @beta */
106
110
  export declare type BlobRange = QueryLimit;
@@ -121,6 +125,7 @@ export declare class QueryOptionsBuilder {
121
125
  setSuppressLogErrors(val: boolean): this;
122
126
  setConvertClassIdsToNames(val: boolean): this;
123
127
  setLimit(val: QueryLimit): this;
128
+ setRowFormat(val: QueryRowFormat): this;
124
129
  }
125
130
  /** @beta */
126
131
  export declare class BlobOptionsBuilder {
@@ -166,19 +171,31 @@ export declare enum DbResponseKind {
166
171
  }
167
172
  /** @internal */
168
173
  export declare enum DbResponseStatus {
169
- Error = 0,
170
174
  Done = 1,
171
175
  Cancel = 2,
172
176
  Partial = 3,
173
- TimeOut = 4,
174
- QueueFull = 5
177
+ Timeout = 4,
178
+ QueueFull = 5,
179
+ Error = 100,
180
+ Error_ECSql_PreparedFailed = 101,
181
+ Error_ECSql_StepFailed = 102,
182
+ Error_ECSql_RowToJsonFailed = 103,
183
+ Error_ECSql_BindingFailed = 104,
184
+ Error_BlobIO_OpenFailed = 105,
185
+ Error_BlobIO_OutOfRange = 106
186
+ }
187
+ /** @internal */
188
+ export declare enum DbValueFormat {
189
+ ECSqlNames = 0,
190
+ JsNames = 1
175
191
  }
176
192
  /** @internal */
177
193
  export interface DbRequest extends BaseReaderOptions {
178
- kind: DbRequestKind;
194
+ kind?: DbRequestKind;
179
195
  }
180
196
  /** @internal */
181
197
  export interface DbQueryRequest extends DbRequest, QueryOptions {
198
+ valueFormat?: DbValueFormat;
182
199
  query: string;
183
200
  args?: object;
184
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConcurrentQuery.d.ts","sourceRoot":"","sources":["../../src/ConcurrentQuery.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAqB,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;KAKK;AACL,oBAAY,cAAc;IACxB;;OAEG;IACH,qBAAqB,IAAA;IACrB;;OAEG;IACH,kBAAkB,IAAA;IAClB;;OAEG;IACH,eAAe,IAAA;CAChB;AACD;;;KAGK;AACL,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,YAAY;AACZ,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,YAAY;AACZ,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AACD;;;KAGK;AACL,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD;;;KAGK;AACL,MAAM,WAAW,iBAAiB;IAChC,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;MAEE;IACF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oGAAoG;IACpG,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AACD;;;KAGK;AACL,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD;;;SAGK;IACL,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;SAGK;IACL,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AACD,YAAY;AACZ,oBAAY,SAAS,GAAG,UAAU,CAAC;AAEnC,YAAY;AACZ,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,cAAc;AACd,qBAAa,mBAAmB;IACX,OAAO,CAAC,QAAQ;gBAAR,QAAQ,GAAE,YAAiB;IAC/C,UAAU,IAAI,YAAY;IAC1B,WAAW,CAAC,GAAG,EAAE,MAAM;IACvB,eAAe,CAAC,GAAG,EAAE,MAAM;IAC3B,QAAQ,CAAC,GAAG,EAAE,UAAU;IACxB,uBAAuB,CAAC,GAAG,EAAE,OAAO;IACpC,kBAAkB,CAAC,GAAG,EAAE,OAAO;IAC/B,oBAAoB,CAAC,GAAG,EAAE,OAAO;IACjC,yBAAyB,CAAC,GAAG,EAAE,OAAO;IACtC,QAAQ,CAAC,GAAG,EAAE,UAAU;CAChC;AACD,YAAY;AACZ,qBAAa,kBAAkB;IACV,OAAO,CAAC,QAAQ;gBAAR,QAAQ,GAAE,WAAgB;IAC9C,UAAU,IAAI,WAAW;IACzB,WAAW,CAAC,GAAG,EAAE,MAAM;IACvB,eAAe,CAAC,GAAG,EAAE,MAAM;IAC3B,QAAQ,CAAC,GAAG,EAAE,UAAU;IACxB,uBAAuB,CAAC,GAAG,EAAE,OAAO;IACpC,QAAQ,CAAC,GAAG,EAAE,SAAS;CAC/B;AAkBD,cAAc;AACd,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM;IAWP,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO;IAYtD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,UAAU;IAYtD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;IAWpD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,UAAU;IAWpD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,mBAAmB;IAWhE,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;IAWjD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;IAWpD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;IAWlD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;IAWpD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAWrC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO;IAWtD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO;IAW7D,OAAO,CAAC,MAAM,CAAC,IAAI;WAuBL,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW;IAiB1D,SAAS,IAAI,MAAM;CAC3B;AAED,gBAAgB;AAChB,oBAAY,aAAa;IACvB,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AACD,gBAAgB;AAChB,oBAAY,cAAc;IACxB,MAAM,IAAuB;IAC7B,KAAK,IAAsB;IAC3B,QAAQ,IAAI;CACb;AACD,gBAAgB;AAChB,oBAAY,gBAAgB;IAC1B,KAAK,IAAI;IACT,IAAI,IAAI;IACR,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,SAAS,IAAI;CACd;AACD,gBAAgB;AAChB,MAAM,WAAW,SAAU,SAAQ,iBAAiB;IAClD,IAAI,EAAE,aAAa,CAAC;CACrB;AACD,gBAAgB;AAChB,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,YAAY;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,gBAAgB;AAChB,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACxB;AACD,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,gBAAgB;AAChB,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,gBAAgB;AAChB,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,cAAc;AACd,qBAAa,YAAa,SAAQ,YAAY;aACT,QAAQ,EAAE,GAAG;aAAkB,OAAO,CAAC;gBAAvC,QAAQ,EAAE,GAAG,EAAkB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ;WAGhF,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG;CAQxD;AACD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,SAAS,EAAE,SAAS,SAAS,UAAU;IACzF,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAChD"}
1
+ {"version":3,"file":"ConcurrentQuery.d.ts","sourceRoot":"","sources":["../../src/ConcurrentQuery.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DbQueryError = exports.DbResponseStatus = exports.DbResponseKind = exports.DbRequestKind = exports.QueryBinder = exports.BlobOptionsBuilder = exports.QueryOptionsBuilder = exports.QueryRowFormat = void 0;
3
+ exports.DbQueryError = exports.DbValueFormat = exports.DbResponseStatus = exports.DbResponseKind = exports.DbRequestKind = exports.QueryBinder = exports.BlobOptionsBuilder = exports.QueryOptionsBuilder = exports.QueryRowFormat = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -22,14 +22,14 @@ var QueryRowFormat;
22
22
  * Null values are omitted.
23
23
  */
24
24
  QueryRowFormat[QueryRowFormat["UseECSqlPropertyNames"] = 0] = "UseECSqlPropertyNames";
25
- /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).
26
- * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.
27
- */
28
- QueryRowFormat[QueryRowFormat["UseJsPropertyNames"] = 1] = "UseJsPropertyNames";
29
25
  /** Each row is an array of values accessed by an index corresponding to the property's position in the ECSql SELECT statement.
30
26
  * Null values are included if they are followed by a non-null column, but trailing null values at the end of the array are omitted.
31
27
  */
32
- QueryRowFormat[QueryRowFormat["UseArrayIndexes"] = 2] = "UseArrayIndexes";
28
+ QueryRowFormat[QueryRowFormat["UseECSqlPropertyIndexes"] = 1] = "UseECSqlPropertyIndexes";
29
+ /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).
30
+ * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.
31
+ */
32
+ QueryRowFormat[QueryRowFormat["UseJsPropertyNames"] = 2] = "UseJsPropertyNames";
33
33
  })(QueryRowFormat = exports.QueryRowFormat || (exports.QueryRowFormat = {}));
34
34
  /** @public */
35
35
  class QueryOptionsBuilder {
@@ -45,6 +45,7 @@ class QueryOptionsBuilder {
45
45
  setSuppressLogErrors(val) { this._options.suppressLogErrors = val; return this; }
46
46
  setConvertClassIdsToNames(val) { this._options.convertClassIdsToClassNames = val; return this; }
47
47
  setLimit(val) { this._options.limit = val; return this; }
48
+ setRowFormat(val) { this._options.rowFormat = val; return this; }
48
49
  }
49
50
  exports.QueryOptionsBuilder = QueryOptionsBuilder;
50
51
  /** @beta */
@@ -143,10 +144,11 @@ class QueryBinder {
143
144
  bindIdSet(indexOrName, val) {
144
145
  this.verify(indexOrName);
145
146
  const name = String(indexOrName);
147
+ core_bentley_1.OrderedId64Iterable.uniqueIterator(val);
146
148
  Object.defineProperty(this._args, name, {
147
149
  enumerable: true, value: {
148
150
  type: QueryParamType.IdSet,
149
- value: core_bentley_1.CompressedId64Set.compressIds(val),
151
+ value: core_bentley_1.CompressedId64Set.sortAndCompress(core_bentley_1.OrderedId64Iterable.uniqueIterator(val)),
150
152
  },
151
153
  });
152
154
  return this;
@@ -247,7 +249,7 @@ class QueryBinder {
247
249
  else if (val instanceof core_geometry_1.Point3d) {
248
250
  params.bindPoint3d(nameOrId, val);
249
251
  }
250
- else if (val instanceof Set) {
252
+ else if (val instanceof Array && val.length > 0 && typeof val[0] === "string" && core_bentley_1.Id64.isValidId64(val[0])) {
251
253
  params.bindIdSet(nameOrId, val);
252
254
  }
253
255
  else if (typeof val === "object" && !Array.isArray(val)) {
@@ -296,13 +298,25 @@ var DbResponseKind;
296
298
  /** @internal */
297
299
  var DbResponseStatus;
298
300
  (function (DbResponseStatus) {
299
- DbResponseStatus[DbResponseStatus["Error"] = 0] = "Error";
300
301
  DbResponseStatus[DbResponseStatus["Done"] = 1] = "Done";
301
302
  DbResponseStatus[DbResponseStatus["Cancel"] = 2] = "Cancel";
302
303
  DbResponseStatus[DbResponseStatus["Partial"] = 3] = "Partial";
303
- DbResponseStatus[DbResponseStatus["TimeOut"] = 4] = "TimeOut";
304
+ DbResponseStatus[DbResponseStatus["Timeout"] = 4] = "Timeout";
304
305
  DbResponseStatus[DbResponseStatus["QueueFull"] = 5] = "QueueFull";
306
+ DbResponseStatus[DbResponseStatus["Error"] = 100] = "Error";
307
+ DbResponseStatus[DbResponseStatus["Error_ECSql_PreparedFailed"] = 101] = "Error_ECSql_PreparedFailed";
308
+ DbResponseStatus[DbResponseStatus["Error_ECSql_StepFailed"] = 102] = "Error_ECSql_StepFailed";
309
+ DbResponseStatus[DbResponseStatus["Error_ECSql_RowToJsonFailed"] = 103] = "Error_ECSql_RowToJsonFailed";
310
+ DbResponseStatus[DbResponseStatus["Error_ECSql_BindingFailed"] = 104] = "Error_ECSql_BindingFailed";
311
+ DbResponseStatus[DbResponseStatus["Error_BlobIO_OpenFailed"] = 105] = "Error_BlobIO_OpenFailed";
312
+ DbResponseStatus[DbResponseStatus["Error_BlobIO_OutOfRange"] = 106] = "Error_BlobIO_OutOfRange";
305
313
  })(DbResponseStatus = exports.DbResponseStatus || (exports.DbResponseStatus = {}));
314
+ /** @internal */
315
+ var DbValueFormat;
316
+ (function (DbValueFormat) {
317
+ DbValueFormat[DbValueFormat["ECSqlNames"] = 0] = "ECSqlNames";
318
+ DbValueFormat[DbValueFormat["JsNames"] = 1] = "JsNames";
319
+ })(DbValueFormat = exports.DbValueFormat || (exports.DbValueFormat = {}));
306
320
  /** @public */
307
321
  class DbQueryError extends core_bentley_1.BentleyError {
308
322
  constructor(response, request, rc) {
@@ -311,7 +325,7 @@ class DbQueryError extends core_bentley_1.BentleyError {
311
325
  this.request = request;
312
326
  }
313
327
  static throwIfError(response, request) {
314
- if (response.status === DbResponseStatus.Error) {
328
+ if (response.status >= DbResponseStatus.Error) {
315
329
  throw new DbQueryError(response, request);
316
330
  }
317
331
  if (response.status === DbResponseStatus.Cancel) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConcurrentQuery.js","sourceRoot":"","sources":["../../src/ConcurrentQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\nimport { BentleyError, CompressedId64Set, DbResult, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\n\r\n/**\r\n * Specifies the format of the rows returned by the `query` and `restartQuery` methods of\r\n * [IModelConnection]($frontend), [IModelDb]($backend), and [ECDb]($backend).\r\n *\r\n * @public\r\n * */\r\nexport enum QueryRowFormat {\r\n /** Each row is an object in which each non-null column value can be accessed by its name as defined in the ECSql.\r\n * Null values are omitted.\r\n */\r\n UseECSqlPropertyNames,\r\n /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).\r\n * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.\r\n */\r\n UseJsPropertyNames,\r\n /** Each row is an array of values accessed by an index corresponding to the property's position in the ECSql SELECT statement.\r\n * Null values are included if they are followed by a non-null column, but trailing null values at the end of the array are omitted.\r\n */\r\n UseArrayIndexes,\r\n}\r\n/**\r\n * Specify limit or range of rows to return\r\n * @public\r\n * */\r\nexport interface QueryLimit {\r\n /** Number of rows to return */\r\n count?: number;\r\n /** Offset from which to return rows */\r\n offset?: number;\r\n}\r\n/** @beta */\r\nexport interface QueryPropertyMetaData {\r\n className: string;\r\n generated: boolean;\r\n index: number;\r\n jsonName: string;\r\n name: string;\r\n system: boolean;\r\n typeName: string;\r\n}\r\n/** @beta */\r\nexport interface DbRuntimeStats {\r\n cpuTime: number;\r\n totalTime: number;\r\n timeLimit: number;\r\n memLimit: number;\r\n memUsed: number;\r\n}\r\n/**\r\n * Quota hint for the query.\r\n * @public\r\n * */\r\nexport interface QueryQuota {\r\n /** Max time allowed in seconds. This is hint and may not be honoured but help in prioritize request */\r\n time?: number;\r\n /** Max memory allowed in bytes. This is hint and may not be honoured but help in prioritize request */\r\n memory?: number;\r\n}\r\n/**\r\n * Config for all request made to concurrent query engine.\r\n * @public\r\n * */\r\nexport interface BaseReaderOptions {\r\n /** Determine priority of this query default to 0, used as hint and can be overriden by backend. */\r\n priority?: number;\r\n /** If specified cancel last query (if any) with same restart token and queue the new query */\r\n restartToken?: string;\r\n /** For editing apps this can be set to true and all query will run on primary connection\r\n * his may cause slow queries execution but the most recent data changes will be visitable via query\r\n */\r\n usePrimaryConn?: boolean;\r\n /** Restrict time or memory for query but use as hint and may be changed base on backend settings */\r\n quota?: QueryQuota;\r\n}\r\n/**\r\n * ECSql query config\r\n * @public\r\n * */\r\nexport interface QueryOptions extends BaseReaderOptions {\r\n /**\r\n * default to false. It abbreviate blobs to single bytes. This help cases where wildcard is\r\n * used in select clause. Use BlobReader api to read individual blob specially if its of large size.\r\n * */\r\n abbreviateBlobs?: boolean;\r\n /**\r\n * default to false. It will suppress error and will not log it. Useful in cases where we expect query\r\n * can fail.\r\n */\r\n suppressLogErrors?: boolean;\r\n /** This is used internally. If true it query will return meta data about query. */\r\n includeMetaData?: boolean;\r\n /** Limit range of rows returned by query*/\r\n limit?: QueryLimit;\r\n /**\r\n * Convert ECClassId, SourceECClassId, TargetECClassId and RelClassId to respective name.\r\n * When true, XXXXClassId property will be returned as className.\r\n * */\r\n convertClassIdsToClassNames?: boolean;\r\n}\r\n/** @beta */\r\nexport type BlobRange = QueryLimit;\r\n\r\n/** @beta */\r\nexport interface BlobOptions extends BaseReaderOptions {\r\n range?: BlobRange;\r\n}\r\n\r\n/** @public */\r\nexport class QueryOptionsBuilder {\r\n public constructor(private _options: QueryOptions = {}) { }\r\n public getOptions(): QueryOptions { return this._options; }\r\n public setPriority(val: number) { this._options.priority = val; return this; }\r\n public setRestartToken(val: string) { this._options.restartToken = val; return this; }\r\n public setQuota(val: QueryQuota) { this._options.quota = val; return this; }\r\n public setUsePrimaryConnection(val: boolean) { this._options.usePrimaryConn = val; return this; }\r\n public setAbbreviateBlobs(val: boolean) { this._options.abbreviateBlobs = val; return this; }\r\n public setSuppressLogErrors(val: boolean) { this._options.suppressLogErrors = val; return this; }\r\n public setConvertClassIdsToNames(val: boolean) { this._options.convertClassIdsToClassNames = val; return this; }\r\n public setLimit(val: QueryLimit) { this._options.limit = val; return this; }\r\n}\r\n/** @beta */\r\nexport class BlobOptionsBuilder {\r\n public constructor(private _options: BlobOptions = {}) { }\r\n public getOptions(): BlobOptions { return this._options; }\r\n public setPriority(val: number) { this._options.priority = val; return this; }\r\n public setRestartToken(val: string) { this._options.restartToken = val; return this; }\r\n public setQuota(val: QueryQuota) { this._options.quota = val; return this; }\r\n public setUsePrimaryConnection(val: boolean) { this._options.usePrimaryConn = val; return this; }\r\n public setRange(val: BlobRange) { this._options.range = val; return this; }\r\n}\r\n/** @internal */\r\nenum QueryParamType {\r\n Boolean = 0,\r\n Double = 1,\r\n Id = 2,\r\n IdSet = 3,\r\n Integer = 4,\r\n Long = 5,\r\n Null = 6,\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Point2d = 7,\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Point3d = 8,\r\n String = 9,\r\n Blob = 10,\r\n Struct = 11,\r\n}\r\n/** @public */\r\nexport class QueryBinder {\r\n private _args = {};\r\n private verify(indexOrName: string | number) {\r\n if (typeof indexOrName === \"number\") {\r\n if (indexOrName < 1)\r\n throw new Error(\"expect index to be >= 1\");\r\n }\r\n if (typeof indexOrName === \"string\") {\r\n if (!/^[a-zA-Z_]+\\w*$/i.test(indexOrName)) {\r\n throw new Error(\"expect named parameter to meet identifier specification\");\r\n }\r\n }\r\n }\r\n public bindBoolean(indexOrName: string | number, val: boolean) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true,\r\n value: {\r\n type: QueryParamType.Boolean,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindBlob(indexOrName: string | number, val: Uint8Array) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n const base64 = Buffer.from(val).toString(\"base64\");\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Blob,\r\n value: base64,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindDouble(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Double,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindId(indexOrName: string | number, val: Id64String) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Id,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindIdSet(indexOrName: string | number, val: OrderedId64Iterable) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.IdSet,\r\n value: CompressedId64Set.compressIds(val),\r\n },\r\n });\r\n return this;\r\n }\r\n public bindInt(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Integer,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindStruct(indexOrName: string | number, val: object) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Struct,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindLong(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Long,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindString(indexOrName: string | number, val: string) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.String,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindNull(indexOrName: string | number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Null,\r\n value: null,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindPoint2d(indexOrName: string | number, val: Point2d) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Point2d,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindPoint3d(indexOrName: string | number, val: Point3d) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Point3d,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n private static bind(params: QueryBinder, nameOrId: string | number, val: any) {\r\n if (typeof val === \"boolean\") {\r\n params.bindBoolean(nameOrId, val);\r\n } else if (typeof val === \"number\") {\r\n params.bindDouble(nameOrId, val);\r\n } else if (typeof val === \"string\") {\r\n params.bindString(nameOrId, val);\r\n } else if (val instanceof Uint8Array) {\r\n params.bindBlob(nameOrId, val);\r\n } else if (val instanceof Point2d) {\r\n params.bindPoint2d(nameOrId, val);\r\n } else if (val instanceof Point3d) {\r\n params.bindPoint3d(nameOrId, val);\r\n } else if (val instanceof Set) {\r\n params.bindIdSet(nameOrId, val);\r\n } else if (typeof val === \"object\" && !Array.isArray(val)) {\r\n params.bindStruct(nameOrId, val);\r\n } else if (typeof val === \"undefined\" || val === null) {\r\n params.bindNull(nameOrId);\r\n } else {\r\n throw new Error(\"unsupported type\");\r\n }\r\n }\r\n public static from(args: any[] | object | undefined): QueryBinder {\r\n const params = new QueryBinder();\r\n if (typeof args === \"undefined\")\r\n return params;\r\n\r\n if (Array.isArray(args)) {\r\n let i = 1;\r\n for (const val of args) {\r\n this.bind(params, i++, val);\r\n }\r\n } else {\r\n for (const prop of Object.getOwnPropertyNames(args)) {\r\n this.bind(params, prop, (args as any)[prop]);\r\n }\r\n }\r\n return params;\r\n }\r\n public serialize(): object { return this._args; }\r\n}\r\n\r\n/** @internal */\r\nexport enum DbRequestKind {\r\n BlobIO = 0,\r\n ECSql = 1\r\n}\r\n/** @internal */\r\nexport enum DbResponseKind {\r\n BlobIO = DbRequestKind.BlobIO,\r\n ECSql = DbRequestKind.ECSql,\r\n NoResult = 2\r\n}\r\n/** @internal */\r\nexport enum DbResponseStatus {\r\n Error = 0,\r\n Done = 1,\r\n Cancel = 2,\r\n Partial = 3,\r\n TimeOut = 4,\r\n QueueFull = 5\r\n}\r\n/** @internal */\r\nexport interface DbRequest extends BaseReaderOptions {\r\n kind: DbRequestKind;\r\n}\r\n/** @internal */\r\nexport interface DbQueryRequest extends DbRequest, QueryOptions {\r\n query: string;\r\n args?: object;\r\n}\r\n/** @internal */\r\nexport interface DbBlobRequest extends DbRequest, BlobOptions {\r\n className: string;\r\n accessString: string;\r\n instanceId: Id64String;\r\n}\r\n/** @internal */\r\nexport interface DbResponse {\r\n stats: DbRuntimeStats;\r\n status: DbResponseStatus;\r\n kind: DbResponseKind;\r\n error?: string;\r\n}\r\n/** @internal */\r\nexport interface DbQueryResponse extends DbResponse {\r\n meta: QueryPropertyMetaData[];\r\n data: any[];\r\n rowCount: number;\r\n}\r\n/** @internal */\r\nexport interface DbBlobResponse extends DbResponse {\r\n data?: Uint8Array;\r\n rawBlobSize: number;\r\n}\r\n/** @public */\r\nexport class DbQueryError extends BentleyError {\r\n public constructor(public readonly response: any, public readonly request?: any, rc?: DbResult) {\r\n super(rc ?? DbResult.BE_SQLITE_ERROR, response.error, { response, request });\r\n }\r\n public static throwIfError(response: any, request?: any) {\r\n if (response.status === DbResponseStatus.Error) {\r\n throw new DbQueryError(response, request);\r\n }\r\n if (response.status === DbResponseStatus.Cancel) {\r\n throw new DbQueryError(response, request, DbResult.BE_SQLITE_INTERRUPT);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport interface DbRequestExecutor<TRequest extends DbRequest, TResponse extends DbResponse> {\r\n execute(request: TRequest): Promise<TResponse>;\r\n}\r\n"]}
1
+ {"version":3,"file":"ConcurrentQuery.js","sourceRoot":"","sources":["../../src/ConcurrentQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\nimport { BentleyError, CompressedId64Set, DbResult, Id64, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\n\r\n/**\r\n * Specifies the format of the rows returned by the `query` and `restartQuery` methods of\r\n * [IModelConnection]($frontend), [IModelDb]($backend), and [ECDb]($backend).\r\n *\r\n * @public\r\n * */\r\nexport enum QueryRowFormat {\r\n /** Each row is an object in which each non-null column value can be accessed by its name as defined in the ECSql.\r\n * Null values are omitted.\r\n */\r\n UseECSqlPropertyNames,\r\n /** Each row is an array of values accessed by an index corresponding to the property's position in the ECSql SELECT statement.\r\n * Null values are included if they are followed by a non-null column, but trailing null values at the end of the array are omitted.\r\n */\r\n UseECSqlPropertyIndexes,\r\n /** Each row is an object in which each non-null column value can be accessed by a [remapped property name]($docs/learning/ECSqlRowFormat.md).\r\n * This format is backwards-compatible with the format produced by iModel.js version 2.x. Null values are omitted.\r\n */\r\n UseJsPropertyNames,\r\n}\r\n/**\r\n * Specify limit or range of rows to return\r\n * @public\r\n * */\r\nexport interface QueryLimit {\r\n /** Number of rows to return */\r\n count?: number;\r\n /** Offset from which to return rows */\r\n offset?: number;\r\n}\r\n/** @beta */\r\nexport interface QueryPropertyMetaData {\r\n className: string;\r\n generated: boolean;\r\n index: number;\r\n jsonName: string;\r\n name: string;\r\n extendType: string;\r\n typeName: string;\r\n}\r\n/** @beta */\r\nexport interface DbRuntimeStats {\r\n cpuTime: number;\r\n totalTime: number;\r\n timeLimit: number;\r\n memLimit: number;\r\n memUsed: number;\r\n}\r\n/**\r\n * Quota hint for the query.\r\n * @public\r\n * */\r\nexport interface QueryQuota {\r\n /** Max time allowed in seconds. This is hint and may not be honoured but help in prioritize request */\r\n time?: number;\r\n /** Max memory allowed in bytes. This is hint and may not be honoured but help in prioritize request */\r\n memory?: number;\r\n}\r\n/**\r\n * Config for all request made to concurrent query engine.\r\n * @public\r\n * */\r\nexport interface BaseReaderOptions {\r\n /** Determine priority of this query default to 0, used as hint and can be overriden by backend. */\r\n priority?: number;\r\n /** If specified cancel last query (if any) with same restart token and queue the new query */\r\n restartToken?: string;\r\n /** For editing apps this can be set to true and all query will run on primary connection\r\n * his may cause slow queries execution but the most recent data changes will be visitable via query\r\n */\r\n usePrimaryConn?: boolean;\r\n /** Restrict time or memory for query but use as hint and may be changed base on backend settings */\r\n quota?: QueryQuota;\r\n}\r\n/**\r\n * ECSql query config\r\n * @public\r\n * */\r\nexport interface QueryOptions extends BaseReaderOptions {\r\n /**\r\n * default to false. It abbreviate blobs to single bytes. This help cases where wildcard is\r\n * used in select clause. Use BlobReader api to read individual blob specially if its of large size.\r\n * */\r\n abbreviateBlobs?: boolean;\r\n /**\r\n * default to false. It will suppress error and will not log it. Useful in cases where we expect query\r\n * can fail.\r\n */\r\n suppressLogErrors?: boolean;\r\n /** This is used internally. If true it query will return meta data about query. */\r\n includeMetaData?: boolean;\r\n /** Limit range of rows returned by query*/\r\n limit?: QueryLimit;\r\n /**\r\n * Convert ECClassId, SourceECClassId, TargetECClassId and RelClassId to respective name.\r\n * When true, XXXXClassId property will be returned as className.\r\n * */\r\n convertClassIdsToClassNames?: boolean;\r\n /**\r\n * Determine row format.\r\n */\r\n rowFormat?: QueryRowFormat;\r\n}\r\n/** @beta */\r\nexport type BlobRange = QueryLimit;\r\n\r\n/** @beta */\r\nexport interface BlobOptions extends BaseReaderOptions {\r\n range?: BlobRange;\r\n}\r\n\r\n/** @public */\r\nexport class QueryOptionsBuilder {\r\n public constructor(private _options: QueryOptions = {}) { }\r\n public getOptions(): QueryOptions { return this._options; }\r\n public setPriority(val: number) { this._options.priority = val; return this; }\r\n public setRestartToken(val: string) { this._options.restartToken = val; return this; }\r\n public setQuota(val: QueryQuota) { this._options.quota = val; return this; }\r\n public setUsePrimaryConnection(val: boolean) { this._options.usePrimaryConn = val; return this; }\r\n public setAbbreviateBlobs(val: boolean) { this._options.abbreviateBlobs = val; return this; }\r\n public setSuppressLogErrors(val: boolean) { this._options.suppressLogErrors = val; return this; }\r\n public setConvertClassIdsToNames(val: boolean) { this._options.convertClassIdsToClassNames = val; return this; }\r\n public setLimit(val: QueryLimit) { this._options.limit = val; return this; }\r\n public setRowFormat(val: QueryRowFormat){ this._options.rowFormat = val; return this; }\r\n}\r\n/** @beta */\r\nexport class BlobOptionsBuilder {\r\n public constructor(private _options: BlobOptions = {}) { }\r\n public getOptions(): BlobOptions { return this._options; }\r\n public setPriority(val: number) { this._options.priority = val; return this; }\r\n public setRestartToken(val: string) { this._options.restartToken = val; return this; }\r\n public setQuota(val: QueryQuota) { this._options.quota = val; return this; }\r\n public setUsePrimaryConnection(val: boolean) { this._options.usePrimaryConn = val; return this; }\r\n public setRange(val: BlobRange) { this._options.range = val; return this; }\r\n}\r\n/** @internal */\r\nenum QueryParamType {\r\n Boolean = 0,\r\n Double = 1,\r\n Id = 2,\r\n IdSet = 3,\r\n Integer = 4,\r\n Long = 5,\r\n Null = 6,\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Point2d = 7,\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Point3d = 8,\r\n String = 9,\r\n Blob = 10,\r\n Struct = 11,\r\n}\r\n/** @public */\r\nexport class QueryBinder {\r\n private _args = {};\r\n private verify(indexOrName: string | number) {\r\n if (typeof indexOrName === \"number\") {\r\n if (indexOrName < 1)\r\n throw new Error(\"expect index to be >= 1\");\r\n }\r\n if (typeof indexOrName === \"string\") {\r\n if (!/^[a-zA-Z_]+\\w*$/i.test(indexOrName)) {\r\n throw new Error(\"expect named parameter to meet identifier specification\");\r\n }\r\n }\r\n }\r\n public bindBoolean(indexOrName: string | number, val: boolean) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true,\r\n value: {\r\n type: QueryParamType.Boolean,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindBlob(indexOrName: string | number, val: Uint8Array) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n const base64 = Buffer.from(val).toString(\"base64\");\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Blob,\r\n value: base64,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindDouble(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Double,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindId(indexOrName: string | number, val: Id64String) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Id,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindIdSet(indexOrName: string | number, val: OrderedId64Iterable) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n OrderedId64Iterable.uniqueIterator(val);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.IdSet,\r\n value: CompressedId64Set.sortAndCompress(OrderedId64Iterable.uniqueIterator(val)),\r\n },\r\n });\r\n return this;\r\n }\r\n public bindInt(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Integer,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindStruct(indexOrName: string | number, val: object) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Struct,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindLong(indexOrName: string | number, val: number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Long,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindString(indexOrName: string | number, val: string) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.String,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindNull(indexOrName: string | number) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Null,\r\n value: null,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindPoint2d(indexOrName: string | number, val: Point2d) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Point2d,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n public bindPoint3d(indexOrName: string | number, val: Point3d) {\r\n this.verify(indexOrName);\r\n const name = String(indexOrName);\r\n Object.defineProperty(this._args, name, {\r\n enumerable: true, value: {\r\n type: QueryParamType.Point3d,\r\n value: val,\r\n },\r\n });\r\n return this;\r\n }\r\n private static bind(params: QueryBinder, nameOrId: string | number, val: any) {\r\n if (typeof val === \"boolean\") {\r\n params.bindBoolean(nameOrId, val);\r\n } else if (typeof val === \"number\") {\r\n params.bindDouble(nameOrId, val);\r\n } else if (typeof val === \"string\") {\r\n params.bindString(nameOrId, val);\r\n } else if (val instanceof Uint8Array) {\r\n params.bindBlob(nameOrId, val);\r\n } else if (val instanceof Point2d) {\r\n params.bindPoint2d(nameOrId, val);\r\n } else if (val instanceof Point3d) {\r\n params.bindPoint3d(nameOrId, val);\r\n } else if (val instanceof Array && val.length > 0 && typeof val[0] === \"string\" && Id64.isValidId64(val[0])) {\r\n params.bindIdSet(nameOrId, val);\r\n } else if (typeof val === \"object\" && !Array.isArray(val)) {\r\n params.bindStruct(nameOrId, val);\r\n } else if (typeof val === \"undefined\" || val === null) {\r\n params.bindNull(nameOrId);\r\n } else {\r\n throw new Error(\"unsupported type\");\r\n }\r\n }\r\n public static from(args: any[] | object | undefined): QueryBinder {\r\n const params = new QueryBinder();\r\n if (typeof args === \"undefined\")\r\n return params;\r\n\r\n if (Array.isArray(args)) {\r\n let i = 1;\r\n for (const val of args) {\r\n this.bind(params, i++, val);\r\n }\r\n } else {\r\n for (const prop of Object.getOwnPropertyNames(args)) {\r\n this.bind(params, prop, (args as any)[prop]);\r\n }\r\n }\r\n return params;\r\n }\r\n public serialize(): object { return this._args; }\r\n}\r\n\r\n/** @internal */\r\nexport enum DbRequestKind {\r\n BlobIO = 0,\r\n ECSql = 1\r\n}\r\n/** @internal */\r\nexport enum DbResponseKind {\r\n BlobIO = DbRequestKind.BlobIO,\r\n ECSql = DbRequestKind.ECSql,\r\n NoResult = 2\r\n}\r\n/** @internal */\r\nexport enum DbResponseStatus {\r\n Done = 1, /* query ran to completion. */\r\n Cancel = 2, /* Requested by user.*/\r\n Partial = 3, /* query was running but ran out of quota.*/\r\n Timeout = 4, /* query time quota expired while it was in queue.*/\r\n QueueFull = 5, /* could not submit the query as queue was full.*/\r\n Error = 100, /* generic error*/\r\n Error_ECSql_PreparedFailed = Error + 1, /* ecsql prepared failed*/\r\n Error_ECSql_StepFailed = Error + 2, /* ecsql step failed*/\r\n Error_ECSql_RowToJsonFailed = Error + 3, /* ecsql failed to serialized row to json.*/\r\n Error_ECSql_BindingFailed = Error + 4, /* ecsql binding failed.*/\r\n Error_BlobIO_OpenFailed = Error + 5, /* class or property or instance specified was not found or property as not of type blob.*/\r\n Error_BlobIO_OutOfRange = Error + 6, /* range specified is invalid based on size of blob.*/\r\n}\r\n/** @internal */\r\nexport enum DbValueFormat {\r\n ECSqlNames = 0,\r\n JsNames = 1\r\n}\r\n/** @internal */\r\nexport interface DbRequest extends BaseReaderOptions {\r\n kind?: DbRequestKind;\r\n}\r\n/** @internal */\r\nexport interface DbQueryRequest extends DbRequest, QueryOptions {\r\n valueFormat?: DbValueFormat;\r\n query: string;\r\n args?: object;\r\n}\r\n/** @internal */\r\nexport interface DbBlobRequest extends DbRequest, BlobOptions {\r\n className: string;\r\n accessString: string;\r\n instanceId: Id64String;\r\n}\r\n/** @internal */\r\nexport interface DbResponse {\r\n stats: DbRuntimeStats;\r\n status: DbResponseStatus;\r\n kind: DbResponseKind;\r\n error?: string;\r\n}\r\n/** @internal */\r\nexport interface DbQueryResponse extends DbResponse {\r\n meta: QueryPropertyMetaData[];\r\n data: any[];\r\n rowCount: number;\r\n}\r\n/** @internal */\r\nexport interface DbBlobResponse extends DbResponse {\r\n data?: Uint8Array;\r\n rawBlobSize: number;\r\n}\r\n/** @public */\r\nexport class DbQueryError extends BentleyError {\r\n public constructor(public readonly response: any, public readonly request?: any, rc?: DbResult) {\r\n super(rc ?? DbResult.BE_SQLITE_ERROR, response.error, { response, request });\r\n }\r\n public static throwIfError(response: any, request?: any) {\r\n if ((response.status as number) >= (DbResponseStatus.Error as number)) {\r\n throw new DbQueryError(response, request);\r\n }\r\n if (response.status === DbResponseStatus.Cancel) {\r\n throw new DbQueryError(response, request, DbResult.BE_SQLITE_INTERRUPT);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport interface DbRequestExecutor<TRequest extends DbRequest, TResponse extends DbResponse> {\r\n execute(request: TRequest): Promise<TResponse>;\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { DbQueryRequest, DbQueryResponse, DbRequestExecutor, QueryBinder, QueryOptions, QueryPropertyMetaData, QueryRowFormat } from "./ConcurrentQuery";
1
+ import { DbQueryRequest, DbQueryResponse, DbRequestExecutor, QueryBinder, QueryOptions, QueryPropertyMetaData } from "./ConcurrentQuery";
2
2
  /** @beta */
3
3
  export declare class PropertyMetaDataMap implements Iterable<QueryPropertyMetaData> {
4
4
  readonly properties: QueryPropertyMetaData[];
@@ -18,7 +18,6 @@ export declare class PropertyMetaDataMap implements Iterable<QueryPropertyMetaDa
18
18
  export declare type QueryValueType = any;
19
19
  /** @beta */
20
20
  export interface QueryRowProxy {
21
- toJsRow(): any;
22
21
  toRow(): any;
23
22
  toArray(): QueryValueType[];
24
23
  getMetaData(): QueryPropertyMetaData[];
@@ -26,9 +25,19 @@ export interface QueryRowProxy {
26
25
  [propertyIndex: number]: QueryValueType;
27
26
  }
28
27
  /** @beta */
28
+ export interface QueryStats {
29
+ backendCpuTime: number;
30
+ backendTotalTime: number;
31
+ backendMemUsed: number;
32
+ backendRowsReturned: number;
33
+ totalTime: number;
34
+ retryCount: number;
35
+ }
36
+ /** @beta */
29
37
  export declare class ECSqlReader {
30
38
  private _executor;
31
39
  readonly query: string;
40
+ private static readonly _maxRetryCount;
32
41
  private _localRows;
33
42
  private _localOffset;
34
43
  private _globalOffset;
@@ -38,6 +47,7 @@ export declare class ECSqlReader {
38
47
  private _props;
39
48
  private _param;
40
49
  private _lockArgs;
50
+ private _stats;
41
51
  private _rowProxy;
42
52
  private _options;
43
53
  /** @internal */
@@ -49,11 +59,13 @@ export declare class ECSqlReader {
49
59
  resetBindings(): void;
50
60
  get done(): boolean;
51
61
  getRowInternal(): any[];
62
+ get stats(): QueryStats;
52
63
  private readRows;
53
64
  private runWithRetry;
54
- formatCurrentRow(format: QueryRowFormat): any[] | object;
55
- getMetaData(): QueryPropertyMetaData[];
65
+ formatCurrentRow(onlyReturnObject?: boolean): any[] | object;
66
+ getMetaData(): Promise<QueryPropertyMetaData[]>;
67
+ private fetchRows;
56
68
  step(): Promise<boolean>;
57
- toArray(format: QueryRowFormat): Promise<any[]>;
69
+ toArray(): Promise<any[]>;
58
70
  }
59
71
  //# sourceMappingURL=ECSqlReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlReader.d.ts","sourceRoot":"","sources":["../../src/ECSqlReader.ts"],"names":[],"mappings":"AAQA,OAAO,EACS,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAmC,WAAW,EAAE,YAAY,EAC5H,qBAAqB,EAAE,cAAc,EACtC,MAAM,mBAAmB,CAAC;AAE3B,YAAY;AACZ,qBAAa,mBAAoB,YAAW,QAAQ,CAAC,qBAAqB,CAAC;aAItC,UAAU,EAAE,qBAAqB,EAAE;IAHtE,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,SAAS,CAA6B;gBACX,UAAU,EAAE,qBAAqB,EAAE;IAQtE,IAAW,MAAM,IAAI,MAAM,CAAmC;IAEvD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE,SAAS,CAAC;IAGpE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAO3D,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAO/D,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;CAOrE;AACD;;EAEE;AACF,oBAAY,cAAc,GAAG,GAAG,CAAC;AAEjC,YAAY;AACZ,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,GAAG,CAAC;IACf,KAAK,IAAI,GAAG,CAAC;IACb,OAAO,IAAI,cAAc,EAAE,CAAC;IAC5B,WAAW,IAAI,qBAAqB,EAAE,CAAC;IACvC,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAAC;IACvC,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;CACzC;AACD,YAAY;AACZ,qBAAa,WAAW;IAiDH,OAAO,CAAC,SAAS;aAAsE,KAAK,EAAE,MAAM;IAhDvH,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAoCd;IACH,OAAO,CAAC,QAAQ,CAAwD;IACxE,gBAAgB;gBACW,SAAS,EAAE,iBAAiB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAkB,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY;IASpK,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAYnC,SAAS,CAAC,KAAK,EAAE,WAAW;IAM5B,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY;IAiBnC,IAAW,OAAO,IAAI,aAAa,CAAoC;IAChE,aAAa;IAIpB,IAAW,IAAI,IAAI,OAAO,CAAuB;IAC1C,cAAc,IAAI,GAAG,EAAE;YAKhB,QAAQ;YA4BR,YAAY;IAanB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,GAAG,EAAE,GAAG,MAAM;IAiBxD,WAAW,IAAI,qBAAqB,EAAE;IAChC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBxB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CAO7D"}
1
+ {"version":3,"file":"ECSqlReader.d.ts","sourceRoot":"","sources":["../../src/ECSqlReader.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,7 @@ class ECSqlReader {
66
66
  this._props = new PropertyMetaDataMap([]);
67
67
  this._param = new ConcurrentQuery_1.QueryBinder().serialize();
68
68
  this._lockArgs = false;
69
+ this._stats = { backendCpuTime: 0, backendTotalTime: 0, backendMemUsed: 0, backendRowsReturned: 0, totalTime: 0, retryCount: 0 };
69
70
  this._rowProxy = new Proxy(this, {
70
71
  get: (target, key) => {
71
72
  if (typeof key === "string") {
@@ -81,10 +82,7 @@ class ECSqlReader {
81
82
  return () => target._props.properties;
82
83
  }
83
84
  if (key === "toRow") {
84
- return () => target.formatCurrentRow(ConcurrentQuery_1.QueryRowFormat.UseECSqlPropertyNames);
85
- }
86
- if (key === "toJsRow") {
87
- return () => target.formatCurrentRow(ConcurrentQuery_1.QueryRowFormat.UseJsPropertyNames);
85
+ return () => target.formatCurrentRow(true);
88
86
  }
89
87
  if (key === "getArray" || key === "toJSON") {
90
88
  return () => this.getRowInternal();
@@ -140,6 +138,8 @@ class ECSqlReader {
140
138
  this._globalDone = false;
141
139
  this._globalOffset = 0;
142
140
  this._globalCount = -1;
141
+ if (typeof this._options.rowFormat === "undefined")
142
+ this._options.rowFormat = ConcurrentQuery_1.QueryRowFormat.UseECSqlPropertyIndexes;
143
143
  if (this._options.limit) {
144
144
  if (typeof this._options.limit.offset === "number" && this._options.limit.offset > 0)
145
145
  this._globalOffset = this._options.limit.offset;
@@ -149,16 +149,20 @@ class ECSqlReader {
149
149
  this._done = false;
150
150
  }
151
151
  get current() { return this._rowProxy; }
152
+ // clear all bindings
152
153
  resetBindings() {
153
154
  this._param = new ConcurrentQuery_1.QueryBinder().serialize();
154
155
  this._lockArgs = false;
155
156
  }
157
+ // return if there is any more rows available
156
158
  get done() { return this._done; }
157
159
  getRowInternal() {
158
160
  if (this._localRows.length <= this._localOffset)
159
161
  throw new Error("no current row");
160
162
  return this._localRows[this._localOffset];
161
163
  }
164
+ // return performance related statistics for current query.
165
+ get stats() { return this._stats; }
162
166
  async readRows() {
163
167
  if (this._globalDone) {
164
168
  return [];
@@ -169,11 +173,13 @@ class ECSqlReader {
169
173
  if (this._globalCount === 0) {
170
174
  return [];
171
175
  }
176
+ const valueFormat = this._options.rowFormat === ConcurrentQuery_1.QueryRowFormat.UseJsPropertyNames ? ConcurrentQuery_1.DbValueFormat.JsNames : ConcurrentQuery_1.DbValueFormat.ECSqlNames;
172
177
  const request = {
178
+ ...this._options,
173
179
  kind: ConcurrentQuery_1.DbRequestKind.ECSql,
180
+ valueFormat,
174
181
  query: this.query,
175
182
  args: this._param,
176
- ...this._options,
177
183
  };
178
184
  request.includeMetaData = this._props.length > 0 ? false : true;
179
185
  request.limit = { offset: this._globalOffset, count: this._globalCount < 1 ? -1 : this._globalCount };
@@ -188,25 +194,42 @@ class ECSqlReader {
188
194
  return resp.data;
189
195
  }
190
196
  async runWithRetry(request) {
191
- let resp = await this._executor.execute(request);
192
- let retry = 10;
197
+ const needRetry = (rs) => (rs.status === ConcurrentQuery_1.DbResponseStatus.Partial || rs.status === ConcurrentQuery_1.DbResponseStatus.QueueFull || rs.status === ConcurrentQuery_1.DbResponseStatus.Timeout) && (rs.data.length === 0);
198
+ const updateStats = (rs) => {
199
+ this._stats.backendCpuTime += rs.stats.cpuTime;
200
+ this._stats.backendTotalTime += rs.stats.totalTime;
201
+ this._stats.backendMemUsed += rs.stats.memUsed;
202
+ this._stats.backendRowsReturned += rs.data.length;
203
+ };
204
+ const execQuery = async (req) => {
205
+ const startTime = Date.now();
206
+ const rs = await this._executor.execute(req);
207
+ this.stats.totalTime += (Date.now() - startTime);
208
+ return rs;
209
+ };
210
+ let retry = ECSqlReader._maxRetryCount;
211
+ let resp = await execQuery(request);
193
212
  ConcurrentQuery_1.DbQueryError.throwIfError(resp, request);
194
- while (--retry > 0 && resp.data.length === 0 && (resp.status === ConcurrentQuery_1.DbResponseStatus.Partial || resp.status === ConcurrentQuery_1.DbResponseStatus.QueueFull || resp.status === ConcurrentQuery_1.DbResponseStatus.TimeOut)) {
195
- // add timeout
196
- resp = await this._executor.execute(request);
213
+ while (--retry > 0 && needRetry(resp)) {
214
+ resp = await execQuery(request);
215
+ this._stats.retryCount += 1;
216
+ if (needRetry(resp)) {
217
+ updateStats(resp);
218
+ }
197
219
  }
198
- if (retry === 0 && resp.data.length === 0 && (resp.status === ConcurrentQuery_1.DbResponseStatus.Partial || resp.status === ConcurrentQuery_1.DbResponseStatus.QueueFull || resp.status === ConcurrentQuery_1.DbResponseStatus.TimeOut)) {
220
+ if (retry === 0 && needRetry(resp)) {
199
221
  throw new Error("query too long to execute or server is too busy");
200
222
  }
223
+ updateStats(resp);
201
224
  return resp;
202
225
  }
203
- formatCurrentRow(format) {
204
- if (format === ConcurrentQuery_1.QueryRowFormat.UseArrayIndexes) {
226
+ formatCurrentRow(onlyReturnObject = false) {
227
+ if (!onlyReturnObject && this._options.rowFormat === ConcurrentQuery_1.QueryRowFormat.UseECSqlPropertyIndexes) {
205
228
  return this.getRowInternal();
206
229
  }
207
230
  const formattedRow = {};
208
231
  for (const prop of this._props) {
209
- const propName = format === ConcurrentQuery_1.QueryRowFormat.UseJsPropertyNames ? prop.jsonName : prop.name;
232
+ const propName = this._options.rowFormat === ConcurrentQuery_1.QueryRowFormat.UseJsPropertyNames ? prop.jsonName : prop.name;
210
233
  const val = this.getRowInternal()[prop.index];
211
234
  if (typeof val !== "undefined" && val !== null) {
212
235
  Object.defineProperty(formattedRow, propName, {
@@ -217,7 +240,19 @@ class ECSqlReader {
217
240
  }
218
241
  return formattedRow;
219
242
  }
220
- getMetaData() { return this._props.properties; }
243
+ async getMetaData() {
244
+ if (this._props.length === 0) {
245
+ await this.fetchRows();
246
+ }
247
+ return this._props.properties;
248
+ }
249
+ async fetchRows() {
250
+ this._localOffset = -1;
251
+ this._localRows = await this.readRows();
252
+ if (this._localRows.length === 0) {
253
+ this._done = true;
254
+ }
255
+ }
221
256
  async step() {
222
257
  if (this._done) {
223
258
  return false;
@@ -227,22 +262,20 @@ class ECSqlReader {
227
262
  ++this._localOffset;
228
263
  }
229
264
  else {
230
- this._localRows = await this.readRows();
265
+ await this.fetchRows();
231
266
  this._localOffset = 0;
232
- if (this._localRows.length === 0) {
233
- this._done = true;
234
- return false;
235
- }
267
+ return !this._done;
236
268
  }
237
269
  return true;
238
270
  }
239
- async toArray(format) {
271
+ async toArray() {
240
272
  const rows = [];
241
273
  while (await this.step()) {
242
- rows.push(this.formatCurrentRow(format));
274
+ rows.push(this.formatCurrentRow());
243
275
  }
244
276
  return rows;
245
277
  }
246
278
  }
247
279
  exports.ECSqlReader = ECSqlReader;
280
+ ECSqlReader._maxRetryCount = 10;
248
281
  //# sourceMappingURL=ECSqlReader.js.map