@ariyana/appauth
Version:
A general purpose OAuth client.
85 lines • 11.1 kB
JavaScript
"use strict";
/*
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenError = exports.TokenResponse = exports.nowInSeconds = void 0;
// constants
var AUTH_EXPIRY_BUFFER = 10 * 60 * -1; // 10 mins in seconds
/**
* Returns the instant of time in seconds.
*/
var nowInSeconds = function () { return Math.round(new Date().getTime() / 1000); };
exports.nowInSeconds = nowInSeconds;
/**
* Represents the Token Response type.
* For more information look at:
* https://tools.ietf.org/html/rfc6749#section-5.1
*/
var TokenResponse = /** @class */ (function () {
function TokenResponse(response) {
this.accessToken = response.access_token;
this.tokenType = response.token_type || 'bearer';
if (response.expires_in) {
this.expiresIn = parseInt(response.expires_in, 10);
}
this.refreshToken = response.refresh_token;
this.scope = response.scope;
this.idToken = response.id_token;
this.issuedAt = response.issued_at || exports.nowInSeconds();
}
TokenResponse.prototype.toJson = function () {
var _a;
return {
access_token: this.accessToken,
id_token: this.idToken,
refresh_token: this.refreshToken,
scope: this.scope,
token_type: this.tokenType,
issued_at: this.issuedAt,
expires_in: (_a = this.expiresIn) === null || _a === void 0 ? void 0 : _a.toString()
};
};
TokenResponse.prototype.isValid = function (buffer) {
if (buffer === void 0) { buffer = AUTH_EXPIRY_BUFFER; }
if (this.expiresIn) {
var now = exports.nowInSeconds();
return now < this.issuedAt + this.expiresIn + buffer;
}
else {
return true;
}
};
return TokenResponse;
}());
exports.TokenResponse = TokenResponse;
/**
* Represents the Token Error type.
* For more information look at:
* https://tools.ietf.org/html/rfc6749#section-5.2
*/
var TokenError = /** @class */ (function () {
function TokenError(tokenError) {
this.error = tokenError.error;
this.errorDescription = tokenError.error_description;
this.errorUri = tokenError.error_uri;
}
TokenError.prototype.toJson = function () {
return {
error: this.error, error_description: this.errorDescription, error_uri: this.errorUri
};
};
return TokenError;
}());
exports.TokenError = TokenError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9rZW5fcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRzs7O0FBdUNILFlBQVk7QUFDWixJQUFNLGtCQUFrQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBRSxxQkFBcUI7QUFFL0Q7O0dBRUc7QUFDSSxJQUFNLFlBQVksR0FBRyxjQUFNLE9BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUF2QyxDQUF1QyxDQUFDO0FBQTdELFFBQUEsWUFBWSxnQkFBaUQ7QUFFMUU7Ozs7R0FJRztBQUNIO0lBU0UsdUJBQVksUUFBMkI7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUM7UUFDakQsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksb0JBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCw4QkFBTSxHQUFOOztRQUNFLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3RCLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLEVBQUU7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCwrQkFBTyxHQUFQLFVBQVEsTUFBbUM7UUFBbkMsdUJBQUEsRUFBQSwyQkFBbUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksR0FBRyxHQUFHLG9CQUFZLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1NBQ3REO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXpDRCxJQXlDQztBQXpDWSxzQ0FBYTtBQTJDMUI7Ozs7R0FJRztBQUNIO0lBS0Usb0JBQVksVUFBMEI7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDdEYsQ0FBQTtJQUNILENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUFoQkQsSUFnQkM7QUFoQlksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdFxyXG4gKiBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGVcclxuICogTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXJcclxuICogZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIHRoZSBhY2Nlc3MgdG9rZW4gdHlwZXMuXHJcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcclxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkjc2VjdGlvbi03LjFcclxuICovXHJcbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9ICdiZWFyZXInfCdtYWMnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgdGhlIFRva2VuUmVzcG9uc2UgYXMgYSBKU09OIE9iamVjdC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXNwb25zZUpzb24ge1xyXG4gIGFjY2Vzc190b2tlbjogc3RyaW5nO1xyXG4gIHRva2VuX3R5cGU/OiBUb2tlblR5cGU7IC8qIHRyZWF0aW5nIHRva2VuIHR5cGUgYXMgb3B0aW9uYWwsIGFzIGl0cyBnb2luZyB0byBiZSBpbmZlcnJlZC4gKi9cclxuICBleHBpcmVzX2luPzogc3RyaW5nOyAgICAvKiBsaWZldGltZSBpbiBzZWNvbmRzLiAqL1xyXG4gIHJlZnJlc2hfdG9rZW4/OiBzdHJpbmc7XHJcbiAgc2NvcGU/OiBzdHJpbmc7XHJcbiAgaWRfdG9rZW4/OiBzdHJpbmc7ICAvKiBodHRwczovL29wZW5pZC5uZXQvc3BlY3Mvb3BlbmlkLWNvbm5lY3QtY29yZS0xXzAuaHRtbCNUb2tlblJlc3BvbnNlICovXHJcbiAgaXNzdWVkX2F0PzogbnVtYmVyOyAvKiB3aGVuIHdhcyBpdCBpc3N1ZWQgPyAqL1xyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyB0aGUgcG9zc2libGUgZXJyb3IgY29kZXMgZnJvbSB0aGUgdG9rZW4gZW5kcG9pbnQuXHJcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGxvb2sgYXQ6XHJcbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNS4yXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBFcnJvclR5cGUgPSAnaW52YWxpZF9yZXF1ZXN0J3wnaW52YWxpZF9jbGllbnQnfCdpbnZhbGlkX2dyYW50J3wndW5hdXRob3JpemVkX2NsaWVudCd8XHJcbiAgICAndW5zdXBwb3J0ZWRfZ3JhbnRfdHlwZSd8J2ludmFsaWRfc2NvcGUnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgdGhlIFRva2VuRXJyb3IgYXMgYSBKU09OIE9iamVjdC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5FcnJvckpzb24ge1xyXG4gIGVycm9yOiBFcnJvclR5cGU7XHJcbiAgZXJyb3JfZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JfdXJpPzogc3RyaW5nO1xyXG59XHJcblxyXG4vLyBjb25zdGFudHNcclxuY29uc3QgQVVUSF9FWFBJUllfQlVGRkVSID0gMTAgKiA2MCAqIC0xOyAgLy8gMTAgbWlucyBpbiBzZWNvbmRzXHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgaW5zdGFudCBvZiB0aW1lIGluIHNlY29uZHMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgbm93SW5TZWNvbmRzID0gKCkgPT4gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgdGhlIFRva2VuIFJlc3BvbnNlIHR5cGUuXHJcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGxvb2sgYXQ6XHJcbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNS4xXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVG9rZW5SZXNwb25zZSB7XHJcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcclxuICB0b2tlblR5cGU6IFRva2VuVHlwZTtcclxuICBleHBpcmVzSW46IG51bWJlcnx1bmRlZmluZWQ7XHJcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmd8dW5kZWZpbmVkO1xyXG4gIHNjb3BlOiBzdHJpbmd8dW5kZWZpbmVkO1xyXG4gIGlkVG9rZW46IHN0cmluZ3x1bmRlZmluZWQ7XHJcbiAgaXNzdWVkQXQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocmVzcG9uc2U6IFRva2VuUmVzcG9uc2VKc29uKSB7XHJcbiAgICB0aGlzLmFjY2Vzc1Rva2VuID0gcmVzcG9uc2UuYWNjZXNzX3Rva2VuO1xyXG4gICAgdGhpcy50b2tlblR5cGUgPSByZXNwb25zZS50b2tlbl90eXBlIHx8ICdiZWFyZXInO1xyXG4gICAgaWYgKHJlc3BvbnNlLmV4cGlyZXNfaW4pIHtcclxuICAgICAgdGhpcy5leHBpcmVzSW4gPSBwYXJzZUludChyZXNwb25zZS5leHBpcmVzX2luLCAxMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlc3BvbnNlLnJlZnJlc2hfdG9rZW47XHJcbiAgICB0aGlzLnNjb3BlID0gcmVzcG9uc2Uuc2NvcGU7XHJcbiAgICB0aGlzLmlkVG9rZW4gPSByZXNwb25zZS5pZF90b2tlbjtcclxuICAgIHRoaXMuaXNzdWVkQXQgPSByZXNwb25zZS5pc3N1ZWRfYXQgfHwgbm93SW5TZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICB0b0pzb24oKTogVG9rZW5SZXNwb25zZUpzb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWNjZXNzX3Rva2VuOiB0aGlzLmFjY2Vzc1Rva2VuLFxyXG4gICAgICBpZF90b2tlbjogdGhpcy5pZFRva2VuLFxyXG4gICAgICByZWZyZXNoX3Rva2VuOiB0aGlzLnJlZnJlc2hUb2tlbixcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUsXHJcbiAgICAgIHRva2VuX3R5cGU6IHRoaXMudG9rZW5UeXBlLFxyXG4gICAgICBpc3N1ZWRfYXQ6IHRoaXMuaXNzdWVkQXQsXHJcbiAgICAgIGV4cGlyZXNfaW46IHRoaXMuZXhwaXJlc0luPy50b1N0cmluZygpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZChidWZmZXI6IG51bWJlciA9IEFVVEhfRVhQSVJZX0JVRkZFUik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZXhwaXJlc0luKSB7XHJcbiAgICAgIGxldCBub3cgPSBub3dJblNlY29uZHMoKTtcclxuICAgICAgcmV0dXJuIG5vdyA8IHRoaXMuaXNzdWVkQXQgKyB0aGlzLmV4cGlyZXNJbiArIGJ1ZmZlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgdGhlIFRva2VuIEVycm9yIHR5cGUuXHJcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGxvb2sgYXQ6XHJcbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNS4yXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVG9rZW5FcnJvciB7XHJcbiAgZXJyb3I6IEVycm9yVHlwZTtcclxuICBlcnJvckRlc2NyaXB0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xyXG4gIGVycm9yVXJpOiBzdHJpbmd8dW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcih0b2tlbkVycm9yOiBUb2tlbkVycm9ySnNvbikge1xyXG4gICAgdGhpcy5lcnJvciA9IHRva2VuRXJyb3IuZXJyb3I7XHJcbiAgICB0aGlzLmVycm9yRGVzY3JpcHRpb24gPSB0b2tlbkVycm9yLmVycm9yX2Rlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5lcnJvclVyaSA9IHRva2VuRXJyb3IuZXJyb3JfdXJpO1xyXG4gIH1cclxuXHJcbiAgdG9Kc29uKCk6IFRva2VuRXJyb3JKc29uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGVycm9yOiB0aGlzLmVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbjogdGhpcy5lcnJvckRlc2NyaXB0aW9uLCBlcnJvcl91cmk6IHRoaXMuZXJyb3JVcmlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19