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