bruce-cesium 6.6.8 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { Cartes, Entity as Entity$1, Geometry, ProjectViewTile, ENVIRONMENT, EntityRelationType, EntityType, Calculator, Style, DelayQueue, LRUCache, BruceEvent, ObjectUtils, AccountConcept, EntityHistoricData, EntityLod, RecordChangeFeed, ZoomControl, EntityTag, Tileset, EntityCoords, Api, DataLab, EntitySource, ClientFile, MenuItem, EntityRelation, BruceApi, ProgramKey, Bounds, Carto, ProjectView, ProjectViewBookmark, ProjectViewLegacyTile, Camera, EntityAttachment, EntityAttachmentType, EntityAttribute, MathUtils, Session } from 'bruce-models';
1
+ import { Cartes, Entity as Entity$1, Geometry, ProjectViewTile, ENVIRONMENT, EntityRelationType, EntityType, Calculator, Style, DelayQueue, LRUCache, BruceEvent, ObjectUtils, AccountConcept, EntityHistoricData, EntityLod, RecordChangeFeed, ZoomControl, EntityTag, Tileset, EntityCoords, Api, DataLab, BruceApi, EntitySource, ProgramKey, ClientFile, MenuItem, EntityRelation, Bounds, Carto, ProjectView, ProjectViewBookmark, Camera, ProjectViewLegacyTile, EntityAttachment, EntityAttachmentType, EntityAttribute, MathUtils, Session } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, ColorMaterialProperty, Entity, Color, ConstantProperty, CallbackProperty, Primitive, Cesium3DTileFeature, Math as Math$1, Cartesian3, JulianDate, Quaternion, Transforms, HeadingPitchRoll, Matrix4, DistanceDisplayCondition, HeightReference, ColorBlendMode, ShadowMode, ClassificationType, Model, HorizontalOrigin, VerticalOrigin, ConstantPositionProperty, PolygonHierarchy, PolylineGraphics, ArcType, CornerType, Cartesian2, SceneTransforms, NearFarScalar, Matrix3, Rectangle, KmlDataSource, GeoJsonDataSource, SceneMode, Cesium3DTileStyle, HeadingPitchRange, Cesium3DTileColorBlendMode, Ion, Cesium3DTileset, IonResource, EllipsoidTerrainProvider, IonImageryProvider, createWorldImagery, createWorldImageryAsync, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, UrlTemplateImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, TileMapServiceImageryProvider, CesiumTerrainProvider, OrthographicFrustum, EasingFunction, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, PolylineDashMaterialProperty, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, BoundingSphere, GeometryInstance, PolygonPipeline, CesiumInspector, ClockRange, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect, CzmlDataSource, Fullscreen } from 'cesium';
3
+ import { Cartographic, ColorMaterialProperty, Color, Math as Math$1, Cartesian3, JulianDate, Quaternion, Transforms, HeadingPitchRoll, Matrix4, Entity, ConstantProperty, CallbackProperty, Primitive, Cesium3DTileFeature, DistanceDisplayCondition, HeightReference, ColorBlendMode, ShadowMode, ClassificationType, Model, HorizontalOrigin, VerticalOrigin, ConstantPositionProperty, PolygonHierarchy, PolylineGraphics, ArcType, CornerType, Cartesian2, SceneTransforms, NearFarScalar, Matrix3, Rectangle, KmlDataSource, GeoJsonDataSource, SceneMode, Cesium3DTileStyle, HeadingPitchRange, Cesium3DTileColorBlendMode, Cesium3DTileset, IonResource, OrthographicFrustum, Ion, EasingFunction, EllipsoidTerrainProvider, IonImageryProvider, createWorldImagery, createWorldImageryAsync, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, UrlTemplateImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, TileMapServiceImageryProvider, CesiumTerrainProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, PolylineDashMaterialProperty, BoundingSphere, GeometryInstance, PolygonPipeline, CesiumInspector, ClockRange, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect, CzmlDataSource, Fullscreen } from 'cesium';
4
4
 
5
5
  /**
6
6
  * Ensures a number is returned from a given value.
@@ -16113,7 +16113,19 @@ var TilesetOsmRenderManager;
16113
16113
  // Already exists, no need to re-initialize.
16114
16114
  return;
16115
16115
  }
16116
- const validToken = await ViewerUtils.AssertIonToken(Ion.defaultAccessToken);
16116
+ const ionCheckApi = this.getters.GetBruceApi({});
16117
+ await ionCheckApi.Loading;
16118
+ const { programKeys: ionCheckKeys } = await ProgramKey.GetList({ api: ionCheckApi });
16119
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === ProgramKey.EProgramId.CesiumIon);
16120
+ // Use if marked as available.
16121
+ let validToken;
16122
+ if (ionCheckApi.IsVersionAtLeast(BruceApi.VERSION_WITH_PROXIES)) {
16123
+ validToken = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
16124
+ }
16125
+ // Legacy route, to be killed off.
16126
+ else {
16127
+ validToken = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await ViewerUtils.AssertIonToken(ionKey.Key) : false;
16128
+ }
16117
16129
  if (!validToken) {
16118
16130
  console.warn("'tileset-osm-render-manager.ts' could not locate a valid Cesium Ion token.");
16119
16131
  return;
@@ -22348,8 +22360,6 @@ function assertIteration(viewer, iteration) {
22348
22360
  const suffix = iteration.includes("imagery") ? "imagery" : "terrain";
22349
22361
  return viewer[ITERATION_KEY + suffix] === iteration;
22350
22362
  }
22351
- const DEFAULT_STAMEN_KEY = "a652e5f2-8d9e-4706-a9d9-d5daa7d4c89e";
22352
- const DEFAULT_THUNDERFOREST_KEY = "c3c1b64fbb5240be8e0d284a01e33107";
22353
22363
  const re = /[\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g;
22354
22364
  /**
22355
22365
  * Prepares a legacy imagery name for comparison.
@@ -22518,14 +22528,6 @@ async function findKey(apiGetter, accountId, keyId) {
22518
22528
  else if (Api.TEMPLATE_ACCOUNT_ID != accountId) {
22519
22529
  return findKey(apiGetter, Api.TEMPLATE_ACCOUNT_ID, keyId);
22520
22530
  }
22521
- // No nice UI yet for setting it so we'll have a hard-coded one for the time being.
22522
- else if (keyId == ProgramKey.EProgramId.Thunderforest) {
22523
- return DEFAULT_THUNDERFOREST_KEY;
22524
- }
22525
- // Same story for stamen.
22526
- else if (keyId == ProgramKey.EProgramId.StadiaMaps) {
22527
- return DEFAULT_STAMEN_KEY;
22528
- }
22529
22531
  return null;
22530
22532
  }
22531
22533
  // Constants for the ion assets.
@@ -23090,7 +23092,18 @@ var TileRenderEngine;
23090
23092
  // If we need a cesium token, and we don't have one, then we can't render this.
23091
23093
  let shouldCreate = true;
23092
23094
  if (NEEDS_CESIUM_TOKEN.includes(defaultImg.id)) {
23093
- shouldCreate = await ViewerUtils.AssertIonToken(Ion.defaultAccessToken);
23095
+ const ionCheckApi = apiGetter.getApi(apiGetter.accountId);
23096
+ await ionCheckApi.Loading;
23097
+ const { programKeys: ionCheckKeys } = await ProgramKey.GetList({ api: ionCheckApi });
23098
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === ProgramKey.EProgramId.CesiumIon);
23099
+ // Use if marked as available.
23100
+ if (ionCheckApi.IsVersionAtLeast(BruceApi.VERSION_WITH_PROXIES)) {
23101
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
23102
+ }
23103
+ // Legacy route, to be killed off.
23104
+ else {
23105
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await ViewerUtils.AssertIonToken(ionKey.Key) : false;
23106
+ }
23094
23107
  }
23095
23108
  if (shouldCreate) {
23096
23109
  try {
@@ -23533,7 +23546,18 @@ var TileRenderEngine;
23533
23546
  // Cesium token is required for Cesium World Terrain.
23534
23547
  let shouldCreate = true;
23535
23548
  if (defaultTerr.id == ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain) {
23536
- shouldCreate = await ViewerUtils.AssertIonToken(Ion.defaultAccessToken);
23549
+ const ionCheckApi = params.apiGetter.getApi(params.apiGetter.accountId);
23550
+ await ionCheckApi.Loading;
23551
+ const { programKeys: ionCheckKeys } = await ProgramKey.GetList({ api: ionCheckApi });
23552
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === ProgramKey.EProgramId.CesiumIon);
23553
+ // Use if marked as available.
23554
+ if (ionCheckApi.IsVersionAtLeast(BruceApi.VERSION_WITH_PROXIES)) {
23555
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
23556
+ }
23557
+ // Legacy route, to be killed off.
23558
+ else {
23559
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await ViewerUtils.AssertIonToken(ionKey.Key) : false;
23560
+ }
23537
23561
  }
23538
23562
  if (shouldCreate) {
23539
23563
  provider = await renderDefaultTerrTile(defaultTerr.id);
@@ -23648,12 +23672,6 @@ const RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
23648
23672
  // Used to track if a current in-progress render is the latest.
23649
23673
  // If we're midway through an async function that is rendering a bookmark and this changes, then we stop the function.
23650
23674
  const ITERATION_KEY$1 = "nextspace-view-render-engine-iteration";
23651
- // Will be set when the account doesn't have its own key.
23652
- // This can be safely nulled as the code will avoid using things it cannot do without it.
23653
- // We should do either:
23654
- // 1- new accounts get our token set.
23655
- // 2- we reference to the template account's token.
23656
- const CESIUM_DEFAULT_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiODI1OWQyZC0wYzdlLTRlOTctODFlOC1kYjIwOGYzOWE0NGIiLCJpZCI6MTE3NDg0LCJpYXQiOjE2NzAzODczOTR9.sx0EZdD-Y33FQ7gB_R3CkTsk3KhNpODoQGrnpvSH4UQ";
23657
23675
  /**
23658
23676
  * Creates a new iteration state.
23659
23677
  * This will stop any existing renders from processing to their end.
@@ -23871,35 +23889,24 @@ async function renderNavigator(iteration, params, bookmark, view, getters) {
23871
23889
  try {
23872
23890
  const bruceApi = getters.GetBruceApi();
23873
23891
  await bruceApi.Loading;
23874
- // Proxy path: token injected server-side.
23892
+ // Get token record to check availability.
23893
+ const { programKeys } = await ProgramKey.GetList({ api: bruceApi });
23894
+ const ionKey = programKeys.find(k => k.ProgramId === ProgramKey.EProgramId.CesiumIon);
23875
23895
  if (bruceApi.IsVersionAtLeast(BruceApi.VERSION_WITH_PROXIES)) {
23876
- Ion.defaultServer = bruceApi.GetBaseUrl() + "proxy/cesium-ion/";
23877
- Ion.defaultAccessToken = "proxy";
23878
- cTokenSet = true;
23896
+ // Marked as available.
23897
+ if (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) {
23898
+ Ion.defaultServer = bruceApi.GetBaseUrl() + "proxy/cesium-ion/";
23899
+ Ion.defaultAccessToken = "proxy";
23900
+ cTokenSet = true;
23901
+ }
23879
23902
  }
23880
- // Legacy path: fetch real Ion token from DB.
23881
- // Kill off once API instances are migrated.
23882
23903
  else {
23883
- try {
23884
- const { programKey } = await ProgramKey.Get({
23885
- programId: ProgramKey.EProgramId.CesiumIon,
23886
- api: bruceApi
23887
- });
23888
- if (programKey === null || programKey === void 0 ? void 0 : programKey.Key) {
23889
- const valid = await ViewerUtils.AssertIonToken(programKey.Key);
23890
- if (valid) {
23891
- Ion.defaultAccessToken = programKey.Key;
23892
- cTokenSet = true;
23893
- }
23894
- }
23895
- }
23896
- catch (e) {
23897
- console.error(e);
23898
- }
23899
- if (!cTokenSet) {
23900
- const valid = await ViewerUtils.AssertIonToken(CESIUM_DEFAULT_TOKEN);
23904
+ // Legacy path: fetch real Ion token from DB.
23905
+ // Kill off once API instances are migrated.
23906
+ if (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) {
23907
+ const valid = await ViewerUtils.AssertIonToken(ionKey.Key);
23901
23908
  if (valid) {
23902
- Ion.defaultAccessToken = CESIUM_DEFAULT_TOKEN;
23909
+ Ion.defaultAccessToken = ionKey.Key;
23903
23910
  cTokenSet = true;
23904
23911
  }
23905
23912
  }
@@ -29723,16 +29730,12 @@ var ViewerUtils;
29723
29730
  ViewerUtils$$1.CreateWidgets = CreateWidgets;
29724
29731
  /**
29725
29732
  * Returns if the given token is valid or not.
29726
- * This will perform a test request to Cesium API.
29733
+ * Returns true if the supplied Cesium Ion access token is valid by probing the Ion endpoint.
29734
+ * @warning don't use when going through the proxy API route.
29727
29735
  * @param token
29728
29736
  * @returns
29729
29737
  */
29730
29738
  async function AssertIonToken(token) {
29731
- // If routed through a proxy then we don't need auth on client side for it.
29732
- const defaultServer = Ion.defaultServer;
29733
- if (defaultServer && typeof defaultServer === "string" && !defaultServer.includes("cesium.com")) {
29734
- return true;
29735
- }
29736
29739
  if (!token) {
29737
29740
  return false;
29738
29741
  }
@@ -36337,7 +36340,7 @@ class WidgetViewBar extends Widget.AWidget {
36337
36340
  }
36338
36341
  }
36339
36342
 
36340
- const VERSION = "6.6.8";
36343
+ const VERSION = "6.7.0";
36341
36344
  /**
36342
36345
  * Updates the environment instance used by bruce-cesium to one specified.
36343
36346
  * This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.