UNPKG

@m-ld/gateway

Version:

m-ld gateway for services

38 lines 4.26 kB
import { CloneFactory, Env, resolveGateway } from '../index.js'; import { IoRemotes } from '@m-ld/m-ld/ext/socket.io'; import LOG from 'loglevel'; export class IoCloneFactory extends CloneFactory { async clone(config, dataDir, principal) { const ioConfig = await this.ioConfig(config); LOG.info('IO connecting to', ioConfig.io.uri, 'for', config['@domain']); return super.clone(Env.mergeConfig(config, ioConfig), dataDir, principal); } initialise(address) { this.address = address; } remotes() { return IoRemotes; } async reusableConfig(config, remotesAuth, who) { return Env.mergeConfig(super.reusableConfig(config, remotesAuth, who), await this.ioConfig(config, { remotesAuth, who })); } async ioConfig(config, reusable) { // Reusable config always doles out public gateway address const uri = !reusable && this.address ? this.address : (await resolveGateway(config.gateway)).toString(); const io = { uri }; // When using Socket.io, the authorisation key is sent to the server // See https://socket.io/docs/v4/middlewares/#sending-credentials if (!reusable || !reusable.remotesAuth.length || reusable.remotesAuth.includes('key')) { const key = reusable ? '≪your-auth-key≫' : config.auth.key; // The user may be undefined, if this is a Gateway const user = reusable ? reusable.who?.acc.name ?? '≪your-account-name≫' : config.user; io.opts = { auth: { key, user } }; } else if (reusable.remotesAuth.includes('jwt')) { io.opts = { auth: { jwt: '≪your-token≫' } }; } return { io }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW9DbG9uZUZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ja2V0LmlvL0lvQ2xvbmVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYyxZQUFZLEVBQUUsR0FBRyxFQUFvQixjQUFjLEVBQ3ZFLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBSTNCLE1BQU0sT0FBTyxjQUFlLFNBQVEsWUFBWTtJQU85QyxLQUFLLENBQUMsS0FBSyxDQUNULE1BQXlCLEVBQ3pCLE9BQWUsRUFDZixTQUE0QjtRQUU1QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsTUFBeUIsRUFDekIsV0FBOEIsRUFDOUIsR0FBUztRQUVULE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQ25FLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUSxDQUNwQixNQUF5QixFQUN6QixRQUF3RDtRQUV4RCwwREFBMEQ7UUFDMUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUMsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEQsTUFBTSxFQUFFLEdBQXVCLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkMsb0VBQW9FO1FBQ3BFLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckYsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDM0Qsa0RBQWtEO1lBQ2xELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3RGLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNuQzthQUFNLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0MsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFBO1NBQzVDO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9