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