UNPKG

@fly/cdn

Version:
30 lines 3.67 kB
/** * @module Backends */ import { proxy } from "../proxy"; import { optionNormalizer } from "./subdomain_service"; const normalizeOptions = optionNormalizer({ subdomain: "appName" }); /** * Creates a `fetch` like function for proxying requests to a Heroku app. * Example: * ```typescript * import { heroku } from "./src/backends"; * const backend = heroku({ * appName: "example" * }); * ``` * @param config Heroku app information. Accepts appName as a string. */ export function heroku(options) { const config = normalizeOptions(options); const herokuHost = `${config.subdomain}.herokuapp.com`; const uri = `https://${herokuHost}`; const headers = { "host": herokuHost, "x-forwarded-host": config.hostname }; const fn = proxy(uri, { headers }); return Object.assign(fn, { proxyConfig: config }); } heroku.normalizeOptions = normalizeOptions; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVyb2t1LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JhY2tlbmRzL2hlcm9rdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQWlCLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVl6RSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7QUFFakU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsT0FBK0I7SUFDcEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekMsTUFBTSxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQztJQUN2RCxNQUFNLEdBQUcsR0FBRyxXQUFXLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sT0FBTyxHQUFHO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFFBQVE7S0FDcEMsQ0FBQztJQUVGLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIEJhY2tlbmRzXG4gKi9cblxuaW1wb3J0IHsgcHJveHksIFByb3h5RnVuY3Rpb24gfSBmcm9tIFwiLi4vcHJveHlcIjtcbmltcG9ydCB7IFN1YmRvbWFpbk9wdGlvbnMsIG9wdGlvbk5vcm1hbGl6ZXIgfSBmcm9tIFwiLi9zdWJkb21haW5fc2VydmljZVwiO1xuIFxuLyoqXG4gKiBIZXJva3UgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZXJva3VPcHRpb25zIHtcbiAgLyoqIEhlcm9rdSBBcHAgbmFtZTogPGFwcE5hbWU+Lmhlcm9rdWFwcC5jb20gKi9cbiAgYXBwTmFtZTogc3RyaW5nLFxuXG4gIC8qKiBJZiBIZXJva3UgaXMgY29uZmlndXJlZCB3aXRoIGEgY3VzdG9tIGRvbWFpbiBuYW1lLCB1c2UgaXQuICovXG4gIGhvc3RuYW1lPzogc3RyaW5nXG59XG5jb25zdCBub3JtYWxpemVPcHRpb25zID0gb3B0aW9uTm9ybWFsaXplcih7c3ViZG9tYWluOiBcImFwcE5hbWVcIn0pXG5cbi8qKlxuICogQ3JlYXRlcyBhIGBmZXRjaGAgbGlrZSBmdW5jdGlvbiBmb3IgcHJveHlpbmcgcmVxdWVzdHMgdG8gYSBIZXJva3UgYXBwLlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGhlcm9rdSB9IGZyb20gXCIuL3NyYy9iYWNrZW5kc1wiO1xuICogY29uc3QgYmFja2VuZCA9IGhlcm9rdSh7XG4gKiAgYXBwTmFtZTogXCJleGFtcGxlXCJcbiAqIH0pO1xuICogYGBgXG4gKiBAcGFyYW0gY29uZmlnIEhlcm9rdSBhcHAgaW5mb3JtYXRpb24uIEFjY2VwdHMgYXBwTmFtZSBhcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhlcm9rdShvcHRpb25zOiBIZXJva3VPcHRpb25zIHwgc3RyaW5nKTogUHJveHlGdW5jdGlvbjxTdWJkb21haW5PcHRpb25zPntcbiAgY29uc3QgY29uZmlnID0gbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBoZXJva3VIb3N0ID0gYCR7Y29uZmlnLnN1YmRvbWFpbn0uaGVyb2t1YXBwLmNvbWA7XG4gIGNvbnN0IHVyaSA9IGBodHRwczovLyR7aGVyb2t1SG9zdH1gO1xuICBjb25zdCBoZWFkZXJzID0ge1xuICAgIFwiaG9zdFwiOiBoZXJva3VIb3N0LFxuICAgIFwieC1mb3J3YXJkZWQtaG9zdFwiOiBjb25maWcuaG9zdG5hbWVcbiAgfTtcblxuICBjb25zdCBmbiA9IHByb3h5KHVyaSwgeyBoZWFkZXJzIH0pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihmbiwgeyBwcm94eUNvbmZpZzogY29uZmlnIH0pO1xufVxuXG5oZXJva3Uubm9ybWFsaXplT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnM7XG4iXX0=