Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@esri/arcgis-rest-auth

Package Overview
Dependencies
Maintainers
17
Versions
118
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@esri/arcgis-rest-auth - npm Package Compare versions

Comparing version 1.14.3 to 1.14.4

11

dist/esm/ApplicationSession.d.ts

@@ -23,2 +23,10 @@ import { IAuthenticationManager, ITokenRequestOptions } from "@esri/arcgis-rest-request";

expires?: Date;
/**
* URL of ArcGIS REST base, defaults to "https://www.arcgis.com/sharing/rest"
*/
portal?: string;
/**
* Duration of requested tokens in minutes. defaults to 7200 (5 days).
*/
duration?: number;
}

@@ -34,3 +42,3 @@ /**

* ```
* You can use [App Login](/arcgis-rest-/js/guides/node/) to access premium content and services in ArcGIS Online.
* You can use [App Login](/arcgis-rest-js/guides/node/) to access premium content and services in ArcGIS Online.
*

@@ -44,2 +52,3 @@ */

private expires;
private duration;
/**

@@ -46,0 +55,0 @@ * Internal object to keep track of pending token requests. Used to prevent

8

dist/esm/ApplicationSession.js

@@ -14,3 +14,3 @@ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.

* ```
* You can use [App Login](/arcgis-rest-/js/guides/node/) to access premium content and services in ArcGIS Online.
* You can use [App Login](/arcgis-rest-js/guides/node/) to access premium content and services in ArcGIS Online.
*

@@ -24,3 +24,4 @@ */

this.expires = options.expires;
this.portal = "https://www.arcgis.com/sharing/rest";
this.portal = options.portal || "https://www.arcgis.com/sharing/rest";
this.duration = options.duration || 7200;
}

@@ -43,3 +44,4 @@ // url isnt actually read or passed through.

client_secret: this.clientSecret,
grant_type: "client_credentials"
grant_type: "client_credentials",
expiration: this.duration
} }, requestOptions);

@@ -46,0 +48,0 @@ return fetchToken(this.portal + "/oauth2/token/", options).then(function (response) {

@@ -14,3 +14,5 @@ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.

username: response.username,
expires: new Date(Date.now() + (response.expires_in * 60 * 1000 - 60 * 1000)),
expires: new Date(
// convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp
Date.now() + (response.expires_in * 1000 - 1000)),
ssl: response.ssl === true

@@ -17,0 +19,0 @@ };

@@ -147,2 +147,46 @@ /// <reference types="node" />

/**
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is true the
* authentication window will open in a new tab/window otherwise the user will
* be redirected to the authorization page in their current tab.
*
* @browserOnly
*/
static beginOAuth2(options: IOauth2Options, win?: any): Promise<UserSession>;
/**
* Completes a browser-based OAuth 2.0 sign if `options.popup` is true the user
* will be returned to the previous window. Otherwise a new `UserSession`
* will be returned.
*
* @browserOnly
*/
static completeOAuth2(options: IOauth2Options, win?: any): UserSession;
/**
* Begins a new server-based OAuth 2.0 sign in. This will redirect the user to
* the ArcGIS Online or ArcGIS Enterprise authorization page.
*
* @nodeOnly
*/
static authorize(options: IOauth2Options, response: http.ServerResponse): void;
/**
* Completes the server-based OAuth 2.0 sign in process by exchanging the `authorizationCode`
* for a `access_token`.
*
* @nodeOnly
*/
static exchangeAuthorizationCode(options: IOauth2Options, authorizationCode: string): Promise<UserSession>;
static deserialize(str: string): UserSession;
/**
* Translates authentication from the format used in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).
*
* ```js
* UserSession.fromCredential({
* userId: "jsmith",
* token: "secret"
* });
* ```
*
* @returns UserSession
*/
static fromCredential(credential: ICredential): UserSession;
/**
* Client ID being used for authentication if provided in the `constructor`.

@@ -186,3 +230,3 @@ */

*/
_user: IUser;
private _user;
private _token;

@@ -220,46 +264,2 @@ private _tokenExpires;

/**
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is true the
* authentication window will open in a new tab/window otherwise the user will
* be redirected to the authorization page in their current tab.
*
* @browserOnly
*/
static beginOAuth2(options: IOauth2Options, win?: any): Promise<UserSession>;
/**
* Completes a browser-based OAuth 2.0 sign if `options.popup` is true the user
* will be returned to the previous window. Otherwise a new `UserSession`
* will be returned.
*
* @browserOnly
*/
static completeOAuth2(options: IOauth2Options, win?: any): UserSession;
/**
* Begins a new server-based OAuth 2.0 sign in. This will redirect the user to
* the ArcGIS Online or ArcGIS Enterprise authorization page.
*
* @nodeOnly
*/
static authorize(options: IOauth2Options, response: http.ServerResponse): void;
/**
* Completes the server-based OAuth 2.0 sign in process by exchanging the `authorizationCode`
* for a `access_token`.
*
* @nodeOnly
*/
static exchangeAuthorizationCode(options: IOauth2Options, authorizationCode: string): Promise<UserSession>;
static deserialize(str: string): UserSession;
/**
* Translates authentication from the format used in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).
*
* ```js
* UserSession.fromCredential({
* userId: "jsmith",
* token: "secret"
* });
* ```
*
* @returns UserSession
*/
static fromCredential(credential: ICredential): UserSession;
/**
* Returns authentication in a format useable in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).

@@ -266,0 +266,0 @@ *

@@ -56,42 +56,2 @@ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.

}
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -285,2 +245,42 @@ * Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is true the

};
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -372,2 +372,4 @@ * Returns authentication in a format useable in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).

UserSession.prototype.refreshSession = function (requestOptions) {
// make sure subsequent calls to getUser() don't returned cached metadata
this._user = null;
if (this.username && this.password) {

@@ -374,0 +376,0 @@ return this.refreshWithUsernameAndPassword(requestOptions);

@@ -16,3 +16,3 @@ "use strict";

* ```
* You can use [App Login](/arcgis-rest-/js/guides/node/) to access premium content and services in ArcGIS Online.
* You can use [App Login](/arcgis-rest-js/guides/node/) to access premium content and services in ArcGIS Online.
*

@@ -26,3 +26,4 @@ */

this.expires = options.expires;
this.portal = "https://www.arcgis.com/sharing/rest";
this.portal = options.portal || "https://www.arcgis.com/sharing/rest";
this.duration = options.duration || 7200;
}

@@ -45,3 +46,4 @@ // url isnt actually read or passed through.

client_secret: this.clientSecret,
grant_type: "client_credentials"
grant_type: "client_credentials",
expiration: this.duration
} }, requestOptions);

@@ -48,0 +50,0 @@ return fetch_token_1.fetchToken(this.portal + "/oauth2/token/", options).then(function (response) {

@@ -16,3 +16,5 @@ "use strict";

username: response.username,
expires: new Date(Date.now() + (response.expires_in * 60 * 1000 - 60 * 1000)),
expires: new Date(
// convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp
Date.now() + (response.expires_in * 1000 - 1000)),
ssl: response.ssl === true

@@ -19,0 +21,0 @@ };

@@ -58,42 +58,2 @@ "use strict";

}
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -287,2 +247,42 @@ * Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is true the

};
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -374,2 +374,4 @@ * Returns authentication in a format useable in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).

UserSession.prototype.refreshSession = function (requestOptions) {
// make sure subsequent calls to getUser() don't returned cached metadata
this._user = null;
if (this.username && this.password) {

@@ -376,0 +378,0 @@ return this.refreshWithUsernameAndPassword(requestOptions);

/* @preserve
* @esri/arcgis-rest-auth - v1.14.3 - Apache-2.0
* Copyright (c) 2017-2018 Esri, Inc.
* Mon Dec 03 2018 12:21:18 GMT-0800 (Pacific Standard Time)
* @esri/arcgis-rest-auth - v1.14.4 - Apache-2.0
* Copyright (c) 2017-2019 Esri, Inc.
* Fri Jan 11 2019 13:02:41 GMT-0800 (Pacific Standard Time)
*/

@@ -50,3 +50,5 @@ (function (global, factory) {

username: response.username,
expires: new Date(Date.now() + (response.expires_in * 60 * 1000 - 60 * 1000)),
expires: new Date(
// convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp
Date.now() + (response.expires_in * 1000 - 1000)),
ssl: response.ssl === true

@@ -72,3 +74,3 @@ };

* ```
* You can use [App Login](/arcgis-rest-/js/guides/node/) to access premium content and services in ArcGIS Online.
* You can use [App Login](/arcgis-rest-js/guides/node/) to access premium content and services in ArcGIS Online.
*

@@ -82,3 +84,4 @@ */

this.expires = options.expires;
this.portal = "https://www.arcgis.com/sharing/rest";
this.portal = options.portal || "https://www.arcgis.com/sharing/rest";
this.duration = options.duration || 7200;
}

@@ -101,3 +104,4 @@ // url isnt actually read or passed through.

client_secret: this.clientSecret,
grant_type: "client_credentials"
grant_type: "client_credentials",
expiration: this.duration
} }, requestOptions);

@@ -189,42 +193,2 @@ return fetchToken(this.portal + "/oauth2/token/", options).then(function (response) {

}
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -418,2 +382,42 @@ * Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is true the

};
Object.defineProperty(UserSession.prototype, "token", {
/**
* The current ArcGIS Online or ArcGIS Enterprise `token`.
*/
get: function () {
return this._token;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "tokenExpires", {
/**
* The expiration time of the current `token`.
*/
get: function () {
return this._tokenExpires;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshToken", {
/**
* The current token to ArcGIS Online or ArcGIS Enterprise.
*/
get: function () {
return this._refreshToken;
},
enumerable: true,
configurable: true
});
Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
/**
* The expiration time of the current `refreshToken`.
*/
get: function () {
return this._refreshTokenExpires;
},
enumerable: true,
configurable: true
});
/**

@@ -505,2 +509,4 @@ * Returns authentication in a format useable in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).

UserSession.prototype.refreshSession = function (requestOptions) {
// make sure subsequent calls to getUser() don't returned cached metadata
this._user = null;
if (this.username && this.password) {

@@ -507,0 +513,0 @@ return this.refreshWithUsernameAndPassword(requestOptions);

/* @preserve
* @esri/arcgis-rest-auth - v1.14.3 - Apache-2.0
* Copyright (c) 2017-2018 Esri, Inc.
* Mon Dec 03 2018 12:21:21 GMT-0800 (Pacific Standard Time)
* @esri/arcgis-rest-auth - v1.14.4 - Apache-2.0
* Copyright (c) 2017-2019 Esri, Inc.
* Fri Jan 11 2019 13:02:47 GMT-0800 (Pacific Standard Time)
*/
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],r):r(e.arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,function(e,r){"use strict";var t=function(){return(t=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var s in r=arguments[t])Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s]);return e}).apply(this,arguments)};function n(e,t){var n=t.params?t:{params:t};return r.request(e,n).then(function(e){var r={token:e.access_token,username:e.username,expires:new Date(Date.now()+(60*e.expires_in*1e3-6e4)),ssl:!0===e.ssl};return e.refresh_token&&(r.refreshToken=e.refresh_token),r})}var s=function(){function e(e){this.clientId=e.clientId,this.clientSecret=e.clientSecret,this.token=e.token,this.expires=e.expires,this.portal="https://www.arcgis.com/sharing/rest"}return e.prototype.getToken=function(e,r){return this.token&&this.expires&&this.expires.getTime()>Date.now()?Promise.resolve(this.token):this._pendingTokenRequest?this._pendingTokenRequest:(this._pendingTokenRequest=this.refreshToken(r),this._pendingTokenRequest)},e.prototype.refreshToken=function(e){var r=this,s=t({params:{client_id:this.clientId,client_secret:this.clientSecret,grant_type:"client_credentials"}},e);return n(this.portal+"/oauth2/token/",s).then(function(e){return r._pendingTokenRequest=null,r.token=e.token,r.expires=e.expires,e.token})},e.prototype.refreshSession=function(){var e=this;return this.refreshToken().then(function(){return e})},e}();function o(e,t){var n=t.params?t:{params:t};return"undefined"!=typeof window&&window.location&&window.location.host?n.params.referer=window.location.host:n.params.referer="@esri/arcgis-rest",r.request(e,n)}var i=function(){function e(e){this.clientId=e.clientId,this._refreshToken=e.refreshToken,this._refreshTokenExpires=e.refreshTokenExpires,this.username=e.username,this.password=e.password,this._token=e.token,this._tokenExpires=e.tokenExpires,this.portal=e.portal?r.cleanUrl(e.portal):"https://www.arcgis.com/sharing/rest",this.ssl=e.ssl,this.provider=e.provider||"arcgis",this.tokenDuration=e.tokenDuration||20160,this.redirectUri=e.redirectUri,this.refreshTokenTTL=e.refreshTokenTTL||1440,this.trustedServers={},this._pendingTokenRequests={}}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tokenExpires",{get:function(){return this._tokenExpires},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"refreshToken",{get:function(){return this._refreshToken},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"refreshTokenExpires",{get:function(){return this._refreshTokenExpires},enumerable:!0,configurable:!0}),e.beginOAuth2=function(n,s){void 0===s&&(s=window);var o,i=t({portal:"https://www.arcgis.com/sharing/rest",provider:"arcgis",duration:20160,popup:!0,state:n.clientId,locale:""},n),a=i.portal,h=i.provider,p=i.clientId,u=i.duration,c=i.redirectUri,f=i.popup,l=i.state,k=i.locale;if(o="arcgis"===h?a+"/oauth2/authorize?client_id="+p+"&response_type=token&expiration="+u+"&redirect_uri="+encodeURIComponent(c)+"&state="+l+"&locale="+k:a+"/oauth2/social/authorize?client_id="+p+"&socialLoginProviderName="+h+"&autoAccountCreateForSocial=true&response_type=token&expiration="+u+"&redirect_uri="+encodeURIComponent(c)+"&state="+l+"&locale="+k,f){var d,T=((d={promise:null,resolve:null,reject:null}).promise=new Promise(function(e,r){d.resolve=e,d.reject=r}),d);return s["__ESRI_REST_AUTH_HANDLER_"+p]=function(t,n){if(t){var s=JSON.parse(t);T.reject(new r.ArcGISAuthError(s.errorMessage,s.error))}else if(n){var o=JSON.parse(n);T.resolve(new e({clientId:p,portal:a,ssl:o.ssl,token:o.token,tokenExpires:new Date(o.expires),username:o.username}))}},s.open(o,"oauth-window","height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes"),T.promise}s.location.href=o},e.completeOAuth2=function(n,s){void 0===s&&(s=window);var o=t({portal:"https://www.arcgis.com/sharing/rest"},n),i=o.portal,a=o.clientId;function h(t,n){if(s.opener&&s.opener.parent)return s.opener.parent["__ESRI_REST_AUTH_HANDLER_"+a](t?JSON.stringify(t):void 0,JSON.stringify(n)),void s.close();if(s!==s.parent)return s.parent["__ESRI_REST_AUTH_HANDLER_"+a](t?JSON.stringify(t):void 0,JSON.stringify(n)),void s.close();if(t)throw new r.ArcGISAuthError(t.errorMessage,t.error);return new e({clientId:a,portal:i,ssl:n.ssl,token:n.token,tokenExpires:n.expires,username:n.username})}var p=s.location.href.match(/access_token=(.+)&expires_in=(.+)&username=([^&]+)/);if(!p){var u=s.location.href.match(/error=(.+)&error_description=(.+)/);return h({error:u[1],errorMessage:decodeURIComponent(u[2])})}var c=p[1],f=new Date(Date.now()+1e3*parseInt(p[2],10)-6e4),l=decodeURIComponent(p[3]);return h(void 0,{token:c,expires:f,ssl:s.location.href.indexOf("&ssl=true")>-1||s.location.href.indexOf("#ssl=true")>-1,username:l})},e.authorize=function(e,r){var n=t({portal:"https://arcgis.com/sharing/rest",duration:20160},e),s=n.portal,o=n.clientId,i=n.duration,a=n.redirectUri;r.writeHead(301,{Location:s+"/oauth2/authorize?client_id="+o+"&duration="+i+"&response_type=code&redirect_uri="+encodeURIComponent(a)}),r.end()},e.exchangeAuthorizationCode=function(r,s){var o=t({portal:"https://www.arcgis.com/sharing/rest",refreshTokenTTL:1440},r),i=o.portal,a=o.clientId,h=o.redirectUri,p=o.refreshTokenTTL;return n(i+"/oauth2/token",{grant_type:"authorization_code",client_id:a,redirect_uri:h,code:s}).then(function(r){return new e({clientId:a,portal:i,ssl:r.ssl,redirectUri:h,refreshToken:r.refreshToken,refreshTokenTTL:p,refreshTokenExpires:new Date(Date.now()+1e3*(p-1)),token:r.token,tokenExpires:r.expires,username:r.username})})},e.deserialize=function(r){var t=JSON.parse(r);return new e({clientId:t.clientId,refreshToken:t.refreshToken,refreshTokenExpires:new Date(t.refreshTokenExpires),username:t.username,password:t.password,token:t.token,tokenExpires:new Date(t.tokenExpires),portal:t.portal,ssl:t.ssl,tokenDuration:t.tokenDuration,redirectUri:t.redirectUri,refreshTokenTTL:t.refreshTokenTTL})},e.fromCredential=function(r){return new e({portal:r.server.includes("sharing/rest")?r.server:r.server+"/sharing/rest",ssl:r.ssl,token:r.token,username:r.userId,tokenExpires:new Date(r.expires)})},e.prototype.toCredential=function(){return{expires:this.tokenExpires.getTime(),server:this.portal,ssl:this.ssl,token:this.token,userId:this.username}},e.prototype.getUser=function(e){var n=this;if(this._user&&this._user.username===this.username)return Promise.resolve(this._user);var s=this.portal+"/community/users/"+encodeURIComponent(this.username),o=t({httpMethod:"GET",authentication:this},e);return r.request(s,o).then(function(e){return n._user=e,e})},e.prototype.getToken=function(e,r){return/^https?:\/\/\S+\.arcgis\.com\/sharing\/rest/.test(this.portal)&&/^https?:\/\/\S+\.arcgis\.com.+/.test(e)?this.getFreshToken(r):new RegExp(this.portal,"i").test(e)?this.getFreshToken(r):this.getTokenForServer(e,r)},e.prototype.toJSON=function(){return{clientId:this.clientId,refreshToken:this.refreshToken,refreshTokenExpires:this.refreshTokenExpires,username:this.username,password:this.password,token:this.token,tokenExpires:this.tokenExpires,portal:this.portal,ssl:this.ssl,tokenDuration:this.tokenDuration,redirectUri:this.redirectUri,refreshTokenTTL:this.refreshTokenTTL}},e.prototype.serialize=function(){return JSON.stringify(this)},e.prototype.refreshSession=function(e){return this.username&&this.password?this.refreshWithUsernameAndPassword(e):this.clientId&&this.refreshToken?this.refreshWithRefreshToken():Promise.reject(new r.ArcGISAuthError("Unable to refresh token."))},e.prototype.getTokenForServer=function(e,t){var n=this,s=e.toLowerCase().split(/\/rest(\/admin)?\/services\//)[0],i=this.trustedServers[s];return i&&i.expires.getTime()>Date.now()?Promise.resolve(i.token):this._pendingTokenRequests[s]?this._pendingTokenRequests[s]:(this._pendingTokenRequests[s]=r.request(s+"/rest/info").then(function(e){return e.owningSystemUrl}).then(function(s){if(!s||!new RegExp(s,"i").test(n.portal))throw new r.ArcGISAuthError(e+" is not federated with "+n.portal+".","NOT_FEDERATED");return r.request(s+"/sharing/rest/info",t)}).then(function(e){return e.authInfo.tokenServicesUrl}).then(function(r){return n.token?o(r,{params:{token:n.token,serverUrl:e,expiration:n.tokenDuration}}):o(r,{params:{username:n.username,password:n.password,expiration:n.tokenDuration}}).then(function(e){return n._token=e.token,n._tokenExpires=new Date(e.expires),e})}).then(function(e){return n.trustedServers[s]={expires:new Date(e.expires),token:e.token},e.token}),this._pendingTokenRequests[s])},e.prototype.getFreshToken=function(e){var r=this;return this.token&&this.tokenExpires&&this.tokenExpires.getTime()>Date.now()?Promise.resolve(this.token):(this._pendingTokenRequests[this.portal]||(this._pendingTokenRequests[this.portal]=this.refreshSession(e).then(function(e){return r._pendingTokenRequests[r.portal]=null,e.token})),this._pendingTokenRequests[this.portal])},e.prototype.refreshWithUsernameAndPassword=function(e){var r=this,n=t({params:{username:this.username,password:this.password,expiration:this.tokenDuration}},e);return o(this.portal+"/generateToken",n).then(function(e){return r._token=e.token,r._tokenExpires=new Date(e.expires),r})},e.prototype.refreshWithRefreshToken=function(e){var r=this;if(this.refreshToken&&this.refreshTokenExpires&&this.refreshTokenExpires.getTime()<Date.now())return this.refreshRefreshToken(e);var s=t({params:{client_id:this.clientId,refresh_token:this.refreshToken,grant_type:"refresh_token"}},e);return n(this.portal+"/oauth2/token",s).then(function(e){return r._token=e.token,r._tokenExpires=e.expires,r})},e.prototype.refreshRefreshToken=function(e){var r=this,s=t({params:{client_id:this.clientId,refresh_token:this.refreshToken,redirect_uri:this.redirectUri,grant_type:"exchange_refresh_token"}},e);return n(this.portal+"/oauth2/token",s).then(function(e){return r._token=e.token,r._tokenExpires=e.expires,r._refreshToken=e.refreshToken,r._refreshTokenExpires=new Date(Date.now()+60*(r.refreshTokenTTL-1)*1e3),r})},e}();e.ApplicationSession=s,e.UserSession=i,e.fetchToken=n,e.generateToken=o,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],r):r(e.arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,function(e,r){"use strict";var t=function(){return(t=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var s in r=arguments[t])Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s]);return e}).apply(this,arguments)};function n(e,t){var n=t.params?t:{params:t};return r.request(e,n).then(function(e){var r={token:e.access_token,username:e.username,expires:new Date(Date.now()+(1e3*e.expires_in-1e3)),ssl:!0===e.ssl};return e.refresh_token&&(r.refreshToken=e.refresh_token),r})}var s=function(){function e(e){this.clientId=e.clientId,this.clientSecret=e.clientSecret,this.token=e.token,this.expires=e.expires,this.portal=e.portal||"https://www.arcgis.com/sharing/rest",this.duration=e.duration||7200}return e.prototype.getToken=function(e,r){return this.token&&this.expires&&this.expires.getTime()>Date.now()?Promise.resolve(this.token):this._pendingTokenRequest?this._pendingTokenRequest:(this._pendingTokenRequest=this.refreshToken(r),this._pendingTokenRequest)},e.prototype.refreshToken=function(e){var r=this,s=t({params:{client_id:this.clientId,client_secret:this.clientSecret,grant_type:"client_credentials",expiration:this.duration}},e);return n(this.portal+"/oauth2/token/",s).then(function(e){return r._pendingTokenRequest=null,r.token=e.token,r.expires=e.expires,e.token})},e.prototype.refreshSession=function(){var e=this;return this.refreshToken().then(function(){return e})},e}();function o(e,t){var n=t.params?t:{params:t};return"undefined"!=typeof window&&window.location&&window.location.host?n.params.referer=window.location.host:n.params.referer="@esri/arcgis-rest",r.request(e,n)}var i=function(){function e(e){this.clientId=e.clientId,this._refreshToken=e.refreshToken,this._refreshTokenExpires=e.refreshTokenExpires,this.username=e.username,this.password=e.password,this._token=e.token,this._tokenExpires=e.tokenExpires,this.portal=e.portal?r.cleanUrl(e.portal):"https://www.arcgis.com/sharing/rest",this.ssl=e.ssl,this.provider=e.provider||"arcgis",this.tokenDuration=e.tokenDuration||20160,this.redirectUri=e.redirectUri,this.refreshTokenTTL=e.refreshTokenTTL||1440,this.trustedServers={},this._pendingTokenRequests={}}return e.beginOAuth2=function(n,s){void 0===s&&(s=window);var o,i=t({portal:"https://www.arcgis.com/sharing/rest",provider:"arcgis",duration:20160,popup:!0,state:n.clientId,locale:""},n),a=i.portal,h=i.provider,p=i.clientId,u=i.duration,c=i.redirectUri,f=i.popup,l=i.state,k=i.locale;if(o="arcgis"===h?a+"/oauth2/authorize?client_id="+p+"&response_type=token&expiration="+u+"&redirect_uri="+encodeURIComponent(c)+"&state="+l+"&locale="+k:a+"/oauth2/social/authorize?client_id="+p+"&socialLoginProviderName="+h+"&autoAccountCreateForSocial=true&response_type=token&expiration="+u+"&redirect_uri="+encodeURIComponent(c)+"&state="+l+"&locale="+k,f){var d,T=((d={promise:null,resolve:null,reject:null}).promise=new Promise(function(e,r){d.resolve=e,d.reject=r}),d);return s["__ESRI_REST_AUTH_HANDLER_"+p]=function(t,n){if(t){var s=JSON.parse(t);T.reject(new r.ArcGISAuthError(s.errorMessage,s.error))}else if(n){var o=JSON.parse(n);T.resolve(new e({clientId:p,portal:a,ssl:o.ssl,token:o.token,tokenExpires:new Date(o.expires),username:o.username}))}},s.open(o,"oauth-window","height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes"),T.promise}s.location.href=o},e.completeOAuth2=function(n,s){void 0===s&&(s=window);var o=t({portal:"https://www.arcgis.com/sharing/rest"},n),i=o.portal,a=o.clientId;function h(t,n){if(s.opener&&s.opener.parent)return s.opener.parent["__ESRI_REST_AUTH_HANDLER_"+a](t?JSON.stringify(t):void 0,JSON.stringify(n)),void s.close();if(s!==s.parent)return s.parent["__ESRI_REST_AUTH_HANDLER_"+a](t?JSON.stringify(t):void 0,JSON.stringify(n)),void s.close();if(t)throw new r.ArcGISAuthError(t.errorMessage,t.error);return new e({clientId:a,portal:i,ssl:n.ssl,token:n.token,tokenExpires:n.expires,username:n.username})}var p=s.location.href.match(/access_token=(.+)&expires_in=(.+)&username=([^&]+)/);if(!p){var u=s.location.href.match(/error=(.+)&error_description=(.+)/);return h({error:u[1],errorMessage:decodeURIComponent(u[2])})}var c=p[1],f=new Date(Date.now()+1e3*parseInt(p[2],10)-6e4),l=decodeURIComponent(p[3]);return h(void 0,{token:c,expires:f,ssl:s.location.href.indexOf("&ssl=true")>-1||s.location.href.indexOf("#ssl=true")>-1,username:l})},e.authorize=function(e,r){var n=t({portal:"https://arcgis.com/sharing/rest",duration:20160},e),s=n.portal,o=n.clientId,i=n.duration,a=n.redirectUri;r.writeHead(301,{Location:s+"/oauth2/authorize?client_id="+o+"&duration="+i+"&response_type=code&redirect_uri="+encodeURIComponent(a)}),r.end()},e.exchangeAuthorizationCode=function(r,s){var o=t({portal:"https://www.arcgis.com/sharing/rest",refreshTokenTTL:1440},r),i=o.portal,a=o.clientId,h=o.redirectUri,p=o.refreshTokenTTL;return n(i+"/oauth2/token",{grant_type:"authorization_code",client_id:a,redirect_uri:h,code:s}).then(function(r){return new e({clientId:a,portal:i,ssl:r.ssl,redirectUri:h,refreshToken:r.refreshToken,refreshTokenTTL:p,refreshTokenExpires:new Date(Date.now()+1e3*(p-1)),token:r.token,tokenExpires:r.expires,username:r.username})})},e.deserialize=function(r){var t=JSON.parse(r);return new e({clientId:t.clientId,refreshToken:t.refreshToken,refreshTokenExpires:new Date(t.refreshTokenExpires),username:t.username,password:t.password,token:t.token,tokenExpires:new Date(t.tokenExpires),portal:t.portal,ssl:t.ssl,tokenDuration:t.tokenDuration,redirectUri:t.redirectUri,refreshTokenTTL:t.refreshTokenTTL})},e.fromCredential=function(r){return new e({portal:r.server.includes("sharing/rest")?r.server:r.server+"/sharing/rest",ssl:r.ssl,token:r.token,username:r.userId,tokenExpires:new Date(r.expires)})},Object.defineProperty(e.prototype,"token",{get:function(){return this._token},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tokenExpires",{get:function(){return this._tokenExpires},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"refreshToken",{get:function(){return this._refreshToken},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"refreshTokenExpires",{get:function(){return this._refreshTokenExpires},enumerable:!0,configurable:!0}),e.prototype.toCredential=function(){return{expires:this.tokenExpires.getTime(),server:this.portal,ssl:this.ssl,token:this.token,userId:this.username}},e.prototype.getUser=function(e){var n=this;if(this._user&&this._user.username===this.username)return Promise.resolve(this._user);var s=this.portal+"/community/users/"+encodeURIComponent(this.username),o=t({httpMethod:"GET",authentication:this},e);return r.request(s,o).then(function(e){return n._user=e,e})},e.prototype.getToken=function(e,r){return/^https?:\/\/\S+\.arcgis\.com\/sharing\/rest/.test(this.portal)&&/^https?:\/\/\S+\.arcgis\.com.+/.test(e)?this.getFreshToken(r):new RegExp(this.portal,"i").test(e)?this.getFreshToken(r):this.getTokenForServer(e,r)},e.prototype.toJSON=function(){return{clientId:this.clientId,refreshToken:this.refreshToken,refreshTokenExpires:this.refreshTokenExpires,username:this.username,password:this.password,token:this.token,tokenExpires:this.tokenExpires,portal:this.portal,ssl:this.ssl,tokenDuration:this.tokenDuration,redirectUri:this.redirectUri,refreshTokenTTL:this.refreshTokenTTL}},e.prototype.serialize=function(){return JSON.stringify(this)},e.prototype.refreshSession=function(e){return this._user=null,this.username&&this.password?this.refreshWithUsernameAndPassword(e):this.clientId&&this.refreshToken?this.refreshWithRefreshToken():Promise.reject(new r.ArcGISAuthError("Unable to refresh token."))},e.prototype.getTokenForServer=function(e,t){var n=this,s=e.toLowerCase().split(/\/rest(\/admin)?\/services\//)[0],i=this.trustedServers[s];return i&&i.expires.getTime()>Date.now()?Promise.resolve(i.token):this._pendingTokenRequests[s]?this._pendingTokenRequests[s]:(this._pendingTokenRequests[s]=r.request(s+"/rest/info").then(function(e){return e.owningSystemUrl}).then(function(s){if(!s||!new RegExp(s,"i").test(n.portal))throw new r.ArcGISAuthError(e+" is not federated with "+n.portal+".","NOT_FEDERATED");return r.request(s+"/sharing/rest/info",t)}).then(function(e){return e.authInfo.tokenServicesUrl}).then(function(r){return n.token?o(r,{params:{token:n.token,serverUrl:e,expiration:n.tokenDuration}}):o(r,{params:{username:n.username,password:n.password,expiration:n.tokenDuration}}).then(function(e){return n._token=e.token,n._tokenExpires=new Date(e.expires),e})}).then(function(e){return n.trustedServers[s]={expires:new Date(e.expires),token:e.token},e.token}),this._pendingTokenRequests[s])},e.prototype.getFreshToken=function(e){var r=this;return this.token&&this.tokenExpires&&this.tokenExpires.getTime()>Date.now()?Promise.resolve(this.token):(this._pendingTokenRequests[this.portal]||(this._pendingTokenRequests[this.portal]=this.refreshSession(e).then(function(e){return r._pendingTokenRequests[r.portal]=null,e.token})),this._pendingTokenRequests[this.portal])},e.prototype.refreshWithUsernameAndPassword=function(e){var r=this,n=t({params:{username:this.username,password:this.password,expiration:this.tokenDuration}},e);return o(this.portal+"/generateToken",n).then(function(e){return r._token=e.token,r._tokenExpires=new Date(e.expires),r})},e.prototype.refreshWithRefreshToken=function(e){var r=this;if(this.refreshToken&&this.refreshTokenExpires&&this.refreshTokenExpires.getTime()<Date.now())return this.refreshRefreshToken(e);var s=t({params:{client_id:this.clientId,refresh_token:this.refreshToken,grant_type:"refresh_token"}},e);return n(this.portal+"/oauth2/token",s).then(function(e){return r._token=e.token,r._tokenExpires=e.expires,r})},e.prototype.refreshRefreshToken=function(e){var r=this,s=t({params:{client_id:this.clientId,refresh_token:this.refreshToken,redirect_uri:this.redirectUri,grant_type:"exchange_refresh_token"}},e);return n(this.portal+"/oauth2/token",s).then(function(e){return r._token=e.token,r._tokenExpires=e.expires,r._refreshToken=e.refreshToken,r._refreshTokenExpires=new Date(Date.now()+60*(r.refreshTokenTTL-1)*1e3),r})},e}();e.ApplicationSession=s,e.UserSession=i,e.fetchToken=n,e.generateToken=o,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=auth.umd.min.js.map
{
"name": "@esri/arcgis-rest-auth",
"version": "1.14.3",
"version": "1.14.4",
"description": "Authentication helpers for @esri/arcgis-rest-*.",
"main": "dist/node/index.js",
"browser": "dist/umd/auth.umd.js",
"unpkg": "dist/umd/auth.umd.js",
"module": "dist/esm/index.js",

@@ -18,4 +18,4 @@ "js:next": "dist/esm/index.js",

"devDependencies": {
"@esri/arcgis-rest-common-types": "^1.14.3",
"@esri/arcgis-rest-request": "^1.14.3"
"@esri/arcgis-rest-common-types": "^1.14.4",
"@esri/arcgis-rest-request": "^1.14.4"
},

@@ -22,0 +22,0 @@ "peerDependencies": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc