UNPKG

@ariyana/appauth

Version:

A general purpose OAuth client.

85 lines 11.1 kB
"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