trimble-connect-sdk
Version:
Trimble Connect SDK for JavaScript
82 lines • 12.4 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TIDCredentials = void 0;
const credentials_1 = require("./credentials");
const tid_1 = require("./tid");
class TIDCredentials extends credentials_1.Credentials {
constructor(params, userCredentials, onRefreshed, onInvalidated) {
super();
this.params = params;
this.userCredentials = userCredentials;
this.onRefreshed = onRefreshed;
this.onInvalidated = onInvalidated;
this.expired = true;
this.service = new tid_1.TID(params);
}
refresh() {
if (this.ongoingTokenRefresh !== undefined) {
return this.ongoingTokenRefresh;
}
this.ongoingTokenRefresh = this.refreshToken()
.then(() => (this.ongoingTokenRefresh = undefined))
.catch((e) => {
this.ongoingTokenRefresh = undefined;
throw e;
});
return this.ongoingTokenRefresh;
}
invalidToken() {
return !this.tokens;
}
getOAuthRedirect() {
return this.service.getOAuthRedirect();
}
exchangeCode(code) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.service.exchangeCode(code);
this.tokens = response.data;
this.expired = false;
this.expireTime = new Date();
this.expireTime.setSeconds(this.expireTime.getSeconds() + this.tokens.expires_in);
});
}
refreshToken() {
return __awaiter(this, void 0, void 0, function* () {
let error;
if (this.tokens && this.tokens.refresh_token) {
try {
const response = yield this.service.refresh(this.tokens.refresh_token);
this.tokens = response.data;
}
catch (e) {
error = e;
}
}
if (!(this.tokens && this.tokens.refresh_token) || error) {
if (this.onInvalidated) {
this.onInvalidated(this.getOAuthRedirect());
return;
}
else {
throw new Error('Cannot acquire TID token.');
}
}
this.expireTime = new Date();
this.expireTime.setSeconds(this.expireTime.getSeconds() + this.tokens.expires_in);
if (this.onRefreshed) {
this.onRefreshed(this);
}
});
}
}
exports.TIDCredentials = TIDCredentials;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkX2NyZWRlbnRpYWxzLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJ0aWRfY3JlZGVudGlhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTRDO0FBQzVDLCtCQUFxRDtBQWlCckQsTUFBYSxjQUFlLFNBQVEseUJBQVc7SUFzQjdDLFlBQ2tCLE1BQTRCLEVBQ3JDLGVBQW9DLEVBQzNCLFdBQXNELEVBQ3RELGFBQTZDO1FBRTdELEtBQUssRUFBRSxDQUFDO1FBTFEsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0M7UUFHN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBUU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtZQUUxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUNqQztRQUlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFO2FBQzNDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsQ0FBQzthQUNsRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7WUFDckMsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFLTSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFLTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQU1ZLFlBQVksQ0FBQyxJQUFZOztZQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3RELENBQUM7UUFDSixDQUFDO0tBQUE7SUFLYSxZQUFZOztZQUN4QixJQUFJLEtBQXdCLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO2dCQUM1QyxJQUFJO29CQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2lCQUM3QjtnQkFBQyxPQUFPLENBQU0sRUFBRTtvQkFDZixLQUFLLEdBQUcsQ0FBQyxDQUFDO2lCQUNYO2FBQ0Y7WUFHRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDNUMsT0FBTztpQkFDUjtxQkFBTTtvQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7WUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3RELENBQUM7WUFFRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDO0tBQUE7Q0FDRjtBQXZIRCx3Q0F1SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVkZW50aWFscyB9IGZyb20gJy4vY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgQXV0aFJlc3BvbnNlLCBUSUQsIFRJRENvbmZpZyB9IGZyb20gJy4vdGlkJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBUSURDcmVkZW50aWFsc1BhcmFtcyBleHRlbmRzIFRJRENvbmZpZyB7fVxuXG4vKipcbiAqIFVzZXIgY3JlZGVudGlhbHMgY2FuIGJlIHVzZWQgb25seSBmb3IgdXNlciBhY2NvdW50cyB3aXRoIDJGQSBkaXNhYmxlZCwgc3VjaCBhcyB0ZXN0IHVzZXIgYWNjb3VudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVElEVXNlckNyZWRlbnRpYWxzIHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGNyZWRlbnRpYWxzIHRoYXQgbXVzdCBiZSBhdHRhY2hlZCB0byBhdXRoZW50aWNhdGUgZWFjaCByZXF1ZXN0LlxuICogT2NjYXNpb25hbGx5IGNyZWRlbnRpYWxzIGNhbiBleHBpcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGxvbmctcnVubmluZyBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFRJRENyZWRlbnRpYWxzIGV4dGVuZHMgQ3JlZGVudGlhbHMge1xuICBwdWJsaWMgdG9rZW5zPzogQXV0aFJlc3BvbnNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IFRJRDtcbiAgcHJpdmF0ZSBvbmdvaW5nVG9rZW5SZWZyZXNoOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgVElEQ3JlZGVudGlhbHMgb2JqZWN0IHdpdGggYSBnaXZlbiBzZXQgb2YgY3JlZGVudGlhbCBpbmZvcm1hdGlvbiBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHtUSURDcmVkZW50aWFsc1BhcmFtc30gcGFyYW1zIFRoZSBUSUQgQ3JlZGVudGlhbHMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcGFyYW0ge1RJRFVzZXJDcmVkZW50aWFsc30gW3VzZXJDcmVkZW50aWFsc10gVGhlIHVzZXIgY3JlZGVudGlhbHMuIE9wdGlvbmFsLlxuICAgKiBAcGFyYW0geyhUSURDcmVkZW50aWFscykgPT4gdm9pZH0gW29uUmVmcmVzaGVkXSBDYWxsZWQgd2hlbiBUSUQgdG9rZW5zIGFyZSByZWZyZXNoZWQuIE9wdGlvbmFsLlxuICAgKiBAcGFyYW0geyhzdHJpbmcpID0+IHZvaWR9IFtvbkludmFsaWRhdGVkXSBDYWxsZWQgd2hlbiBUSUQgdG9rZW5zIGFyZSBub3QgdmFsaWQgYW55bW9yZS4gT3B0aW9uYWwuXG4gICAqIEBleGFtcGxlIENyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWxzIG9iamVjdFxuICAgKiAgIGNyZWRlbnRpYWxzID0gbmV3IFRDLlRJRENyZWRlbnRpYWxzKHtcbiAgICogICAgICAgc2VydmljZVVyaTogXCJodHRwczovL2lkLnRyaW1ibGUuY29tL1wiLFxuICAgKiAgICAgICBjbGllbnRJZDogXCJ4eHhcIixcbiAgICogICAgICAgY2xpZW50U2VjcmV0OiBcInl5eVwiLFxuICAgKiAgICAgICBhcHBOYW1lOiAnenp6JyxcbiAgICogICAgICAgcmVkaXJlY3RVcmk6ICdodHRwczovL2FhYS5jb20nLFxuICAgKiAgICAgfSxcbiAgICogICAgIHsgdXNlcm5hbWU6IFwibmFtZVwiLCBwYXNzd29yZDogXCJwYXNzXCIgfVxuICAgKiAgIClcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBwYXJhbXM6IFRJRENyZWRlbnRpYWxzUGFyYW1zLFxuICAgIHB1YmxpYyB1c2VyQ3JlZGVudGlhbHM/OiBUSURVc2VyQ3JlZGVudGlhbHMsXG4gICAgcHVibGljIHJlYWRvbmx5IG9uUmVmcmVzaGVkPzogKHRpZENyZWRlbnRpYWxzOiBUSURDcmVkZW50aWFscykgPT4gdm9pZCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb25JbnZhbGlkYXRlZD86IChyZWRpcmVjdFVyaTogc3RyaW5nKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5leHBpcmVkID0gdHJ1ZTtcbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgVElEKHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBjcmVkZW50aWFscywgZW5zdXJpbmcgb25seSBvbmUgc3VjaCBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MgYXQgYSB0aW1lXG4gICAqIFVzZXJzIHNob3VsZCBjYWxsIGdldCgpIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGZvcmNpYmx5IHJlZnJlc2ggY3JlZGVudGlhbHMuXG4gICAqIEBub3RlIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgY2xhc3MgdG8gcmVzZXQgdGhlIHt0b2tlbn0gb24gdGhlIGNyZWRlbnRpYWxzIG9iamVjdC5cbiAgICogQHNlZSBnZXRcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9uZ29pbmdUb2tlblJlZnJlc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gdG9rZW4gcmVmcmVzaGluZyBpcyBhbHJlYWR5IGluIHByb2dyZXNzXG4gICAgICByZXR1cm4gdGhpcy5vbmdvaW5nVG9rZW5SZWZyZXNoO1xuICAgIH1cblxuICAgIC8vIHN0YXJ0IGEgbmV3IHRva2VuIHJlZnJlc2ggY2FsbCBhbmQgc3RvcmUgaXQgaW4gdGhlIHByb21pc2Ugc3VjaCB0aGF0XG4gICAgLy8gZnVydGhlciBjYWxscyBhcmUgbm90IHN0YXJ0ZWQgdW50aWwgdGhpcyBmaW5pc2hlc1xuICAgIHRoaXMub25nb2luZ1Rva2VuUmVmcmVzaCA9IHRoaXMucmVmcmVzaFRva2VuKClcbiAgICAgIC50aGVuKCgpID0+ICh0aGlzLm9uZ29pbmdUb2tlblJlZnJlc2ggPSB1bmRlZmluZWQpKVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIHRoaXMub25nb2luZ1Rva2VuUmVmcmVzaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMub25nb2luZ1Rva2VuUmVmcmVzaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHRva2VuIGludmFsaWRcbiAgICovXG4gIHB1YmxpYyBpbnZhbGlkVG9rZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnRva2VucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhdXRoZW50aWNhdGlvbiBVUkkgd2hlcmUgdGhlIHVzZXIgc2hvdWxkIGJlIHJlZGlyZWN0ZWQgd2hlbiBhdXRoZW50aWNhdGluZy5cbiAgICovXG4gIHB1YmxpYyBnZXRPQXV0aFJlZGlyZWN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRPQXV0aFJlZGlyZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogRXhjaGFuZ2VzIHRoZSBhdXRob3JpemF0aW9uIGNvZGUgd2l0aCB0aGUgaWRlbnRpdHkgc2VydmVyIGZvciB0aGUgYXV0aCBncmFudHMuXG4gICAqIFNldHMgdGhlIGF1dGggZ3JhbnRzIGludG8gdG8gc2VydmljZSBjcmVkZW50aWFscy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBleGNoYW5nZUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZXhjaGFuZ2VDb2RlKGNvZGUpO1xuICAgIHRoaXMudG9rZW5zID0gcmVzcG9uc2UuZGF0YTtcbiAgICB0aGlzLmV4cGlyZWQgPSBmYWxzZTtcbiAgICB0aGlzLmV4cGlyZVRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuZXhwaXJlVGltZS5zZXRTZWNvbmRzKFxuICAgICAgdGhpcy5leHBpcmVUaW1lLmdldFNlY29uZHMoKSArIHRoaXMudG9rZW5zLmV4cGlyZXNfaW5cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gcmVmcmVzaGluZyB0aGUgY3JlZGVudGlhbHNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gICAgLy8gdHJ5IHJlZnJlc2ggdG9rZW4gZmlyc3QgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMudG9rZW5zICYmIHRoaXMudG9rZW5zLnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnJlZnJlc2godGhpcy50b2tlbnMucmVmcmVzaF90b2tlbik7XG4gICAgICAgIHRoaXMudG9rZW5zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBlcnJvciA9IGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2Vzc2lvbiBpcyBpbnZhbGlkIGlmIHdlIGRvIG5vdCBoYXZlIHZhbGlkIGF1dGggZ3JhbnRzLCBzbyBjYWxsIGNhbGxiYWNrIG9yIHRocm93IGVycm9yLlxuICAgIGlmICghKHRoaXMudG9rZW5zICYmIHRoaXMudG9rZW5zLnJlZnJlc2hfdG9rZW4pIHx8IGVycm9yKSB7XG4gICAgICBpZiAodGhpcy5vbkludmFsaWRhdGVkKSB7XG4gICAgICAgIHRoaXMub25JbnZhbGlkYXRlZCh0aGlzLmdldE9BdXRoUmVkaXJlY3QoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFjcXVpcmUgVElEIHRva2VuLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXhwaXJlVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5leHBpcmVUaW1lLnNldFNlY29uZHMoXG4gICAgICB0aGlzLmV4cGlyZVRpbWUuZ2V0U2Vjb25kcygpICsgdGhpcy50b2tlbnMuZXhwaXJlc19pblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5vblJlZnJlc2hlZCkge1xuICAgICAgdGhpcy5vblJlZnJlc2hlZCh0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==