cloudworker-proxy
Version:
An api gateway for cloudflare workers
57 lines (49 loc) • 1.7 kB
JavaScript
;
const { isEmpty, entries } = require('lodash');
const chalk = require('chalk');
const cliTable = require('cli-color/columns');
const isAuthenticated = require('./isAuthenticated');
const throwAuthError = require('./throwAuthError');
const resolveParams = require('./resolveParams');
const resolveInput = function (ctx) {
const {
provider,
sls: {
service: { app, org },
processedInput: { options: cliOptions },
classes: { Error: ServerlessError },
},
} = ctx;
if (!isAuthenticated()) throwAuthError(ctx.sls);
if (!org) throw new ServerlessError('Missing `org` setting', 'DASHBOARD_MISSING_ORG');
if (!app) throw new ServerlessError('Missing `app` setting', 'DASHBOARD_MISSING_APP');
const stage = cliOptions.stage || provider.getStage();
return { org, app, stage };
};
module.exports = {
get: async (context) => {
const params = await resolveParams(resolveInput(context));
const { name } = context.sls.processedInput.options;
if (!name) {
throw new context.sls.classes.Error(
'Missing `name` parameter',
'DASHBOARD_MISSING_PARAM_NAME'
);
}
const slsCli = context.sls.cli;
if (!params[name]) slsCli.log(`No '${name}' parameter stored`);
else process.stdout.write(`${params[name]}\n`);
},
list: async (context) => {
const params = await resolveParams(resolveInput(context));
const slsCli = context.sls.cli;
if (isEmpty(params)) {
slsCli.log('No parameters stored');
} else {
slsCli.log('Stored parameters:');
process.stdout.write(
`\n${cliTable([[chalk.bold('Name'), chalk.bold('Value')], ...entries(params)])}\n`
);
}
},
};