@itwin/frontend-tiles 5.0.0-dev.0 → 5.0.0-dev.10

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,28 @@
1
1
  # Change Log - @itwin/frontend-tiles
2
2
 
3
- This log was last generated on Tue, 22 Oct 2024 20:03:09 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 14 Nov 2024 18:13:56 GMT and should not be manually modified.
4
+
5
+ ## 4.10.1
6
+ Thu, 14 Nov 2024 18:11:00 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 4.10.0
11
+ Wed, 13 Nov 2024 15:23:39 GMT
12
+
13
+ ### Updates
14
+
15
+ - Improve performance by querying for no more than 5 exports.
16
+
17
+ ## 4.9.7
18
+ Wed, 06 Nov 2024 19:23:04 GMT
19
+
20
+ _Version update only_
21
+
22
+ ## 4.9.6
23
+ Tue, 05 Nov 2024 15:22:46 GMT
24
+
25
+ _Version update only_
4
26
 
5
27
  ## 4.9.5
6
28
  Tue, 22 Oct 2024 20:01:40 GMT
@@ -58,6 +58,8 @@ export interface QueryMeshExportsArgs {
58
58
  includeIncomplete?: boolean;
59
59
  /** If true, enables a CDN (content delivery network) to access tiles faster. */
60
60
  enableCDN?: boolean;
61
+ /** Number of exports to query */
62
+ numExports?: number;
61
63
  }
62
64
  /** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type "IMODEL" matching
63
65
  * the specified criteria.
@@ -1 +1 @@
1
- {"version":3,"file":"FrontendTiles.d.ts","sourceRoot":"","sources":["../../src/FrontendTiles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,gBAAgB,EAA+C,MAAM,sBAAsB,CAAC;AAGhH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA0B,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEzG;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,GAAG,CAAC;QACrB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;IAGF,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IAGtB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAuB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAuCrG;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAE/G;AACD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;MAGE;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqB3E"}
1
+ {"version":3,"file":"FrontendTiles.d.ts","sourceRoot":"","sources":["../../src/FrontendTiles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,gBAAgB,EAA+C,MAAM,sBAAsB,CAAC;AAGhH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA0B,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEzG;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,GAAG,CAAC;QACrB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;IAGF,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IAGtB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAuB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAwCrG;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAE/G;AACD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;MAGE;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqB3E"}
@@ -31,6 +31,7 @@ async function* queryMeshExports(args) {
31
31
  urlPrefix: args.urlPrefix,
32
32
  includeIncomplete: args.includeIncomplete,
33
33
  enableCDN: args.enableCDN,
34
+ numExports: args.numExports,
34
35
  };
35
36
  for await (const data of (0, GraphicRepresentationProvider_1.queryGraphicRepresentations)(graphicsArgs)) {
36
37
  const meshExport = {
@@ -1 +1 @@
1
- {"version":3,"file":"FrontendTiles.js","sourceRoot":"","sources":["../../src/FrontendTiles.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AA+E/F,4CAuCC;AAaD,gEAEC;AAuDD,0DAqBC;AA/MD,wDAAgH;AAChH,6EAAsF;AACtF,oGAA+F;AAE/F,0EAAyG;AAoEzG;;;;GAIG;AACI,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAAC,IAA0B;IAChE,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,yBAAS,CAAC,SAAS;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAA,2DAA2B,EAAC,YAAY,CAAC,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG;YACjB,EAAE,EAAE,IAAI,CAAC,gBAAgB;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE;gBAC3C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,eAAe,EAAE,EAAE;gBACnB,oBAAoB,EAAE,EAAE;aACzB;YAED,mEAAmE;YACnE,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;iBACrB;aACF;SACF,CAAC;QAEF,MAAM,UAAU,CAAC;IACnB,CAAC;AACH,CAAC;AAOD;;;;;GAKG;AACI,KAAK,UAAU,0BAA0B,CAAC,IAAoC;IACnF,OAAO,IAAA,yCAAsB,EAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AA2CD;;GAEG;AACU,QAAA,oBAAoB,GAAG;IAClC,eAAe,EAAE,CAAC;IAClB,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAA6B;IACnE,IAAI,SAAS,KAAK,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC;QACvE,4BAAoB,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAEjE,IAAI,OAAO,CAAC,WAAW;QACrB,4BAAoB,CAAC,WAAW,GAAG,IAAI,CAAC;IAE1C,IAAI,OAAO,CAAC,iBAAiB;QAC3B,4BAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAEhD,MAAM,UAAU,GAAG,OAAO,CAAC,4BAA4B,IAAI,CACzD,KAAK,EAAE,MAAwB,EAAE,EAAE,CAAC,0BAA0B,CAAC;QAC7D,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;QAChC,WAAW,EAAE,MAAM,yBAAS,CAAC,cAAc,EAAE;QAC7C,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CACH,CAAC;IAEF,yCAAyB,CAAC,MAAM,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAA,mEAAsC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC;AACxJ,CAAC","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\r\nimport { IModelApp, IModelConnection, SpatialTileTreeReferences, SpatialViewState } from \"@itwin/core-frontend\";\r\nimport { createBatchedSpatialTileTreeReferences } from \"./BatchedSpatialTileTreeRefs\";\r\nimport { queryGraphicRepresentations } from \"./GraphicsProvider/GraphicRepresentationProvider\";\r\nimport { AccessToken } from \"@itwin/core-bentley\";\r\nimport { obtainIModelTilesetUrl, ObtainIModelTilesetUrlArgs } from \"./GraphicsProvider/GraphicsProvider\";\r\n\r\n/** A function that can provide the base URL where a tileset representing all of the spatial models in a given iModel are stored.\r\n * The tileset is expected to reside at \"baseUrl/tileset.json\" and to have been produced by the [mesh export service](https://developer.bentley.com/apis/mesh-export/).\r\n * If no such tileset exists for the given iModel, return `undefined`.\r\n * @see [[FrontendTilesOptions.computeSpatialTilesetBaseUrl]].\r\n * @beta\r\n */\r\nexport type ComputeSpatialTilesetBaseUrl = (iModel: IModelConnection) => Promise<URL | undefined>;\r\n\r\n/** Represents the result of a [mesh export](https://developer.bentley.com/apis/mesh-export/operations/get-export/#export).\r\n * @see [[queryCompletedMeshExports]].\r\n * @beta\r\n */\r\nexport interface MeshExport {\r\n id: string;\r\n displayName: string;\r\n status: string;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Exposed strictly for tests.\r\n * @internal\r\n */\r\nexport interface MeshExports {\r\n exports: MeshExport[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Arguments supplied to [[queryMeshExports]].\r\n * @beta\r\n */\r\nexport interface QueryMeshExportsArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The iTwinId associated with the Mesh Export */\r\n iTwinId: string;\r\n /** The Id of the iModel for which to query exports. */\r\n iModelId: string;\r\n /** If defined, constrains the query to exports produced from the specified changeset. */\r\n changesetId?: string;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results. */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type \"IMODEL\" matching\r\n * the specified criteria.\r\n * The exports are sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryMeshExports(args: QueryMeshExportsArgs): AsyncIterableIterator<MeshExport> {\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n includeIncomplete: args.includeIncomplete,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n for await (const data of queryGraphicRepresentations(graphicsArgs)) {\r\n const meshExport = {\r\n id: data.representationId,\r\n displayName: data.displayName,\r\n status: data.status,\r\n request: {\r\n iModelId: data.dataSource.id,\r\n changesetId: data.dataSource.changeId ?? \"\",\r\n exportType: data.dataSource.type,\r\n geometryOptions: {},\r\n viewDefinitionFilter: {},\r\n },\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: data.url ?? \"\",\r\n },\r\n },\r\n };\r\n\r\n yield meshExport;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainMeshExportTilesetUrl]].\r\n * @beta\r\n */\r\nexport type ObtainMeshExportTilesetUrlArgs = ObtainIModelTilesetUrlArgs;\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainMeshExportTilesetUrl(args: ObtainMeshExportTilesetUrlArgs): Promise<URL | undefined> {\r\n return obtainIModelTilesetUrl(args);\r\n}\r\n/** Options supplied to [[initializeFrontendTiles]].\r\n * @beta\r\n */\r\nexport interface FrontendTilesOptions {\r\n /** Provide the base URL for the pre-published tileset for a given iModel.\r\n * If omitted, [[obtainMeshExportTilesetUrl]] will be invoked with default arguments, using the access token provided by [[IModelApp]].\r\n */\r\n computeSpatialTilesetBaseUrl?: ComputeSpatialTilesetBaseUrl;\r\n /** The maximum number of levels in the tile tree to skip loading if they do not provide the desired level of detail for the current view.\r\n * Default: 4.\r\n * Reducing this value will load more intermediate tiles, which causes more gradual refinement: low-resolution tiles will display quickly, followed more gradually by\r\n * successively higher-resolution ones.\r\n * Increasing the value jumps more directly to tiles of the exact level of detail desired, which may load more, smaller tiles up-front, leaving some areas of the view\r\n * vacant for longer; and when zooming out some newly-exposed areas of the view may remain vacant for longer because no lower-resolution tiles are initially available to\r\n * fill them. However, tiles close to the viewer (and therefore likely of most interest to them) will refine to an appropriate level of detail more quickly.\r\n */\r\n maxLevelsToSkip?: number;\r\n /** Specifies whether to permit the user to enable visible edges or wireframe mode for batched tiles.\r\n * The currently-deployed mesh export service does not produce edges, so this currently defaults to `false` to avoid user confusion.\r\n * Set it to `true` if you are loading tiles created with a version of the exporter that does produce edges.\r\n * ###TODO delete this option once we deploy an edge-producing version of the exporter to production.\r\n * @internal\r\n */\r\n enableEdges?: boolean;\r\n /** Specifies whether to enable a CDN (content delivery network) to access tiles faster.\r\n * This option is only used if computeSpatialTilesetBaseUrl is not defined.\r\n * @beta\r\n */\r\n enableCDN?: boolean;\r\n /** Specifies whether to enable an IndexedDB database for use as a local cache.\r\n * Requested tiles will then first be search for in the database, and if not found, fetched as normal.\r\n * @internal\r\n */\r\n useIndexedDBCache?: boolean;\r\n\r\n /** If true, an empty tile tree will be used as fallback if the tileset is not found or invalid.\r\n * If false or not defined, the default tiles will be used as a fallback.\r\n * @internal\r\n */\r\n nopFallback?: boolean;\r\n}\r\n\r\n/** Global configuration initialized by [[initializeFrontendTiles]].\r\n * @internal\r\n */\r\nexport const frontendTilesOptions = {\r\n maxLevelsToSkip: 4,\r\n enableEdges: false,\r\n useIndexedDBCache: false,\r\n};\r\n\r\n/** Initialize the frontend-tiles package to obtain tiles for spatial views.\r\n * @beta\r\n */\r\nexport function initializeFrontendTiles(options: FrontendTilesOptions): void {\r\n if (undefined !== options.maxLevelsToSkip && options.maxLevelsToSkip >= 0)\r\n frontendTilesOptions.maxLevelsToSkip = options.maxLevelsToSkip;\r\n\r\n if (options.enableEdges)\r\n frontendTilesOptions.enableEdges = true;\r\n\r\n if (options.useIndexedDBCache)\r\n frontendTilesOptions.useIndexedDBCache = true;\r\n\r\n const computeUrl = options.computeSpatialTilesetBaseUrl ?? (\r\n async (iModel: IModelConnection) => obtainMeshExportTilesetUrl({\r\n iTwinId: iModel.iTwinId,\r\n iModelId: iModel.iModelId,\r\n changesetId: iModel.changeset.id,\r\n accessToken: await IModelApp.getAccessToken(),\r\n enableCDN: options.enableCDN,\r\n })\r\n );\r\n\r\n SpatialTileTreeReferences.create = (view: SpatialViewState) => createBatchedSpatialTileTreeReferences(view, computeUrl, options.nopFallback ?? false);\r\n}\r\n"]}
1
+ {"version":3,"file":"FrontendTiles.js","sourceRoot":"","sources":["../../src/FrontendTiles.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\r\nimport { IModelApp, IModelConnection, SpatialTileTreeReferences, SpatialViewState } from \"@itwin/core-frontend\";\r\nimport { createBatchedSpatialTileTreeReferences } from \"./BatchedSpatialTileTreeRefs\";\r\nimport { queryGraphicRepresentations } from \"./GraphicsProvider/GraphicRepresentationProvider\";\r\nimport { AccessToken } from \"@itwin/core-bentley\";\r\nimport { obtainIModelTilesetUrl, ObtainIModelTilesetUrlArgs } from \"./GraphicsProvider/GraphicsProvider\";\r\n\r\n/** A function that can provide the base URL where a tileset representing all of the spatial models in a given iModel are stored.\r\n * The tileset is expected to reside at \"baseUrl/tileset.json\" and to have been produced by the [mesh export service](https://developer.bentley.com/apis/mesh-export/).\r\n * If no such tileset exists for the given iModel, return `undefined`.\r\n * @see [[FrontendTilesOptions.computeSpatialTilesetBaseUrl]].\r\n * @beta\r\n */\r\nexport type ComputeSpatialTilesetBaseUrl = (iModel: IModelConnection) => Promise<URL | undefined>;\r\n\r\n/** Represents the result of a [mesh export](https://developer.bentley.com/apis/mesh-export/operations/get-export/#export).\r\n * @see [[queryCompletedMeshExports]].\r\n * @beta\r\n */\r\nexport interface MeshExport {\r\n id: string;\r\n displayName: string;\r\n status: string;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Exposed strictly for tests.\r\n * @internal\r\n */\r\nexport interface MeshExports {\r\n exports: MeshExport[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Arguments supplied to [[queryMeshExports]].\r\n * @beta\r\n */\r\nexport interface QueryMeshExportsArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The iTwinId associated with the Mesh Export */\r\n iTwinId: string;\r\n /** The Id of the iModel for which to query exports. */\r\n iModelId: string;\r\n /** If defined, constrains the query to exports produced from the specified changeset. */\r\n changesetId?: string;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results. */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n /** Number of exports to query */\r\n numExports?: number;\r\n}\r\n\r\n/** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type \"IMODEL\" matching\r\n * the specified criteria.\r\n * The exports are sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryMeshExports(args: QueryMeshExportsArgs): AsyncIterableIterator<MeshExport> {\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n includeIncomplete: args.includeIncomplete,\r\n enableCDN: args.enableCDN,\r\n numExports: args.numExports,\r\n };\r\n\r\n for await (const data of queryGraphicRepresentations(graphicsArgs)) {\r\n const meshExport = {\r\n id: data.representationId,\r\n displayName: data.displayName,\r\n status: data.status,\r\n request: {\r\n iModelId: data.dataSource.id,\r\n changesetId: data.dataSource.changeId ?? \"\",\r\n exportType: data.dataSource.type,\r\n geometryOptions: {},\r\n viewDefinitionFilter: {},\r\n },\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: data.url ?? \"\",\r\n },\r\n },\r\n };\r\n\r\n yield meshExport;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainMeshExportTilesetUrl]].\r\n * @beta\r\n */\r\nexport type ObtainMeshExportTilesetUrlArgs = ObtainIModelTilesetUrlArgs;\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainMeshExportTilesetUrl(args: ObtainMeshExportTilesetUrlArgs): Promise<URL | undefined> {\r\n return obtainIModelTilesetUrl(args);\r\n}\r\n/** Options supplied to [[initializeFrontendTiles]].\r\n * @beta\r\n */\r\nexport interface FrontendTilesOptions {\r\n /** Provide the base URL for the pre-published tileset for a given iModel.\r\n * If omitted, [[obtainMeshExportTilesetUrl]] will be invoked with default arguments, using the access token provided by [[IModelApp]].\r\n */\r\n computeSpatialTilesetBaseUrl?: ComputeSpatialTilesetBaseUrl;\r\n /** The maximum number of levels in the tile tree to skip loading if they do not provide the desired level of detail for the current view.\r\n * Default: 4.\r\n * Reducing this value will load more intermediate tiles, which causes more gradual refinement: low-resolution tiles will display quickly, followed more gradually by\r\n * successively higher-resolution ones.\r\n * Increasing the value jumps more directly to tiles of the exact level of detail desired, which may load more, smaller tiles up-front, leaving some areas of the view\r\n * vacant for longer; and when zooming out some newly-exposed areas of the view may remain vacant for longer because no lower-resolution tiles are initially available to\r\n * fill them. However, tiles close to the viewer (and therefore likely of most interest to them) will refine to an appropriate level of detail more quickly.\r\n */\r\n maxLevelsToSkip?: number;\r\n /** Specifies whether to permit the user to enable visible edges or wireframe mode for batched tiles.\r\n * The currently-deployed mesh export service does not produce edges, so this currently defaults to `false` to avoid user confusion.\r\n * Set it to `true` if you are loading tiles created with a version of the exporter that does produce edges.\r\n * ###TODO delete this option once we deploy an edge-producing version of the exporter to production.\r\n * @internal\r\n */\r\n enableEdges?: boolean;\r\n /** Specifies whether to enable a CDN (content delivery network) to access tiles faster.\r\n * This option is only used if computeSpatialTilesetBaseUrl is not defined.\r\n * @beta\r\n */\r\n enableCDN?: boolean;\r\n /** Specifies whether to enable an IndexedDB database for use as a local cache.\r\n * Requested tiles will then first be search for in the database, and if not found, fetched as normal.\r\n * @internal\r\n */\r\n useIndexedDBCache?: boolean;\r\n\r\n /** If true, an empty tile tree will be used as fallback if the tileset is not found or invalid.\r\n * If false or not defined, the default tiles will be used as a fallback.\r\n * @internal\r\n */\r\n nopFallback?: boolean;\r\n}\r\n\r\n/** Global configuration initialized by [[initializeFrontendTiles]].\r\n * @internal\r\n */\r\nexport const frontendTilesOptions = {\r\n maxLevelsToSkip: 4,\r\n enableEdges: false,\r\n useIndexedDBCache: false,\r\n};\r\n\r\n/** Initialize the frontend-tiles package to obtain tiles for spatial views.\r\n * @beta\r\n */\r\nexport function initializeFrontendTiles(options: FrontendTilesOptions): void {\r\n if (undefined !== options.maxLevelsToSkip && options.maxLevelsToSkip >= 0)\r\n frontendTilesOptions.maxLevelsToSkip = options.maxLevelsToSkip;\r\n\r\n if (options.enableEdges)\r\n frontendTilesOptions.enableEdges = true;\r\n\r\n if (options.useIndexedDBCache)\r\n frontendTilesOptions.useIndexedDBCache = true;\r\n\r\n const computeUrl = options.computeSpatialTilesetBaseUrl ?? (\r\n async (iModel: IModelConnection) => obtainMeshExportTilesetUrl({\r\n iTwinId: iModel.iTwinId,\r\n iModelId: iModel.iModelId,\r\n changesetId: iModel.changeset.id,\r\n accessToken: await IModelApp.getAccessToken(),\r\n enableCDN: options.enableCDN,\r\n })\r\n );\r\n\r\n SpatialTileTreeReferences.create = (view: SpatialViewState) => createBatchedSpatialTileTreeReferences(view, computeUrl, options.nopFallback ?? false);\r\n}\r\n"]}
@@ -62,6 +62,17 @@ export type GraphicRepresentation = {
62
62
  status: GraphicRepresentationStatus.Complete;
63
63
  url: string;
64
64
  });
65
+ /** Creates a URL used to query for Graphic Representations
66
+ * @internal
67
+ */
68
+ export declare function createGraphicRepresentationsQueryUrl(args: {
69
+ sourceId: string;
70
+ sourceType: string;
71
+ urlPrefix?: string;
72
+ changeId?: string;
73
+ enableCDN?: boolean;
74
+ numExports?: number;
75
+ }): string;
65
76
  /** Arguments supplied to [[queryGraphicRepresentations]].
66
77
  * @beta
67
78
  */
@@ -84,6 +95,8 @@ export interface QueryGraphicRepresentationsArgs {
84
95
  includeIncomplete?: boolean;
85
96
  /** If true, enables a CDN (content delivery network) to access tiles faster. */
86
97
  enableCDN?: boolean;
98
+ /** Number of exports to query */
99
+ numExports?: number;
87
100
  }
88
101
  /** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.
89
102
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicRepresentationProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAI1D;;GAEG;AAEH,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtE;;;GAGG;AAEH,oBAAY,2BAA2B;IACrC,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;MAEE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CAKxB,GAAG,CAAC;IACH,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG;IACF,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAkBH;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAuB,2BAA2B,CAAC,IAAI,EAAE,+BAA+B,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CA4EtI;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,kCAAkC,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAsCvH"}
1
+ {"version":3,"file":"GraphicRepresentationProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAI1D;;GAEG;AAEH,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtE;;;GAGG;AAEH,oBAAY,2BAA2B;IACrC,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;MAEE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CAKxB,GAAG,CAAC;IACH,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG;IACF,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAe5L;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAuB,2BAA2B,CAAC,IAAI,EAAE,+BAA+B,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CA4EtI;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,kCAAkC,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAsCvH"}
@@ -5,6 +5,7 @@
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.GraphicRepresentationStatus = void 0;
8
+ exports.createGraphicRepresentationsQueryUrl = createGraphicRepresentationsQueryUrl;
8
9
  exports.queryGraphicRepresentations = queryGraphicRepresentations;
9
10
  exports.obtainGraphicRepresentationUrl = obtainGraphicRepresentationUrl;
10
11
  const core_bentley_1 = require("@itwin/core-bentley");
@@ -22,10 +23,13 @@ var GraphicRepresentationStatus;
22
23
  GraphicRepresentationStatus["NotStarted"] = "Not started";
23
24
  GraphicRepresentationStatus["Failed"] = "Failed";
24
25
  })(GraphicRepresentationStatus || (exports.GraphicRepresentationStatus = GraphicRepresentationStatus = {}));
25
- /** Creates a URL used to query for Graphic Representations */
26
+ /** Creates a URL used to query for Graphic Representations
27
+ * @internal
28
+ */
26
29
  function createGraphicRepresentationsQueryUrl(args) {
27
30
  const prefix = args.urlPrefix ?? "";
28
- let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=5`;
31
+ const numExports = args.numExports ?? 5;
32
+ let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=${numExports}`;
29
33
  if (args.changeId)
30
34
  url = `${url}&changesetId=${args.changeId}`;
31
35
  if (args.enableCDN)
@@ -48,7 +52,7 @@ async function* queryGraphicRepresentations(args) {
48
52
  /* eslint-disable-next-line @typescript-eslint/naming-convention */
49
53
  SessionId: args.sessionId,
50
54
  };
51
- let url = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN });
55
+ let url = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN, numExports: args.numExports });
52
56
  while (url) {
53
57
  let result;
54
58
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicRepresentationProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\nimport { IModelApp, ITWINJS_CORE_VERSION } from \"@itwin/core-frontend\";\r\n\r\n/** The expected format of the Graphic Representation\r\n * @beta\r\n */\r\n/* eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents */\r\nexport type GraphicRepresentationFormat = \"IMDL\" | \"3DTILES\" | string;\r\n\r\n/** Graphic representations are generated from Data Sources.\r\n * The status of a Graphic Representation indicates the progress of that generation process.\r\n * @beta\r\n */\r\n// ###TODO this needs to be expanded to include more statuses, and/or \"failed\" needs to be replaced with \"invalid\".\r\nexport enum GraphicRepresentationStatus {\r\n InProgress = \"In progress\",\r\n Complete = \"Complete\",\r\n NotStarted = \"Not started\",\r\n Failed = \"Failed\",\r\n}\r\n\r\n/**\r\n * Represents a data source for a graphic representation.\r\n * A data source is usually higher-fidelity and contains more information, but may not be as well suited for visualization\r\n * as a graphic representation.\r\n * @beta\r\n */\r\nexport interface DataSource {\r\n /** The iTwinId associated with the DataSource */\r\n iTwinId: string;\r\n /** The unique identifier of a DataSource.\r\n * For example, a DataSource of type \"IMODEL\" has an iModelId which would be attributed to this value.\r\n */\r\n id: string;\r\n /** The unique identifier for a specific version of a DataSource.\r\n * For example, if a specific version of an iModel is desired, the iModel's changesetId would be attributed to this value.\r\n */\r\n changeId?: string;\r\n /** The type of the data source. For example, a DataSource can be of type \"IMODEL\" or \"RealityData\" */\r\n type: string;\r\n}\r\n\r\n/** Represents a visual representation of a data source, for example a 3d tileset.\r\n * A data source can be an iModel, reality data, or other kind of graphical data.\r\n * @see [[queryGraphicRepresentations]] for its construction as a representation of the data produced by a query of data sources.\r\n * @beta\r\n */\r\nexport type GraphicRepresentation = {\r\n /** The display name of the Graphic Representation */\r\n displayName: string;\r\n /** The unique identifier for the Graphic Representation */\r\n representationId: string;\r\n /** The status of the generation of the Graphic Representation from its Data Source.\r\n * @see [[GraphicRepresentationStatus]] for possible values.\r\n */\r\n status: GraphicRepresentationStatus;\r\n /** The expected format of the Graphic Representation\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** The data source that the representation originates from.\r\n * For example, a GraphicRepresentation in the 3D Tiles format might have a dataSource that is a specific iModel changeset.\r\n */\r\n dataSource: DataSource;\r\n /** The url of the graphic representation\r\n * @note The url can only be guaranteed to be valid if the status is complete.\r\n * Therefore, the url is optional if the status is not complete, and required if the status is complete.\r\n */\r\n} & ({\r\n status: Omit<GraphicRepresentationStatus, GraphicRepresentationStatus.Complete>;\r\n url?: string;\r\n} | {\r\n status: GraphicRepresentationStatus.Complete;\r\n url: string;\r\n});\r\n\r\n/** Creates a URL used to query for Graphic Representations */\r\nfunction createGraphicRepresentationsQueryUrl(args: { sourceId: string, sourceType: string, urlPrefix?: string, changeId?: string, enableCDN?: boolean }): string {\r\n const prefix = args.urlPrefix ?? \"\";\r\n let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=5`;\r\n if (args.changeId)\r\n url = `${url}&changesetId=${args.changeId}`;\r\n\r\n if (args.enableCDN)\r\n url = `${url}&cdn=1`;\r\n\r\n const tileVersion = IModelApp.tileAdmin.maximumMajorTileFormatVersion.toString();\r\n url = `${url}&tileVersion=${tileVersion}&iTwinJS=${ITWINJS_CORE_VERSION}&exportType=${args.sourceType}`;\r\n\r\n return url;\r\n}\r\n\r\n/** Arguments supplied to [[queryGraphicRepresentations]].\r\n * @beta\r\n */\r\nexport interface QueryGraphicRepresentationsArgs {\r\n /** The token used to access the data source provider. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The Data Source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryGraphicRepresentations(args: QueryGraphicRepresentationsArgs): AsyncIterableIterator<GraphicRepresentation> {\r\n interface ServiceJsonResponse {\r\n id: string;\r\n displayName: string;\r\n status: GraphicRepresentationStatus;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links?: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n interface ServiceJsonResponses {\r\n exports: ServiceJsonResponse[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n const headers = {\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Authorization: args.accessToken,\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Accept: \"application/vnd.bentley.itwin-platform.v1+json\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Prefer: \"return=representation\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n SessionId: args.sessionId,\r\n };\r\n\r\n let url: string | undefined = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN });\r\n while (url) {\r\n let result;\r\n try {\r\n const response = await fetch(url, { headers });\r\n result = await response.json() as ServiceJsonResponses;\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n Logger.logError(loggerCategory, `Failed loading Graphics Data for Source ${args.dataSource.id}`);\r\n break;\r\n }\r\n\r\n const foundSources = result.exports.filter((x) => x.request.exportType === args.dataSource.type && (args.includeIncomplete || x.status === GraphicRepresentationStatus.Complete));\r\n for (const foundSource of foundSources) {\r\n const graphicRepresentation: GraphicRepresentation = {\r\n displayName: foundSource.displayName,\r\n representationId: foundSource.id,\r\n status: foundSource.status,\r\n format: args.format,\r\n url: foundSource._links?.mesh.href,\r\n dataSource: {\r\n iTwinId: args.dataSource.iTwinId,\r\n id: foundSource.request.iModelId,\r\n changeId: foundSource.request.changesetId,\r\n type: foundSource.request.exportType,\r\n },\r\n };\r\n\r\n yield graphicRepresentation;\r\n }\r\n\r\n url = result._links.next?.href;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainGraphicRepresentationUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainGraphicRepresentationUrlArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The data source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only data produced for a specific data source version will be considered;\r\n * otherwise, if no data sources are found with the specified version,the most recent data source version will be used.\r\n */\r\n requireExactVersion?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a Graphic Representation.\r\n * [[queryGraphicRepresentations]] is used to obtain a list of available representations. By default, the list is sorted from most to least recently-created.\r\n * The first representation matching the source version is selected; or, if no such representation exists, the first representation in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainGraphicRepresentationUrl(args: ObtainGraphicRepresentationUrlArgs): Promise<URL | undefined> {\r\n if (!args.dataSource.id) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data from a source without an Id\");\r\n return undefined;\r\n }\r\n\r\n const queryArgs: QueryGraphicRepresentationsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: args.sessionId,\r\n dataSource: args.dataSource,\r\n format: args.format,\r\n urlPrefix: args.urlPrefix,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n let selectedData;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n break;\r\n }\r\n\r\n if (!selectedData && !args.requireExactVersion) {\r\n queryArgs.dataSource.changeId = undefined;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n Logger.logInfo(loggerCategory, `No data for Data Source ${args.dataSource.id} for version ${args.dataSource.changeId}; falling back to most recent`);\r\n break;\r\n }\r\n }\r\n\r\n if ((!selectedData) || (!selectedData.url)) {\r\n Logger.logInfo(loggerCategory, `No data available for Data Source ${args.dataSource.id}`);\r\n return undefined;\r\n }\r\n\r\n const url = new URL(selectedData.url);\r\n url.pathname = `${url.pathname}/tileset.json`;\r\n return url;\r\n}\r\n"]}
1
+ {"version":3,"file":"GraphicRepresentationProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\nimport { IModelApp, ITWINJS_CORE_VERSION } from \"@itwin/core-frontend\";\r\n\r\n/** The expected format of the Graphic Representation\r\n * @beta\r\n */\r\n/* eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents */\r\nexport type GraphicRepresentationFormat = \"IMDL\" | \"3DTILES\" | string;\r\n\r\n/** Graphic representations are generated from Data Sources.\r\n * The status of a Graphic Representation indicates the progress of that generation process.\r\n * @beta\r\n */\r\n// ###TODO this needs to be expanded to include more statuses, and/or \"failed\" needs to be replaced with \"invalid\".\r\nexport enum GraphicRepresentationStatus {\r\n InProgress = \"In progress\",\r\n Complete = \"Complete\",\r\n NotStarted = \"Not started\",\r\n Failed = \"Failed\",\r\n}\r\n\r\n/**\r\n * Represents a data source for a graphic representation.\r\n * A data source is usually higher-fidelity and contains more information, but may not be as well suited for visualization\r\n * as a graphic representation.\r\n * @beta\r\n */\r\nexport interface DataSource {\r\n /** The iTwinId associated with the DataSource */\r\n iTwinId: string;\r\n /** The unique identifier of a DataSource.\r\n * For example, a DataSource of type \"IMODEL\" has an iModelId which would be attributed to this value.\r\n */\r\n id: string;\r\n /** The unique identifier for a specific version of a DataSource.\r\n * For example, if a specific version of an iModel is desired, the iModel's changesetId would be attributed to this value.\r\n */\r\n changeId?: string;\r\n /** The type of the data source. For example, a DataSource can be of type \"IMODEL\" or \"RealityData\" */\r\n type: string;\r\n}\r\n\r\n/** Represents a visual representation of a data source, for example a 3d tileset.\r\n * A data source can be an iModel, reality data, or other kind of graphical data.\r\n * @see [[queryGraphicRepresentations]] for its construction as a representation of the data produced by a query of data sources.\r\n * @beta\r\n */\r\nexport type GraphicRepresentation = {\r\n /** The display name of the Graphic Representation */\r\n displayName: string;\r\n /** The unique identifier for the Graphic Representation */\r\n representationId: string;\r\n /** The status of the generation of the Graphic Representation from its Data Source.\r\n * @see [[GraphicRepresentationStatus]] for possible values.\r\n */\r\n status: GraphicRepresentationStatus;\r\n /** The expected format of the Graphic Representation\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** The data source that the representation originates from.\r\n * For example, a GraphicRepresentation in the 3D Tiles format might have a dataSource that is a specific iModel changeset.\r\n */\r\n dataSource: DataSource;\r\n /** The url of the graphic representation\r\n * @note The url can only be guaranteed to be valid if the status is complete.\r\n * Therefore, the url is optional if the status is not complete, and required if the status is complete.\r\n */\r\n} & ({\r\n status: Omit<GraphicRepresentationStatus, GraphicRepresentationStatus.Complete>;\r\n url?: string;\r\n} | {\r\n status: GraphicRepresentationStatus.Complete;\r\n url: string;\r\n});\r\n\r\n/** Creates a URL used to query for Graphic Representations\r\n * @internal\r\n */\r\nexport function createGraphicRepresentationsQueryUrl(args: { sourceId: string, sourceType: string, urlPrefix?: string, changeId?: string, enableCDN?: boolean, numExports?: number }): string {\r\n const prefix = args.urlPrefix ?? \"\";\r\n const numExports = args.numExports ?? 5;\r\n let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=${numExports}`;\r\n\r\n if (args.changeId)\r\n url = `${url}&changesetId=${args.changeId}`;\r\n\r\n if (args.enableCDN)\r\n url = `${url}&cdn=1`;\r\n\r\n const tileVersion = IModelApp.tileAdmin.maximumMajorTileFormatVersion.toString();\r\n url = `${url}&tileVersion=${tileVersion}&iTwinJS=${ITWINJS_CORE_VERSION}&exportType=${args.sourceType}`;\r\n\r\n return url;\r\n}\r\n\r\n/** Arguments supplied to [[queryGraphicRepresentations]].\r\n * @beta\r\n */\r\nexport interface QueryGraphicRepresentationsArgs {\r\n /** The token used to access the data source provider. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The Data Source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n /** Number of exports to query */\r\n numExports?: number;\r\n}\r\n\r\n/** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryGraphicRepresentations(args: QueryGraphicRepresentationsArgs): AsyncIterableIterator<GraphicRepresentation> {\r\n interface ServiceJsonResponse {\r\n id: string;\r\n displayName: string;\r\n status: GraphicRepresentationStatus;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links?: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n interface ServiceJsonResponses {\r\n exports: ServiceJsonResponse[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n const headers = {\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Authorization: args.accessToken,\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Accept: \"application/vnd.bentley.itwin-platform.v1+json\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Prefer: \"return=representation\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n SessionId: args.sessionId,\r\n };\r\n\r\n let url: string | undefined = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN, numExports: args.numExports });\r\n while (url) {\r\n let result;\r\n try {\r\n const response = await fetch(url, { headers });\r\n result = await response.json() as ServiceJsonResponses;\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n Logger.logError(loggerCategory, `Failed loading Graphics Data for Source ${args.dataSource.id}`);\r\n break;\r\n }\r\n\r\n const foundSources = result.exports.filter((x) => x.request.exportType === args.dataSource.type && (args.includeIncomplete || x.status === GraphicRepresentationStatus.Complete));\r\n for (const foundSource of foundSources) {\r\n const graphicRepresentation: GraphicRepresentation = {\r\n displayName: foundSource.displayName,\r\n representationId: foundSource.id,\r\n status: foundSource.status,\r\n format: args.format,\r\n url: foundSource._links?.mesh.href,\r\n dataSource: {\r\n iTwinId: args.dataSource.iTwinId,\r\n id: foundSource.request.iModelId,\r\n changeId: foundSource.request.changesetId,\r\n type: foundSource.request.exportType,\r\n },\r\n };\r\n\r\n yield graphicRepresentation;\r\n }\r\n\r\n url = result._links.next?.href;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainGraphicRepresentationUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainGraphicRepresentationUrlArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The data source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only data produced for a specific data source version will be considered;\r\n * otherwise, if no data sources are found with the specified version,the most recent data source version will be used.\r\n */\r\n requireExactVersion?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a Graphic Representation.\r\n * [[queryGraphicRepresentations]] is used to obtain a list of available representations. By default, the list is sorted from most to least recently-created.\r\n * The first representation matching the source version is selected; or, if no such representation exists, the first representation in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainGraphicRepresentationUrl(args: ObtainGraphicRepresentationUrlArgs): Promise<URL | undefined> {\r\n if (!args.dataSource.id) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data from a source without an Id\");\r\n return undefined;\r\n }\r\n\r\n const queryArgs: QueryGraphicRepresentationsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: args.sessionId,\r\n dataSource: args.dataSource,\r\n format: args.format,\r\n urlPrefix: args.urlPrefix,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n let selectedData;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n break;\r\n }\r\n\r\n if (!selectedData && !args.requireExactVersion) {\r\n queryArgs.dataSource.changeId = undefined;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n Logger.logInfo(loggerCategory, `No data for Data Source ${args.dataSource.id} for version ${args.dataSource.changeId}; falling back to most recent`);\r\n break;\r\n }\r\n }\r\n\r\n if ((!selectedData) || (!selectedData.url)) {\r\n Logger.logInfo(loggerCategory, `No data available for Data Source ${args.dataSource.id}`);\r\n return undefined;\r\n }\r\n\r\n const url = new URL(selectedData.url);\r\n url.pathname = `${url.pathname}/tileset.json`;\r\n return url;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAC7E,OAAO,CAAC,GAAG,GAAC,SAAS,CAAC,CA2BrB"}
1
+ {"version":3,"file":"GraphicsProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAC3E,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CA2BzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAmChG,wDA4BC;AA7DD,sDAA0D;AAC1D,wDAAiD;AACjD,mFAAiF;AACjF,sDAAmD;AAwBnD;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB,CAAC,IAAgC;IAE3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,qBAAM,CAAC,OAAO,CAAC,+BAAc,EAAE,4DAA4D,CAAC,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,qBAAM,CAAC,OAAO,CAAC,+BAAc,EAAE,2DAA2D,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,yBAAS,CAAC,SAAS;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,OAAO,IAAA,8DAA8B,EAAC,YAAY,CAAC,CAAC;AACtD,CAAC","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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { obtainGraphicRepresentationUrl } from \"./GraphicRepresentationProvider\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\n\r\n/** Arguments supplied to [[obtainIModelTilesetUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainIModelTilesetUrlArgs {\r\n /** The iTwin id for which to obtain a tileset URL. */\r\n iTwinId?: string;\r\n /** The iModel id for which to obtain a tileset URL. */\r\n iModelId?: string;\r\n /** The changeset id for which to obtain a tileset URL. */\r\n changesetId?: string;\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only exports produced for `iModel`'s specific changeset will be considered; otherwise, if no exports are found for the changeset,\r\n * the most recent export for any changeset will be used.\r\n */\r\n requireExactChangeset?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainIModelTilesetUrl(args: ObtainIModelTilesetUrlArgs):\r\nPromise<URL|undefined> {\r\n if (!args.iModelId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iModelId\");\r\n return undefined;\r\n }\r\n\r\n if (!args.iTwinId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iTwinId\");\r\n return undefined;\r\n }\r\n\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n requireExactVersion: args.requireExactChangeset,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n return obtainGraphicRepresentationUrl(graphicsArgs);\r\n}\r\n"]}
1
+ {"version":3,"file":"GraphicsProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAmChG,wDA4BC;AA7DD,sDAA0D;AAC1D,wDAAiD;AACjD,mFAAiF;AACjF,sDAAmD;AAwBnD;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB,CAAC,IAAgC;IAE3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,qBAAM,CAAC,OAAO,CAAC,+BAAc,EAAE,4DAA4D,CAAC,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,qBAAM,CAAC,OAAO,CAAC,+BAAc,EAAE,2DAA2D,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,yBAAS,CAAC,SAAS;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,OAAO,IAAA,8DAA8B,EAAC,YAAY,CAAC,CAAC;AACtD,CAAC","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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { obtainGraphicRepresentationUrl } from \"./GraphicRepresentationProvider\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\n\r\n/** Arguments supplied to [[obtainIModelTilesetUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainIModelTilesetUrlArgs {\r\n /** The iTwin id for which to obtain a tileset URL. */\r\n iTwinId?: string;\r\n /** The iModel id for which to obtain a tileset URL. */\r\n iModelId?: string;\r\n /** The changeset id for which to obtain a tileset URL. */\r\n changesetId?: string;\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only exports produced for `iModel`'s specific changeset will be considered; otherwise, if no exports are found for the changeset,\r\n * the most recent export for any changeset will be used.\r\n */\r\n requireExactChangeset?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainIModelTilesetUrl(args: ObtainIModelTilesetUrlArgs):\r\n Promise<URL | undefined> {\r\n if (!args.iModelId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iModelId\");\r\n return undefined;\r\n }\r\n\r\n if (!args.iTwinId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iTwinId\");\r\n return undefined;\r\n }\r\n\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n requireExactVersion: args.requireExactChangeset,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n return obtainGraphicRepresentationUrl(graphicsArgs);\r\n}\r\n"]}
@@ -58,6 +58,8 @@ export interface QueryMeshExportsArgs {
58
58
  includeIncomplete?: boolean;
59
59
  /** If true, enables a CDN (content delivery network) to access tiles faster. */
60
60
  enableCDN?: boolean;
61
+ /** Number of exports to query */
62
+ numExports?: number;
61
63
  }
62
64
  /** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type "IMODEL" matching
63
65
  * the specified criteria.
@@ -1 +1 @@
1
- {"version":3,"file":"FrontendTiles.d.ts","sourceRoot":"","sources":["../../src/FrontendTiles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,gBAAgB,EAA+C,MAAM,sBAAsB,CAAC;AAGhH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA0B,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEzG;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,GAAG,CAAC;QACrB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;IAGF,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IAGtB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAuB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAuCrG;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAE/G;AACD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;MAGE;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqB3E"}
1
+ {"version":3,"file":"FrontendTiles.d.ts","sourceRoot":"","sources":["../../src/FrontendTiles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,gBAAgB,EAA+C,MAAM,sBAAsB,CAAC;AAGhH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA0B,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEzG;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,GAAG,CAAC;QACrB,oBAAoB,EAAE,GAAG,CAAC;KAC3B,CAAC;IAGF,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IAGtB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAuB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAwCrG;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAE/G;AACD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;MAGE;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqB3E"}
@@ -25,6 +25,7 @@ export async function* queryMeshExports(args) {
25
25
  urlPrefix: args.urlPrefix,
26
26
  includeIncomplete: args.includeIncomplete,
27
27
  enableCDN: args.enableCDN,
28
+ numExports: args.numExports,
28
29
  };
29
30
  for await (const data of queryGraphicRepresentations(graphicsArgs)) {
30
31
  const meshExport = {
@@ -1 +1 @@
1
- {"version":3,"file":"FrontendTiles.js","sourceRoot":"","sources":["../../src/FrontendTiles.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\r\nimport { IModelApp, IModelConnection, SpatialTileTreeReferences, SpatialViewState } from \"@itwin/core-frontend\";\r\nimport { createBatchedSpatialTileTreeReferences } from \"./BatchedSpatialTileTreeRefs\";\r\nimport { queryGraphicRepresentations } from \"./GraphicsProvider/GraphicRepresentationProvider\";\r\nimport { AccessToken } from \"@itwin/core-bentley\";\r\nimport { obtainIModelTilesetUrl, ObtainIModelTilesetUrlArgs } from \"./GraphicsProvider/GraphicsProvider\";\r\n\r\n/** A function that can provide the base URL where a tileset representing all of the spatial models in a given iModel are stored.\r\n * The tileset is expected to reside at \"baseUrl/tileset.json\" and to have been produced by the [mesh export service](https://developer.bentley.com/apis/mesh-export/).\r\n * If no such tileset exists for the given iModel, return `undefined`.\r\n * @see [[FrontendTilesOptions.computeSpatialTilesetBaseUrl]].\r\n * @beta\r\n */\r\nexport type ComputeSpatialTilesetBaseUrl = (iModel: IModelConnection) => Promise<URL | undefined>;\r\n\r\n/** Represents the result of a [mesh export](https://developer.bentley.com/apis/mesh-export/operations/get-export/#export).\r\n * @see [[queryCompletedMeshExports]].\r\n * @beta\r\n */\r\nexport interface MeshExport {\r\n id: string;\r\n displayName: string;\r\n status: string;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Exposed strictly for tests.\r\n * @internal\r\n */\r\nexport interface MeshExports {\r\n exports: MeshExport[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Arguments supplied to [[queryMeshExports]].\r\n * @beta\r\n */\r\nexport interface QueryMeshExportsArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The iTwinId associated with the Mesh Export */\r\n iTwinId: string;\r\n /** The Id of the iModel for which to query exports. */\r\n iModelId: string;\r\n /** If defined, constrains the query to exports produced from the specified changeset. */\r\n changesetId?: string;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results. */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type \"IMODEL\" matching\r\n * the specified criteria.\r\n * The exports are sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryMeshExports(args: QueryMeshExportsArgs): AsyncIterableIterator<MeshExport> {\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n includeIncomplete: args.includeIncomplete,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n for await (const data of queryGraphicRepresentations(graphicsArgs)) {\r\n const meshExport = {\r\n id: data.representationId,\r\n displayName: data.displayName,\r\n status: data.status,\r\n request: {\r\n iModelId: data.dataSource.id,\r\n changesetId: data.dataSource.changeId ?? \"\",\r\n exportType: data.dataSource.type,\r\n geometryOptions: {},\r\n viewDefinitionFilter: {},\r\n },\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: data.url ?? \"\",\r\n },\r\n },\r\n };\r\n\r\n yield meshExport;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainMeshExportTilesetUrl]].\r\n * @beta\r\n */\r\nexport type ObtainMeshExportTilesetUrlArgs = ObtainIModelTilesetUrlArgs;\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainMeshExportTilesetUrl(args: ObtainMeshExportTilesetUrlArgs): Promise<URL | undefined> {\r\n return obtainIModelTilesetUrl(args);\r\n}\r\n/** Options supplied to [[initializeFrontendTiles]].\r\n * @beta\r\n */\r\nexport interface FrontendTilesOptions {\r\n /** Provide the base URL for the pre-published tileset for a given iModel.\r\n * If omitted, [[obtainMeshExportTilesetUrl]] will be invoked with default arguments, using the access token provided by [[IModelApp]].\r\n */\r\n computeSpatialTilesetBaseUrl?: ComputeSpatialTilesetBaseUrl;\r\n /** The maximum number of levels in the tile tree to skip loading if they do not provide the desired level of detail for the current view.\r\n * Default: 4.\r\n * Reducing this value will load more intermediate tiles, which causes more gradual refinement: low-resolution tiles will display quickly, followed more gradually by\r\n * successively higher-resolution ones.\r\n * Increasing the value jumps more directly to tiles of the exact level of detail desired, which may load more, smaller tiles up-front, leaving some areas of the view\r\n * vacant for longer; and when zooming out some newly-exposed areas of the view may remain vacant for longer because no lower-resolution tiles are initially available to\r\n * fill them. However, tiles close to the viewer (and therefore likely of most interest to them) will refine to an appropriate level of detail more quickly.\r\n */\r\n maxLevelsToSkip?: number;\r\n /** Specifies whether to permit the user to enable visible edges or wireframe mode for batched tiles.\r\n * The currently-deployed mesh export service does not produce edges, so this currently defaults to `false` to avoid user confusion.\r\n * Set it to `true` if you are loading tiles created with a version of the exporter that does produce edges.\r\n * ###TODO delete this option once we deploy an edge-producing version of the exporter to production.\r\n * @internal\r\n */\r\n enableEdges?: boolean;\r\n /** Specifies whether to enable a CDN (content delivery network) to access tiles faster.\r\n * This option is only used if computeSpatialTilesetBaseUrl is not defined.\r\n * @beta\r\n */\r\n enableCDN?: boolean;\r\n /** Specifies whether to enable an IndexedDB database for use as a local cache.\r\n * Requested tiles will then first be search for in the database, and if not found, fetched as normal.\r\n * @internal\r\n */\r\n useIndexedDBCache?: boolean;\r\n\r\n /** If true, an empty tile tree will be used as fallback if the tileset is not found or invalid.\r\n * If false or not defined, the default tiles will be used as a fallback.\r\n * @internal\r\n */\r\n nopFallback?: boolean;\r\n}\r\n\r\n/** Global configuration initialized by [[initializeFrontendTiles]].\r\n * @internal\r\n */\r\nexport const frontendTilesOptions = {\r\n maxLevelsToSkip: 4,\r\n enableEdges: false,\r\n useIndexedDBCache: false,\r\n};\r\n\r\n/** Initialize the frontend-tiles package to obtain tiles for spatial views.\r\n * @beta\r\n */\r\nexport function initializeFrontendTiles(options: FrontendTilesOptions): void {\r\n if (undefined !== options.maxLevelsToSkip && options.maxLevelsToSkip >= 0)\r\n frontendTilesOptions.maxLevelsToSkip = options.maxLevelsToSkip;\r\n\r\n if (options.enableEdges)\r\n frontendTilesOptions.enableEdges = true;\r\n\r\n if (options.useIndexedDBCache)\r\n frontendTilesOptions.useIndexedDBCache = true;\r\n\r\n const computeUrl = options.computeSpatialTilesetBaseUrl ?? (\r\n async (iModel: IModelConnection) => obtainMeshExportTilesetUrl({\r\n iTwinId: iModel.iTwinId,\r\n iModelId: iModel.iModelId,\r\n changesetId: iModel.changeset.id,\r\n accessToken: await IModelApp.getAccessToken(),\r\n enableCDN: options.enableCDN,\r\n })\r\n );\r\n\r\n SpatialTileTreeReferences.create = (view: SpatialViewState) => createBatchedSpatialTileTreeReferences(view, computeUrl, options.nopFallback ?? false);\r\n}\r\n"]}
1
+ {"version":3,"file":"FrontendTiles.js","sourceRoot":"","sources":["../../src/FrontendTiles.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\r\nimport { IModelApp, IModelConnection, SpatialTileTreeReferences, SpatialViewState } from \"@itwin/core-frontend\";\r\nimport { createBatchedSpatialTileTreeReferences } from \"./BatchedSpatialTileTreeRefs\";\r\nimport { queryGraphicRepresentations } from \"./GraphicsProvider/GraphicRepresentationProvider\";\r\nimport { AccessToken } from \"@itwin/core-bentley\";\r\nimport { obtainIModelTilesetUrl, ObtainIModelTilesetUrlArgs } from \"./GraphicsProvider/GraphicsProvider\";\r\n\r\n/** A function that can provide the base URL where a tileset representing all of the spatial models in a given iModel are stored.\r\n * The tileset is expected to reside at \"baseUrl/tileset.json\" and to have been produced by the [mesh export service](https://developer.bentley.com/apis/mesh-export/).\r\n * If no such tileset exists for the given iModel, return `undefined`.\r\n * @see [[FrontendTilesOptions.computeSpatialTilesetBaseUrl]].\r\n * @beta\r\n */\r\nexport type ComputeSpatialTilesetBaseUrl = (iModel: IModelConnection) => Promise<URL | undefined>;\r\n\r\n/** Represents the result of a [mesh export](https://developer.bentley.com/apis/mesh-export/operations/get-export/#export).\r\n * @see [[queryCompletedMeshExports]].\r\n * @beta\r\n */\r\nexport interface MeshExport {\r\n id: string;\r\n displayName: string;\r\n status: string;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Exposed strictly for tests.\r\n * @internal\r\n */\r\nexport interface MeshExports {\r\n exports: MeshExport[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n/** Arguments supplied to [[queryMeshExports]].\r\n * @beta\r\n */\r\nexport interface QueryMeshExportsArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The iTwinId associated with the Mesh Export */\r\n iTwinId: string;\r\n /** The Id of the iModel for which to query exports. */\r\n iModelId: string;\r\n /** If defined, constrains the query to exports produced from the specified changeset. */\r\n changesetId?: string;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results. */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n /** Number of exports to query */\r\n numExports?: number;\r\n}\r\n\r\n/** Query the [mesh export service](https://developer.bentley.com/apis/mesh-export/operations/get-exports/) for exports of type \"IMODEL\" matching\r\n * the specified criteria.\r\n * The exports are sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryMeshExports(args: QueryMeshExportsArgs): AsyncIterableIterator<MeshExport> {\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n includeIncomplete: args.includeIncomplete,\r\n enableCDN: args.enableCDN,\r\n numExports: args.numExports,\r\n };\r\n\r\n for await (const data of queryGraphicRepresentations(graphicsArgs)) {\r\n const meshExport = {\r\n id: data.representationId,\r\n displayName: data.displayName,\r\n status: data.status,\r\n request: {\r\n iModelId: data.dataSource.id,\r\n changesetId: data.dataSource.changeId ?? \"\",\r\n exportType: data.dataSource.type,\r\n geometryOptions: {},\r\n viewDefinitionFilter: {},\r\n },\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n mesh: {\r\n href: data.url ?? \"\",\r\n },\r\n },\r\n };\r\n\r\n yield meshExport;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainMeshExportTilesetUrl]].\r\n * @beta\r\n */\r\nexport type ObtainMeshExportTilesetUrlArgs = ObtainIModelTilesetUrlArgs;\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainMeshExportTilesetUrl(args: ObtainMeshExportTilesetUrlArgs): Promise<URL | undefined> {\r\n return obtainIModelTilesetUrl(args);\r\n}\r\n/** Options supplied to [[initializeFrontendTiles]].\r\n * @beta\r\n */\r\nexport interface FrontendTilesOptions {\r\n /** Provide the base URL for the pre-published tileset for a given iModel.\r\n * If omitted, [[obtainMeshExportTilesetUrl]] will be invoked with default arguments, using the access token provided by [[IModelApp]].\r\n */\r\n computeSpatialTilesetBaseUrl?: ComputeSpatialTilesetBaseUrl;\r\n /** The maximum number of levels in the tile tree to skip loading if they do not provide the desired level of detail for the current view.\r\n * Default: 4.\r\n * Reducing this value will load more intermediate tiles, which causes more gradual refinement: low-resolution tiles will display quickly, followed more gradually by\r\n * successively higher-resolution ones.\r\n * Increasing the value jumps more directly to tiles of the exact level of detail desired, which may load more, smaller tiles up-front, leaving some areas of the view\r\n * vacant for longer; and when zooming out some newly-exposed areas of the view may remain vacant for longer because no lower-resolution tiles are initially available to\r\n * fill them. However, tiles close to the viewer (and therefore likely of most interest to them) will refine to an appropriate level of detail more quickly.\r\n */\r\n maxLevelsToSkip?: number;\r\n /** Specifies whether to permit the user to enable visible edges or wireframe mode for batched tiles.\r\n * The currently-deployed mesh export service does not produce edges, so this currently defaults to `false` to avoid user confusion.\r\n * Set it to `true` if you are loading tiles created with a version of the exporter that does produce edges.\r\n * ###TODO delete this option once we deploy an edge-producing version of the exporter to production.\r\n * @internal\r\n */\r\n enableEdges?: boolean;\r\n /** Specifies whether to enable a CDN (content delivery network) to access tiles faster.\r\n * This option is only used if computeSpatialTilesetBaseUrl is not defined.\r\n * @beta\r\n */\r\n enableCDN?: boolean;\r\n /** Specifies whether to enable an IndexedDB database for use as a local cache.\r\n * Requested tiles will then first be search for in the database, and if not found, fetched as normal.\r\n * @internal\r\n */\r\n useIndexedDBCache?: boolean;\r\n\r\n /** If true, an empty tile tree will be used as fallback if the tileset is not found or invalid.\r\n * If false or not defined, the default tiles will be used as a fallback.\r\n * @internal\r\n */\r\n nopFallback?: boolean;\r\n}\r\n\r\n/** Global configuration initialized by [[initializeFrontendTiles]].\r\n * @internal\r\n */\r\nexport const frontendTilesOptions = {\r\n maxLevelsToSkip: 4,\r\n enableEdges: false,\r\n useIndexedDBCache: false,\r\n};\r\n\r\n/** Initialize the frontend-tiles package to obtain tiles for spatial views.\r\n * @beta\r\n */\r\nexport function initializeFrontendTiles(options: FrontendTilesOptions): void {\r\n if (undefined !== options.maxLevelsToSkip && options.maxLevelsToSkip >= 0)\r\n frontendTilesOptions.maxLevelsToSkip = options.maxLevelsToSkip;\r\n\r\n if (options.enableEdges)\r\n frontendTilesOptions.enableEdges = true;\r\n\r\n if (options.useIndexedDBCache)\r\n frontendTilesOptions.useIndexedDBCache = true;\r\n\r\n const computeUrl = options.computeSpatialTilesetBaseUrl ?? (\r\n async (iModel: IModelConnection) => obtainMeshExportTilesetUrl({\r\n iTwinId: iModel.iTwinId,\r\n iModelId: iModel.iModelId,\r\n changesetId: iModel.changeset.id,\r\n accessToken: await IModelApp.getAccessToken(),\r\n enableCDN: options.enableCDN,\r\n })\r\n );\r\n\r\n SpatialTileTreeReferences.create = (view: SpatialViewState) => createBatchedSpatialTileTreeReferences(view, computeUrl, options.nopFallback ?? false);\r\n}\r\n"]}
@@ -62,6 +62,17 @@ export type GraphicRepresentation = {
62
62
  status: GraphicRepresentationStatus.Complete;
63
63
  url: string;
64
64
  });
65
+ /** Creates a URL used to query for Graphic Representations
66
+ * @internal
67
+ */
68
+ export declare function createGraphicRepresentationsQueryUrl(args: {
69
+ sourceId: string;
70
+ sourceType: string;
71
+ urlPrefix?: string;
72
+ changeId?: string;
73
+ enableCDN?: boolean;
74
+ numExports?: number;
75
+ }): string;
65
76
  /** Arguments supplied to [[queryGraphicRepresentations]].
66
77
  * @beta
67
78
  */
@@ -84,6 +95,8 @@ export interface QueryGraphicRepresentationsArgs {
84
95
  includeIncomplete?: boolean;
85
96
  /** If true, enables a CDN (content delivery network) to access tiles faster. */
86
97
  enableCDN?: boolean;
98
+ /** Number of exports to query */
99
+ numExports?: number;
87
100
  }
88
101
  /** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.
89
102
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicRepresentationProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAI1D;;GAEG;AAEH,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtE;;;GAGG;AAEH,oBAAY,2BAA2B;IACrC,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;MAEE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CAKxB,GAAG,CAAC;IACH,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG;IACF,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAkBH;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAuB,2BAA2B,CAAC,IAAI,EAAE,+BAA+B,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CA4EtI;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,kCAAkC,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAsCvH"}
1
+ {"version":3,"file":"GraphicRepresentationProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAI1D;;GAEG;AAEH,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtE;;;GAGG;AAEH,oBAAY,2BAA2B;IACrC,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;MAEE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CAKxB,GAAG,CAAC;IACH,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG;IACF,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAe5L;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAuB,2BAA2B,CAAC,IAAI,EAAE,+BAA+B,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CA4EtI;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,2BAA2B,CAAC;IACpC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,kCAAkC,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAsCvH"}
@@ -17,10 +17,13 @@ export var GraphicRepresentationStatus;
17
17
  GraphicRepresentationStatus["NotStarted"] = "Not started";
18
18
  GraphicRepresentationStatus["Failed"] = "Failed";
19
19
  })(GraphicRepresentationStatus || (GraphicRepresentationStatus = {}));
20
- /** Creates a URL used to query for Graphic Representations */
21
- function createGraphicRepresentationsQueryUrl(args) {
20
+ /** Creates a URL used to query for Graphic Representations
21
+ * @internal
22
+ */
23
+ export function createGraphicRepresentationsQueryUrl(args) {
22
24
  const prefix = args.urlPrefix ?? "";
23
- let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=5`;
25
+ const numExports = args.numExports ?? 5;
26
+ let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=${numExports}`;
24
27
  if (args.changeId)
25
28
  url = `${url}&changesetId=${args.changeId}`;
26
29
  if (args.enableCDN)
@@ -43,7 +46,7 @@ export async function* queryGraphicRepresentations(args) {
43
46
  /* eslint-disable-next-line @typescript-eslint/naming-convention */
44
47
  SessionId: args.sessionId,
45
48
  };
46
- let url = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN });
49
+ let url = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN, numExports: args.numExports });
47
50
  while (url) {
48
51
  let result;
49
52
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicRepresentationProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAe,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQvE;;;GAGG;AACH,mHAAmH;AACnH,MAAM,CAAN,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,yDAA0B,CAAA;IAC1B,oDAAqB,CAAA;IACrB,yDAA0B,CAAA;IAC1B,gDAAiB,CAAA;AACnB,CAAC,EALW,2BAA2B,KAA3B,2BAA2B,QAKtC;AAyDD,8DAA8D;AAC9D,SAAS,oCAAoC,CAAC,IAA0G;IACtJ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACpC,IAAI,GAAG,GAAG,WAAW,MAAM,yCAAyC,IAAI,CAAC,QAAQ,4BAA4B,CAAC;IAC9G,IAAI,IAAI,CAAC,QAAQ;QACf,GAAG,GAAG,GAAG,GAAG,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAE9C,IAAI,IAAI,CAAC,SAAS;QAChB,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC;IAEvB,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC;IACjF,GAAG,GAAG,GAAG,GAAG,gBAAgB,WAAW,YAAY,oBAAoB,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC;IAExG,OAAO,GAAG,CAAC;AACb,CAAC;AA0BD;;GAEG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAAC,IAAqC;IAgCtF,MAAM,OAAO,GAAG;QACd,mEAAmE;QACnE,aAAa,EAAE,IAAI,CAAC,WAAW;QAC/B,mEAAmE;QACnE,MAAM,EAAE,gDAAgD;QACxD,mEAAmE;QACnE,MAAM,EAAE,uBAAuB;QAC/B,mEAAmE;QACnE,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,IAAI,GAAG,GAAuB,oCAAoC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACjO,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,2CAA2C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACjG,MAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClL,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,qBAAqB,GAA0B;gBACnD,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,gBAAgB,EAAE,WAAW,CAAC,EAAE;gBAChC,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;gBAClC,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;oBAChC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ;oBAChC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW;oBACzC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU;iBACrC;aACF,CAAC;YAEF,MAAM,qBAAqB,CAAC;QAC9B,CAAC;QAED,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IACjC,CAAC;AACH,CAAC;AA4BD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,IAAwC;IAC3F,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,yDAAyD,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAoC;QACjD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,IAAI,YAAY,CAAC;IACjB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM;IACR,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/C,SAAS,CAAC,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,2BAA2B,IAAI,CAAC,UAAU,CAAC,EAAE,gBAAgB,IAAI,CAAC,UAAU,CAAC,QAAQ,+BAA+B,CAAC,CAAC;YACrJ,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qCAAqC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,eAAe,CAAC;IAC9C,OAAO,GAAG,CAAC;AACb,CAAC","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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\nimport { IModelApp, ITWINJS_CORE_VERSION } from \"@itwin/core-frontend\";\r\n\r\n/** The expected format of the Graphic Representation\r\n * @beta\r\n */\r\n/* eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents */\r\nexport type GraphicRepresentationFormat = \"IMDL\" | \"3DTILES\" | string;\r\n\r\n/** Graphic representations are generated from Data Sources.\r\n * The status of a Graphic Representation indicates the progress of that generation process.\r\n * @beta\r\n */\r\n// ###TODO this needs to be expanded to include more statuses, and/or \"failed\" needs to be replaced with \"invalid\".\r\nexport enum GraphicRepresentationStatus {\r\n InProgress = \"In progress\",\r\n Complete = \"Complete\",\r\n NotStarted = \"Not started\",\r\n Failed = \"Failed\",\r\n}\r\n\r\n/**\r\n * Represents a data source for a graphic representation.\r\n * A data source is usually higher-fidelity and contains more information, but may not be as well suited for visualization\r\n * as a graphic representation.\r\n * @beta\r\n */\r\nexport interface DataSource {\r\n /** The iTwinId associated with the DataSource */\r\n iTwinId: string;\r\n /** The unique identifier of a DataSource.\r\n * For example, a DataSource of type \"IMODEL\" has an iModelId which would be attributed to this value.\r\n */\r\n id: string;\r\n /** The unique identifier for a specific version of a DataSource.\r\n * For example, if a specific version of an iModel is desired, the iModel's changesetId would be attributed to this value.\r\n */\r\n changeId?: string;\r\n /** The type of the data source. For example, a DataSource can be of type \"IMODEL\" or \"RealityData\" */\r\n type: string;\r\n}\r\n\r\n/** Represents a visual representation of a data source, for example a 3d tileset.\r\n * A data source can be an iModel, reality data, or other kind of graphical data.\r\n * @see [[queryGraphicRepresentations]] for its construction as a representation of the data produced by a query of data sources.\r\n * @beta\r\n */\r\nexport type GraphicRepresentation = {\r\n /** The display name of the Graphic Representation */\r\n displayName: string;\r\n /** The unique identifier for the Graphic Representation */\r\n representationId: string;\r\n /** The status of the generation of the Graphic Representation from its Data Source.\r\n * @see [[GraphicRepresentationStatus]] for possible values.\r\n */\r\n status: GraphicRepresentationStatus;\r\n /** The expected format of the Graphic Representation\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** The data source that the representation originates from.\r\n * For example, a GraphicRepresentation in the 3D Tiles format might have a dataSource that is a specific iModel changeset.\r\n */\r\n dataSource: DataSource;\r\n /** The url of the graphic representation\r\n * @note The url can only be guaranteed to be valid if the status is complete.\r\n * Therefore, the url is optional if the status is not complete, and required if the status is complete.\r\n */\r\n} & ({\r\n status: Omit<GraphicRepresentationStatus, GraphicRepresentationStatus.Complete>;\r\n url?: string;\r\n} | {\r\n status: GraphicRepresentationStatus.Complete;\r\n url: string;\r\n});\r\n\r\n/** Creates a URL used to query for Graphic Representations */\r\nfunction createGraphicRepresentationsQueryUrl(args: { sourceId: string, sourceType: string, urlPrefix?: string, changeId?: string, enableCDN?: boolean }): string {\r\n const prefix = args.urlPrefix ?? \"\";\r\n let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=5`;\r\n if (args.changeId)\r\n url = `${url}&changesetId=${args.changeId}`;\r\n\r\n if (args.enableCDN)\r\n url = `${url}&cdn=1`;\r\n\r\n const tileVersion = IModelApp.tileAdmin.maximumMajorTileFormatVersion.toString();\r\n url = `${url}&tileVersion=${tileVersion}&iTwinJS=${ITWINJS_CORE_VERSION}&exportType=${args.sourceType}`;\r\n\r\n return url;\r\n}\r\n\r\n/** Arguments supplied to [[queryGraphicRepresentations]].\r\n * @beta\r\n */\r\nexport interface QueryGraphicRepresentationsArgs {\r\n /** The token used to access the data source provider. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The Data Source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryGraphicRepresentations(args: QueryGraphicRepresentationsArgs): AsyncIterableIterator<GraphicRepresentation> {\r\n interface ServiceJsonResponse {\r\n id: string;\r\n displayName: string;\r\n status: GraphicRepresentationStatus;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links?: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n interface ServiceJsonResponses {\r\n exports: ServiceJsonResponse[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n const headers = {\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Authorization: args.accessToken,\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Accept: \"application/vnd.bentley.itwin-platform.v1+json\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Prefer: \"return=representation\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n SessionId: args.sessionId,\r\n };\r\n\r\n let url: string | undefined = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN });\r\n while (url) {\r\n let result;\r\n try {\r\n const response = await fetch(url, { headers });\r\n result = await response.json() as ServiceJsonResponses;\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n Logger.logError(loggerCategory, `Failed loading Graphics Data for Source ${args.dataSource.id}`);\r\n break;\r\n }\r\n\r\n const foundSources = result.exports.filter((x) => x.request.exportType === args.dataSource.type && (args.includeIncomplete || x.status === GraphicRepresentationStatus.Complete));\r\n for (const foundSource of foundSources) {\r\n const graphicRepresentation: GraphicRepresentation = {\r\n displayName: foundSource.displayName,\r\n representationId: foundSource.id,\r\n status: foundSource.status,\r\n format: args.format,\r\n url: foundSource._links?.mesh.href,\r\n dataSource: {\r\n iTwinId: args.dataSource.iTwinId,\r\n id: foundSource.request.iModelId,\r\n changeId: foundSource.request.changesetId,\r\n type: foundSource.request.exportType,\r\n },\r\n };\r\n\r\n yield graphicRepresentation;\r\n }\r\n\r\n url = result._links.next?.href;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainGraphicRepresentationUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainGraphicRepresentationUrlArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The data source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only data produced for a specific data source version will be considered;\r\n * otherwise, if no data sources are found with the specified version,the most recent data source version will be used.\r\n */\r\n requireExactVersion?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a Graphic Representation.\r\n * [[queryGraphicRepresentations]] is used to obtain a list of available representations. By default, the list is sorted from most to least recently-created.\r\n * The first representation matching the source version is selected; or, if no such representation exists, the first representation in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainGraphicRepresentationUrl(args: ObtainGraphicRepresentationUrlArgs): Promise<URL | undefined> {\r\n if (!args.dataSource.id) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data from a source without an Id\");\r\n return undefined;\r\n }\r\n\r\n const queryArgs: QueryGraphicRepresentationsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: args.sessionId,\r\n dataSource: args.dataSource,\r\n format: args.format,\r\n urlPrefix: args.urlPrefix,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n let selectedData;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n break;\r\n }\r\n\r\n if (!selectedData && !args.requireExactVersion) {\r\n queryArgs.dataSource.changeId = undefined;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n Logger.logInfo(loggerCategory, `No data for Data Source ${args.dataSource.id} for version ${args.dataSource.changeId}; falling back to most recent`);\r\n break;\r\n }\r\n }\r\n\r\n if ((!selectedData) || (!selectedData.url)) {\r\n Logger.logInfo(loggerCategory, `No data available for Data Source ${args.dataSource.id}`);\r\n return undefined;\r\n }\r\n\r\n const url = new URL(selectedData.url);\r\n url.pathname = `${url.pathname}/tileset.json`;\r\n return url;\r\n}\r\n"]}
1
+ {"version":3,"file":"GraphicRepresentationProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicRepresentationProvider.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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\nimport { IModelApp, ITWINJS_CORE_VERSION } from \"@itwin/core-frontend\";\r\n\r\n/** The expected format of the Graphic Representation\r\n * @beta\r\n */\r\n/* eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents */\r\nexport type GraphicRepresentationFormat = \"IMDL\" | \"3DTILES\" | string;\r\n\r\n/** Graphic representations are generated from Data Sources.\r\n * The status of a Graphic Representation indicates the progress of that generation process.\r\n * @beta\r\n */\r\n// ###TODO this needs to be expanded to include more statuses, and/or \"failed\" needs to be replaced with \"invalid\".\r\nexport enum GraphicRepresentationStatus {\r\n InProgress = \"In progress\",\r\n Complete = \"Complete\",\r\n NotStarted = \"Not started\",\r\n Failed = \"Failed\",\r\n}\r\n\r\n/**\r\n * Represents a data source for a graphic representation.\r\n * A data source is usually higher-fidelity and contains more information, but may not be as well suited for visualization\r\n * as a graphic representation.\r\n * @beta\r\n */\r\nexport interface DataSource {\r\n /** The iTwinId associated with the DataSource */\r\n iTwinId: string;\r\n /** The unique identifier of a DataSource.\r\n * For example, a DataSource of type \"IMODEL\" has an iModelId which would be attributed to this value.\r\n */\r\n id: string;\r\n /** The unique identifier for a specific version of a DataSource.\r\n * For example, if a specific version of an iModel is desired, the iModel's changesetId would be attributed to this value.\r\n */\r\n changeId?: string;\r\n /** The type of the data source. For example, a DataSource can be of type \"IMODEL\" or \"RealityData\" */\r\n type: string;\r\n}\r\n\r\n/** Represents a visual representation of a data source, for example a 3d tileset.\r\n * A data source can be an iModel, reality data, or other kind of graphical data.\r\n * @see [[queryGraphicRepresentations]] for its construction as a representation of the data produced by a query of data sources.\r\n * @beta\r\n */\r\nexport type GraphicRepresentation = {\r\n /** The display name of the Graphic Representation */\r\n displayName: string;\r\n /** The unique identifier for the Graphic Representation */\r\n representationId: string;\r\n /** The status of the generation of the Graphic Representation from its Data Source.\r\n * @see [[GraphicRepresentationStatus]] for possible values.\r\n */\r\n status: GraphicRepresentationStatus;\r\n /** The expected format of the Graphic Representation\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** The data source that the representation originates from.\r\n * For example, a GraphicRepresentation in the 3D Tiles format might have a dataSource that is a specific iModel changeset.\r\n */\r\n dataSource: DataSource;\r\n /** The url of the graphic representation\r\n * @note The url can only be guaranteed to be valid if the status is complete.\r\n * Therefore, the url is optional if the status is not complete, and required if the status is complete.\r\n */\r\n} & ({\r\n status: Omit<GraphicRepresentationStatus, GraphicRepresentationStatus.Complete>;\r\n url?: string;\r\n} | {\r\n status: GraphicRepresentationStatus.Complete;\r\n url: string;\r\n});\r\n\r\n/** Creates a URL used to query for Graphic Representations\r\n * @internal\r\n */\r\nexport function createGraphicRepresentationsQueryUrl(args: { sourceId: string, sourceType: string, urlPrefix?: string, changeId?: string, enableCDN?: boolean, numExports?: number }): string {\r\n const prefix = args.urlPrefix ?? \"\";\r\n const numExports = args.numExports ?? 5;\r\n let url = `https://${prefix}api.bentley.com/mesh-export/?iModelId=${args.sourceId}&$orderBy=date:desc&$top=${numExports}`;\r\n\r\n if (args.changeId)\r\n url = `${url}&changesetId=${args.changeId}`;\r\n\r\n if (args.enableCDN)\r\n url = `${url}&cdn=1`;\r\n\r\n const tileVersion = IModelApp.tileAdmin.maximumMajorTileFormatVersion.toString();\r\n url = `${url}&tileVersion=${tileVersion}&iTwinJS=${ITWINJS_CORE_VERSION}&exportType=${args.sourceType}`;\r\n\r\n return url;\r\n}\r\n\r\n/** Arguments supplied to [[queryGraphicRepresentations]].\r\n * @beta\r\n */\r\nexport interface QueryGraphicRepresentationsArgs {\r\n /** The token used to access the data source provider. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The Data Source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, exports whose status is not \"Complete\" (indicating the export successfully finished) will be included in the results */\r\n includeIncomplete?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n /** Number of exports to query */\r\n numExports?: number;\r\n}\r\n\r\n/** Query Graphic Representations matching the specified criteria, sorted from most-recently- to least-recently-produced.\r\n * @beta\r\n */\r\nexport async function* queryGraphicRepresentations(args: QueryGraphicRepresentationsArgs): AsyncIterableIterator<GraphicRepresentation> {\r\n interface ServiceJsonResponse {\r\n id: string;\r\n displayName: string;\r\n status: GraphicRepresentationStatus;\r\n request: {\r\n iModelId: string;\r\n changesetId: string;\r\n exportType: string;\r\n geometryOptions: any;\r\n viewDefinitionFilter: any;\r\n };\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links?: {\r\n mesh: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n interface ServiceJsonResponses {\r\n exports: ServiceJsonResponse[];\r\n\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n _links: {\r\n next?: {\r\n href: string;\r\n };\r\n };\r\n }\r\n\r\n const headers = {\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Authorization: args.accessToken,\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Accept: \"application/vnd.bentley.itwin-platform.v1+json\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n Prefer: \"return=representation\",\r\n /* eslint-disable-next-line @typescript-eslint/naming-convention */\r\n SessionId: args.sessionId,\r\n };\r\n\r\n let url: string | undefined = createGraphicRepresentationsQueryUrl({ sourceId: args.dataSource.id, sourceType: args.dataSource.type, urlPrefix: args.urlPrefix, changeId: args.dataSource.changeId, enableCDN: args.enableCDN, numExports: args.numExports });\r\n while (url) {\r\n let result;\r\n try {\r\n const response = await fetch(url, { headers });\r\n result = await response.json() as ServiceJsonResponses;\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n Logger.logError(loggerCategory, `Failed loading Graphics Data for Source ${args.dataSource.id}`);\r\n break;\r\n }\r\n\r\n const foundSources = result.exports.filter((x) => x.request.exportType === args.dataSource.type && (args.includeIncomplete || x.status === GraphicRepresentationStatus.Complete));\r\n for (const foundSource of foundSources) {\r\n const graphicRepresentation: GraphicRepresentation = {\r\n displayName: foundSource.displayName,\r\n representationId: foundSource.id,\r\n status: foundSource.status,\r\n format: args.format,\r\n url: foundSource._links?.mesh.href,\r\n dataSource: {\r\n iTwinId: args.dataSource.iTwinId,\r\n id: foundSource.request.iModelId,\r\n changeId: foundSource.request.changesetId,\r\n type: foundSource.request.exportType,\r\n },\r\n };\r\n\r\n yield graphicRepresentation;\r\n }\r\n\r\n url = result._links.next?.href;\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[obtainGraphicRepresentationUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainGraphicRepresentationUrlArgs {\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** The unique identifier for the session in which this data source was queried.\r\n * A possible value is IModelApp.sessionId.\r\n */\r\n sessionId: string;\r\n /** The data source for which to query the graphic representations */\r\n dataSource: DataSource;\r\n /** The expected format of the graphic representations\r\n * @see [[GraphicRepresentationFormat]] for possible values.\r\n */\r\n format: GraphicRepresentationFormat;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only data produced for a specific data source version will be considered;\r\n * otherwise, if no data sources are found with the specified version,the most recent data source version will be used.\r\n */\r\n requireExactVersion?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a Graphic Representation.\r\n * [[queryGraphicRepresentations]] is used to obtain a list of available representations. By default, the list is sorted from most to least recently-created.\r\n * The first representation matching the source version is selected; or, if no such representation exists, the first representation in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainGraphicRepresentationUrl(args: ObtainGraphicRepresentationUrlArgs): Promise<URL | undefined> {\r\n if (!args.dataSource.id) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data from a source without an Id\");\r\n return undefined;\r\n }\r\n\r\n const queryArgs: QueryGraphicRepresentationsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: args.sessionId,\r\n dataSource: args.dataSource,\r\n format: args.format,\r\n urlPrefix: args.urlPrefix,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n let selectedData;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n break;\r\n }\r\n\r\n if (!selectedData && !args.requireExactVersion) {\r\n queryArgs.dataSource.changeId = undefined;\r\n for await (const data of queryGraphicRepresentations(queryArgs)) {\r\n selectedData = data;\r\n Logger.logInfo(loggerCategory, `No data for Data Source ${args.dataSource.id} for version ${args.dataSource.changeId}; falling back to most recent`);\r\n break;\r\n }\r\n }\r\n\r\n if ((!selectedData) || (!selectedData.url)) {\r\n Logger.logInfo(loggerCategory, `No data available for Data Source ${args.dataSource.id}`);\r\n return undefined;\r\n }\r\n\r\n const url = new URL(selectedData.url);\r\n url.pathname = `${url.pathname}/tileset.json`;\r\n return url;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAC7E,OAAO,CAAC,GAAG,GAAC,SAAS,CAAC,CA2BrB"}
1
+ {"version":3,"file":"GraphicsProvider.d.ts","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAC3E,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CA2BzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAe,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAgC;IAE3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,4DAA4D,CAAC,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,2DAA2D,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,OAAO,8BAA8B,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC","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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { obtainGraphicRepresentationUrl } from \"./GraphicRepresentationProvider\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\n\r\n/** Arguments supplied to [[obtainIModelTilesetUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainIModelTilesetUrlArgs {\r\n /** The iTwin id for which to obtain a tileset URL. */\r\n iTwinId?: string;\r\n /** The iModel id for which to obtain a tileset URL. */\r\n iModelId?: string;\r\n /** The changeset id for which to obtain a tileset URL. */\r\n changesetId?: string;\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only exports produced for `iModel`'s specific changeset will be considered; otherwise, if no exports are found for the changeset,\r\n * the most recent export for any changeset will be used.\r\n */\r\n requireExactChangeset?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainIModelTilesetUrl(args: ObtainIModelTilesetUrlArgs):\r\nPromise<URL|undefined> {\r\n if (!args.iModelId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iModelId\");\r\n return undefined;\r\n }\r\n\r\n if (!args.iTwinId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iTwinId\");\r\n return undefined;\r\n }\r\n\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n requireExactVersion: args.requireExactChangeset,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n return obtainGraphicRepresentationUrl(graphicsArgs);\r\n}\r\n"]}
1
+ {"version":3,"file":"GraphicsProvider.js","sourceRoot":"","sources":["../../../src/GraphicsProvider/GraphicsProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAe,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAgC;IAE3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,4DAA4D,CAAC,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,2DAA2D,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,OAAO,8BAA8B,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC","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\r\nimport { AccessToken, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { obtainGraphicRepresentationUrl } from \"./GraphicRepresentationProvider\";\r\nimport { loggerCategory } from \"../LoggerCategory\";\r\n\r\n/** Arguments supplied to [[obtainIModelTilesetUrl]].\r\n * @beta\r\n */\r\nexport interface ObtainIModelTilesetUrlArgs {\r\n /** The iTwin id for which to obtain a tileset URL. */\r\n iTwinId?: string;\r\n /** The iModel id for which to obtain a tileset URL. */\r\n iModelId?: string;\r\n /** The changeset id for which to obtain a tileset URL. */\r\n changesetId?: string;\r\n /** The token used to access the mesh export service. */\r\n accessToken: AccessToken;\r\n /** Chiefly used in testing environments. */\r\n urlPrefix?: string;\r\n /** If true, only exports produced for `iModel`'s specific changeset will be considered; otherwise, if no exports are found for the changeset,\r\n * the most recent export for any changeset will be used.\r\n */\r\n requireExactChangeset?: boolean;\r\n /** If true, enables a CDN (content delivery network) to access tiles faster. */\r\n enableCDN?: boolean;\r\n}\r\n\r\n/** Obtains a URL pointing to a tileset appropriate for visualizing a specific iModel.\r\n * [[queryCompletedMeshExports]] is used to obtain a list of available exports. By default, the list is sorted from most to least recently-exported.\r\n * The first export matching the iModel's changeset is selected; or, if no such export exists, the first export in the list is selected.\r\n * @returns A URL from which the tileset can be loaded, or `undefined` if no appropriate URL could be obtained.\r\n * @beta\r\n */\r\nexport async function obtainIModelTilesetUrl(args: ObtainIModelTilesetUrlArgs):\r\n Promise<URL | undefined> {\r\n if (!args.iModelId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iModelId\");\r\n return undefined;\r\n }\r\n\r\n if (!args.iTwinId) {\r\n Logger.logInfo(loggerCategory, \"Cannot obtain Graphics Data for an iModel with no iTwinId\");\r\n return undefined;\r\n }\r\n\r\n const graphicsArgs = {\r\n accessToken: args.accessToken,\r\n sessionId: IModelApp.sessionId,\r\n dataSource: {\r\n iTwinId: args.iTwinId,\r\n id: args.iModelId,\r\n changeId: args.changesetId,\r\n type: \"IMODEL\",\r\n },\r\n format: \"IMDL\",\r\n urlPrefix: args.urlPrefix,\r\n requireExactVersion: args.requireExactChangeset,\r\n enableCDN: args.enableCDN,\r\n };\r\n\r\n return obtainGraphicRepresentationUrl(graphicsArgs);\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/frontend-tiles",
3
- "version": "5.0.0-dev.0",
3
+ "version": "5.0.0-dev.10",
4
4
  "description": "Experimental alternative technique for visualizing the contents of iModels",
5
5
  "main": "lib/cjs/frontend-tiles.js",
6
6
  "module": "lib/esm/frontend-tiles.js",
@@ -21,17 +21,17 @@
21
21
  "url": "http://www.bentley.com"
22
22
  },
23
23
  "peerDependencies": {
24
- "@itwin/core-bentley": "5.0.0-dev.0",
25
- "@itwin/core-common": "5.0.0-dev.0",
26
- "@itwin/core-frontend": "5.0.0-dev.0",
27
- "@itwin/core-geometry": "5.0.0-dev.0"
24
+ "@itwin/core-geometry": "5.0.0-dev.10",
25
+ "@itwin/core-bentley": "5.0.0-dev.10",
26
+ "@itwin/core-frontend": "5.0.0-dev.10",
27
+ "@itwin/core-common": "5.0.0-dev.10"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@itwin/eslint-plugin": "5.0.0-dev.1",
31
31
  "@types/chai": "4.3.1",
32
32
  "@types/chai-as-promised": "^7",
33
33
  "@types/mocha": "^10.0.6",
34
- "@types/node": "~18.16.20",
34
+ "@types/node": "~20.9.5",
35
35
  "@types/sinon": "^17.0.2",
36
36
  "babel-loader": "~8.2.5",
37
37
  "babel-plugin-istanbul": "~6.1.1",
@@ -45,12 +45,12 @@
45
45
  "source-map-loader": "^4.0.0",
46
46
  "typescript": "~5.6.2",
47
47
  "webpack": "^5.76.0",
48
- "@itwin/build-tools": "5.0.0-dev.0",
49
- "@itwin/core-bentley": "5.0.0-dev.0",
50
- "@itwin/certa": "5.0.0-dev.0",
51
- "@itwin/core-common": "5.0.0-dev.0",
52
- "@itwin/core-frontend": "5.0.0-dev.0",
53
- "@itwin/core-geometry": "5.0.0-dev.0"
48
+ "@itwin/build-tools": "5.0.0-dev.10",
49
+ "@itwin/core-bentley": "5.0.0-dev.10",
50
+ "@itwin/core-common": "5.0.0-dev.10",
51
+ "@itwin/core-frontend": "5.0.0-dev.10",
52
+ "@itwin/certa": "5.0.0-dev.10",
53
+ "@itwin/core-geometry": "5.0.0-dev.10"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "npm run -s build:cjs && npm run -s build:esm",