@fly/cdn
Version:
Fly's TypeScript CDN
37 lines • 4.88 kB
JavaScript
/** @module Config */
import * as backends from "../backends";
// type FactoryDefinition = [ProxyFactory, (options: any) => boolean];
const factories = new Map([
["origin", backends.origin],
["github_pages", backends.githubPages],
["heroku", backends.heroku],
["ghost_pro", backends.ghostProBlog],
["glitch", backends.glitch],
["squarespace", backends.squarespace],
["aws_s3", backends.awsS3],
]);
function getFactory(type) {
const def = factories.get(type);
if (!def) {
throw new Error(`Unknown backend type '${type}'`);
}
return def;
}
export function buildBackend(config) {
try {
const factory = getFactory(config.type);
return factory(config);
}
catch (err) {
console.error("Exception building backend:", err, config);
const backendError = async (..._) => new Response(err.toString(), { status: 500 });
return Object.assign(backendError, { proxyConfig: config });
}
}
export function validateBackend(config) {
const factory = getFactory(config.type);
if (factory.normalizeOptions) {
factory.normalizeOptions(config);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2JhY2tlbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQjtBQUNyQixPQUFPLEtBQUssUUFBUSxNQUFNLGFBQWEsQ0FBQztBQU14Qyx1RUFBdUU7QUFFdkUsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQXVCO0lBQzlDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ3JDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsU0FBUyxVQUFVLENBQUMsSUFBWTtJQUM5QixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQ25EO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFrQjtJQUM3QyxJQUFHO1FBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN4QjtJQUFBLE9BQU0sR0FBRyxFQUFDO1FBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDekQsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUUsQ0FBQTtRQUMxRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFFLENBQUE7S0FDNUQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFrQjtJQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1FBQzVCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBDb25maWcgKi9cbmltcG9ydCAqIGFzIGJhY2tlbmRzIGZyb20gXCIuLi9iYWNrZW5kc1wiO1xuaW1wb3J0IHsgUHJveHlGdW5jdGlvbiwgUHJveHlGYWN0b3J5IH0gZnJvbSBcIi4uL3Byb3h5XCI7XG5pbXBvcnQgeyBJdGVtQ29uZmlnIH0gZnJvbSBcIi4vaW5kZXhcIjtcblxuZXhwb3J0IHR5cGUgQmFja2VuZE1hcCA9IE1hcDxzdHJpbmcsIFByb3h5RmFjdG9yeT47XG5cbi8vIHR5cGUgRmFjdG9yeURlZmluaXRpb24gPSAgW1Byb3h5RmFjdG9yeSwgKG9wdGlvbnM6IGFueSkgPT4gYm9vbGVhbl07XG5cbmNvbnN0IGZhY3RvcmllcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm94eUZhY3Rvcnk+KFtcbiAgW1wib3JpZ2luXCIsIGJhY2tlbmRzLm9yaWdpbl0sXG4gIFtcImdpdGh1Yl9wYWdlc1wiLCBiYWNrZW5kcy5naXRodWJQYWdlc10sXG4gIFtcImhlcm9rdVwiLCBiYWNrZW5kcy5oZXJva3VdLFxuICBbXCJnaG9zdF9wcm9cIiwgYmFja2VuZHMuZ2hvc3RQcm9CbG9nXSxcbiAgW1wiZ2xpdGNoXCIsIGJhY2tlbmRzLmdsaXRjaF0sXG4gIFtcInNxdWFyZXNwYWNlXCIsIGJhY2tlbmRzLnNxdWFyZXNwYWNlXSxcbiAgW1wiYXdzX3MzXCIsIGJhY2tlbmRzLmF3c1MzXSxcbl0pO1xuXG5mdW5jdGlvbiBnZXRGYWN0b3J5KHR5cGU6IHN0cmluZyk6IFByb3h5RmFjdG9yeSB7XG4gIGNvbnN0IGRlZiA9IGZhY3Rvcmllcy5nZXQodHlwZSk7XG4gIGlmICghZGVmKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGJhY2tlbmQgdHlwZSAnJHt0eXBlfSdgKTtcbiAgfVxuICByZXR1cm4gZGVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCYWNrZW5kKGNvbmZpZzogSXRlbUNvbmZpZyk6IFByb3h5RnVuY3Rpb248YW55PiB7XG4gIHRyeXtcbiAgICBjb25zdCBmYWN0b3J5ID0gZ2V0RmFjdG9yeShjb25maWcudHlwZSk7XG4gICAgcmV0dXJuIGZhY3RvcnkoY29uZmlnKTtcbiAgfWNhdGNoKGVycil7XG4gICAgY29uc29sZS5lcnJvcihcIkV4Y2VwdGlvbiBidWlsZGluZyBiYWNrZW5kOlwiLCBlcnIsIGNvbmZpZylcbiAgICBjb25zdCBiYWNrZW5kRXJyb3IgPSBhc3luYyAoLi4uXzogYW55W10pID0+IG5ldyBSZXNwb25zZShlcnIudG9TdHJpbmcoKSwgeyBzdGF0dXM6IDUwMCB9IClcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihiYWNrZW5kRXJyb3IsIHsgcHJveHlDb25maWc6IGNvbmZpZ30gKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJhY2tlbmQoY29uZmlnOiBJdGVtQ29uZmlnKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRGYWN0b3J5KGNvbmZpZy50eXBlKTtcbiAgaWYgKGZhY3Rvcnkubm9ybWFsaXplT3B0aW9ucykge1xuICAgIGZhY3Rvcnkubm9ybWFsaXplT3B0aW9ucyhjb25maWcpO1xuICB9XG59XG4iXX0=