@rayselfs/cf-rule-engine 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +5 -3
  2. package/dist/adapters/cf-function.cjs +7 -3
  3. package/dist/adapters/cf-function.d.cts +2 -1
  4. package/dist/adapters/cf-function.d.ts +2 -1
  5. package/dist/adapters/cf-function.js +7 -3
  6. package/dist/adapters/viewer-request.cjs +3 -2
  7. package/dist/adapters/viewer-request.d.cts +31 -2
  8. package/dist/adapters/viewer-request.d.ts +31 -2
  9. package/dist/adapters/viewer-request.js +2 -1
  10. package/dist/adapters/viewer-response.cjs +3 -3
  11. package/dist/adapters/viewer-response.d.cts +37 -2
  12. package/dist/adapters/viewer-response.d.ts +37 -2
  13. package/dist/adapters/viewer-response.js +2 -2
  14. package/dist/behaviors/index.cjs +2 -2
  15. package/dist/behaviors/index.js +1 -1
  16. package/dist/behaviors/set-security-headers.cjs +2 -2
  17. package/dist/behaviors/set-security-headers.d.cts +35 -19
  18. package/dist/behaviors/set-security-headers.d.ts +35 -19
  19. package/dist/behaviors/set-security-headers.js +1 -1
  20. package/dist/cf-function-BkfWpTfl.d.cts +10 -0
  21. package/dist/cf-function-CZwCWch-.d.ts +10 -0
  22. package/dist/chunk-3UXNXJ6N.cjs +21 -0
  23. package/dist/chunk-5ZIB3AJ7.cjs +20 -0
  24. package/dist/chunk-6NFAPLQ7.cjs +39 -0
  25. package/dist/chunk-BJZPAQHW.js +25 -0
  26. package/dist/chunk-CQ7YZ3AR.js +39 -0
  27. package/dist/chunk-N6QAQALU.cjs +36 -0
  28. package/dist/chunk-O4SOSGAP.js +21 -0
  29. package/dist/chunk-PR5UQJCC.js +20 -0
  30. package/dist/chunk-SGN2N3WI.cjs +25 -0
  31. package/dist/chunk-TURH5IFN.js +36 -0
  32. package/dist/criteria/index.cjs +12 -12
  33. package/dist/criteria/index.js +12 -12
  34. package/dist/helpers/index.cjs +6 -6
  35. package/dist/helpers/index.js +5 -5
  36. package/dist/helpers/whitelist.cjs +3 -3
  37. package/dist/helpers/whitelist.js +2 -2
  38. package/dist/index.cjs +6 -3
  39. package/dist/index.d.cts +3 -1
  40. package/dist/index.d.ts +3 -1
  41. package/dist/index.js +6 -3
  42. package/package.json +1 -1
  43. package/dist/chunk-NPMGSPNL.js +0 -88
  44. package/dist/chunk-SAXDN5NS.cjs +0 -88
  45. package/dist/chunk-UI6LKDJI.cjs +0 -19
  46. package/dist/chunk-VQCRSBWL.js +0 -19
  47. package/dist/viewer-response-C9eF2O9s.d.ts +0 -70
  48. package/dist/viewer-response-DIQHy8L7.d.cts +0 -70
  49. package/dist/{chunk-RL7ZETZR.js → chunk-ER2YEZZO.js} +3 -3
  50. package/dist/{chunk-T5EXFHVA.cjs → chunk-MO7HW25R.cjs} +3 -3
@@ -0,0 +1,39 @@
1
+ // src/adapters/_normalize.ts
2
+ function normalizeRequest(event) {
3
+ const ev = event;
4
+ const req = ev.request;
5
+ const viewer = ev.viewer;
6
+ const headers = req.headers ?? {};
7
+ return {
8
+ uri: req.uri,
9
+ method: req.method,
10
+ protocol: "https",
11
+ querystring: req.querystring ?? {},
12
+ headers,
13
+ clientIp: viewer?.ip ?? "",
14
+ country: headers["cloudfront-viewer-country"]?.value
15
+ };
16
+ }
17
+ function denormalizeRequest(req, cookies) {
18
+ return {
19
+ method: req.method,
20
+ uri: req.uri,
21
+ querystring: req.querystring,
22
+ headers: req.headers,
23
+ cookies
24
+ };
25
+ }
26
+ function denormalizeResponse(res) {
27
+ return {
28
+ statusCode: res.statusCode,
29
+ statusDescription: res.statusDescription,
30
+ headers: res.headers,
31
+ body: res.body ?? ""
32
+ };
33
+ }
34
+
35
+ export {
36
+ normalizeRequest,
37
+ denormalizeRequest,
38
+ denormalizeResponse
39
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+ var _chunk6NFAPLQ7cjs = require('./chunk-6NFAPLQ7.cjs');
5
+
6
+ // src/adapters/viewer-response.ts
7
+ function defineViewerResponse(responseBehaviors) {
8
+ return (event) => {
9
+ const ev = event;
10
+ const evRes = ev.response;
11
+ const req = _chunk6NFAPLQ7cjs.normalizeRequest.call(void 0, event);
12
+ let response = {
13
+ statusCode: _nullishCoalesce(_optionalChain([evRes, 'optionalAccess', _ => _.statusCode]), () => ( 200)),
14
+ statusDescription: _optionalChain([evRes, 'optionalAccess', _2 => _2.statusDescription]),
15
+ headers: _nullishCoalesce(_optionalChain([evRes, 'optionalAccess', _3 => _3.headers]), () => ( {})),
16
+ body: _optionalChain([evRes, 'optionalAccess', _4 => _4.body])
17
+ };
18
+ for (let i = 0; i < responseBehaviors.length; i++) {
19
+ const entry = responseBehaviors[i];
20
+ if (typeof entry === "function") {
21
+ response = entry(req, response);
22
+ } else if (!entry.criteria || entry.criteria(req)) {
23
+ response = entry.behavior(req, response);
24
+ }
25
+ }
26
+ const normalized = _chunk6NFAPLQ7cjs.denormalizeResponse.call(void 0, response);
27
+ if (!response.body) {
28
+ delete normalized.body;
29
+ }
30
+ return Object.assign({}, evRes, normalized);
31
+ };
32
+ }
33
+
34
+
35
+
36
+ exports.defineViewerResponse = defineViewerResponse;
@@ -0,0 +1,21 @@
1
+ // src/behaviors/set-security-headers.ts
2
+ function setSecurityHeaders(options) {
3
+ return (_request, response) => {
4
+ const extra = {};
5
+ if (options.hsts !== void 0)
6
+ extra["strict-transport-security"] = { value: options.hsts };
7
+ if (options.xFrameOptions !== void 0)
8
+ extra["x-frame-options"] = { value: options.xFrameOptions };
9
+ if (options.xContentTypeOptions !== void 0)
10
+ extra["x-content-type-options"] = { value: options.xContentTypeOptions };
11
+ if (options.xXssProtection !== void 0)
12
+ extra["x-xss-protection"] = { value: options.xXssProtection };
13
+ return Object.assign({}, response, {
14
+ headers: Object.assign({}, response.headers, extra)
15
+ });
16
+ };
17
+ }
18
+
19
+ export {
20
+ setSecurityHeaders
21
+ };
@@ -0,0 +1,20 @@
1
+ import {
2
+ defineViewerRequest
3
+ } from "./chunk-BJZPAQHW.js";
4
+ import {
5
+ defineViewerResponse
6
+ } from "./chunk-TURH5IFN.js";
7
+ import {
8
+ __export
9
+ } from "./chunk-MLKGABMK.js";
10
+
11
+ // src/adapters/cf-function.ts
12
+ var cf_function_exports = {};
13
+ __export(cf_function_exports, {
14
+ defineViewerRequest: () => defineViewerRequest,
15
+ defineViewerResponse: () => defineViewerResponse
16
+ });
17
+
18
+ export {
19
+ cf_function_exports
20
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+ var _chunkWKYMSRCDcjs = require('./chunk-WKYMSRCD.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunk6NFAPLQ7cjs = require('./chunk-6NFAPLQ7.cjs');
9
+
10
+ // src/adapters/viewer-request.ts
11
+ function defineViewerRequest(rules) {
12
+ return (event) => {
13
+ const ev = event;
14
+ const evReq = ev.request;
15
+ const originalCookies = _nullishCoalesce(evReq.cookies, () => ( {}));
16
+ const req = _chunk6NFAPLQ7cjs.normalizeRequest.call(void 0, event);
17
+ const result = _chunkWKYMSRCDcjs.runRules.call(void 0, rules, req);
18
+ if (result.action === "respond") return _chunk6NFAPLQ7cjs.denormalizeResponse.call(void 0, result.response);
19
+ return _chunk6NFAPLQ7cjs.denormalizeRequest.call(void 0, result.request, originalCookies);
20
+ };
21
+ }
22
+
23
+
24
+
25
+ exports.defineViewerRequest = defineViewerRequest;
@@ -0,0 +1,36 @@
1
+ import {
2
+ denormalizeResponse,
3
+ normalizeRequest
4
+ } from "./chunk-CQ7YZ3AR.js";
5
+
6
+ // src/adapters/viewer-response.ts
7
+ function defineViewerResponse(responseBehaviors) {
8
+ return (event) => {
9
+ const ev = event;
10
+ const evRes = ev.response;
11
+ const req = normalizeRequest(event);
12
+ let response = {
13
+ statusCode: evRes?.statusCode ?? 200,
14
+ statusDescription: evRes?.statusDescription,
15
+ headers: evRes?.headers ?? {},
16
+ body: evRes?.body
17
+ };
18
+ for (let i = 0; i < responseBehaviors.length; i++) {
19
+ const entry = responseBehaviors[i];
20
+ if (typeof entry === "function") {
21
+ response = entry(req, response);
22
+ } else if (!entry.criteria || entry.criteria(req)) {
23
+ response = entry.behavior(req, response);
24
+ }
25
+ }
26
+ const normalized = denormalizeResponse(response);
27
+ if (!response.body) {
28
+ delete normalized.body;
29
+ }
30
+ return Object.assign({}, evRes, normalized);
31
+ };
32
+ }
33
+
34
+ export {
35
+ defineViewerResponse
36
+ };
@@ -1,17 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkG7JGTBTTcjs = require('../chunk-G7JGTBTT.cjs');
4
-
5
-
6
- var _chunkMVGYPBYBcjs = require('../chunk-MVGYPBYB.cjs');
7
-
8
-
9
- var _chunk32SMWYAFcjs = require('../chunk-32SMWYAF.cjs');
10
-
11
-
12
- var _chunkL7NBJ4JAcjs = require('../chunk-L7NBJ4JA.cjs');
13
-
14
-
15
3
  var _chunkJGJW7D2Ncjs = require('../chunk-JGJW7D2N.cjs');
16
4
 
17
5
 
@@ -26,6 +14,12 @@ var _chunkVEEOQ7TScjs = require('../chunk-VEEOQ7TS.cjs');
26
14
 
27
15
 
28
16
  var _chunkCF5PWWTFcjs = require('../chunk-CF5PWWTF.cjs');
17
+
18
+
19
+ var _chunkG7JGTBTTcjs = require('../chunk-G7JGTBTT.cjs');
20
+
21
+
22
+ var _chunkMVGYPBYBcjs = require('../chunk-MVGYPBYB.cjs');
29
23
  require('../chunk-IBXAK2A4.cjs');
30
24
 
31
25
 
@@ -33,6 +27,12 @@ var _chunkOSZWDCTScjs = require('../chunk-OSZWDCTS.cjs');
33
27
 
34
28
 
35
29
  var _chunkU54FZCOHcjs = require('../chunk-U54FZCOH.cjs');
30
+
31
+
32
+ var _chunk32SMWYAFcjs = require('../chunk-32SMWYAF.cjs');
33
+
34
+
35
+ var _chunkL7NBJ4JAcjs = require('../chunk-L7NBJ4JA.cjs');
36
36
  require('../chunk-75ZPJI57.cjs');
37
37
 
38
38
 
@@ -1,15 +1,3 @@
1
- import {
2
- pathPrefix
3
- } from "../chunk-XLSZ5RB7.js";
4
- import {
5
- userAgentMatches
6
- } from "../chunk-S2AAATFN.js";
7
- import {
8
- headerContains
9
- } from "../chunk-SRQF5UEJ.js";
10
- import {
11
- headerEquals
12
- } from "../chunk-BZQJYOU2.js";
13
1
  import {
14
2
  hostnameIs
15
3
  } from "../chunk-3PVDUC5M.js";
@@ -26,6 +14,12 @@ import {
26
14
  import {
27
15
  pathMatches
28
16
  } from "../chunk-LO2BO3RU.js";
17
+ import {
18
+ pathPrefix
19
+ } from "../chunk-XLSZ5RB7.js";
20
+ import {
21
+ userAgentMatches
22
+ } from "../chunk-S2AAATFN.js";
29
23
  import "../chunk-2DE6WPPL.js";
30
24
  import {
31
25
  countryIs
@@ -33,6 +27,12 @@ import {
33
27
  import {
34
28
  fileExtension
35
29
  } from "../chunk-LBJUCJF2.js";
30
+ import {
31
+ headerContains
32
+ } from "../chunk-SRQF5UEJ.js";
33
+ import {
34
+ headerEquals
35
+ } from "../chunk-BZQJYOU2.js";
36
36
  import "../chunk-MLKGABMK.js";
37
37
  export {
38
38
  countryIs,
@@ -6,18 +6,18 @@ var _chunk63WIEBQBcjs = require('../chunk-63WIEBQB.cjs');
6
6
  var _chunkLSCC62CZcjs = require('../chunk-LSCC62CZ.cjs');
7
7
 
8
8
 
9
- var _chunkT5EXFHVAcjs = require('../chunk-T5EXFHVA.cjs');
10
- require('../chunk-MVGYPBYB.cjs');
11
-
12
-
13
- var _chunkL7NBJ4JAcjs = require('../chunk-L7NBJ4JA.cjs');
9
+ var _chunkMO7HW25Rcjs = require('../chunk-MO7HW25R.cjs');
14
10
  require('../chunk-D47P7HVZ.cjs');
15
11
  require('../chunk-YVUR35RN.cjs');
16
12
  require('../chunk-OTFDML3K.cjs');
17
13
  require('../chunk-CF5PWWTF.cjs');
14
+ require('../chunk-MVGYPBYB.cjs');
18
15
  require('../chunk-IBXAK2A4.cjs');
19
16
 
20
17
 
18
+ var _chunkL7NBJ4JAcjs = require('../chunk-L7NBJ4JA.cjs');
19
+
20
+
21
21
  var _chunkB4WEJSEZcjs = require('../chunk-B4WEJSEZ.cjs');
22
22
  require('../chunk-WWSRNCUP.cjs');
23
23
  require('../chunk-WKYMSRCD.cjs');
@@ -39,4 +39,4 @@ function stagingIndicator() {
39
39
 
40
40
 
41
41
 
42
- exports.preflightRequest = _chunk63WIEBQBcjs.preflightRequest; exports.sendCountryCode = _chunkLSCC62CZcjs.sendCountryCode; exports.stagingIndicator = stagingIndicator; exports.whitelist = _chunkT5EXFHVAcjs.whitelist;
42
+ exports.preflightRequest = _chunk63WIEBQBcjs.preflightRequest; exports.sendCountryCode = _chunkLSCC62CZcjs.sendCountryCode; exports.stagingIndicator = stagingIndicator; exports.whitelist = _chunkMO7HW25Rcjs.whitelist;
@@ -6,16 +6,16 @@ import {
6
6
  } from "../chunk-C32DL3EP.js";
7
7
  import {
8
8
  whitelist
9
- } from "../chunk-RL7ZETZR.js";
10
- import "../chunk-S2AAATFN.js";
11
- import {
12
- headerEquals
13
- } from "../chunk-BZQJYOU2.js";
9
+ } from "../chunk-ER2YEZZO.js";
14
10
  import "../chunk-KW5YBTSD.js";
15
11
  import "../chunk-LNQPYKGG.js";
16
12
  import "../chunk-PY3JMRDG.js";
17
13
  import "../chunk-LO2BO3RU.js";
14
+ import "../chunk-S2AAATFN.js";
18
15
  import "../chunk-2DE6WPPL.js";
16
+ import {
17
+ headerEquals
18
+ } from "../chunk-BZQJYOU2.js";
19
19
  import {
20
20
  setResponseHeader
21
21
  } from "../chunk-RBBKFG5J.js";
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkT5EXFHVAcjs = require('../chunk-T5EXFHVA.cjs');
4
- require('../chunk-MVGYPBYB.cjs');
3
+ var _chunkMO7HW25Rcjs = require('../chunk-MO7HW25R.cjs');
5
4
  require('../chunk-D47P7HVZ.cjs');
6
5
  require('../chunk-YVUR35RN.cjs');
7
6
  require('../chunk-CF5PWWTF.cjs');
7
+ require('../chunk-MVGYPBYB.cjs');
8
8
  require('../chunk-IBXAK2A4.cjs');
9
9
  require('../chunk-WWSRNCUP.cjs');
10
10
  require('../chunk-WKYMSRCD.cjs');
11
11
  require('../chunk-75ZPJI57.cjs');
12
12
 
13
13
 
14
- exports.whitelist = _chunkT5EXFHVAcjs.whitelist;
14
+ exports.whitelist = _chunkMO7HW25Rcjs.whitelist;
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  whitelist
3
- } from "../chunk-RL7ZETZR.js";
4
- import "../chunk-S2AAATFN.js";
3
+ } from "../chunk-ER2YEZZO.js";
5
4
  import "../chunk-KW5YBTSD.js";
6
5
  import "../chunk-LNQPYKGG.js";
7
6
  import "../chunk-LO2BO3RU.js";
7
+ import "../chunk-S2AAATFN.js";
8
8
  import "../chunk-2DE6WPPL.js";
9
9
  import "../chunk-DSSFFJWL.js";
10
10
  import "../chunk-Q4NP4C3B.js";
package/dist/index.cjs CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-MEHWLQLR.cjs');
2
2
 
3
3
 
4
- var _chunk3BBLG4IXcjs = require('./chunk-3BBLG4IX.cjs');
4
+ var _chunk5ZIB3AJ7cjs = require('./chunk-5ZIB3AJ7.cjs');
5
5
 
6
6
 
7
- var _chunkSAXDN5NScjs = require('./chunk-SAXDN5NS.cjs');
7
+ var _chunk3BBLG4IXcjs = require('./chunk-3BBLG4IX.cjs');
8
+ require('./chunk-SGN2N3WI.cjs');
8
9
 
9
10
 
10
11
 
@@ -13,6 +14,8 @@ var _chunkSAXDN5NScjs = require('./chunk-SAXDN5NS.cjs');
13
14
 
14
15
 
15
16
  var _chunkWKYMSRCDcjs = require('./chunk-WKYMSRCD.cjs');
17
+ require('./chunk-N6QAQALU.cjs');
18
+ require('./chunk-6NFAPLQ7.cjs');
16
19
  require('./chunk-75ZPJI57.cjs');
17
20
 
18
21
 
@@ -23,4 +26,4 @@ require('./chunk-75ZPJI57.cjs');
23
26
 
24
27
 
25
28
 
26
- exports.all = _chunkWKYMSRCDcjs.all; exports.any = _chunkWKYMSRCDcjs.any; exports.cfFunction = _chunkSAXDN5NScjs.cf_function_exports; exports.chain = _chunkWKYMSRCDcjs.chain; exports.lambdaEdge = _chunk3BBLG4IXcjs.lambda_edge_exports; exports.not = _chunkWKYMSRCDcjs.not; exports.rule = _chunkWKYMSRCDcjs.rule; exports.runRules = _chunkWKYMSRCDcjs.runRules;
29
+ exports.all = _chunkWKYMSRCDcjs.all; exports.any = _chunkWKYMSRCDcjs.any; exports.cfFunction = _chunk5ZIB3AJ7cjs.cf_function_exports; exports.chain = _chunkWKYMSRCDcjs.chain; exports.lambdaEdge = _chunk3BBLG4IXcjs.lambda_edge_exports; exports.not = _chunkWKYMSRCDcjs.not; exports.rule = _chunkWKYMSRCDcjs.rule; exports.runRules = _chunkWKYMSRCDcjs.runRules;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { BehaviorFn, BehaviorResult, CriteriaFn, HttpRequest, HttpResponse, ResponseBehaviorFn, ResponseRule, Rule, ViewerRequestHandler, ViewerResponseHandler } from './core/types.cjs';
2
2
  export { all, any, chain, not, rule, runRules } from './core/rule.cjs';
3
- export { c as cfFunction } from './viewer-response-DIQHy8L7.cjs';
3
+ export { c as cfFunction } from './cf-function-BkfWpTfl.cjs';
4
4
  export { l as lambdaEdge } from './lambda-edge-9xiONGmR.cjs';
5
+ import './adapters/viewer-request.cjs';
6
+ import './adapters/viewer-response.cjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { BehaviorFn, BehaviorResult, CriteriaFn, HttpRequest, HttpResponse, ResponseBehaviorFn, ResponseRule, Rule, ViewerRequestHandler, ViewerResponseHandler } from './core/types.js';
2
2
  export { all, any, chain, not, rule, runRules } from './core/rule.js';
3
- export { c as cfFunction } from './viewer-response-C9eF2O9s.js';
3
+ export { c as cfFunction } from './cf-function-CZwCWch-.js';
4
4
  export { l as lambdaEdge } from './lambda-edge-BK3-bFx8.js';
5
+ import './adapters/viewer-request.js';
6
+ import './adapters/viewer-response.js';
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import "./chunk-KZ72PI2A.js";
2
+ import {
3
+ cf_function_exports
4
+ } from "./chunk-PR5UQJCC.js";
2
5
  import {
3
6
  lambda_edge_exports
4
7
  } from "./chunk-WEBU4R5C.js";
5
- import {
6
- cf_function_exports
7
- } from "./chunk-NPMGSPNL.js";
8
+ import "./chunk-BJZPAQHW.js";
8
9
  import {
9
10
  all,
10
11
  any,
@@ -13,6 +14,8 @@ import {
13
14
  rule,
14
15
  runRules
15
16
  } from "./chunk-Q4NP4C3B.js";
17
+ import "./chunk-TURH5IFN.js";
18
+ import "./chunk-CQ7YZ3AR.js";
16
19
  import "./chunk-MLKGABMK.js";
17
20
  export {
18
21
  all,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rayselfs/cf-rule-engine",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "Composable, tree-shakeable CloudFront Function rules",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -1,88 +0,0 @@
1
- import {
2
- runRules
3
- } from "./chunk-Q4NP4C3B.js";
4
- import {
5
- __export
6
- } from "./chunk-MLKGABMK.js";
7
-
8
- // src/adapters/cf-function.ts
9
- var cf_function_exports = {};
10
- __export(cf_function_exports, {
11
- defineViewerRequest: () => defineViewerRequest,
12
- defineViewerResponse: () => defineViewerResponse
13
- });
14
- function normalizeRequest(event) {
15
- const ev = event;
16
- const req = ev.request;
17
- const viewer = ev.viewer;
18
- const headers = req.headers ?? {};
19
- return {
20
- uri: req.uri,
21
- method: req.method,
22
- protocol: "https",
23
- querystring: req.querystring ?? {},
24
- headers,
25
- clientIp: viewer?.ip ?? "",
26
- country: headers["cloudfront-viewer-country"]?.value
27
- };
28
- }
29
- function denormalizeRequest(req, cookies) {
30
- return {
31
- method: req.method,
32
- uri: req.uri,
33
- querystring: req.querystring,
34
- headers: req.headers,
35
- cookies
36
- };
37
- }
38
- function denormalizeResponse(res) {
39
- return {
40
- statusCode: res.statusCode,
41
- statusDescription: res.statusDescription,
42
- headers: res.headers,
43
- body: res.body ?? ""
44
- };
45
- }
46
- function defineViewerRequest(rules) {
47
- return (event) => {
48
- const ev = event;
49
- const evReq = ev.request;
50
- const originalCookies = evReq.cookies ?? {};
51
- const req = normalizeRequest(event);
52
- const result = runRules(rules, req);
53
- if (result.action === "respond") return denormalizeResponse(result.response);
54
- return denormalizeRequest(result.request, originalCookies);
55
- };
56
- }
57
- function defineViewerResponse(responseBehaviors) {
58
- return (event) => {
59
- const ev = event;
60
- const evRes = ev.response;
61
- const req = normalizeRequest(event);
62
- let response = {
63
- statusCode: evRes?.statusCode ?? 200,
64
- statusDescription: evRes?.statusDescription,
65
- headers: evRes?.headers ?? {},
66
- body: evRes?.body
67
- };
68
- for (let i = 0; i < responseBehaviors.length; i++) {
69
- const entry = responseBehaviors[i];
70
- if (typeof entry === "function") {
71
- response = entry(req, response);
72
- } else if (!entry.criteria || entry.criteria(req)) {
73
- response = entry.behavior(req, response);
74
- }
75
- }
76
- const normalized = denormalizeResponse(response);
77
- if (!response.body) {
78
- delete normalized.body;
79
- }
80
- return Object.assign({}, evRes, normalized);
81
- };
82
- }
83
-
84
- export {
85
- defineViewerRequest,
86
- defineViewerResponse,
87
- cf_function_exports
88
- };
@@ -1,88 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkWKYMSRCDcjs = require('./chunk-WKYMSRCD.cjs');
4
-
5
-
6
- var _chunk75ZPJI57cjs = require('./chunk-75ZPJI57.cjs');
7
-
8
- // src/adapters/cf-function.ts
9
- var cf_function_exports = {};
10
- _chunk75ZPJI57cjs.__export.call(void 0, cf_function_exports, {
11
- defineViewerRequest: () => defineViewerRequest,
12
- defineViewerResponse: () => defineViewerResponse
13
- });
14
- function normalizeRequest(event) {
15
- const ev = event;
16
- const req = ev.request;
17
- const viewer = ev.viewer;
18
- const headers = _nullishCoalesce(req.headers, () => ( {}));
19
- return {
20
- uri: req.uri,
21
- method: req.method,
22
- protocol: "https",
23
- querystring: _nullishCoalesce(req.querystring, () => ( {})),
24
- headers,
25
- clientIp: _nullishCoalesce(_optionalChain([viewer, 'optionalAccess', _ => _.ip]), () => ( "")),
26
- country: _optionalChain([headers, 'access', _2 => _2["cloudfront-viewer-country"], 'optionalAccess', _3 => _3.value])
27
- };
28
- }
29
- function denormalizeRequest(req, cookies) {
30
- return {
31
- method: req.method,
32
- uri: req.uri,
33
- querystring: req.querystring,
34
- headers: req.headers,
35
- cookies
36
- };
37
- }
38
- function denormalizeResponse(res) {
39
- return {
40
- statusCode: res.statusCode,
41
- statusDescription: res.statusDescription,
42
- headers: res.headers,
43
- body: _nullishCoalesce(res.body, () => ( ""))
44
- };
45
- }
46
- function defineViewerRequest(rules) {
47
- return (event) => {
48
- const ev = event;
49
- const evReq = ev.request;
50
- const originalCookies = _nullishCoalesce(evReq.cookies, () => ( {}));
51
- const req = normalizeRequest(event);
52
- const result = _chunkWKYMSRCDcjs.runRules.call(void 0, rules, req);
53
- if (result.action === "respond") return denormalizeResponse(result.response);
54
- return denormalizeRequest(result.request, originalCookies);
55
- };
56
- }
57
- function defineViewerResponse(responseBehaviors) {
58
- return (event) => {
59
- const ev = event;
60
- const evRes = ev.response;
61
- const req = normalizeRequest(event);
62
- let response = {
63
- statusCode: _nullishCoalesce(_optionalChain([evRes, 'optionalAccess', _4 => _4.statusCode]), () => ( 200)),
64
- statusDescription: _optionalChain([evRes, 'optionalAccess', _5 => _5.statusDescription]),
65
- headers: _nullishCoalesce(_optionalChain([evRes, 'optionalAccess', _6 => _6.headers]), () => ( {})),
66
- body: _optionalChain([evRes, 'optionalAccess', _7 => _7.body])
67
- };
68
- for (let i = 0; i < responseBehaviors.length; i++) {
69
- const entry = responseBehaviors[i];
70
- if (typeof entry === "function") {
71
- response = entry(req, response);
72
- } else if (!entry.criteria || entry.criteria(req)) {
73
- response = entry.behavior(req, response);
74
- }
75
- }
76
- const normalized = denormalizeResponse(response);
77
- if (!response.body) {
78
- delete normalized.body;
79
- }
80
- return Object.assign({}, evRes, normalized);
81
- };
82
- }
83
-
84
-
85
-
86
-
87
-
88
- exports.defineViewerRequest = defineViewerRequest; exports.defineViewerResponse = defineViewerResponse; exports.cf_function_exports = cf_function_exports;
@@ -1,19 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/behaviors/set-security-headers.ts
2
- function setSecurityHeaders(options) {
3
- const hsts = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.hsts]), () => ( "max-age=31536000; includeSubDomains"));
4
- const xFrameOptions = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _2 => _2.xFrameOptions]), () => ( "SAMEORIGIN"));
5
- const xContentTypeOptions = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _3 => _3.xContentTypeOptions]), () => ( "nosniff"));
6
- return (_request, response) => {
7
- return Object.assign({}, response, {
8
- headers: Object.assign({}, response.headers, {
9
- "strict-transport-security": { value: hsts },
10
- "x-frame-options": { value: xFrameOptions },
11
- "x-content-type-options": { value: xContentTypeOptions }
12
- })
13
- });
14
- };
15
- }
16
-
17
-
18
-
19
- exports.setSecurityHeaders = setSecurityHeaders;
@@ -1,19 +0,0 @@
1
- // src/behaviors/set-security-headers.ts
2
- function setSecurityHeaders(options) {
3
- const hsts = options?.hsts ?? "max-age=31536000; includeSubDomains";
4
- const xFrameOptions = options?.xFrameOptions ?? "SAMEORIGIN";
5
- const xContentTypeOptions = options?.xContentTypeOptions ?? "nosniff";
6
- return (_request, response) => {
7
- return Object.assign({}, response, {
8
- headers: Object.assign({}, response.headers, {
9
- "strict-transport-security": { value: hsts },
10
- "x-frame-options": { value: xFrameOptions },
11
- "x-content-type-options": { value: xContentTypeOptions }
12
- })
13
- });
14
- };
15
- }
16
-
17
- export {
18
- setSecurityHeaders
19
- };