UNPKG

@m-ld/gateway

Version:

m-ld gateway for services

52 lines 5.73 kB
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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