@itwin/ecschema-rpcinterface-tests 3.4.0-dev.1 → 3.4.0-dev.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"_c41d.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\1\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.2.5\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"_c41d.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\1147\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.2.5\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
@@ -86783,6 +86783,7 @@ class IModelReadRpcInterface extends _RpcInterface__WEBPACK_IMPORTED_MODULE_2__.
86783
86783
  ===========================================================================================*/
86784
86784
  async getConnectionProps(_iModelToken) { return this.forward(arguments); }
86785
86785
  async queryRows(_iModelToken, _request) { return this.forward(arguments); }
86786
+ async querySubCategories(_iModelToken, _categoryIds) { return this.forward(arguments); }
86786
86787
  async queryBlob(_iModelToken, _request) { return this.forward(arguments); }
86787
86788
  async getModelProps(_iModelToken, _modelIds) { return this.forward(arguments); }
86788
86789
  async queryModelRanges(_iModelToken, _modelIds) { return this.forward(arguments); }
@@ -86820,6 +86821,9 @@ IModelReadRpcInterface.interfaceVersion = "3.2.0";
86820
86821
  __decorate([
86821
86822
  _core_RpcOperation__WEBPACK_IMPORTED_MODULE_1__.RpcOperation.allowResponseCaching(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__.RpcResponseCacheControl.Immutable)
86822
86823
  ], IModelReadRpcInterface.prototype, "getConnectionProps", null);
86824
+ __decorate([
86825
+ _core_RpcOperation__WEBPACK_IMPORTED_MODULE_1__.RpcOperation.allowResponseCaching(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__.RpcResponseCacheControl.Immutable)
86826
+ ], IModelReadRpcInterface.prototype, "querySubCategories", null);
86823
86827
  __decorate([
86824
86828
  _core_RpcOperation__WEBPACK_IMPORTED_MODULE_1__.RpcOperation.allowResponseCaching(_core_RpcConstants__WEBPACK_IMPORTED_MODULE_0__.RpcResponseCacheControl.Immutable)
86825
86829
  ], IModelReadRpcInterface.prototype, "getModelProps", null);
@@ -112693,6 +112697,15 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
112693
112697
  };
112694
112698
  return new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ECSqlReader(executor, ecsql, params, config);
112695
112699
  }
112700
+ /**
112701
+ * queries the BisCore.SubCategory table for the entries that are children of the passed categoryIds
112702
+ * @param compressedCategoryIds compressed category Ids
112703
+ * @returns array of SubCategoryResultRow
112704
+ * @internal
112705
+ */
112706
+ async querySubCategories(compressedCategoryIds) {
112707
+ return _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelReadRpcInterface.getClientForRouting(this.routingContext.token).querySubCategories(this.getRpcProps(), compressedCategoryIds);
112708
+ }
112696
112709
  /** Execute a query and stream its results
112697
112710
  * The result of the query is async iterator over the rows. The iterator will get next page automatically once rows in current page has been read.
112698
112711
  * [ECSQL row]($docs/learning/ECSQLRowFormat).
@@ -115887,29 +115900,73 @@ class PerModelCategoryVisibilityOverrides extends _itwin_core_bentley__WEBPACK_I
115887
115900
  else
115888
115901
  return PerModelCategoryVisibility.Override.None;
115889
115902
  }
115890
- setOverride(modelIds, categoryIds, override) {
115903
+ /**
115904
+ * set the overrides for multiple perModelCategoryVisibility props, loading categoryIds from the iModel if necessary.
115905
+ * @see [[PerModelCategoryVisibility]]
115906
+ * @param perModelCategoryVisibility array of model category visibility overrides @see [[PerModelCategoryVisibility.Props]]
115907
+ * @param iModel Optional param iModel. If no iModel is provided, then the iModel associated with the viewport (used to construct this class) is used.
115908
+ * This optional iModel param is useful for apps which may show multiple iModels at once. Passing in an iModel ensures that the subcategories cache for the provided iModel
115909
+ * is populated as opposed to the iModel associated with the viewport which may or may not be an empty iModel.
115910
+ * @returns a promise that resolves once the overrides have been applied.
115911
+ */
115912
+ async setOverrides(perModelCategoryVisibility, iModel) {
115913
+ let anyChanged = false;
115914
+ const catIdsToLoad = [];
115915
+ const iModelToUse = iModel ? iModel : this._vp.iModel;
115916
+ for (const override of perModelCategoryVisibility) {
115917
+ const modelId = override.modelId;
115918
+ // The caller may pass a single categoryId as a string, if we don't convert this to an array we will iterate
115919
+ // over each individual character of that string, which is not the desired behavior.
115920
+ const categoryIds = typeof override.categoryIds === "string" ? [override.categoryIds] : override.categoryIds;
115921
+ const visOverride = override.visOverride;
115922
+ for (const categoryId of categoryIds) {
115923
+ if (this.findAndUpdateOverrideInArray(modelId, categoryId, visOverride)) {
115924
+ anyChanged = true;
115925
+ if (PerModelCategoryVisibility.Override.None !== visOverride) {
115926
+ catIdsToLoad.push(categoryId);
115927
+ }
115928
+ }
115929
+ }
115930
+ }
115931
+ if (anyChanged) {
115932
+ this._vp.setViewedCategoriesPerModelChanged();
115933
+ if (catIdsToLoad.length !== 0) {
115934
+ this._vp.subcategories.push(iModelToUse.subcategories, catIdsToLoad, () => this._vp.setViewedCategoriesPerModelChanged());
115935
+ }
115936
+ }
115937
+ return;
115938
+ }
115939
+ /** Find and update the override in the array of overrides. If override not found, adds it to the array.
115940
+ * If the array was changed, returns true. */
115941
+ findAndUpdateOverrideInArray(modelId, categoryId, override) {
115891
115942
  const ovr = this._scratch;
115943
+ ovr.reset(modelId, categoryId, false);
115944
+ let changed = false;
115945
+ const index = this.indexOf(ovr);
115946
+ if (-1 === index) {
115947
+ if (PerModelCategoryVisibility.Override.None !== override) {
115948
+ this.insert(new PerModelCategoryVisibilityOverride(modelId, categoryId, PerModelCategoryVisibility.Override.Show === override));
115949
+ changed = true;
115950
+ }
115951
+ }
115952
+ else {
115953
+ if (PerModelCategoryVisibility.Override.None === override) {
115954
+ this._array.splice(index, 1);
115955
+ changed = true;
115956
+ }
115957
+ else if (this._array[index].visible !== (PerModelCategoryVisibility.Override.Show === override)) {
115958
+ this._array[index].visible = (PerModelCategoryVisibility.Override.Show === override);
115959
+ changed = true;
115960
+ }
115961
+ }
115962
+ return changed;
115963
+ }
115964
+ setOverride(modelIds, categoryIds, override) {
115892
115965
  let changed = false;
115893
115966
  for (const modelId of _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.iterable(modelIds)) {
115894
115967
  for (const categoryId of _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.iterable(categoryIds)) {
115895
- ovr.reset(modelId, categoryId, false);
115896
- const index = this.indexOf(ovr);
115897
- if (-1 === index) {
115898
- if (PerModelCategoryVisibility.Override.None !== override) {
115899
- this.insert(new PerModelCategoryVisibilityOverride(modelId, categoryId, PerModelCategoryVisibility.Override.Show === override));
115900
- changed = true;
115901
- }
115902
- }
115903
- else {
115904
- if (PerModelCategoryVisibility.Override.None === override) {
115905
- this._array.splice(index, 1);
115906
- changed = true;
115907
- }
115908
- else if (this._array[index].visible !== (PerModelCategoryVisibility.Override.Show === override)) {
115909
- this._array[index].visible = (PerModelCategoryVisibility.Override.Show === override);
115910
- changed = true;
115911
- }
115912
- }
115968
+ if (this.findAndUpdateOverrideInArray(modelId, categoryId, override))
115969
+ changed = true;
115913
115970
  }
115914
115971
  }
115915
115972
  if (changed) {
@@ -118529,29 +118586,6 @@ class SubCategoriesCache {
118529
118586
  cancel: () => request.cancel(),
118530
118587
  };
118531
118588
  }
118532
- /**
118533
- * Populates the notLoadedCategoryIds property of the HydrateViewStateRequestProps.
118534
- * notLoadedCategoryIds is a subset of categoryIds, filtering out any ids which already have an entry in the cache.
118535
- */
118536
- preload(options, categoryIds) {
118537
- const missing = this.getMissing(categoryIds);
118538
- if (undefined === missing)
118539
- return;
118540
- this._missingAtTimeOfPreload = missing;
118541
- options.notLoadedCategoryIds = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.CompressedId64Set.sortAndCompress(missing);
118542
- }
118543
- /**
118544
- * Populates the SubCategoriesCache using the categoryIdsResult of the HydrateViewStateResponseProps
118545
- */
118546
- postload(options) {
118547
- if (options.categoryIdsResult === undefined)
118548
- return;
118549
- // missingAtTimeOfPreload shouldn't be undefined if options.categoryIdsResult is defined... but just to be safe we'll check
118550
- const missing = this._missingAtTimeOfPreload === undefined ? new Set() : this._missingAtTimeOfPreload;
118551
- this.processResults(options.categoryIdsResult, missing);
118552
- // clear missing
118553
- this._missingAtTimeOfPreload = undefined;
118554
- }
118555
118589
  /** Given categoryIds, return which of these are not cached. */
118556
118590
  getMissing(categoryIds) {
118557
118591
  let missing;
@@ -118633,38 +118667,38 @@ class SubCategoriesCache {
118633
118667
  (function (SubCategoriesCache) {
118634
118668
  class Request {
118635
118669
  constructor(categoryIds, imodel, maxCategoriesPerQuery = 200) {
118636
- this._ecsql = [];
118670
+ this._categoryIds = [];
118637
118671
  this._result = [];
118638
118672
  this._canceled = false;
118639
- this._curECSqlIndex = 0;
118673
+ this._curCategoryIdsIndex = 0;
118640
118674
  this._imodel = imodel;
118641
118675
  const catIds = [...categoryIds];
118676
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.OrderedId64Iterable.sortArray(catIds); // sort categories, so that given the same set of categoryIds we will always create the same batches.
118642
118677
  while (catIds.length !== 0) {
118643
118678
  const end = (catIds.length > maxCategoriesPerQuery) ? maxCategoriesPerQuery : catIds.length;
118644
- const where = catIds.splice(0, end).join(",");
118645
- this._ecsql.push(`SELECT ECInstanceId as id, Parent.Id as parentId, Properties as appearance FROM BisCore.SubCategory WHERE Parent.Id IN (${where})`);
118679
+ const compressedIds = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.CompressedId64Set.compressArray(catIds.splice(0, end));
118680
+ this._categoryIds.push(compressedIds);
118646
118681
  }
118647
118682
  }
118648
118683
  get wasCanceled() { return this._canceled || this._imodel.isClosed; }
118649
118684
  cancel() { this._canceled = true; }
118650
118685
  async dispatch() {
118651
- if (this.wasCanceled || this._curECSqlIndex >= this._ecsql.length) // handle case of empty category Id set...
118686
+ if (this.wasCanceled || this._curCategoryIdsIndex >= this._categoryIds.length) // handle case of empty category Id set...
118652
118687
  return undefined;
118653
118688
  try {
118654
- const ecsql = this._ecsql[this._curECSqlIndex];
118655
- for await (const row of this._imodel.query(ecsql, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames })) {
118656
- this._result.push(row);
118657
- if (this.wasCanceled)
118658
- return undefined;
118659
- }
118689
+ const catIds = this._categoryIds[this._curCategoryIdsIndex];
118690
+ const result = await this._imodel.querySubCategories(catIds);
118691
+ this._result.push(...result);
118692
+ if (this.wasCanceled)
118693
+ return undefined;
118660
118694
  }
118661
118695
  catch {
118662
118696
  // ###TODO: detect cases in which retry is warranted
118663
118697
  // Note that currently, if we succeed in obtaining some pages of results and fail to retrieve another page, we will end up processing the
118664
118698
  // incomplete results. Since we're not retrying, that's the best we can do.
118665
118699
  }
118666
- // Finished with current ECSql query. Dispatch the next if one exists.
118667
- if (++this._curECSqlIndex < this._ecsql.length) {
118700
+ // Finished with current batch of categoryIds. Dispatch the next batch if one exists.
118701
+ if (++this._curCategoryIdsIndex < this._categoryIds.length) {
118668
118702
  if (this.wasCanceled)
118669
118703
  return undefined;
118670
118704
  else
@@ -118739,7 +118773,7 @@ class SubCategoriesCache {
118739
118773
  this._request.promise.then((completed) => {
118740
118774
  if (this._disposed)
118741
118775
  return;
118742
- // Invoke all the functions which were awaiting this set of categories.
118776
+ // Invoke all the functions which were awaiting this set of IModelConnection.Categories.
118743
118777
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== this._current);
118744
118778
  if (completed)
118745
118779
  for (const func of this._current.funcs)
@@ -121312,7 +121346,6 @@ class ViewState extends _EntityState__WEBPACK_IMPORTED_MODULE_5__.ElementState {
121312
121346
  const acsId = this.getAuxiliaryCoordinateSystemId();
121313
121347
  if (_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.isValid(acsId))
121314
121348
  hydrateRequest.acsId = acsId;
121315
- this.iModel.subcategories.preload(hydrateRequest, this.categorySelector.categories);
121316
121349
  }
121317
121350
  /** Asynchronously load any required data for this ViewState from the backend.
121318
121351
  * FINAL, No subclass should override load. If additional load behavior is needed, see preload and postload.
@@ -121327,15 +121360,16 @@ class ViewState extends _EntityState__WEBPACK_IMPORTED_MODULE_5__.ElementState {
121327
121360
  const hydrateRequest = {};
121328
121361
  this.preload(hydrateRequest);
121329
121362
  const promises = [
121330
- _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).hydrateViewState(this.iModel.getRpcProps(), hydrateRequest),
121363
+ _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).hydrateViewState(this.iModel.getRpcProps(), hydrateRequest).
121364
+ then(async (hydrateResponse) => this.postload(hydrateResponse)),
121331
121365
  this.displayStyle.load(),
121332
121366
  ];
121333
- const result = await Promise.all(promises);
121334
- const hydrateResponse = result[0];
121335
- await this.postload(hydrateResponse);
121367
+ const subcategories = this.iModel.subcategories.load(this.categorySelector.categories);
121368
+ if (undefined !== subcategories)
121369
+ promises.push(subcategories.promise.then((_) => { }));
121370
+ await Promise.all(promises);
121336
121371
  }
121337
121372
  async postload(hydrateResponse) {
121338
- this.iModel.subcategories.postload(hydrateResponse);
121339
121373
  if (hydrateResponse.acsElementProps)
121340
121374
  this._auxCoordSystem = _AuxCoordSys__WEBPACK_IMPORTED_MODULE_3__.AuxCoordSystemState.fromProps(hydrateResponse.acsElementProps, this.iModel);
121341
121375
  }
@@ -305206,7 +305240,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
305206
305240
  /***/ ((module) => {
305207
305241
 
305208
305242
  "use strict";
305209
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"3.4.0-dev.1","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs","build:ci":"npm run -s build && npm run -s build:esm","build:cjs":"tsc 1>&2 --outDir lib/cjs","build:esm":"tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"../../tools/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^3.4.0-dev.1","@itwin/core-bentley":"workspace:^3.4.0-dev.1","@itwin/core-common":"workspace:^3.4.0-dev.1","@itwin/core-geometry":"workspace:^3.4.0-dev.1","@itwin/core-orbitgt":"workspace:^3.4.0-dev.1","@itwin/core-quantity":"workspace:^3.4.0-dev.1","@itwin/webgl-compatibility":"workspace:^3.4.0-dev.1"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/lodash":"^4.14.0","@types/mocha":"^8.2.2","@types/node":"16.11.7","@types/qs":"^6.5.0","@types/semver":"^7.3.9","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.64.4"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","lodash":"^4.17.10","qs":"^6.5.1","semver":"^7.3.5","superagent":"7.1.3","wms-capabilities":"0.4.0","xml-js":"~1.6.11"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
305243
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"3.4.0-dev.2","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs","build:ci":"npm run -s build && npm run -s build:esm","build:cjs":"tsc 1>&2 --outDir lib/cjs","build:esm":"tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"../../tools/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^3.4.0-dev.2","@itwin/core-bentley":"workspace:^3.4.0-dev.2","@itwin/core-common":"workspace:^3.4.0-dev.2","@itwin/core-geometry":"workspace:^3.4.0-dev.2","@itwin/core-orbitgt":"workspace:^3.4.0-dev.2","@itwin/core-quantity":"workspace:^3.4.0-dev.2","@itwin/webgl-compatibility":"workspace:^3.4.0-dev.2"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/lodash":"^4.14.0","@types/mocha":"^8.2.2","@types/node":"16.11.7","@types/qs":"^6.5.0","@types/semver":"^7.3.9","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.64.4"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","lodash":"^4.17.10","qs":"^6.5.1","semver":"^7.3.5","superagent":"7.1.3","wms-capabilities":"0.4.0","xml-js":"~1.6.11"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
305210
305244
 
305211
305245
  /***/ })
305212
305246