@fly/cdn
Version:
Fly's TypeScript CDN
28 lines • 3.6 kB
JavaScript
import { requestModifier } from "./builder";
/**
* Redirects http requests to https in production.
*
* In development, this only logs a message
*/
export const httpsUpgrader = requestModifier(httpsRedirect);
/**
* Checks request protocol, returns Redirect response if request is http.
*
* In development, this function just logs a message to the console.
*
* @param req The request to check
* @param options Options for the resulting redirect
*/
export function httpsRedirect(req, options) {
let { status, text } = options || { status: 302, text: "" };
status = status || 302;
text = text || "Redirecting";
if (app.env === "development")
console.log("skipping httpsUpgrader in dev");
const url = new URL(req.url);
if (app.env != "development" && url.protocol != "https:") {
url.protocol = "https:";
return new Response(text, { status: status, headers: { location: url.toString() } });
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cHMtdXBncmFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9odHRwcy11cGdyYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRTNEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVksRUFBRSxPQUF5QjtJQUNuRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQzNELE1BQU0sR0FBRyxNQUFNLElBQUksR0FBRyxDQUFBO0lBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksYUFBYSxDQUFBO0lBQzVCLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxhQUFhO1FBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0lBQzNFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM1QixJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksYUFBYSxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO1FBQ3hELEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3ZCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0tBQ3JGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBNaWRkbGV3YXJlXG4gKi9cbmltcG9ydCB7IFJlZGlyZWN0T3B0aW9ucyB9IGZyb20gXCIuLi9mZXRjaFwiO1xuaW1wb3J0IHsgcmVxdWVzdE1vZGlmaWVyIH0gZnJvbSBcIi4vYnVpbGRlclwiO1xuXG4vKipcbiAqIFJlZGlyZWN0cyBodHRwIHJlcXVlc3RzIHRvIGh0dHBzIGluIHByb2R1Y3Rpb24uXG4gKiBcbiAqIEluIGRldmVsb3BtZW50LCB0aGlzIG9ubHkgbG9ncyBhIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IGh0dHBzVXBncmFkZXIgPSByZXF1ZXN0TW9kaWZpZXIoaHR0cHNSZWRpcmVjdClcblxuLyoqXG4gKiBDaGVja3MgcmVxdWVzdCBwcm90b2NvbCwgcmV0dXJucyBSZWRpcmVjdCByZXNwb25zZSBpZiByZXF1ZXN0IGlzIGh0dHAuXG4gKiBcbiAqIEluIGRldmVsb3BtZW50LCB0aGlzIGZ1bmN0aW9uIGp1c3QgbG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUuXG4gKiBcbiAqIEBwYXJhbSByZXEgVGhlIHJlcXVlc3QgdG8gY2hlY2tcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXN1bHRpbmcgcmVkaXJlY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh0dHBzUmVkaXJlY3QocmVxOiBSZXF1ZXN0LCBvcHRpb25zPzogUmVkaXJlY3RPcHRpb25zKXtcbiAgbGV0IHsgc3RhdHVzLCB0ZXh0IH0gPSBvcHRpb25zIHx8IHsgc3RhdHVzOiAzMDIsIHRleHQ6IFwiXCIgfVxuICBzdGF0dXMgPSBzdGF0dXMgfHwgMzAyXG4gIHRleHQgPSB0ZXh0IHx8IFwiUmVkaXJlY3RpbmdcIlxuICBpZiAoYXBwLmVudiA9PT0gXCJkZXZlbG9wbWVudFwiKSBjb25zb2xlLmxvZyhcInNraXBwaW5nIGh0dHBzVXBncmFkZXIgaW4gZGV2XCIpXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgaWYgKGFwcC5lbnYgIT0gXCJkZXZlbG9wbWVudFwiICYmIHVybC5wcm90b2NvbCAhPSBcImh0dHBzOlwiKSB7XG4gICAgdXJsLnByb3RvY29sID0gXCJodHRwczpcIlxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGV4dCwgeyBzdGF0dXM6IHN0YXR1cywgaGVhZGVyczogeyBsb2NhdGlvbjogdXJsLnRvU3RyaW5nKCkgfSB9KVxuICB9XG59Il19