@riddance/deploy
Version:
27 lines • 4.07 kB
JavaScript
import { getApis } from './services/api-gateway.js';
import { getFunctions } from './services/lambda.js';
export class Resolver {
#context;
#endpointCache;
constructor(context) {
this.#context = context;
this.#endpointCache = {};
}
async getEnvironment(prefix, service) {
const functions = await getFunctions(this.#context, prefix, service);
return Object.fromEntries(functions.flatMap(fn => Object.entries(fn.env)));
}
async getBaseUrl(prefix, service) {
const cached = await (this.#endpointCache[prefix] ??= getServiceApis(this.#context, prefix));
const name = `${prefix}-${service}`;
return cached[name];
}
}
async function getServiceApis(context, prefix) {
const serviceApis = {};
for await (const api of getApis(context, prefix)) {
serviceApis[api.name] = `${api.apiEndpoint}/`;
}
return serviceApis;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sUUFBUTtJQUNSLFFBQVEsQ0FBQTtJQUNSLGNBQWMsQ0FBOEQ7SUFFckYsWUFBWSxPQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFjLEVBQUUsT0FBZTtRQUNoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNwRSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBZTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBQ25DLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7Q0FDSjtBQUVELEtBQUssVUFBVSxjQUFjLENBQUMsT0FBZ0IsRUFBRSxNQUFjO0lBQzFELE1BQU0sV0FBVyxHQUErQixFQUFFLENBQUE7SUFDbEQsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQy9DLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUE7SUFDakQsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnRleHQgfSBmcm9tICcuL2xpdGUuanMnXG5pbXBvcnQgeyBnZXRBcGlzIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGktZ2F0ZXdheS5qcydcbmltcG9ydCB7IGdldEZ1bmN0aW9ucyB9IGZyb20gJy4vc2VydmljZXMvbGFtYmRhLmpzJ1xuXG5leHBvcnQgY2xhc3MgUmVzb2x2ZXIge1xuICAgIHJlYWRvbmx5ICNjb250ZXh0XG4gICAgcmVhZG9ubHkgI2VuZHBvaW50Q2FjaGU6IHsgW3ByZWZpeDogc3RyaW5nXTogUHJvbWlzZTx7IFthcGlOYW1lOiBzdHJpbmddOiBzdHJpbmcgfT4gfVxuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dCkge1xuICAgICAgICB0aGlzLiNjb250ZXh0ID0gY29udGV4dFxuICAgICAgICB0aGlzLiNlbmRwb2ludENhY2hlID0ge31cbiAgICB9XG5cbiAgICBhc3luYyBnZXRFbnZpcm9ubWVudChwcmVmaXg6IHN0cmluZywgc2VydmljZTogc3RyaW5nKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PiB7XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9ucyA9IGF3YWl0IGdldEZ1bmN0aW9ucyh0aGlzLiNjb250ZXh0LCBwcmVmaXgsIHNlcnZpY2UpXG4gICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZnVuY3Rpb25zLmZsYXRNYXAoZm4gPT4gT2JqZWN0LmVudHJpZXMoZm4uZW52KSkpXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QmFzZVVybChwcmVmaXg6IHN0cmluZywgc2VydmljZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0ICh0aGlzLiNlbmRwb2ludENhY2hlW3ByZWZpeF0gPz89IGdldFNlcnZpY2VBcGlzKHRoaXMuI2NvbnRleHQsIHByZWZpeCkpXG4gICAgICAgIGNvbnN0IG5hbWUgPSBgJHtwcmVmaXh9LSR7c2VydmljZX1gXG4gICAgICAgIHJldHVybiBjYWNoZWRbbmFtZV1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFNlcnZpY2VBcGlzKGNvbnRleHQ6IENvbnRleHQsIHByZWZpeDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VydmljZUFwaXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge31cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGFwaSBvZiBnZXRBcGlzKGNvbnRleHQsIHByZWZpeCkpIHtcbiAgICAgICAgc2VydmljZUFwaXNbYXBpLm5hbWVdID0gYCR7YXBpLmFwaUVuZHBvaW50fS9gXG4gICAgfVxuICAgIHJldHVybiBzZXJ2aWNlQXBpc1xufVxuIl19