@itwin/core-frontend 3.3.0-dev.5 → 3.3.0-dev.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +62 -1
  2. package/lib/cjs/DisplayStyleState.d.ts +68 -17
  3. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  4. package/lib/cjs/DisplayStyleState.js +66 -20
  5. package/lib/cjs/DisplayStyleState.js.map +1 -1
  6. package/lib/cjs/EntityState.d.ts +5 -5
  7. package/lib/cjs/EntityState.d.ts.map +1 -1
  8. package/lib/cjs/EntityState.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts.map +1 -1
  10. package/lib/cjs/IModelApp.js +1 -1
  11. package/lib/cjs/IModelApp.js.map +1 -1
  12. package/lib/cjs/IModelConnection.d.ts +1 -1
  13. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  14. package/lib/cjs/IModelConnection.js +1 -1
  15. package/lib/cjs/IModelConnection.js.map +1 -1
  16. package/lib/cjs/TentativePoint.js +1 -1
  17. package/lib/cjs/TentativePoint.js.map +1 -1
  18. package/lib/cjs/ViewRect.d.ts +5 -3
  19. package/lib/cjs/ViewRect.d.ts.map +1 -1
  20. package/lib/cjs/ViewRect.js +11 -7
  21. package/lib/cjs/ViewRect.js.map +1 -1
  22. package/lib/cjs/ViewState.d.ts.map +1 -1
  23. package/lib/cjs/ViewState.js +4 -0
  24. package/lib/cjs/ViewState.js.map +1 -1
  25. package/lib/cjs/Viewport.d.ts +1 -1
  26. package/lib/cjs/Viewport.d.ts.map +1 -1
  27. package/lib/cjs/Viewport.js +2 -2
  28. package/lib/cjs/Viewport.js.map +1 -1
  29. package/lib/cjs/extension/ExtensionAdmin.d.ts +5 -2
  30. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
  31. package/lib/cjs/extension/ExtensionAdmin.js +24 -6
  32. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  33. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts +8 -6
  34. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts.map +1 -1
  35. package/lib/cjs/extension/providers/ExtensionServiceClient.js +13 -6
  36. package/lib/cjs/extension/providers/ExtensionServiceClient.js.map +1 -1
  37. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  38. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  39. package/lib/cjs/extension/providers/RemoteExtensionProvider.js +9 -22
  40. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  41. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +7 -6
  42. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  43. package/lib/cjs/extension/providers/ServiceExtensionProvider.js +13 -24
  44. package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +1 -1
  45. package/lib/cjs/render/RenderSystem.d.ts +5 -0
  46. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  47. package/lib/cjs/render/RenderSystem.js.map +1 -1
  48. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  49. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -1
  50. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  51. package/lib/cjs/render/webgl/ShaderProgram.js +1 -1
  52. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  53. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  54. package/lib/cjs/render/webgl/Target.js +2 -2
  55. package/lib/cjs/render/webgl/Target.js.map +1 -1
  56. package/lib/cjs/render/webgl/UniformHandle.d.ts +2 -1
  57. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  58. package/lib/cjs/render/webgl/UniformHandle.js +15 -3
  59. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  60. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  61. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  62. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  63. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  64. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  65. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  66. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  67. package/lib/cjs/tile/TileAdmin.js +2 -0
  68. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  69. package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -2
  70. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  71. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  72. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  73. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +51 -4
  74. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  75. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  76. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  77. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  78. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  79. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  80. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  81. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  82. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  83. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  84. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  85. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  86. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  87. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  88. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  89. package/lib/cjs/tile/map/ImageryTileTree.js +6 -2
  90. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  91. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -0
  92. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  93. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -0
  94. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  95. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  96. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  97. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  98. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -1
  99. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  100. package/lib/cjs/tile/map/MapLayerImageryProvider.js +24 -10
  101. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  102. package/lib/cjs/tile/map/MapLayerSources.d.ts +14 -9
  103. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  104. package/lib/cjs/tile/map/MapLayerSources.js +14 -6
  105. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  106. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  107. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  108. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  109. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +2 -1
  110. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  111. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  112. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  113. package/lib/cjs/tools/PrimitiveTool.js +4 -4
  114. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  115. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  116. package/lib/cjs/tools/ToolAdmin.js +25 -10
  117. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  118. package/lib/esm/DisplayStyleState.d.ts +68 -17
  119. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  120. package/lib/esm/DisplayStyleState.js +66 -20
  121. package/lib/esm/DisplayStyleState.js.map +1 -1
  122. package/lib/esm/EntityState.d.ts +5 -5
  123. package/lib/esm/EntityState.d.ts.map +1 -1
  124. package/lib/esm/EntityState.js.map +1 -1
  125. package/lib/esm/IModelApp.d.ts.map +1 -1
  126. package/lib/esm/IModelApp.js +2 -2
  127. package/lib/esm/IModelApp.js.map +1 -1
  128. package/lib/esm/IModelConnection.d.ts +1 -1
  129. package/lib/esm/IModelConnection.d.ts.map +1 -1
  130. package/lib/esm/IModelConnection.js +1 -1
  131. package/lib/esm/IModelConnection.js.map +1 -1
  132. package/lib/esm/TentativePoint.js +1 -1
  133. package/lib/esm/TentativePoint.js.map +1 -1
  134. package/lib/esm/ViewRect.d.ts +5 -3
  135. package/lib/esm/ViewRect.d.ts.map +1 -1
  136. package/lib/esm/ViewRect.js +11 -7
  137. package/lib/esm/ViewRect.js.map +1 -1
  138. package/lib/esm/ViewState.d.ts.map +1 -1
  139. package/lib/esm/ViewState.js +4 -0
  140. package/lib/esm/ViewState.js.map +1 -1
  141. package/lib/esm/Viewport.d.ts +1 -1
  142. package/lib/esm/Viewport.d.ts.map +1 -1
  143. package/lib/esm/Viewport.js +2 -2
  144. package/lib/esm/Viewport.js.map +1 -1
  145. package/lib/esm/extension/ExtensionAdmin.d.ts +5 -2
  146. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
  147. package/lib/esm/extension/ExtensionAdmin.js +24 -6
  148. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  149. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts +8 -6
  150. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts.map +1 -1
  151. package/lib/esm/extension/providers/ExtensionServiceClient.js +13 -6
  152. package/lib/esm/extension/providers/ExtensionServiceClient.js.map +1 -1
  153. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  154. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  155. package/lib/esm/extension/providers/RemoteExtensionProvider.js +9 -22
  156. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  157. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +7 -6
  158. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  159. package/lib/esm/extension/providers/ServiceExtensionProvider.js +13 -24
  160. package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +1 -1
  161. package/lib/esm/render/RenderSystem.d.ts +5 -0
  162. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  163. package/lib/esm/render/RenderSystem.js.map +1 -1
  164. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  165. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -1
  166. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  167. package/lib/esm/render/webgl/ShaderProgram.js +1 -1
  168. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  169. package/lib/esm/render/webgl/Target.d.ts +1 -1
  170. package/lib/esm/render/webgl/Target.js +2 -2
  171. package/lib/esm/render/webgl/Target.js.map +1 -1
  172. package/lib/esm/render/webgl/UniformHandle.d.ts +2 -1
  173. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  174. package/lib/esm/render/webgl/UniformHandle.js +15 -3
  175. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  176. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  177. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  178. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  179. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  180. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  181. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  182. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  183. package/lib/esm/tile/TileAdmin.js +2 -0
  184. package/lib/esm/tile/TileAdmin.js.map +1 -1
  185. package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -2
  186. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  187. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  188. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  189. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +51 -4
  190. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  191. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  192. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  193. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  194. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  195. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  196. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  197. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  198. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  199. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  200. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  201. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  202. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  203. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  204. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  205. package/lib/esm/tile/map/ImageryTileTree.js +6 -2
  206. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  207. package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -0
  208. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  209. package/lib/esm/tile/map/MapCartoRectangle.js +1 -0
  210. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  211. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  212. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  213. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  214. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -1
  215. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  216. package/lib/esm/tile/map/MapLayerImageryProvider.js +25 -11
  217. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  218. package/lib/esm/tile/map/MapLayerSources.d.ts +14 -9
  219. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  220. package/lib/esm/tile/map/MapLayerSources.js +14 -6
  221. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  222. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  223. package/lib/esm/tile/map/MapTileTree.js +3 -5
  224. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  225. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +2 -1
  226. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  227. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  228. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  229. package/lib/esm/tools/PrimitiveTool.js +4 -4
  230. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  231. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  232. package/lib/esm/tools/ToolAdmin.js +25 -10
  233. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  234. package/package.json +25 -25
@@ -29,10 +29,13 @@ export declare class ExtensionAdmin {
29
29
  */
30
30
  addExtensions(providers: ExtensionProvider[]): Promise<void[]>;
31
31
  /**
32
- * Register a url (hostname) for extension hosting (i.e. https://localhost:3000, https://www.yourdomain.com, etc.)
33
- * @param hostUrl
32
+ * Registers a hostname for an extension.
33
+ * Once a hostname has been registered, only remote extensions from registered hosts are permitted to be added.
34
+ * @param hostUrl (string) Accepts both URLs and hostnames (e.g., http://localhost:3000, yourdomain.com, https://www.yourdomain.com, etc.).
34
35
  */
35
36
  registerHost(hostUrl: string): void;
37
+ /** Returns the hostname of an input string. Throws an error if input is not a valid hostname (or URL). */
38
+ private getHostName;
36
39
  /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */
37
40
  private activateExtensionEvents;
38
41
  /** Executes the extension. Catches and logs any errors (so that an extension will not crash the main application). */
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionAdmin.d.ts","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4BxE;;;GAGG;AACH,qBAAa,cAAc;IACzB,2GAA2G;IAC3G,OAAO,CAAC,WAAW,CAA0E;IAC7F,OAAO,CAAC,MAAM,CAAW;IAEzB;;OAEG;IACI,SAAS,sBAEd;;IAMF;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrE;;;;OAIG;IACU,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAM3E;;;OAGG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM;IAOnC,gGAAgG;YAClF,uBAAuB;IAWrC,sHAAsH;YACxG,QAAQ;CAOvB"}
1
+ {"version":3,"file":"ExtensionAdmin.d.ts","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4BxE;;;GAGG;AACH,qBAAa,cAAc;IACzB,2GAA2G;IAC3G,OAAO,CAAC,WAAW,CAA0E;IAC7F,OAAO,CAAC,MAAM,CAAW;IAEzB;;OAEG;IACI,SAAS,sBAEd;;IAMF;;;;;OAKG;IACU,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrE;;;;OAIG;IACU,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAM3E;;;;OAIG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM;IAOnC,0GAA0G;IAC1G,OAAO,CAAC,WAAW;IAgBnB,gGAAgG;YAClF,uBAAuB;IAWrC,sHAAsH;YACxG,QAAQ;CAOvB"}
@@ -47,7 +47,7 @@ export class ExtensionAdmin {
47
47
  provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises
48
48
  }
49
49
  catch (e) {
50
- throw new Error(`Failed to get manifest from extension: ${e}`);
50
+ throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : ""}: ${e}`);
51
51
  }
52
52
  }
53
53
  /**
@@ -59,13 +59,31 @@ export class ExtensionAdmin {
59
59
  return Promise.all(providers.map(async (provider) => this.addExtension(provider)));
60
60
  }
61
61
  /**
62
- * Register a url (hostname) for extension hosting (i.e. https://localhost:3000, https://www.yourdomain.com, etc.)
63
- * @param hostUrl
62
+ * Registers a hostname for an extension.
63
+ * Once a hostname has been registered, only remote extensions from registered hosts are permitted to be added.
64
+ * @param hostUrl (string) Accepts both URLs and hostnames (e.g., http://localhost:3000, yourdomain.com, https://www.yourdomain.com, etc.).
64
65
  */
65
66
  registerHost(hostUrl) {
66
- const url = new URL(hostUrl).hostname.replace("www", "");
67
- if (this._hosts.indexOf(url) < 0) {
68
- this._hosts.push(url);
67
+ const hostname = this.getHostName(hostUrl);
68
+ if (this._hosts.indexOf(hostname) < 0) {
69
+ this._hosts.push(hostname);
70
+ }
71
+ }
72
+ /** Returns the hostname of an input string. Throws an error if input is not a valid hostname (or URL). */
73
+ getHostName(inputUrl) {
74
+ // inputs without a protocol (e.g., http://) will throw an error in URL constructor
75
+ const inputWithProtocol = /(http|https):\/\//.test(inputUrl) ?
76
+ inputUrl :
77
+ `https://${inputUrl}`;
78
+ try {
79
+ const hostname = new URL(inputWithProtocol).hostname.replace("www.", "");
80
+ return hostname;
81
+ }
82
+ catch (e) {
83
+ if (e instanceof TypeError) {
84
+ throw new Error("Argument hostUrl should be a valid URL or hostname (i.e. http://localhost:3000, yourdomain.com, etc.).");
85
+ }
86
+ throw e;
69
87
  }
70
88
  }
71
89
  /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionAdmin.js","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Extensions\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\n\r\nimport { FrontendLoggerCategory } from \"../FrontendLoggerCategory\";\r\nimport type { ExtensionManifest, ExtensionProvider } from \"./Extension\";\r\n\r\n/** The Extensions loading system has the following goals:\r\n * 1. Only fetch what is needed when it is required\r\n * 1. Load a manifest file\r\n * 2. Load the the main module when necessary (usually at an activation event)\r\n * 2. Download the extension's files\r\n *\r\n * 3 ways to load an Extension into the system:\r\n *\r\n * 1. Load both the Extension Manifest and import the main module of the extension from a local file/package.\r\n * 2. A minimum set of properties to get the manifest and javascript from a remote server.\r\n * 3. A minimum set of properties to get the manifest and javascript from Bentley's Extension Service.\r\n *\r\n * An Extension must be added to ExtensionAdmin before it can be executed during activation events.\r\n */\r\n\r\n/**\r\n * A \"ready to use\" Extension (contains a manifest object and an extension provider to help execute).\r\n * Will be used as the type for in-memory extensions in the ExtensionAdmin\r\n */\r\ninterface InstalledExtension {\r\n /** An extension provider that has been added to ExtensionAdmin */\r\n provider: ExtensionProvider;\r\n /** The manifest (package.json) of the extension */\r\n manifest: ExtensionManifest;\r\n}\r\n\r\n/** The Extension Admin controls the list of currently loaded Extensions.\r\n *\r\n * @alpha\r\n */\r\nexport class ExtensionAdmin {\r\n /** Defines the set of extensions that are currently known and can be invoked during activation events. */\r\n private _extensions: Map<string, InstalledExtension> = new Map<string, InstalledExtension>();\r\n private _hosts: string[];\r\n\r\n /** Fired when an Extension has been added or removed.\r\n * @internal\r\n */\r\n public onStartup = async () => {\r\n await this.activateExtensionEvents(\"onStartup\");\r\n };\r\n\r\n public constructor() {\r\n this._hosts = [];\r\n }\r\n\r\n /**\r\n * Adds an extension.\r\n * The manifest will be fetched and the extension will be activated on an activation event.\r\n * @param provider\r\n * @alpha\r\n */\r\n public async addExtension(provider: ExtensionProvider): Promise<void> {\r\n if (provider.hostname) {\r\n const hostName = provider.hostname;\r\n if (this._hosts.length > 0 && this._hosts.indexOf(hostName) < 0) {\r\n throw new Error(`Error loading extension: ${hostName} was not registered.`);\r\n }\r\n }\r\n try {\r\n const manifest = await provider.getManifest();\r\n this._extensions.set(manifest.name, {\r\n manifest,\r\n provider,\r\n });\r\n // TODO - temporary fix to execute the missed startup event\r\n if (manifest.activationEvents.includes(\"onStartup\"))\r\n provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n } catch (e) {\r\n throw new Error(`Failed to get manifest from extension: ${e}`);\r\n }\r\n }\r\n\r\n /**\r\n * Adds a list of extensions\r\n * @param providers\r\n * @alpha\r\n */\r\n public async addExtensions(providers: ExtensionProvider[]): Promise<void[]> {\r\n return Promise.all(\r\n providers.map(async (provider) => this.addExtension(provider))\r\n );\r\n }\r\n\r\n /**\r\n * Register a url (hostname) for extension hosting (i.e. https://localhost:3000, https://www.yourdomain.com, etc.)\r\n * @param hostUrl\r\n */\r\n public registerHost(hostUrl: string) {\r\n const url = new URL(hostUrl).hostname.replace(\"www\", \"\");\r\n if (this._hosts.indexOf(url) < 0) {\r\n this._hosts.push(url);\r\n }\r\n }\r\n\r\n /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */\r\n private async activateExtensionEvents(event: string) {\r\n for (const extension of this._extensions.values()) {\r\n if (!extension.manifest.activationEvents) continue;\r\n for (const activationEvent of extension.manifest.activationEvents) {\r\n if (activationEvent === event) {\r\n this._execute(extension); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** Executes the extension. Catches and logs any errors (so that an extension will not crash the main application). */\r\n private async _execute(extension: InstalledExtension) {\r\n try {\r\n await extension.provider.execute();\r\n } catch (e) {\r\n Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${e}`);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ExtensionAdmin.js","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Extensions\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\n\r\nimport { FrontendLoggerCategory } from \"../FrontendLoggerCategory\";\r\nimport type { ExtensionManifest, ExtensionProvider } from \"./Extension\";\r\n\r\n/** The Extensions loading system has the following goals:\r\n * 1. Only fetch what is needed when it is required\r\n * 1. Load a manifest file\r\n * 2. Load the the main module when necessary (usually at an activation event)\r\n * 2. Download the extension's files\r\n *\r\n * 3 ways to load an Extension into the system:\r\n *\r\n * 1. Load both the Extension Manifest and import the main module of the extension from a local file/package.\r\n * 2. A minimum set of properties to get the manifest and javascript from a remote server.\r\n * 3. A minimum set of properties to get the manifest and javascript from Bentley's Extension Service.\r\n *\r\n * An Extension must be added to ExtensionAdmin before it can be executed during activation events.\r\n */\r\n\r\n/**\r\n * A \"ready to use\" Extension (contains a manifest object and an extension provider to help execute).\r\n * Will be used as the type for in-memory extensions in the ExtensionAdmin\r\n */\r\ninterface InstalledExtension {\r\n /** An extension provider that has been added to ExtensionAdmin */\r\n provider: ExtensionProvider;\r\n /** The manifest (package.json) of the extension */\r\n manifest: ExtensionManifest;\r\n}\r\n\r\n/** The Extension Admin controls the list of currently loaded Extensions.\r\n *\r\n * @alpha\r\n */\r\nexport class ExtensionAdmin {\r\n /** Defines the set of extensions that are currently known and can be invoked during activation events. */\r\n private _extensions: Map<string, InstalledExtension> = new Map<string, InstalledExtension>();\r\n private _hosts: string[];\r\n\r\n /** Fired when an Extension has been added or removed.\r\n * @internal\r\n */\r\n public onStartup = async () => {\r\n await this.activateExtensionEvents(\"onStartup\");\r\n };\r\n\r\n public constructor() {\r\n this._hosts = [];\r\n }\r\n\r\n /**\r\n * Adds an extension.\r\n * The manifest will be fetched and the extension will be activated on an activation event.\r\n * @param provider\r\n * @alpha\r\n */\r\n public async addExtension(provider: ExtensionProvider): Promise<void> {\r\n if (provider.hostname) {\r\n const hostName = provider.hostname;\r\n if (this._hosts.length > 0 && this._hosts.indexOf(hostName) < 0) {\r\n throw new Error(`Error loading extension: ${hostName} was not registered.`);\r\n }\r\n }\r\n try {\r\n const manifest = await provider.getManifest();\r\n this._extensions.set(manifest.name, {\r\n manifest,\r\n provider,\r\n });\r\n // TODO - temporary fix to execute the missed startup event\r\n if (manifest.activationEvents.includes(\"onStartup\"))\r\n provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n } catch (e) {\r\n throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : \"\"}: ${e}`);\r\n }\r\n }\r\n\r\n /**\r\n * Adds a list of extensions\r\n * @param providers\r\n * @alpha\r\n */\r\n public async addExtensions(providers: ExtensionProvider[]): Promise<void[]> {\r\n return Promise.all(\r\n providers.map(async (provider) => this.addExtension(provider))\r\n );\r\n }\r\n\r\n /**\r\n * Registers a hostname for an extension.\r\n * Once a hostname has been registered, only remote extensions from registered hosts are permitted to be added.\r\n * @param hostUrl (string) Accepts both URLs and hostnames (e.g., http://localhost:3000, yourdomain.com, https://www.yourdomain.com, etc.).\r\n */\r\n public registerHost(hostUrl: string) {\r\n const hostname = this.getHostName(hostUrl);\r\n if (this._hosts.indexOf(hostname) < 0) {\r\n this._hosts.push(hostname);\r\n }\r\n }\r\n\r\n /** Returns the hostname of an input string. Throws an error if input is not a valid hostname (or URL). */\r\n private getHostName(inputUrl: string): string {\r\n // inputs without a protocol (e.g., http://) will throw an error in URL constructor\r\n const inputWithProtocol = /(http|https):\\/\\//.test(inputUrl) ?\r\n inputUrl :\r\n `https://${inputUrl}`;\r\n try {\r\n const hostname = new URL(inputWithProtocol).hostname.replace(\"www.\", \"\");\r\n return hostname;\r\n } catch (e) {\r\n if (e instanceof TypeError) {\r\n throw new Error(\"Argument hostUrl should be a valid URL or hostname (i.e. http://localhost:3000, yourdomain.com, etc.).\");\r\n }\r\n throw e;\r\n }\r\n }\r\n\r\n /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */\r\n private async activateExtensionEvents(event: string) {\r\n for (const extension of this._extensions.values()) {\r\n if (!extension.manifest.activationEvents) continue;\r\n for (const activationEvent of extension.manifest.activationEvents) {\r\n if (activationEvent === event) {\r\n this._execute(extension); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** Executes the extension. Catches and logs any errors (so that an extension will not crash the main application). */\r\n private async _execute(extension: InstalledExtension) {\r\n try {\r\n await extension.provider.execute();\r\n } catch (e) {\r\n Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${e}`);\r\n }\r\n }\r\n}\r\n"]}
@@ -34,19 +34,21 @@ export declare class ExtensionClient {
34
34
  private get _endpoint();
35
35
  private parseExtensionMetadataArray;
36
36
  /**
37
- * Gets information on extensions. If extensionName is undefined, will return all extensions in the context.
38
- * If it's defined, will return all versions of that extension.
39
- * @param iTwinId Context Id
37
+ * Gets information on extensions. If extensionName is undefined, will return all extensions in the iTwin.
38
+ * If extensionName is defined, will return all versions of that extension.
39
+ * If iTwinId is undefined, will default to the public extensions.
40
40
  * @param extensionName Extension name (optional)
41
+ * @param iTwinId iTwin Id (optional)
41
42
  */
42
- getExtensions(accessToken: AccessToken, iTwinId: string, extensionName?: string): Promise<ExtensionMetadata[]>;
43
+ getExtensions(accessToken: AccessToken, extensionName?: string, iTwinId?: string): Promise<ExtensionMetadata[]>;
43
44
  /**
44
45
  * Gets information about an extension's specific version
45
- * @param iTwinId iTwin Id
46
+ * If iTwinId is undefined, will assume the extension was published publicly.
46
47
  * @param extensionName Extension name
47
48
  * @param version Extension version
49
+ * @param iTwinId iTwin Id (optional)
48
50
  */
49
- getExtensionMetadata(accessToken: AccessToken, iTwinId: string, extensionName: string, version: string): Promise<ExtensionMetadata | undefined>;
51
+ getExtensionMetadata(accessToken: AccessToken, extensionName: string, version: string, iTwinId?: string): Promise<ExtensionMetadata | undefined>;
50
52
  }
51
53
  export {};
52
54
  //# sourceMappingURL=ExtensionServiceClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionServiceClient.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/ExtensionServiceClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;;IAKlC,OAAO,KAAK,SAAS,GAWpB;IAED,OAAO,CAAC,2BAA2B;IAcnC;;;;;OAKG;IACU,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAa3H;;;;;OAKG;IACU,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAe7J"}
1
+ {"version":3,"file":"ExtensionServiceClient.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/ExtensionServiceClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAQ,MAAM,qBAAqB,CAAC;AAIxD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;;IAKlC,OAAO,KAAK,SAAS,GAWpB;IAED,OAAO,CAAC,2BAA2B;IAcnC;;;;;;OAMG;IACU,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,SAAa,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAahI;;;;;;OAMG;IACU,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,SAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAelK"}
@@ -1,3 +1,8 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { Guid } from "@itwin/core-bentley";
1
6
  import { request } from "../../request/Request";
2
7
  /**
3
8
  * Client for querying, publishing and deleting iModel.js Extensions.
@@ -32,12 +37,13 @@ export class ExtensionClient {
32
37
  return ret;
33
38
  }
34
39
  /**
35
- * Gets information on extensions. If extensionName is undefined, will return all extensions in the context.
36
- * If it's defined, will return all versions of that extension.
37
- * @param iTwinId Context Id
40
+ * Gets information on extensions. If extensionName is undefined, will return all extensions in the iTwin.
41
+ * If extensionName is defined, will return all versions of that extension.
42
+ * If iTwinId is undefined, will default to the public extensions.
38
43
  * @param extensionName Extension name (optional)
44
+ * @param iTwinId iTwin Id (optional)
39
45
  */
40
- async getExtensions(accessToken, iTwinId, extensionName) {
46
+ async getExtensions(accessToken, extensionName, iTwinId = Guid.empty) {
41
47
  const options = { method: "GET" };
42
48
  options.headers = { authorization: accessToken };
43
49
  const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName !== null && extensionName !== void 0 ? extensionName : ""}`, options);
@@ -49,11 +55,12 @@ export class ExtensionClient {
49
55
  }
50
56
  /**
51
57
  * Gets information about an extension's specific version
52
- * @param iTwinId iTwin Id
58
+ * If iTwinId is undefined, will assume the extension was published publicly.
53
59
  * @param extensionName Extension name
54
60
  * @param version Extension version
61
+ * @param iTwinId iTwin Id (optional)
55
62
  */
56
- async getExtensionMetadata(accessToken, iTwinId, extensionName, version) {
63
+ async getExtensionMetadata(accessToken, extensionName, version, iTwinId = Guid.empty) {
57
64
  const options = { method: "GET" };
58
65
  options.headers = { authorization: accessToken };
59
66
  const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName}/${version}`, options);
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionServiceClient.js","sourceRoot":"","sources":["../../../../src/extension/providers/ExtensionServiceClient.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\nimport { AccessToken } from \"@itwin/core-bentley\";\r\n\r\nimport { request, RequestOptions } from \"../../request/Request\";\r\n\r\n/** Structure of extensions from the ExtensionService\r\n * @internal\r\n */\r\nexport interface ExtensionMetadata {\r\n contextId: string;\r\n extensionName: string;\r\n version: string;\r\n files: FileInfo[];\r\n uploadedBy: string;\r\n timestamp: Date;\r\n status: ExtensionUploadStatus;\r\n isPublic: boolean;\r\n}\r\n\r\ninterface ExtensionUploadStatus {\r\n updateTime: Date;\r\n status: string;\r\n}\r\n\r\ninterface FileInfo {\r\n url: string;\r\n expires: Date;\r\n checksum: string;\r\n}\r\n\r\n/**\r\n * Client for querying, publishing and deleting iModel.js Extensions.\r\n *\r\n * The `imodel-extension-service-api` OIDC scope is required for all operations and the `imodel-extension-service:modify` is\r\n * required for modification operations (modify, publish, and deleting).\r\n * @alpha\r\n */\r\nexport class ExtensionClient {\r\n private readonly _baseUrl: string;\r\n public constructor() {\r\n this._baseUrl = \"https://api.bentley.com/iModelExtensionService/\";\r\n }\r\n\r\n private get _endpoint(): string {\r\n const prefix = process.env.IMJS_URL_PREFIX;\r\n const baseUrl = new URL(this._baseUrl);\r\n if (prefix)\r\n baseUrl.hostname = prefix + new URL(baseUrl).hostname;\r\n\r\n if (!baseUrl.pathname.endsWith(\"/\"))\r\n baseUrl.pathname += \"/\";\r\n\r\n baseUrl.pathname += \"v1.0/\";\r\n return baseUrl.toString();\r\n }\r\n\r\n private parseExtensionMetadataArray(json: any): ExtensionMetadata[] {\r\n if (!(json instanceof Array))\r\n return [];\r\n\r\n const ret: ExtensionMetadata[] = [];\r\n json.forEach((extensionJson) => {\r\n const extension = extensionMetadataFromJSON(extensionJson);\r\n if (extension !== undefined)\r\n ret.push(extension);\r\n });\r\n\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets information on extensions. If extensionName is undefined, will return all extensions in the context.\r\n * If it's defined, will return all versions of that extension.\r\n * @param iTwinId Context Id\r\n * @param extensionName Extension name (optional)\r\n */\r\n public async getExtensions(accessToken: AccessToken, iTwinId: string, extensionName?: string): Promise<ExtensionMetadata[]> {\r\n const options: RequestOptions = { method: \"GET\" };\r\n options.headers = { authorization: accessToken };\r\n const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName ?? \"\"}`, options);\r\n if (response.status !== 200)\r\n throw new Error(`Server returned status: ${response.status}, message: ${response.body.message}`);\r\n\r\n if (!(response.body instanceof Array) || response.body.length < 1)\r\n return [];\r\n\r\n return this.parseExtensionMetadataArray(response.body);\r\n }\r\n\r\n /**\r\n * Gets information about an extension's specific version\r\n * @param iTwinId iTwin Id\r\n * @param extensionName Extension name\r\n * @param version Extension version\r\n */\r\n public async getExtensionMetadata(accessToken: AccessToken, iTwinId: string, extensionName: string, version: string): Promise<ExtensionMetadata | undefined> {\r\n\r\n const options: RequestOptions = { method: \"GET\" };\r\n options.headers = { authorization: accessToken };\r\n const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName}/${version}`, options);\r\n if (response.status !== 200)\r\n throw new Error(`Server returned status: ${response.status}, message: ${response.body.message}`);\r\n\r\n if (!(response.body instanceof Array) || response.body.length < 1)\r\n return undefined;\r\n if (response.body.length > 1)\r\n throw new Error(\"Server returned too many extensions\");\r\n\r\n return extensionMetadataFromJSON(response.body[0]);\r\n }\r\n}\r\n\r\n/**\r\n * Validates JSON and returns ExtensionMetadata\r\n */\r\nfunction extensionMetadataFromJSON(jsonObject: any): ExtensionMetadata | undefined {\r\n if (jsonObject.contextId === undefined || typeof jsonObject.contextId !== \"string\" ||\r\n jsonObject.extensionName === undefined || typeof jsonObject.extensionName !== \"string\" ||\r\n jsonObject.version === undefined || typeof jsonObject.version !== \"string\" ||\r\n jsonObject.files === undefined || !(jsonObject.files instanceof Array) ||\r\n jsonObject.uploadedBy === undefined || typeof jsonObject.uploadedBy !== \"string\" ||\r\n jsonObject.timestamp === undefined || typeof jsonObject.timestamp !== \"string\" ||\r\n jsonObject.isPublic === undefined || typeof jsonObject.isPublic !== \"boolean\" ||\r\n jsonObject.extensionStatus === undefined) {\r\n\r\n return undefined;\r\n }\r\n\r\n const status = statusFromJSON(jsonObject.extensionStatus);\r\n if (status === undefined)\r\n return undefined;\r\n\r\n const files = new Array(jsonObject.files.length);\r\n for (let i = 0; i < jsonObject.files.length; i++) {\r\n const parsed = fileInfoFromJSON(jsonObject.files[i]);\r\n if (parsed === undefined)\r\n return undefined;\r\n files[i] = parsed;\r\n }\r\n\r\n return {\r\n contextId: jsonObject.contextId,\r\n extensionName: jsonObject.extensionName,\r\n version: jsonObject.version,\r\n files,\r\n uploadedBy: jsonObject.uploadedBy,\r\n timestamp: new Date(jsonObject.timestamp),\r\n isPublic: jsonObject.isPublic,\r\n status,\r\n };\r\n}\r\n\r\nfunction statusFromJSON(jsonObject: any) {\r\n if (jsonObject.statusUpdateTime === undefined || typeof jsonObject.statusUpdateTime !== \"string\" ||\r\n jsonObject.status === undefined || (jsonObject.status !== null && typeof jsonObject.status !== \"string\")) {\r\n\r\n return undefined;\r\n }\r\n\r\n return {\r\n updateTime: new Date(jsonObject.statusUpdateTime),\r\n status: jsonObject.status ?? \"Valid\",\r\n };\r\n}\r\n\r\nfunction fileInfoFromJSON(jsonObject: any) {\r\n if (jsonObject.url === undefined || typeof jsonObject.url !== \"string\" ||\r\n jsonObject.expiresAt === undefined || typeof jsonObject.expiresAt !== \"string\" ||\r\n jsonObject.checksum === undefined || (typeof jsonObject.checksum !== \"string\" && jsonObject.checksum !== null)) {\r\n\r\n return undefined;\r\n }\r\n\r\n return {\r\n url: jsonObject.url,\r\n expires: new Date(jsonObject.expiresAt),\r\n checksum: jsonObject.checksum,\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"ExtensionServiceClient.js","sourceRoot":"","sources":["../../../../src/extension/providers/ExtensionServiceClient.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\nimport { AccessToken, Guid } from \"@itwin/core-bentley\";\r\n\r\nimport { request, RequestOptions } from \"../../request/Request\";\r\n\r\n/** Structure of extensions from the ExtensionService\r\n * @internal\r\n */\r\nexport interface ExtensionMetadata {\r\n contextId: string;\r\n extensionName: string;\r\n version: string;\r\n files: FileInfo[];\r\n uploadedBy: string;\r\n timestamp: Date;\r\n status: ExtensionUploadStatus;\r\n isPublic: boolean;\r\n}\r\n\r\ninterface ExtensionUploadStatus {\r\n updateTime: Date;\r\n status: string;\r\n}\r\n\r\ninterface FileInfo {\r\n url: string;\r\n expires: Date;\r\n checksum: string;\r\n}\r\n\r\n/**\r\n * Client for querying, publishing and deleting iModel.js Extensions.\r\n *\r\n * The `imodel-extension-service-api` OIDC scope is required for all operations and the `imodel-extension-service:modify` is\r\n * required for modification operations (modify, publish, and deleting).\r\n * @alpha\r\n */\r\nexport class ExtensionClient {\r\n private readonly _baseUrl: string;\r\n public constructor() {\r\n this._baseUrl = \"https://api.bentley.com/iModelExtensionService/\";\r\n }\r\n\r\n private get _endpoint(): string {\r\n const prefix = process.env.IMJS_URL_PREFIX;\r\n const baseUrl = new URL(this._baseUrl);\r\n if (prefix)\r\n baseUrl.hostname = prefix + new URL(baseUrl).hostname;\r\n\r\n if (!baseUrl.pathname.endsWith(\"/\"))\r\n baseUrl.pathname += \"/\";\r\n\r\n baseUrl.pathname += \"v1.0/\";\r\n return baseUrl.toString();\r\n }\r\n\r\n private parseExtensionMetadataArray(json: any): ExtensionMetadata[] {\r\n if (!(json instanceof Array))\r\n return [];\r\n\r\n const ret: ExtensionMetadata[] = [];\r\n json.forEach((extensionJson) => {\r\n const extension = extensionMetadataFromJSON(extensionJson);\r\n if (extension !== undefined)\r\n ret.push(extension);\r\n });\r\n\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets information on extensions. If extensionName is undefined, will return all extensions in the iTwin.\r\n * If extensionName is defined, will return all versions of that extension.\r\n * If iTwinId is undefined, will default to the public extensions.\r\n * @param extensionName Extension name (optional)\r\n * @param iTwinId iTwin Id (optional)\r\n */\r\n public async getExtensions(accessToken: AccessToken, extensionName?: string, iTwinId = Guid.empty): Promise<ExtensionMetadata[]> {\r\n const options: RequestOptions = { method: \"GET\" };\r\n options.headers = { authorization: accessToken };\r\n const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName ?? \"\"}`, options);\r\n if (response.status !== 200)\r\n throw new Error(`Server returned status: ${response.status}, message: ${response.body.message}`);\r\n\r\n if (!(response.body instanceof Array) || response.body.length < 1)\r\n return [];\r\n\r\n return this.parseExtensionMetadataArray(response.body);\r\n }\r\n\r\n /**\r\n * Gets information about an extension's specific version\r\n * If iTwinId is undefined, will assume the extension was published publicly.\r\n * @param extensionName Extension name\r\n * @param version Extension version\r\n * @param iTwinId iTwin Id (optional)\r\n */\r\n public async getExtensionMetadata(accessToken: AccessToken, extensionName: string, version: string, iTwinId = Guid.empty): Promise<ExtensionMetadata | undefined> {\r\n\r\n const options: RequestOptions = { method: \"GET\" };\r\n options.headers = { authorization: accessToken };\r\n const response = await request(`${this._endpoint}${iTwinId}/IModelExtension/${extensionName}/${version}`, options);\r\n if (response.status !== 200)\r\n throw new Error(`Server returned status: ${response.status}, message: ${response.body.message}`);\r\n\r\n if (!(response.body instanceof Array) || response.body.length < 1)\r\n return undefined;\r\n if (response.body.length > 1)\r\n throw new Error(\"Server returned too many extensions\");\r\n\r\n return extensionMetadataFromJSON(response.body[0]);\r\n }\r\n}\r\n\r\n/**\r\n * Validates JSON and returns ExtensionMetadata\r\n */\r\nfunction extensionMetadataFromJSON(jsonObject: any): ExtensionMetadata | undefined {\r\n if (jsonObject.contextId === undefined || typeof jsonObject.contextId !== \"string\" ||\r\n jsonObject.extensionName === undefined || typeof jsonObject.extensionName !== \"string\" ||\r\n jsonObject.version === undefined || typeof jsonObject.version !== \"string\" ||\r\n jsonObject.files === undefined || !(jsonObject.files instanceof Array) ||\r\n jsonObject.uploadedBy === undefined || typeof jsonObject.uploadedBy !== \"string\" ||\r\n jsonObject.timestamp === undefined || typeof jsonObject.timestamp !== \"string\" ||\r\n jsonObject.isPublic === undefined || typeof jsonObject.isPublic !== \"boolean\" ||\r\n jsonObject.extensionStatus === undefined) {\r\n\r\n return undefined;\r\n }\r\n\r\n const status = statusFromJSON(jsonObject.extensionStatus);\r\n if (status === undefined)\r\n return undefined;\r\n\r\n const files = new Array(jsonObject.files.length);\r\n for (let i = 0; i < jsonObject.files.length; i++) {\r\n const parsed = fileInfoFromJSON(jsonObject.files[i]);\r\n if (parsed === undefined)\r\n return undefined;\r\n files[i] = parsed;\r\n }\r\n\r\n return {\r\n contextId: jsonObject.contextId,\r\n extensionName: jsonObject.extensionName,\r\n version: jsonObject.version,\r\n files,\r\n uploadedBy: jsonObject.uploadedBy,\r\n timestamp: new Date(jsonObject.timestamp),\r\n isPublic: jsonObject.isPublic,\r\n status,\r\n };\r\n}\r\n\r\nfunction statusFromJSON(jsonObject: any) {\r\n if (jsonObject.statusUpdateTime === undefined || typeof jsonObject.statusUpdateTime !== \"string\" ||\r\n jsonObject.status === undefined || (jsonObject.status !== null && typeof jsonObject.status !== \"string\")) {\r\n\r\n return undefined;\r\n }\r\n\r\n return {\r\n updateTime: new Date(jsonObject.statusUpdateTime),\r\n status: jsonObject.status ?? \"Valid\",\r\n };\r\n}\r\n\r\nfunction fileInfoFromJSON(jsonObject: any) {\r\n if (jsonObject.url === undefined || typeof jsonObject.url !== \"string\" ||\r\n jsonObject.expiresAt === undefined || typeof jsonObject.expiresAt !== \"string\" ||\r\n jsonObject.checksum === undefined || (typeof jsonObject.checksum !== \"string\" && jsonObject.checksum !== null)) {\r\n\r\n return undefined;\r\n }\r\n\r\n return {\r\n url: jsonObject.url,\r\n expires: new Date(jsonObject.expiresAt),\r\n checksum: jsonObject.checksum,\r\n };\r\n}\r\n"]}
@@ -30,7 +30,5 @@ export declare class RemoteExtensionProvider implements ExtensionProvider {
30
30
  * Throws an error if the provided manifestUrl is not accessible.
31
31
  */
32
32
  getManifest(): Promise<ExtensionManifest>;
33
- /** Checks if url actually exists */
34
- private _exists;
35
33
  }
36
34
  //# sourceMappingURL=RemoteExtensionProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteExtensionProvider.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/RemoteExtensionProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAInD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,4DAA4D;IAC5D,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAEJ,MAAM,EAAE,4BAA4B;IAIjE;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAQtD,oCAAoC;YACtB,OAAO;CAWtB"}
1
+ {"version":3,"file":"RemoteExtensionProvider.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/RemoteExtensionProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAItB;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAInD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,4DAA4D;IAC5D,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAEJ,MAAM,EAAE,4BAA4B;IAIjE;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAWvD"}
@@ -1,3 +1,4 @@
1
+ import { request } from "../../request/Request";
1
2
  import { loadScript } from "./ExtensionLoadScript";
2
3
  /**
3
4
  * Implements a "remote" extension.
@@ -15,10 +16,6 @@ export class RemoteExtensionProvider {
15
16
  * Throws an error if the provided jsUrl is not accessible.
16
17
  */
17
18
  async execute() {
18
- const doesUrlExist = await this._exists(this._props.jsUrl);
19
- if (!doesUrlExist) {
20
- throw new Error(`Extension at ${this._props.jsUrl} could not be found.`);
21
- }
22
19
  return loadScript(this._props.jsUrl);
23
20
  }
24
21
  /**
@@ -26,24 +23,14 @@ export class RemoteExtensionProvider {
26
23
  * Throws an error if the provided manifestUrl is not accessible.
27
24
  */
28
25
  async getManifest() {
29
- const doesUrlExist = await this._exists(this._props.manifestUrl);
30
- if (!doesUrlExist) {
31
- throw new Error(`Manifest at ${this._props.manifestUrl} could not be found.`);
32
- }
33
- return (await fetch(this._props.manifestUrl)).json();
34
- }
35
- /** Checks if url actually exists */
36
- async _exists(url) {
37
- let exists = false;
38
- try {
39
- const response = await fetch(url, { method: "HEAD" });
40
- if (response.status === 200)
41
- exists = true;
42
- }
43
- catch (error) {
44
- exists = false;
45
- }
46
- return exists;
26
+ const options = { method: "GET" };
27
+ const response = await request(this._props.manifestUrl, options);
28
+ const data = response.body || (() => {
29
+ if (!response.text)
30
+ throw new Error("Manifest file was empty.");
31
+ return JSON.parse(response.text);
32
+ })();
33
+ return data;
47
34
  }
48
35
  }
49
36
  //# sourceMappingURL=RemoteExtensionProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/RemoteExtensionProvider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAanD;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAIlC,YAA6B,MAAoC;QAApC,WAAM,GAAN,MAAM,CAA8B;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAC,CAAC;SAC1E;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW;QACtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,WAAW,sBAAsB,CAAC,CAAC;SAC/E;QACD,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC;IAED,oCAAoC;IAC5B,KAAK,CAAC,OAAO,CAAC,GAAW;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBACzB,MAAM,GAAG,IAAI,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,GAAG,KAAK,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","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\nimport type {\r\n ExtensionManifest,\r\n ExtensionProvider,\r\n} from \"../Extension\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\n\r\n/**\r\n * Required props for a remote extension provider\r\n * @alpha\r\n */\r\nexport interface RemoteExtensionProviderProps {\r\n /** URL where the extension entry point can be loaded from */\r\n jsUrl: string;\r\n /** URL where the manifest (package.json) can be loaded from */\r\n manifestUrl: string;\r\n}\r\n\r\n/**\r\n * Implements a \"remote\" extension.\r\n * Remote extensions are hosted on an external server.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class RemoteExtensionProvider implements ExtensionProvider {\r\n /** The name of the server where the extension is hosted. */\r\n public readonly hostname: string;\r\n\r\n constructor(private readonly _props: RemoteExtensionProviderProps) {\r\n this.hostname = new URL(this._props.jsUrl).hostname.replace(\"www\", \"\");\r\n }\r\n\r\n /**\r\n * Attempts to execute an extension.\r\n * Throws an error if the provided jsUrl is not accessible.\r\n */\r\n public async execute(): Promise<string> {\r\n const doesUrlExist = await this._exists(this._props.jsUrl);\r\n if (!doesUrlExist) {\r\n throw new Error(`Extension at ${this._props.jsUrl} could not be found.`);\r\n }\r\n return loadScript(this._props.jsUrl);\r\n }\r\n\r\n /**\r\n * Attempts to fetch an extension's manifest (package.json) file.\r\n * Throws an error if the provided manifestUrl is not accessible.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const doesUrlExist = await this._exists(this._props.manifestUrl);\r\n if (!doesUrlExist) {\r\n throw new Error(`Manifest at ${this._props.manifestUrl} could not be found.`);\r\n }\r\n return (await fetch(this._props.manifestUrl)).json();\r\n }\r\n\r\n /** Checks if url actually exists */\r\n private async _exists(url: string): Promise<boolean> {\r\n let exists = false;\r\n try {\r\n const response = await fetch(url, { method: \"HEAD\" });\r\n if (response.status === 200)\r\n exists = true;\r\n } catch (error) {\r\n exists = false;\r\n }\r\n return exists;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RemoteExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/RemoteExtensionProvider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAanD;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAIlC,YAA6B,MAAoC;QAApC,WAAM,GAAN,MAAM,CAA8B;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO;QAClB,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW;QACtB,MAAM,OAAO,GAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","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\nimport type {\r\n ExtensionManifest,\r\n ExtensionProvider,\r\n} from \"../Extension\";\r\nimport { request, RequestOptions } from \"../../request/Request\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\n\r\n/**\r\n * Required props for a remote extension provider\r\n * @alpha\r\n */\r\nexport interface RemoteExtensionProviderProps {\r\n /** URL where the extension entry point can be loaded from */\r\n jsUrl: string;\r\n /** URL where the manifest (package.json) can be loaded from */\r\n manifestUrl: string;\r\n}\r\n\r\n/**\r\n * Implements a \"remote\" extension.\r\n * Remote extensions are hosted on an external server.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class RemoteExtensionProvider implements ExtensionProvider {\r\n /** The name of the server where the extension is hosted. */\r\n public readonly hostname: string;\r\n\r\n constructor(private readonly _props: RemoteExtensionProviderProps) {\r\n this.hostname = new URL(this._props.jsUrl).hostname.replace(\"www\", \"\");\r\n }\r\n\r\n /**\r\n * Attempts to execute an extension.\r\n * Throws an error if the provided jsUrl is not accessible.\r\n */\r\n public async execute(): Promise<string> {\r\n return loadScript(this._props.jsUrl);\r\n }\r\n\r\n /**\r\n * Attempts to fetch an extension's manifest (package.json) file.\r\n * Throws an error if the provided manifestUrl is not accessible.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const options: RequestOptions = { method: \"GET\" };\r\n const response = await request(this._props.manifestUrl, options);\r\n const data = response.body || (() => {\r\n if (!response.text)\r\n throw new Error(\"Manifest file was empty.\");\r\n return JSON.parse(response.text);\r\n })();\r\n return data;\r\n }\r\n\r\n}\r\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { ExtensionManifest, ExtensionProvider } from "../Extension";
2
+ import type { AccessToken } from "@itwin/core-bentley";
2
3
  /**
3
4
  * Required props for an extension uploaded to Bentley's Extension Service
4
5
  * @alpha
@@ -6,10 +7,12 @@ import type { ExtensionManifest, ExtensionProvider } from "../Extension";
6
7
  export interface ServiceExtensionProviderProps {
7
8
  /** Name of the uploaded extension */
8
9
  name: string;
9
- /** Version number (Semantic Versioning) */
10
- version: string;
11
- /** iTwin Id */
12
- iTwinId: string;
10
+ /** Version number (optional - if undefined, assumes the latest version) */
11
+ version?: string;
12
+ /** iTwin Id (optional - if undefined, assumes the extension is public) */
13
+ iTwinId?: string;
14
+ /** @internal */
15
+ getAccessToken?: () => Promise<AccessToken>;
13
16
  }
14
17
  /**
15
18
  * Implements an Extension from the Extension Service via the ServiceExtensionProviderProps.
@@ -28,8 +31,6 @@ export declare class ServiceExtensionProvider implements ExtensionProvider {
28
31
  * Throws an error if the file cannot be found.
29
32
  */
30
33
  execute(): Promise<any>;
31
- /** Checks if url actually exists */
32
- private _exists;
33
34
  /** Fetches the extension from the ExtensionService.
34
35
  */
35
36
  private _getExtensionFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceExtensionProvider.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,iBAAiB,EAAE,iBAAiB,EACrC,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAEpD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,6BAA6B;IAElE;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAYtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAYpC,oCAAoC;YACtB,OAAO;IAYrB;OACG;YACW,kBAAkB;CAyBjC"}
1
+ {"version":3,"file":"ServiceExtensionProvider.d.ts","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,iBAAiB,EAAE,iBAAiB,EACrC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7C;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAEpD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,6BAA6B;IAElE;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAetD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAQpC;OACG;YACW,kBAAkB;CAyBjC"}
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { rcompare } from "semver";
6
6
  import { IModelApp } from "../../IModelApp";
7
+ import { request } from "../../request/Request";
7
8
  import { loadScript } from "./ExtensionLoadScript";
8
9
  import { ExtensionClient } from "./ExtensionServiceClient";
9
10
  /**
@@ -23,10 +24,14 @@ export class ServiceExtensionProvider {
23
24
  const loadedExtensionProps = await this._getExtensionFiles(this._props);
24
25
  if (!loadedExtensionProps)
25
26
  throw new Error(`Error loading manifest for Extension ${this._props.name}.`);
26
- const doesUrlExist = await this._exists(loadedExtensionProps.manifest.url);
27
- if (!doesUrlExist)
28
- throw new Error(`Manifest at ${loadedExtensionProps.manifest.url} could not be found.`);
29
- return (await fetch(loadedExtensionProps.manifest.url)).json();
27
+ const options = { method: "GET" };
28
+ const response = await request(loadedExtensionProps.manifest.url, options);
29
+ const data = response.body || (() => {
30
+ if (!response.text)
31
+ throw new Error("Manifest file was empty.");
32
+ return JSON.parse(response.text);
33
+ })();
34
+ return data;
30
35
  }
31
36
  /** Executes the javascript main file (the bundled index.js) of an extension from the Extension Service.
32
37
  * Throws an error if the file cannot be found.
@@ -35,37 +40,21 @@ export class ServiceExtensionProvider {
35
40
  const loadedExtensionProps = await this._getExtensionFiles(this._props);
36
41
  if (!loadedExtensionProps)
37
42
  throw new Error(`Error executing Extension ${this._props.name}.`);
38
- const doesUrlExist = await this._exists(loadedExtensionProps.main.url);
39
- if (!doesUrlExist)
40
- throw new Error(`Main javascript file at ${loadedExtensionProps.main.url} could not be found.`);
41
43
  return loadScript(loadedExtensionProps.main.url);
42
44
  }
43
- /** Checks if url actually exists */
44
- async _exists(url) {
45
- let exists = false;
46
- try {
47
- const response = await fetch(url, { method: "HEAD" });
48
- if (response.status === 200)
49
- exists = true;
50
- }
51
- catch (error) {
52
- exists = false;
53
- }
54
- return exists;
55
- }
56
45
  /** Fetches the extension from the ExtensionService.
57
46
  */
58
47
  async _getExtensionFiles(props) {
59
- var _a;
48
+ var _a, _b, _c;
60
49
  const extensionClient = new ExtensionClient();
61
- const accessToken = await ((_a = IModelApp.authorizationClient) === null || _a === void 0 ? void 0 : _a.getAccessToken());
50
+ const accessToken = await ((_b = (_a = props.getAccessToken) === null || _a === void 0 ? void 0 : _a.call(props)) !== null && _b !== void 0 ? _b : (_c = IModelApp.authorizationClient) === null || _c === void 0 ? void 0 : _c.getAccessToken());
62
51
  if (!accessToken)
63
52
  return undefined;
64
53
  let extensionProps;
65
54
  if (props.version !== undefined)
66
- extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.iTwinId, props.name, props.version);
55
+ extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.name, props.version, props.iTwinId);
67
56
  else {
68
- const propsArr = await extensionClient.getExtensions(accessToken, props.iTwinId, props.name);
57
+ const propsArr = await extensionClient.getExtensions(accessToken, props.name, props.iTwinId);
69
58
  extensionProps = propsArr.sort((ext1, ext2) => rcompare(ext1.version, ext2.version, true))[0];
70
59
  }
71
60
  if (extensionProps === undefined || extensionProps.files.length < 1)
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.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\nimport { rcompare } from \"semver\";\r\n\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\nimport { ExtensionClient, ExtensionMetadata } from \"./ExtensionServiceClient\";\r\n\r\nimport type {\r\n ExtensionManifest, ExtensionProvider,\r\n} from \"../Extension\";\r\n\r\n/**\r\n * Required props for an extension uploaded to Bentley's Extension Service\r\n * @alpha\r\n */\r\nexport interface ServiceExtensionProviderProps {\r\n /** Name of the uploaded extension */\r\n name: string;\r\n /** Version number (Semantic Versioning) */\r\n version: string;\r\n /** iTwin Id */\r\n iTwinId: string;\r\n}\r\n\r\n/**\r\n * Implements an Extension from the Extension Service via the ServiceExtensionProviderProps.\r\n * Service extensions are extensions hosted on Bentley's Extension Service.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class ServiceExtensionProvider implements ExtensionProvider {\r\n\r\n constructor(private readonly _props: ServiceExtensionProviderProps) { }\r\n\r\n /** Returns the extension's manifest (package.json) from the ExtensionService.\r\n * Throws an error if the manifest cannot be found.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error loading manifest for Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.manifest.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Manifest at ${loadedExtensionProps.manifest.url} could not be found.`);\r\n\r\n return (await fetch(loadedExtensionProps.manifest.url)).json();\r\n }\r\n\r\n /** Executes the javascript main file (the bundled index.js) of an extension from the Extension Service.\r\n * Throws an error if the file cannot be found.\r\n */\r\n public async execute(): Promise<any> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error executing Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.main.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Main javascript file at ${loadedExtensionProps.main.url} could not be found.`);\r\n\r\n return loadScript(loadedExtensionProps.main.url);\r\n }\r\n\r\n /** Checks if url actually exists */\r\n private async _exists(url: string): Promise<boolean> {\r\n let exists = false;\r\n try {\r\n const response = await fetch(url, { method: \"HEAD\" });\r\n if (response.status === 200)\r\n exists = true;\r\n } catch (error) {\r\n exists = false;\r\n }\r\n return exists;\r\n }\r\n\r\n /** Fetches the extension from the ExtensionService.\r\n */\r\n private async _getExtensionFiles(props: ServiceExtensionProviderProps) {\r\n const extensionClient = new ExtensionClient();\r\n\r\n const accessToken = await IModelApp.authorizationClient?.getAccessToken();\r\n if (!accessToken)\r\n return undefined;\r\n\r\n let extensionProps: ExtensionMetadata | undefined;\r\n if (props.version !== undefined)\r\n extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.iTwinId, props.name, props.version);\r\n else {\r\n const propsArr = await extensionClient.getExtensions(accessToken, props.iTwinId, props.name);\r\n extensionProps = propsArr.sort((ext1, ext2) => rcompare(ext1.version, ext2.version, true))[0];\r\n }\r\n\r\n if (extensionProps === undefined || extensionProps.files.length < 1)\r\n return undefined;\r\n\r\n const manifest = extensionProps.files.find((f) => f.url.indexOf(\"package.json?\") > -1);\r\n const main = extensionProps.files.find((f) => f.url.indexOf(\"index.js?\") > -1);\r\n if (!manifest || !main)\r\n return undefined;\r\n\r\n return { manifest, main };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ServiceExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.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\nimport { rcompare } from \"semver\";\r\n\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { request, RequestOptions } from \"../../request/Request\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\nimport { ExtensionClient, ExtensionMetadata } from \"./ExtensionServiceClient\";\r\n\r\nimport type {\r\n ExtensionManifest, ExtensionProvider,\r\n} from \"../Extension\";\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Required props for an extension uploaded to Bentley's Extension Service\r\n * @alpha\r\n */\r\nexport interface ServiceExtensionProviderProps {\r\n /** Name of the uploaded extension */\r\n name: string;\r\n /** Version number (optional - if undefined, assumes the latest version) */\r\n version?: string;\r\n /** iTwin Id (optional - if undefined, assumes the extension is public) */\r\n iTwinId?: string;\r\n /** @internal */\r\n getAccessToken?: () => Promise<AccessToken>;\r\n}\r\n\r\n/**\r\n * Implements an Extension from the Extension Service via the ServiceExtensionProviderProps.\r\n * Service extensions are extensions hosted on Bentley's Extension Service.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class ServiceExtensionProvider implements ExtensionProvider {\r\n\r\n constructor(private readonly _props: ServiceExtensionProviderProps) { }\r\n\r\n /** Returns the extension's manifest (package.json) from the ExtensionService.\r\n * Throws an error if the manifest cannot be found.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error loading manifest for Extension ${this._props.name}.`);\r\n\r\n const options: RequestOptions = { method: \"GET\" };\r\n const response = await request(loadedExtensionProps.manifest.url, options);\r\n const data = response.body || (() => {\r\n if (!response.text)\r\n throw new Error(\"Manifest file was empty.\");\r\n return JSON.parse(response.text);\r\n })();\r\n return data;\r\n }\r\n\r\n /** Executes the javascript main file (the bundled index.js) of an extension from the Extension Service.\r\n * Throws an error if the file cannot be found.\r\n */\r\n public async execute(): Promise<any> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error executing Extension ${this._props.name}.`);\r\n\r\n return loadScript(loadedExtensionProps.main.url);\r\n }\r\n\r\n /** Fetches the extension from the ExtensionService.\r\n */\r\n private async _getExtensionFiles(props: ServiceExtensionProviderProps) {\r\n const extensionClient = new ExtensionClient();\r\n\r\n const accessToken = await (props.getAccessToken?.() ?? IModelApp.authorizationClient?.getAccessToken());\r\n if (!accessToken)\r\n return undefined;\r\n\r\n let extensionProps: ExtensionMetadata | undefined;\r\n if (props.version !== undefined)\r\n extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.name, props.version, props.iTwinId);\r\n else {\r\n const propsArr = await extensionClient.getExtensions(accessToken, props.name, props.iTwinId);\r\n extensionProps = propsArr.sort((ext1, ext2) => rcompare(ext1.version, ext2.version, true))[0];\r\n }\r\n\r\n if (extensionProps === undefined || extensionProps.files.length < 1)\r\n return undefined;\r\n\r\n const manifest = extensionProps.files.find((f) => f.url.indexOf(\"package.json?\") > -1);\r\n const main = extensionProps.files.find((f) => f.url.indexOf(\"index.js?\") > -1);\r\n if (!manifest || !main)\r\n return undefined;\r\n\r\n return { manifest, main };\r\n }\r\n}\r\n"]}
@@ -548,6 +548,11 @@ export declare namespace RenderSystem {
548
548
  * @internal
549
549
  */
550
550
  contextAttributes?: WebGLContextAttributes;
551
+ /** If true, will cause exception when a shader uniform is missing (usually optimized out), otherwise will only log these.
552
+ * Default value: false
553
+ * @public
554
+ */
555
+ errorOnMissingUniform?: boolean;
551
556
  /** If true, and the `WEBGL_debug_shaders` extension is available, accumulate debug information during shader compilation.
552
557
  * This information can be accessed via `RenderSystemDebugControl.debugShaderFiles`.
553
558
  * Default value: false
@@ -1 +1 @@
1
- {"version":3,"file":"RenderSystem.d.ts","sourceRoot":"","sources":["../../../src/render/RenderSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderSystem.d.ts","sourceRoot":"","sources":["../../../src/render/RenderSystem.ts"],"names":[],"mappings":"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"}