@fly/cdn
Version:
Fly's TypeScript CDN
30 lines • 3.67 kB
JavaScript
/**
* @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=