@fly/cdn
Version:
Fly's TypeScript CDN
30 lines • 3.28 kB
JavaScript
/**
* @module Backends
*/
import { proxy } from "../proxy";
import { normalizeOptions } from "./subdomain_service";
/**
* Creates a `fetch` like function for proxying requests to hosted Netlify sites.
*
* Example:
* ```typescript
* import { netlify } from "./src/backends";
* const backend = netlify({
* subdomain: "example"
* });
* ```
* @param options Netlify site information. Accepts subdomain as a string.
*/
export function netlify(options) {
const config = normalizeOptions(options);
const netlifyHost = `${config.subdomain}.netlify.com`;
const uri = `https://${netlifyHost}${config.directory}`;
const headers = {
"host": netlifyHost,
"x-forwarded-host": config.hostname || false
};
const fn = proxy(uri, { headers: headers });
return Object.assign(fn, { proxyConfig: config });
}
netlify.normalizeOptions = normalizeOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0bGlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9uZXRsaWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBaUIsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBRXpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxPQUFrQztJQUN4RCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLGNBQWMsQ0FBQTtJQUNyRCxNQUFNLEdBQUcsR0FBRyxXQUFXLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDdkQsTUFBTSxPQUFPLEdBQUc7UUFDZCxNQUFNLEVBQUUsV0FBVztRQUNuQixrQkFBa0IsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUs7S0FDN0MsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBCYWNrZW5kc1xuICovXG5cbmltcG9ydCB7IHByb3h5LCBQcm94eUZ1bmN0aW9uIH0gZnJvbSBcIi4uL3Byb3h5XCI7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25zLCBTdWJkb21haW5PcHRpb25zIH0gZnJvbSBcIi4vc3ViZG9tYWluX3NlcnZpY2VcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGZldGNoYCBsaWtlIGZ1bmN0aW9uIGZvciBwcm94eWluZyByZXF1ZXN0cyB0byBob3N0ZWQgTmV0bGlmeSBzaXRlcy5cbiAqIFxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IG5ldGxpZnkgfSBmcm9tIFwiLi9zcmMvYmFja2VuZHNcIjtcbiAqIGNvbnN0IGJhY2tlbmQgPSBuZXRsaWZ5KHtcbiAqICBzdWJkb21haW46IFwiZXhhbXBsZVwiXG4gKiB9KTtcbiAqIGBgYFxuICogQHBhcmFtIG9wdGlvbnMgTmV0bGlmeSBzaXRlIGluZm9ybWF0aW9uLiBBY2NlcHRzIHN1YmRvbWFpbiBhcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ldGxpZnkob3B0aW9uczogU3ViZG9tYWluT3B0aW9ucyB8IHN0cmluZyk6IFByb3h5RnVuY3Rpb248U3ViZG9tYWluT3B0aW9ucz4ge1xuICBjb25zdCBjb25maWcgPSBub3JtYWxpemVPcHRpb25zKG9wdGlvbnMpO1xuXG4gIGNvbnN0IG5ldGxpZnlIb3N0ID0gYCR7Y29uZmlnLnN1YmRvbWFpbn0ubmV0bGlmeS5jb21gIFxuICBjb25zdCB1cmkgPSBgaHR0cHM6Ly8ke25ldGxpZnlIb3N0fSR7Y29uZmlnLmRpcmVjdG9yeX1gXG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgXCJob3N0XCI6IG5ldGxpZnlIb3N0LFxuICAgIFwieC1mb3J3YXJkZWQtaG9zdFwiOiBjb25maWcuaG9zdG5hbWUgfHwgZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGZuID0gcHJveHkodXJpLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZm4sIHsgcHJveHlDb25maWc6IGNvbmZpZ30pXG59XG5cbm5ldGxpZnkubm9ybWFsaXplT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnM7XG4iXX0=