@fly/edge
Version:
Fly's TypeScript Edge
34 lines • 3.77 kB
JavaScript
;
/**
* @module Backends
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.heroku = void 0;
const proxy_1 = require("../proxy");
const subdomain_service_1 = require("./subdomain_service");
const normalizeOptions = subdomain_service_1.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.
*/
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_1.proxy(uri, { headers });
return Object.assign(fn, { proxyConfig: config });
}
exports.heroku = heroku;
heroku.normalizeOptions = normalizeOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVyb2t1LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2hlcm9rdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILG9DQUFnRDtBQUNoRCwyREFBeUU7QUFZekUsTUFBTSxnQkFBZ0IsR0FBRyxvQ0FBZ0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO0FBRWpFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixNQUFNLENBQUMsT0FBK0I7SUFDcEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekMsTUFBTSxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQztJQUN2RCxNQUFNLEdBQUcsR0FBRyxXQUFXLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sT0FBTyxHQUFHO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFFBQVE7S0FDcEMsQ0FBQztJQUVGLE1BQU0sRUFBRSxHQUFHLGFBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBWkQsd0JBWUM7QUFFRCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgQmFja2VuZHNcbiAqL1xuXG5pbXBvcnQgeyBwcm94eSwgUHJveHlGdW5jdGlvbiB9IGZyb20gXCIuLi9wcm94eVwiO1xuaW1wb3J0IHsgU3ViZG9tYWluT3B0aW9ucywgb3B0aW9uTm9ybWFsaXplciB9IGZyb20gXCIuL3N1YmRvbWFpbl9zZXJ2aWNlXCI7XG4gXG4vKipcbiAqIEhlcm9rdSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlcm9rdU9wdGlvbnMge1xuICAvKiogSGVyb2t1IEFwcCBuYW1lOiA8YXBwTmFtZT4uaGVyb2t1YXBwLmNvbSAqL1xuICBhcHBOYW1lOiBzdHJpbmcsXG5cbiAgLyoqIElmIEhlcm9rdSBpcyBjb25maWd1cmVkIHdpdGggYSBjdXN0b20gZG9tYWluIG5hbWUsIHVzZSBpdC4gKi9cbiAgaG9zdG5hbWU/OiBzdHJpbmdcbn1cbmNvbnN0IG5vcm1hbGl6ZU9wdGlvbnMgPSBvcHRpb25Ob3JtYWxpemVyKHtzdWJkb21haW46IFwiYXBwTmFtZVwifSlcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGZldGNoYCBsaWtlIGZ1bmN0aW9uIGZvciBwcm94eWluZyByZXF1ZXN0cyB0byBhIEhlcm9rdSBhcHAuXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgaGVyb2t1IH0gZnJvbSBcIi4vc3JjL2JhY2tlbmRzXCI7XG4gKiBjb25zdCBiYWNrZW5kID0gaGVyb2t1KHtcbiAqICBhcHBOYW1lOiBcImV4YW1wbGVcIlxuICogfSk7XG4gKiBgYGBcbiAqIEBwYXJhbSBjb25maWcgSGVyb2t1IGFwcCBpbmZvcm1hdGlvbi4gQWNjZXB0cyBhcHBOYW1lIGFzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGVyb2t1KG9wdGlvbnM6IEhlcm9rdU9wdGlvbnMgfCBzdHJpbmcpOiBQcm94eUZ1bmN0aW9uPFN1YmRvbWFpbk9wdGlvbnM+e1xuICBjb25zdCBjb25maWcgPSBub3JtYWxpemVPcHRpb25zKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGhlcm9rdUhvc3QgPSBgJHtjb25maWcuc3ViZG9tYWlufS5oZXJva3VhcHAuY29tYDtcbiAgY29uc3QgdXJpID0gYGh0dHBzOi8vJHtoZXJva3VIb3N0fWA7XG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgXCJob3N0XCI6IGhlcm9rdUhvc3QsXG4gICAgXCJ4LWZvcndhcmRlZC1ob3N0XCI6IGNvbmZpZy5ob3N0bmFtZVxuICB9O1xuXG4gIGNvbnN0IGZuID0gcHJveHkodXJpLCB7IGhlYWRlcnMgfSk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKGZuLCB7IHByb3h5Q29uZmlnOiBjb25maWcgfSk7XG59XG5cbmhlcm9rdS5ub3JtYWxpemVPcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucztcbiJdfQ==