@esri/arcgis-rest-basemap-sessions 4.10.2 → 4.10.3

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,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-basemap-sessions - v4.10.2 - Apache-2.0
2
+ * @esri/arcgis-rest-basemap-sessions - v4.10.3 - Apache-2.0
3
3
  * Copyright (c) 2017-2026 Esri, Inc.
4
- * Tue Apr 07 2026 14:52:46 GMT+0000 (Coordinated Universal Time)
4
+ * Wed Jun 17 2026 23:15:10 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  import { request } from '@esri/arcgis-rest-request';
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-basemap-sessions - v4.10.2 - Apache-2.0
2
+ * @esri/arcgis-rest-basemap-sessions - v4.10.3 - Apache-2.0
3
3
  * Copyright (c) 2017-2026 Esri, Inc.
4
- * Tue Apr 07 2026 14:52:46 GMT+0000 (Coordinated Universal Time)
4
+ * Wed Jun 17 2026 23:15:10 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  import{request as e}from"@esri/arcgis-rest-request";const t="https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/sessions/start",i=300,s=10,r=43200;function n({startSessionUrl:t,authentication:i,styleFamily:s="arcgis",duration:r=43200}){return e(t,{httpMethod:"GET",authentication:i,params:{styleFamily:s,durationSeconds:r}})}class a{constructor(e){var t;this.expirationTimerId=null,this.pendingSession=null,this.autoRefreshHandler=null,this.startSessionUrl=e.startSessionUrl,this.token=e.token,this.styleFamily=e.styleFamily||"arcgis",this.authentication=e.authentication,this.duration=e.duration||r,this.startTime=e.startTime,this.endTime=e.endTime,this.expires=e.expires,this.safetyMargin=e.safetyMargin,this.expirationCheckInterval=1e3*Math.min(this.duration/100,10),this.emitter={all:t=t||new Map,on:function(e,i){var s=t.get(e);s?s.push(i):t.set(e,[i])},off:function(e,i){var s=t.get(e);s&&(i?s.splice(s.indexOf(i)>>>0,1):t.set(e,[]))},emit:function(e,i){var s=t.get(e);s&&s.slice().map(function(e){e(i)}),(s=t.get("*"))&&s.slice().map(function(t){t(e,i)})}}}isSessionExpired(){return this.isExpired&&(this.disableCheckingExpirationTime(),this.emitter.emit("expired",{token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires})),this.isExpired}enableCheckingExpirationTime(){const e=()=>{this.isSessionExpired()};return this.expirationTimerId||(this.expirationTimerId=setInterval(e,this.expirationCheckInterval)),setTimeout(()=>{e()},10),this.expirationTimerId}disableCheckingExpirationTime(){this.expirationTimerId&&(clearInterval(this.expirationTimerId),this.expirationTimerId=null)}static async startSession({startSessionUrl:e,styleFamily:t="arcgis",authentication:i,safetyMargin:s,duration:r=43200,autoRefresh:a=!1},o){if(r<10)throw new Error("Session duration must be at least 10 seconds.");if(r>43200)throw new Error("Session duration cannot exceed 12 hours (43200 seconds).");const h=await n({startSessionUrl:e,styleFamily:t,authentication:i,duration:r}),m=function(e,t){return t||Math.min(Math.max(e/100,1),300)}(r,s),d=new o({startSessionUrl:e,token:h.sessionToken,styleFamily:t,authentication:i,safetyMargin:m,expires:new Date(h.endTime-1e3*m),startTime:new Date(h.startTime),endTime:new Date(h.endTime),duration:r});return d.enableCheckingExpirationTime(),a&&d.enableAutoRefresh(),d}get checkingExpirationTime(){return!!this.expirationTimerId}get secondsUntilExpiration(){return Math.floor(this.millisecondsUntilExpiration/1e3)}get millisecondsUntilExpiration(){if(this.isExpired)return 0;const e=new Date;return this.endTime.getTime()-e.getTime()}get isExpired(){return this.expires<new Date}getToken(){return this.isExpired?this.refreshCredentials().then(()=>this.token):Promise.resolve(this.token)}get canRefresh(){return!0}get autoRefresh(){return!!this.autoRefreshHandler&&!!this.expirationTimerId}async refreshCredentials(){if(this.pendingSession)return await this.pendingSession,this;const e=JSON.parse(JSON.stringify({token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires}));try{this.pendingSession=n({startSessionUrl:this.startSessionUrl,styleFamily:this.styleFamily,authentication:this.authentication,duration:this.duration});const t=await this.pendingSession;this.pendingSession=null,this.setToken(t.sessionToken),this.setStartTime(new Date(t.startTime)),this.setEndTime(new Date(t.endTime)),this.setExpires(new Date(t.endTime-1e3*this.safetyMargin)),this.enableCheckingExpirationTime(),this.emitter.emit("refreshed",{previous:{token:e.token,startTime:new Date(e.startTime),endTime:new Date(e.endTime),expires:new Date(e.expires)},current:{token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires}})}catch(e){throw this.emitter.emit("error",e),e}return this}enableAutoRefresh(){this.expirationTimerId||this.enableCheckingExpirationTime(),this.autoRefreshHandler=()=>{this.refreshCredentials().catch(e=>{this.emitter.emit("error",e)})},this.on("expired",this.autoRefreshHandler)}disableAutoRefresh(){this.autoRefreshHandler&&(this.off("expired",this.autoRefreshHandler),this.autoRefreshHandler=null)}destroy(){this.disableAutoRefresh(),this.disableCheckingExpirationTime(),this.emitter.off("expired"),this.emitter.off("refreshed"),this.emitter.off("error"),this.emitter.off("*")}on(e,t){this.emitter.on(e,t),this.isSessionExpired()}once(e,t){const i=s=>{this.emitter.off(e,i),t(s)};this.emitter.on(e,i)}off(e,t){this.emitter.off(e,t)}setToken(e){this.token=e}setStartTime(e){this.startTime=e}setEndTime(e){this.endTime=e}setExpires(e){this.expires=e}}
7
7
  /* istanbul ignore next -- @preserve */a.error=function(e){},
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-basemap-sessions - v4.10.2 - Apache-2.0
2
+ * @esri/arcgis-rest-basemap-sessions - v4.10.3 - Apache-2.0
3
3
  * Copyright (c) 2017-2026 Esri, Inc.
4
- * Tue Apr 07 2026 14:52:46 GMT+0000 (Coordinated Universal Time)
4
+ * Wed Jun 17 2026 23:15:10 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@esri/arcgis-rest-request')) :
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-basemap-sessions - v4.10.2 - Apache-2.0
2
+ * @esri/arcgis-rest-basemap-sessions - v4.10.3 - Apache-2.0
3
3
  * Copyright (c) 2017-2026 Esri, Inc.
4
- * Tue Apr 07 2026 14:52:46 GMT+0000 (Coordinated Universal Time)
4
+ * Wed Jun 17 2026 23:15:10 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,function(e,t){"use strict";const i="https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/sessions/start",s=43200;function n({startSessionUrl:e,authentication:i,styleFamily:s="arcgis",duration:n=43200}){return t.request(e,{httpMethod:"GET",authentication:i,params:{styleFamily:s,durationSeconds:n}})}class r{constructor(e){var t;this.expirationTimerId=null,this.pendingSession=null,this.autoRefreshHandler=null,this.startSessionUrl=e.startSessionUrl,this.token=e.token,this.styleFamily=e.styleFamily||"arcgis",this.authentication=e.authentication,this.duration=e.duration||s,this.startTime=e.startTime,this.endTime=e.endTime,this.expires=e.expires,this.safetyMargin=e.safetyMargin,this.expirationCheckInterval=1e3*Math.min(this.duration/100,10),this.emitter={all:t=t||new Map,on:function(e,i){var s=t.get(e);s?s.push(i):t.set(e,[i])},off:function(e,i){var s=t.get(e);s&&(i?s.splice(s.indexOf(i)>>>0,1):t.set(e,[]))},emit:function(e,i){var s=t.get(e);s&&s.slice().map(function(e){e(i)}),(s=t.get("*"))&&s.slice().map(function(t){t(e,i)})}}}isSessionExpired(){return this.isExpired&&(this.disableCheckingExpirationTime(),this.emitter.emit("expired",{token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires})),this.isExpired}enableCheckingExpirationTime(){const e=()=>{this.isSessionExpired()};return this.expirationTimerId||(this.expirationTimerId=setInterval(e,this.expirationCheckInterval)),setTimeout(()=>{e()},10),this.expirationTimerId}disableCheckingExpirationTime(){this.expirationTimerId&&(clearInterval(this.expirationTimerId),this.expirationTimerId=null)}static async startSession({startSessionUrl:e,styleFamily:t="arcgis",authentication:i,safetyMargin:s,duration:r=43200,autoRefresh:a=!1},o){if(r<10)throw new Error("Session duration must be at least 10 seconds.");if(r>43200)throw new Error("Session duration cannot exceed 12 hours (43200 seconds).");const h=await n({startSessionUrl:e,styleFamily:t,authentication:i,duration:r}),d=function(e,t){return t||Math.min(Math.max(e/100,1),300)}(r,s),m=new o({startSessionUrl:e,token:h.sessionToken,styleFamily:t,authentication:i,safetyMargin:d,expires:new Date(h.endTime-1e3*d),startTime:new Date(h.startTime),endTime:new Date(h.endTime),duration:r});return m.enableCheckingExpirationTime(),a&&m.enableAutoRefresh(),m}get checkingExpirationTime(){return!!this.expirationTimerId}get secondsUntilExpiration(){return Math.floor(this.millisecondsUntilExpiration/1e3)}get millisecondsUntilExpiration(){if(this.isExpired)return 0;const e=new Date;return this.endTime.getTime()-e.getTime()}get isExpired(){return this.expires<new Date}getToken(){return this.isExpired?this.refreshCredentials().then(()=>this.token):Promise.resolve(this.token)}get canRefresh(){return!0}get autoRefresh(){return!!this.autoRefreshHandler&&!!this.expirationTimerId}async refreshCredentials(){if(this.pendingSession)return await this.pendingSession,this;const e=JSON.parse(JSON.stringify({token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires}));try{this.pendingSession=n({startSessionUrl:this.startSessionUrl,styleFamily:this.styleFamily,authentication:this.authentication,duration:this.duration});const t=await this.pendingSession;this.pendingSession=null,this.setToken(t.sessionToken),this.setStartTime(new Date(t.startTime)),this.setEndTime(new Date(t.endTime)),this.setExpires(new Date(t.endTime-1e3*this.safetyMargin)),this.enableCheckingExpirationTime(),this.emitter.emit("refreshed",{previous:{token:e.token,startTime:new Date(e.startTime),endTime:new Date(e.endTime),expires:new Date(e.expires)},current:{token:this.token,startTime:this.startTime,endTime:this.endTime,expires:this.expires}})}catch(e){throw this.emitter.emit("error",e),e}return this}enableAutoRefresh(){this.expirationTimerId||this.enableCheckingExpirationTime(),this.autoRefreshHandler=()=>{this.refreshCredentials().catch(e=>{this.emitter.emit("error",e)})},this.on("expired",this.autoRefreshHandler)}disableAutoRefresh(){this.autoRefreshHandler&&(this.off("expired",this.autoRefreshHandler),this.autoRefreshHandler=null)}destroy(){this.disableAutoRefresh(),this.disableCheckingExpirationTime(),this.emitter.off("expired"),this.emitter.off("refreshed"),this.emitter.off("error"),this.emitter.off("*")}on(e,t){this.emitter.on(e,t),this.isSessionExpired()}once(e,t){const i=s=>{this.emitter.off(e,i),t(s)};this.emitter.on(e,i)}off(e,t){this.emitter.off(e,t)}setToken(e){this.token=e}setStartTime(e){this.startTime=e}setEndTime(e){this.endTime=e}setExpires(e){this.expires=e}}
7
7
  /* istanbul ignore next -- @preserve */r.error=function(e){},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/arcgis-rest-basemap-sessions",
3
- "version": "4.10.2",
3
+ "version": "4.10.3",
4
4
  "description": "Helper functions for the Basemap Sessions service in @esri/arcgis-rest-js.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -50,7 +50,7 @@
50
50
  "@esri/arcgis-rest-request": "^4.0.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@esri/arcgis-rest-request": "^4.10.2"
53
+ "@esri/arcgis-rest-request": "^4.10.3"
54
54
  },
55
55
  "contributors": [
56
56
  "Patrick Arlt <parlt@esri.com> (http://patrickarlt.com/)"