@httpland/coop-middleware
Version:
HTTP cross-origin opener policy(COOP) middleware
34 lines (33 loc) • 1.28 kB
JavaScript
;
// Copyright 2023-latest the httpland authors. All rights reserved. MIT license.
// This module is browser compatible.
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringifyCrossOriginOpenerPolicy = void 0;
const deps_js_1 = require("./deps.js");
var Param;
(function (Param) {
Param["ReportTo"] = "report-to";
})(Param || (Param = {}));
/** Serialize {@link CrossOriginOpenerPolicy} into string.
* @throws {TypeError} If the {@link CrossOriginOpenerPolicy} is invalid.
*/
function stringifyCrossOriginOpenerPolicy(policy) {
const token = new deps_js_1.Token(policy.value);
const parameters = (0, deps_js_1.isString)(policy.reportTo)
? new deps_js_1.Parameters({
[Param.ReportTo]: new deps_js_1.Token(policy.reportTo),
})
: new deps_js_1.Parameters();
const item = new deps_js_1.Item([token, parameters]);
try {
return (0, deps_js_1.stringifySfv)(item);
}
catch (cause) {
throw TypeError(Msg.InvalidCrossOriginOpenerPolicy, { cause });
}
}
exports.stringifyCrossOriginOpenerPolicy = stringifyCrossOriginOpenerPolicy;
var Msg;
(function (Msg) {
Msg["InvalidCrossOriginOpenerPolicy"] = "invalid CrossOriginOpenerPolicy format.";
})(Msg || (Msg = {}));