alks
Version:
CLI for working with ALKS
61 lines • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAlks = void 0;
const tslib_1 = require("tslib");
const alks_js_1 = require("alks.js");
const cli_color_1 = require("cli-color");
const getUserAgentString_1 = require("./getUserAgentString");
const promptForServer_1 = require("./promptForServer");
const server_1 = require("./state/server");
function isTokenProps(props) {
return !!props.token;
}
/**
* Gets a preconfigured alks.js object
*/
function getAlks(props) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const server = yield (0, server_1.getServer)();
if (!server) {
throw new Error('Server URL is not configured. Please run: alks developer configure');
}
const normalizedServer = server.replace(/\/+$/, '');
const normalizedDefault = promptForServer_1.defaultServer.replace(/\/+$/, '');
const defaultOrigin = promptForServer_1.defaultServer.replace(/\/rest\/?$/, '');
if (normalizedServer !== normalizedDefault &&
normalizedServer.startsWith(defaultOrigin)) {
console.error((0, cli_color_1.yellow)(`Tip: Did you mean ${promptForServer_1.defaultServer}? Run \`alks developer configure\` to update your server URL.`));
}
// FYI: for enabled but not enforced we should not send the Test header.
const mergedHeaders = Object.assign({}, (props.headers || {}));
const params = {
baseUrl: server,
userAgent: (0, getUserAgentString_1.getUserAgentString)(),
headers: mergedHeaders,
};
let alks;
if (isTokenProps(props)) {
alks = (0, alks_js_1.create)(params);
let result;
try {
result = yield alks.getAccessToken({
refreshToken: props.token,
});
}
catch (e) {
throw new Error(`${e.message}. You can get a new refresh token by running 'alks developer login2fa'`,
// This is valid JS, but typescript doesn't seem to think so yet. We should remove this once typescript supports the new Error constructors
// @ts-ignore
{ cause: e });
}
alks = alks.create(Object.assign(Object.assign({}, params), { accessToken: result.accessToken }));
}
else {
// According to typescript, alks.js doesn't officially support username & password
alks = (0, alks_js_1.create)(Object.assign(Object.assign({}, params), { userid: props.userid, password: props.password }));
}
return alks;
});
}
exports.getAlks = getAlks;
//# sourceMappingURL=getAlks.js.map