@m-ld/gateway
Version:
m-ld gateway for services
53 lines • 3.44 kB
JavaScript
import { AccountOwnedId } from './AccountOwnedId.js';
import { domainRelativeIri } from './util.js';
import * as dns from 'dns/promises';
import { isFQDN } from './validate.js';
/**
* Utility base class for things that represent a Gateway, may be a client proxy
*/
export class BaseGateway {
constructor(domainName) {
this.domainName = domainName;
}
ownedRefAsId(tsRef) {
// A timesheet reference may be relative to the domain base
return AccountOwnedId.fromReference(tsRef, this.domainName);
}
ownedId({ account, name }) {
return new AccountOwnedId({
gateway: this.domainName, account, name
});
}
absoluteId(iri) {
return domainRelativeIri(iri, this.domainName);
}
}
/**
*
*/
export function resolveGateway(address) {
if (address instanceof URL) {
return address;
}
else if (isFQDN(address)) {
return new URL(`https://${address}/`);
}
else {
const url = new URL('/', address);
const domainName = url.hostname;
if (domainName.endsWith('.local')) {
return dns.lookup(domainName).then(a => {
url.hostname = a.address;
return url;
});
}
else {
return url;
}
}
}
export function resolveDomain(gateway) {
return typeof gateway == 'string' && isFQDN(gateway) ?
gateway : new URL(gateway).hostname;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0Jhc2VHYXRld2F5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlCdkM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNrQixVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBQ2pDLENBQUM7SUFFSixZQUFZLENBQUMsS0FBZ0I7UUFDM0IsMkRBQTJEO1FBQzNELE9BQU8sY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFxQztRQUMxRCxPQUFPLElBQUksY0FBYyxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJO1NBQ3hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixPQUFxQjtJQUVyQixJQUFJLE9BQU8sWUFBWSxHQUFHLEVBQUU7UUFDMUIsT0FBTyxPQUFPLENBQUM7S0FDaEI7U0FBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUN2QztTQUFNO1FBQ0wsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDekIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLEdBQUcsQ0FBQztTQUNaO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFxQztJQUNqRSxPQUFPLE9BQU8sT0FBTyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN4QyxDQUFDIn0=