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.
@@ -16067,7 +16067,19 @@
16067
16067
  // Already exists, no need to re-initialize.
16068
16068
  return;
16069
16069
  }
16070
- const validToken = await exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken);
16070
+ const ionCheckApi = this.getters.GetBruceApi({});
16071
+ await ionCheckApi.Loading;
16072
+ const { programKeys: ionCheckKeys } = await BModels.ProgramKey.GetList({ api: ionCheckApi });
16073
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === BModels.ProgramKey.EProgramId.CesiumIon);
16074
+ // Use if marked as available.
16075
+ let validToken;
16076
+ if (ionCheckApi.IsVersionAtLeast(BModels.BruceApi.VERSION_WITH_PROXIES)) {
16077
+ validToken = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
16078
+ }
16079
+ // Legacy route, to be killed off.
16080
+ else {
16081
+ validToken = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await exports.ViewerUtils.AssertIonToken(ionKey.Key) : false;
16082
+ }
16071
16083
  if (!validToken) {
16072
16084
  console.warn("'tileset-osm-render-manager.ts' could not locate a valid Cesium Ion token.");
16073
16085
  return;
@@ -22266,8 +22278,6 @@
22266
22278
  const suffix = iteration.includes("imagery") ? "imagery" : "terrain";
22267
22279
  return viewer[ITERATION_KEY + suffix] === iteration;
22268
22280
  }
22269
- const DEFAULT_STAMEN_KEY = "a652e5f2-8d9e-4706-a9d9-d5daa7d4c89e";
22270
- const DEFAULT_THUNDERFOREST_KEY = "c3c1b64fbb5240be8e0d284a01e33107";
22271
22281
  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;
22272
22282
  /**
22273
22283
  * Prepares a legacy imagery name for comparison.
@@ -22436,14 +22446,6 @@
22436
22446
  else if (BModels.Api.TEMPLATE_ACCOUNT_ID != accountId) {
22437
22447
  return findKey(apiGetter, BModels.Api.TEMPLATE_ACCOUNT_ID, keyId);
22438
22448
  }
22439
- // No nice UI yet for setting it so we'll have a hard-coded one for the time being.
22440
- else if (keyId == BModels.ProgramKey.EProgramId.Thunderforest) {
22441
- return DEFAULT_THUNDERFOREST_KEY;
22442
- }
22443
- // Same story for stamen.
22444
- else if (keyId == BModels.ProgramKey.EProgramId.StadiaMaps) {
22445
- return DEFAULT_STAMEN_KEY;
22446
- }
22447
22449
  return null;
22448
22450
  }
22449
22451
  // Constants for the ion assets.
@@ -23007,7 +23009,18 @@
23007
23009
  // If we need a cesium token, and we don't have one, then we can't render this.
23008
23010
  let shouldCreate = true;
23009
23011
  if (NEEDS_CESIUM_TOKEN.includes(defaultImg.id)) {
23010
- shouldCreate = await exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken);
23012
+ const ionCheckApi = apiGetter.getApi(apiGetter.accountId);
23013
+ await ionCheckApi.Loading;
23014
+ const { programKeys: ionCheckKeys } = await BModels.ProgramKey.GetList({ api: ionCheckApi });
23015
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === BModels.ProgramKey.EProgramId.CesiumIon);
23016
+ // Use if marked as available.
23017
+ if (ionCheckApi.IsVersionAtLeast(BModels.BruceApi.VERSION_WITH_PROXIES)) {
23018
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
23019
+ }
23020
+ // Legacy route, to be killed off.
23021
+ else {
23022
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await exports.ViewerUtils.AssertIonToken(ionKey.Key) : false;
23023
+ }
23011
23024
  }
23012
23025
  if (shouldCreate) {
23013
23026
  try {
@@ -23450,7 +23463,18 @@
23450
23463
  // Cesium token is required for Cesium World Terrain.
23451
23464
  let shouldCreate = true;
23452
23465
  if (defaultTerr.id == BModels.ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain) {
23453
- shouldCreate = await exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken);
23466
+ const ionCheckApi = params.apiGetter.getApi(params.apiGetter.accountId);
23467
+ await ionCheckApi.Loading;
23468
+ const { programKeys: ionCheckKeys } = await BModels.ProgramKey.GetList({ api: ionCheckApi });
23469
+ const ionKey = ionCheckKeys.find(k => k.ProgramId === BModels.ProgramKey.EProgramId.CesiumIon);
23470
+ // Use if marked as available.
23471
+ if (ionCheckApi.IsVersionAtLeast(BModels.BruceApi.VERSION_WITH_PROXIES)) {
23472
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) === true;
23473
+ }
23474
+ // Legacy route, to be killed off.
23475
+ else {
23476
+ shouldCreate = (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) ? await exports.ViewerUtils.AssertIonToken(ionKey.Key) : false;
23477
+ }
23454
23478
  }
23455
23479
  if (shouldCreate) {
23456
23480
  provider = await renderDefaultTerrTile(defaultTerr.id);
@@ -23565,12 +23589,6 @@
23565
23589
  // Used to track if a current in-progress render is the latest.
23566
23590
  // If we're midway through an async function that is rendering a bookmark and this changes, then we stop the function.
23567
23591
  const ITERATION_KEY$1 = "nextspace-view-render-engine-iteration";
23568
- // Will be set when the account doesn't have its own key.
23569
- // This can be safely nulled as the code will avoid using things it cannot do without it.
23570
- // We should do either:
23571
- // 1- new accounts get our token set.
23572
- // 2- we reference to the template account's token.
23573
- const CESIUM_DEFAULT_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiODI1OWQyZC0wYzdlLTRlOTctODFlOC1kYjIwOGYzOWE0NGIiLCJpZCI6MTE3NDg0LCJpYXQiOjE2NzAzODczOTR9.sx0EZdD-Y33FQ7gB_R3CkTsk3KhNpODoQGrnpvSH4UQ";
23574
23592
  /**
23575
23593
  * Creates a new iteration state.
23576
23594
  * This will stop any existing renders from processing to their end.
@@ -23788,35 +23806,24 @@
23788
23806
  try {
23789
23807
  const bruceApi = getters.GetBruceApi();
23790
23808
  await bruceApi.Loading;
23791
- // Proxy path: token injected server-side.
23809
+ // Get token record to check availability.
23810
+ const { programKeys } = await BModels.ProgramKey.GetList({ api: bruceApi });
23811
+ const ionKey = programKeys.find(k => k.ProgramId === BModels.ProgramKey.EProgramId.CesiumIon);
23792
23812
  if (bruceApi.IsVersionAtLeast(BModels.BruceApi.VERSION_WITH_PROXIES)) {
23793
- Cesium.Ion.defaultServer = bruceApi.GetBaseUrl() + "proxy/cesium-ion/";
23794
- Cesium.Ion.defaultAccessToken = "proxy";
23795
- cTokenSet = true;
23813
+ // Marked as available.
23814
+ if (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Available) {
23815
+ Cesium.Ion.defaultServer = bruceApi.GetBaseUrl() + "proxy/cesium-ion/";
23816
+ Cesium.Ion.defaultAccessToken = "proxy";
23817
+ cTokenSet = true;
23818
+ }
23796
23819
  }
23797
- // Legacy path: fetch real Ion token from DB.
23798
- // Kill off once API instances are migrated.
23799
23820
  else {
23800
- try {
23801
- const { programKey } = await BModels.ProgramKey.Get({
23802
- programId: BModels.ProgramKey.EProgramId.CesiumIon,
23803
- api: bruceApi
23804
- });
23805
- if (programKey === null || programKey === void 0 ? void 0 : programKey.Key) {
23806
- const valid = await exports.ViewerUtils.AssertIonToken(programKey.Key);
23807
- if (valid) {
23808
- Cesium.Ion.defaultAccessToken = programKey.Key;
23809
- cTokenSet = true;
23810
- }
23811
- }
23812
- }
23813
- catch (e) {
23814
- console.error(e);
23815
- }
23816
- if (!cTokenSet) {
23817
- const valid = await exports.ViewerUtils.AssertIonToken(CESIUM_DEFAULT_TOKEN);
23821
+ // Legacy path: fetch real Ion token from DB.
23822
+ // Kill off once API instances are migrated.
23823
+ if (ionKey === null || ionKey === void 0 ? void 0 : ionKey.Key) {
23824
+ const valid = await exports.ViewerUtils.AssertIonToken(ionKey.Key);
23818
23825
  if (valid) {
23819
- Cesium.Ion.defaultAccessToken = CESIUM_DEFAULT_TOKEN;
23826
+ Cesium.Ion.defaultAccessToken = ionKey.Key;
23820
23827
  cTokenSet = true;
23821
23828
  }
23822
23829
  }
@@ -29632,16 +29639,12 @@
29632
29639
  ViewerUtils.CreateWidgets = CreateWidgets;
29633
29640
  /**
29634
29641
  * Returns if the given token is valid or not.
29635
- * This will perform a test request to Cesium API.
29642
+ * Returns true if the supplied Cesium Ion access token is valid by probing the Ion endpoint.
29643
+ * @warning don't use when going through the proxy API route.
29636
29644
  * @param token
29637
29645
  * @returns
29638
29646
  */
29639
29647
  async function AssertIonToken(token) {
29640
- // If routed through a proxy then we don't need auth on client side for it.
29641
- const defaultServer = Cesium.Ion.defaultServer;
29642
- if (defaultServer && typeof defaultServer === "string" && !defaultServer.includes("cesium.com")) {
29643
- return true;
29644
- }
29645
29648
  if (!token) {
29646
29649
  return false;
29647
29650
  }
@@ -36226,7 +36229,7 @@
36226
36229
  }
36227
36230
  }
36228
36231
 
36229
- const VERSION = "6.6.8";
36232
+ const VERSION = "6.7.0";
36230
36233
  /**
36231
36234
  * Updates the environment instance used by bruce-cesium to one specified.
36232
36235
  * This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.