@domoinc/ryuu-proxy
Version:
a middleware that provides a proxy for local domo app development
55 lines • 2.5 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOauthTokens = exports.getProxyId = exports.isOauthEnabled = exports.getMostRecentLogin = void 0;
var Domo = require("ryuu-client");
var glob = require("glob");
var fs = require("fs-extra");
var Configstore = require("configstore");
var constants_1 = require("../constants");
function getMostRecentLogin() {
var home = Domo.getHomeDir();
var logins = glob.sync("".concat(home, "/ryuu/*.json"));
if (logins.length === 0)
return Promise.resolve({});
var recent = logins.reduce(function (prev, next) {
return fs.statSync(prev).mtime > fs.statSync(next).mtime ? prev : next;
});
var loginData = fs.readJsonSync(recent);
var configstore = new Configstore("/ryuu/".concat(loginData.instance));
loginData.refreshToken = configstore.get("refreshToken");
loginData.devToken = configstore.get("devToken");
return Promise.resolve(loginData);
}
exports.getMostRecentLogin = getMostRecentLogin;
var isOauthEnabled = function (manifest) {
return Object.keys(manifest).includes(constants_1.OAUTH_ENABLED) && manifest[constants_1.OAUTH_ENABLED];
};
exports.isOauthEnabled = isOauthEnabled;
var getProxyId = function (manifest) { var _a; return (_a = manifest.proxyId) !== null && _a !== void 0 ? _a : Domo.createUUID(); };
exports.getProxyId = getProxyId;
function getOauthTokens(proxyId, scopes) {
return getMostRecentLogin()
.then(function (loginData) {
var configstore = new Configstore("/ryuu/".concat(loginData.instance));
var allScopes = scopes !== undefined ? __spreadArray(["domoapps"], scopes, true) : ["domoapps"];
return Promise.all([
configstore.get("".concat(proxyId, "-").concat(allScopes.join("-"), "-accessToken")),
configstore.get("".concat(proxyId, "-").concat(allScopes.join("-"), "-refreshToken")),
]);
})
.then(function (tokens) { return ({
access: tokens[0],
refresh: tokens[1],
}); });
}
exports.getOauthTokens = getOauthTokens;
//# sourceMappingURL=index.js.map