@m-ld/gateway
Version:
m-ld gateway for services
52 lines • 5.73 kB
JavaScript
import * as readline from 'readline';
import { AccountOwnedId, asLogLevel, DomainKeyStore, Env, resolveDomain } from './lib/index.js';
import { as } from './lib/validate.js';
import { UserKey } from './data/index.js';
const { stdin: input, stdout: output } = process;
const rl = readline.createInterface({ input, output });
const asInput = as.string().empty('');
async function ask(prompt, schema = asInput) {
const input = await new Promise(resolve => rl.question(`# ${prompt}: `, resolve));
const { value, error } = schema.validate(input);
if (error) {
console.log(error.message);
return ask(prompt, schema);
}
return value;
}
(async function () {
const gateway = await ask('External hostname or origin', as.alt(asInput.domain(), asInput.uri()));
const appId = await ask('Gateway root account name', AccountOwnedId.asComponentId);
const env = new Env('m-ld-gateway');
const keyStore = new DomainKeyStore(appId);
const domainName = resolveDomain(gateway);
const authKey = (await keyStore.mintKey(domainName)).key;
const config = {
gateway,
...UserKey.generate(authKey).toConfig(authKey),
address: {
host: await ask('Local listen hostname (default auto)', asInput.hostname()),
port: await ask('Local listen port (default 3000)', asInput.regex(/\d{,5}/))
},
dataPath: await ask(`Data path (default ${env.envPaths.data})`, as.string().empty('')),
logLevel: await ask('Log level (default INFO)', asLogLevel.empty(''))
};
if ((await ask('Use SMTP?')).startsWith('y')) {
config.smtp = {
host: await ask('SMTP host'),
from: await ask('SMTP from email', asInput.email()),
auth: {
user: await ask('SMTP user'),
pass: await ask('SMTP password')
}
};
}
rl.close();
console.log(`# Gateway domain name will be ${domainName}`);
console.log('# If this is a new Gateway, ' +
'don\'t forget to use --genesis or M_LD_GATEWAY_GENESIS=true');
console.log('#'.repeat(100));
for (let [envVar, envValue] of Object.entries(env.asEnv(config)))
console.log(`${envVar}=${envValue}`);
})();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dlbmVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUFFLFVBQVUsRUFBVSxjQUFjLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFDdkUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFdEMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxNQUFjLEVBQUUsU0FBNEIsT0FBTztJQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3hDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxJQUFJLEtBQUssRUFBRTtRQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1QjtJQUNELE9B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