@growthbook/edge-utils 0.2.4 → 0.2.6

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.
package/README.md CHANGED
@@ -59,11 +59,13 @@ Set up an edge key-val store and optionally use a GrowthBook SDK Webhook to keep
59
59
  The GrowthBook Edge App supports a number of configuration options available via environment variables:
60
60
 
61
61
  #### Proxy behavior
62
- - `PROXY_TARGET` - Non-edge url to your website
63
- - `FORWARD_PROXY_HEADERS` - "true" or "1" to preserve response headers from your server (default : `true`)
64
- - `FOLLOW_REDIRECTS` - "true" or "1" to follow redirects when processing an origin response (default : `true`)
62
+ - `PROXY_TARGET` - Origin (non-edge) base URL to your website
63
+ - `FORWARD_PROXY_HEADERS` - "true" or "1" to preserve response headers from your server (default `true`)
64
+ - `FOLLOW_REDIRECTS` - "true" or "1" to follow redirects when processing an origin response (default `true`)
65
65
  - `USE_DEFAULT_CONTENT_TYPE` - "true" or "1" to assume a content-type of "text-html" if no "Content-Type" header was set (default `false`).
66
66
  - `PROCESS_TEXT_HTML_ONLY` - "true" or "1" to only process server responses with the `Content-Type: text/html` header set – others will be proxied through (default `true`).
67
+ - `AUTO_INFLATE` - "true" or "1" to automatically unzip gzipped content. Not needed for most vendors (default: `false`).
68
+ - `NOCACHE_ORIGIN` - "true" or "1" to send "nocache" headers on origin requests. Not needed for most vendors (default: `false`).
67
69
  - `NODE_ENV` - default: `production`
68
70
  - `ROUTES` - JSON encoded array of Routes, rules for intercepting, proxy passing, or erroring based on request URL pattern matching
69
71
 
@@ -74,6 +76,7 @@ The GrowthBook Edge App supports a number of configuration options available via
74
76
  - `RUN_CROSS_ORIGIN_URL_REDIRECT_EXPERIMENTS` - One of `everywhere`, `edge`, `browser`, or `skip` (default `browser`)
75
77
  - `INJECT_REDIRECT_URL_SCRIPT` - "true" or "1" to mutate browser URL via window.history.replaceState() to reflect the redirected URL (default `true`)
76
78
  - `MAX_REDIRECTS` - Number of on-edge redirects calculated before bailing out. Only the final redirect is fetched from your origin. (default `5`)
79
+ - `EXPERIMENT_URL_TARGETING` - URL targeting for visual editor and redirect experiments: `request` targets using the edge worker URL; `origin` uses the origin server URL. (default `request`)
77
80
 
78
81
  #### Front-end SDK hydration
79
82
  - `SCRIPT_INJECTION_PATTERN` - Inject the GrowthBook SDK before this token (default `</head>`)
@@ -102,6 +105,7 @@ The GrowthBook Edge App supports a number of configuration options available via
102
105
 
103
106
  #### Misc
104
107
  - `CONTENT_SECURITY_POLICY` - CSP header value
108
+ - `EMIT_TRACE_HEADERS` - "true" or "1" to set extra headers to detect edge redirect loops and stabilize gbuuid generation (default `true`).
105
109
 
106
110
 
107
111
  ## Lifecycle hooks
package/dist/app.js CHANGED
@@ -27,7 +27,7 @@ function edgeApp(context, req, res,
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  next) {
29
29
  return __awaiter(this, void 0, void 0, function* () {
30
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
30
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
31
31
  /**
32
32
  * 1. Init app variables
33
33
  */
@@ -41,9 +41,18 @@ next) {
41
41
  const setRespCookie = (key, value) => {
42
42
  respCookies[key] = value;
43
43
  };
44
+ // Loop check
45
+ const requestCount = parseInt(((_b = (_a = context.helpers) === null || _a === void 0 ? void 0 : _a.getRequestHeader) === null || _b === void 0 ? void 0 : _b.call(_a, req, "x-gb-request-count")) || "0") + 1;
46
+ if (requestCount > 1) {
47
+ console.error("Edge request loop detected. Count: " + requestCount, requestUrl);
48
+ }
49
+ if (requestCount > context.config.maxRedirects) {
50
+ throw new Error("Edge request loop: max requests reached: " + requestCount);
51
+ }
44
52
  // Initial hook:
45
53
  let hookResp;
46
- hookResp = yield ((_b = (_a = context === null || context === void 0 ? void 0 : context.hooks) === null || _a === void 0 ? void 0 : _a.onRequest) === null || _b === void 0 ? void 0 : _b.call(_a, { context, req, res, next, requestUrl, originUrl }));
54
+ let onRequestParams = { context, req, res, next, requestUrl, originUrl, requestCount };
55
+ hookResp = yield ((_d = (_c = context === null || context === void 0 ? void 0 : context.hooks) === null || _c === void 0 ? void 0 : _c.onRequest) === null || _d === void 0 ? void 0 : _d.call(_c, onRequestParams));
47
56
  if (hookResp)
48
57
  return hookResp;
49
58
  // DOM mutations
@@ -68,7 +77,8 @@ next) {
68
77
  return context.helpers.proxyRequest(context, req, res, next);
69
78
  }
70
79
  // Custom route behavior via hook:
71
- hookResp = yield ((_d = (_c = context === null || context === void 0 ? void 0 : context.hooks) === null || _c === void 0 ? void 0 : _c.onRoute) === null || _d === void 0 ? void 0 : _d.call(_c, { context, req, res, next, requestUrl, originUrl, route }));
80
+ const onRouteParams = Object.assign(Object.assign({}, onRequestParams), { route });
81
+ hookResp = yield ((_f = (_e = context === null || context === void 0 ? void 0 : context.hooks) === null || _e === void 0 ? void 0 : _e.onRoute) === null || _f === void 0 ? void 0 : _f.call(_e, onRouteParams));
72
82
  if (hookResp)
73
83
  return hookResp;
74
84
  /**
@@ -76,15 +86,16 @@ next) {
76
86
  */
77
87
  const attributes = (0, attributes_1.getUserAttributes)(context, req, requestUrl, setRespCookie);
78
88
  // Hook to allow enriching user attributes, etc
79
- hookResp = yield ((_f = (_e = context === null || context === void 0 ? void 0 : context.hooks) === null || _e === void 0 ? void 0 : _e.onUserAttributes) === null || _f === void 0 ? void 0 : _f.call(_e, { context, req, res, next, requestUrl, originUrl, route, attributes }));
89
+ const onUserAttributesParams = Object.assign(Object.assign({}, onRouteParams), { attributes });
90
+ hookResp = yield ((_h = (_g = context === null || context === void 0 ? void 0 : context.hooks) === null || _g === void 0 ? void 0 : _g.onUserAttributes) === null || _h === void 0 ? void 0 : _h.call(_g, onUserAttributesParams));
80
91
  if (hookResp)
81
92
  return hookResp;
82
93
  /**
83
94
  * 4. Init GrowthBook SDK
84
95
  */
85
96
  (0, growthbook_1.setPolyfills)({
86
- localStorage: (_g = context.config) === null || _g === void 0 ? void 0 : _g.localStorage,
87
- SubtleCrypto: (_h = context.config) === null || _h === void 0 ? void 0 : _h.crypto,
97
+ localStorage: (_j = context.config) === null || _j === void 0 ? void 0 : _j.localStorage,
98
+ SubtleCrypto: (_k = context.config) === null || _k === void 0 ? void 0 : _k.crypto,
88
99
  });
89
100
  if (context.config.staleTTL !== undefined)
90
101
  (0, growthbook_1.configureCache)({ staleTTL: context.config.staleTTL });
@@ -93,7 +104,7 @@ next) {
93
104
  let stickyBucketService;
94
105
  if (context.config.enableStickyBucketing) {
95
106
  stickyBucketService =
96
- (_j = context.config.edgeStickyBucketService) !== null && _j !== void 0 ? _j : new stickyBucketService_1.EdgeStickyBucketService({
107
+ (_l = context.config.edgeStickyBucketService) !== null && _l !== void 0 ? _l : new stickyBucketService_1.EdgeStickyBucketService({
97
108
  context,
98
109
  prefix: context.config.stickyBucketPrefix,
99
110
  req,
@@ -109,7 +120,7 @@ next) {
109
120
  return () => {
110
121
  };
111
122
  },
112
- url: requestUrl,
123
+ url: context.config.experimentUrlTargeting === "origin" ? originUrl : requestUrl,
113
124
  disableVisualExperiments: ["skip", "browser"].includes(context.config.runVisualEditorExperiments),
114
125
  disableJsInjection: context.config.disableJsInjection,
115
126
  disableUrlRedirectExperiments: ["skip", "browser"].includes(context.config.runUrlRedirectExperiments),
@@ -121,7 +132,8 @@ next) {
121
132
  payload: context.config.payload,
122
133
  });
123
134
  // Hook to perform any custom logic given the initialized SDK
124
- hookResp = yield ((_l = (_k = context === null || context === void 0 ? void 0 : context.hooks) === null || _k === void 0 ? void 0 : _k.onGrowthbookInit) === null || _l === void 0 ? void 0 : _l.call(_k, { context, req, res, next, requestUrl, originUrl, route, attributes, growthbook }));
135
+ const onGrowthbookInitParams = Object.assign(Object.assign({}, onUserAttributesParams), { growthbook });
136
+ hookResp = yield ((_o = (_m = context === null || context === void 0 ? void 0 : context.hooks) === null || _m === void 0 ? void 0 : _m.onGrowthbookInit) === null || _o === void 0 ? void 0 : _o.call(_m, onGrowthbookInitParams));
125
137
  if (hookResp)
126
138
  return hookResp;
127
139
  /**
@@ -132,32 +144,38 @@ next) {
132
144
  req,
133
145
  setRespCookie,
134
146
  growthbook,
135
- previousUrl: requestUrl,
147
+ previousUrl: context.config.experimentUrlTargeting === "origin" ? originUrl : requestUrl,
136
148
  resetDomChanges,
137
149
  setPreRedirectChangeIds: setPreRedirectChangeIds,
138
150
  });
139
151
  originUrl = getOriginUrl(context, redirectRequestUrl, redirectRequestUrl !== requestUrl);
140
152
  // Pre-origin-fetch hook (after redirect logic):
141
- hookResp = yield ((_o = (_m = context === null || context === void 0 ? void 0 : context.hooks) === null || _m === void 0 ? void 0 : _m.onBeforeOriginFetch) === null || _o === void 0 ? void 0 : _o.call(_m, { context, req, res, next, requestUrl, redirectRequestUrl, originUrl, route, attributes, growthbook }));
153
+ const onBeforeOriginFetchParams = Object.assign(Object.assign({}, onGrowthbookInitParams), { redirectRequestUrl, originUrl });
154
+ hookResp = yield ((_q = (_p = context === null || context === void 0 ? void 0 : context.hooks) === null || _p === void 0 ? void 0 : _p.onBeforeOriginFetch) === null || _q === void 0 ? void 0 : _q.call(_p, onBeforeOriginFetchParams));
142
155
  if (hookResp)
143
156
  return hookResp;
144
157
  /**
145
158
  * 6. Fetch from origin, parse body / DOM
146
159
  */
147
160
  try {
148
- originResponse = (yield context.helpers.fetch(context, originUrl, req));
161
+ originResponse = (yield context.helpers.fetch(context, originUrl, req, context.config.emitTraceHeaders ? {
162
+ additionalHeaders: {
163
+ "x-gb-request-count": ("" + requestCount),
164
+ "x-gbuuid": (_r = growthbook.getAttributes()) === null || _r === void 0 ? void 0 : _r[context.config.uuidKey],
165
+ }
166
+ } : undefined));
149
167
  }
150
168
  catch (e) {
151
169
  console.error(e);
152
170
  }
153
171
  const originStatus = originResponse ? parseInt(originResponse.status ? originResponse.status + "" : "400") : 500;
154
172
  // On fetch hook (for custom response processing, etc)
155
- hookResp = yield ((_q = (_p = context === null || context === void 0 ? void 0 : context.hooks) === null || _p === void 0 ? void 0 : _p.onOriginFetch) === null || _q === void 0 ? void 0 : _q.call(_p, { context, req, res, next, requestUrl, redirectRequestUrl, originUrl, route, attributes, growthbook, originResponse, originStatus }));
173
+ const onOriginFetchParams = Object.assign(Object.assign({}, onBeforeOriginFetchParams), { originResponse, originStatus });
174
+ hookResp = yield ((_t = (_s = context === null || context === void 0 ? void 0 : context.hooks) === null || _s === void 0 ? void 0 : _s.onOriginFetch) === null || _t === void 0 ? void 0 : _t.call(_s, onOriginFetchParams));
156
175
  if (hookResp)
157
176
  return hookResp;
158
177
  // Standard error response handling
159
178
  if (originStatus >= 500 || !originResponse) {
160
- console.error("Fetch: 5xx status returned");
161
179
  return context.helpers.sendResponse(context, res, {}, "Error fetching page", {}, 500);
162
180
  }
163
181
  if (originStatus >= 400) {
@@ -173,26 +191,40 @@ next) {
173
191
  if (context.config.useDefaultContentType && !resHeaders["content-type"]) {
174
192
  resHeaders["content-type"] = "text/html";
175
193
  }
176
- if (context.config.processTextHtmlOnly && !((_r = resHeaders["content-type"]) !== null && _r !== void 0 ? _r : "").includes("text/html")) {
194
+ if (context.config.processTextHtmlOnly && !((_u = resHeaders["content-type"]) !== null && _u !== void 0 ? _u : "").includes("text/html")) {
177
195
  return context.helpers.proxyRequest(context, req, res, next);
178
196
  }
179
197
  const { csp, nonce } = (0, inject_1.getCspInfo)(context);
180
198
  if (csp) {
181
199
  resHeaders["content-security-policy"] = csp;
182
200
  }
183
- let body = (_s = yield originResponse.text()) !== null && _s !== void 0 ? _s : "";
184
- // Check if content-encoding is gzip
185
- if (originHeaders["content-encoding"] === "gzip") {
186
- delete resHeaders["content-encoding"]; // do not forward this header since it's now unzipped
187
- if (!body) {
188
- try {
189
- const buffer = yield originResponse.arrayBuffer();
201
+ const autoInflate = context.config.autoInflate; // fastly only!!!
202
+ let body = "";
203
+ const isGzipped = originHeaders["content-encoding"] === "gzip";
204
+ try {
205
+ const buffer = yield originResponse.arrayBuffer();
206
+ try {
207
+ if (isGzipped && autoInflate) {
190
208
  body = pako_1.default.inflate(new Uint8Array(buffer), { to: "string" });
191
209
  }
192
- catch (e) {
193
- console.error(e);
210
+ else {
211
+ body = new TextDecoder().decode(buffer);
194
212
  }
195
213
  }
214
+ catch (_z) {
215
+ if (isGzipped) {
216
+ body = pako_1.default.inflate(new Uint8Array(buffer), { to: "string" });
217
+ }
218
+ else {
219
+ throw new Error("Failed to decode response as text.");
220
+ }
221
+ }
222
+ if (isGzipped) {
223
+ delete resHeaders["content-encoding"]; // Remove to prevent double decompression
224
+ }
225
+ }
226
+ catch (e) {
227
+ console.error("Response decoding error", e);
196
228
  }
197
229
  let setBody = (s) => {
198
230
  body = s;
@@ -202,7 +234,8 @@ next) {
202
234
  root = (0, node_html_parser_1.parse)(body);
203
235
  }
204
236
  // Body ready hook (pre-DOM-mutations):
205
- hookResp = yield ((_u = (_t = context === null || context === void 0 ? void 0 : context.hooks) === null || _t === void 0 ? void 0 : _t.onBodyReady) === null || _u === void 0 ? void 0 : _u.call(_t, { context, req, res, next, requestUrl, redirectRequestUrl, originUrl, route, attributes, growthbook, originResponse, originStatus, originHeaders, resHeaders, body, setBody, root }));
237
+ const onBodyReadyParams = Object.assign(Object.assign({}, onOriginFetchParams), { originHeaders, resHeaders, body, setBody, root });
238
+ hookResp = yield ((_w = (_v = context === null || context === void 0 ? void 0 : context.hooks) === null || _v === void 0 ? void 0 : _v.onBodyReady) === null || _w === void 0 ? void 0 : _w.call(_v, onBodyReadyParams));
206
239
  if (hookResp)
207
240
  return hookResp;
208
241
  /**
@@ -230,7 +263,8 @@ next) {
230
263
  oldUrl: requestUrl,
231
264
  });
232
265
  // Final hook (post-mutations) before sending back
233
- hookResp = yield ((_w = (_v = context === null || context === void 0 ? void 0 : context.hooks) === null || _v === void 0 ? void 0 : _v.onBeforeResponse) === null || _w === void 0 ? void 0 : _w.call(_v, { context, req, res, next, requestUrl, redirectRequestUrl, originUrl, route, attributes, growthbook, originResponse, originStatus, originHeaders, resHeaders, body, setBody }));
266
+ const onBeforeResponseParams = Object.assign(Object.assign({}, onOriginFetchParams), { originHeaders, resHeaders, body, setBody });
267
+ hookResp = yield ((_y = (_x = context === null || context === void 0 ? void 0 : context.hooks) === null || _x === void 0 ? void 0 : _x.onBeforeResponse) === null || _y === void 0 ? void 0 : _y.call(_x, onBeforeResponseParams));
234
268
  if (hookResp)
235
269
  return hookResp;
236
270
  /**
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Attributes } from "@growthbook/growthbook";
2
2
  import { Context } from "./types";
3
- export declare function getUserAttributes<Req, Res>(ctx: Context<Req, Res>, req: Req, url: string, setRespCookie: (key: string, value: string) => void): Attributes;
3
+ export declare function getUserAttributes<Req, Res>(ctx: Context<Req, Res>, req: Req, url: string, setRespCookie: (key: string, value: string) => void, skipUuid?: boolean): Attributes;
4
4
  export declare function getUUID<Req, Res>(ctx: Context<Req, Res>, req: Req): any;
5
- export declare function getAutoAttributes<Req, Res>(ctx: Context<Req, Res>, req: Req, url: string): Attributes;
5
+ export declare function getAutoAttributes<Req, Res>(ctx: Context<Req, Res>, req: Req, url: string, skipUuid?: boolean): Attributes;
@@ -4,27 +4,30 @@ exports.getUserAttributes = getUserAttributes;
4
4
  exports.getUUID = getUUID;
5
5
  exports.getAutoAttributes = getAutoAttributes;
6
6
  // Get the user's attributes by merging the UUID cookie with any auto-attributes
7
- function getUserAttributes(ctx, req, url, setRespCookie) {
7
+ function getUserAttributes(ctx, req, url, setRespCookie, skipUuid = false) {
8
8
  const { config, helpers } = ctx;
9
9
  const providedAttributes = config.attributes || {};
10
10
  if (config.skipAutoAttributes) {
11
11
  return providedAttributes;
12
12
  }
13
- // get any saved attributes from the cookie
14
- const uuid = getUUID(ctx, req);
15
- if (config.persistUuid && !config.noAutoCookies) {
16
- if (!(helpers === null || helpers === void 0 ? void 0 : helpers.setCookie)) {
17
- throw new Error("Missing required dependencies");
13
+ if (!skipUuid) {
14
+ // get any saved attributes from the cookie
15
+ const uuid = getUUID(ctx, req);
16
+ if (config.persistUuid && !config.noAutoCookies) {
17
+ if (!(helpers === null || helpers === void 0 ? void 0 : helpers.setCookie)) {
18
+ throw new Error("Missing required dependencies");
19
+ }
20
+ setRespCookie(config.uuidCookieName, uuid);
18
21
  }
19
- setRespCookie(config.uuidCookieName, uuid);
20
22
  }
21
- const autoAttributes = getAutoAttributes(ctx, req, url);
23
+ const autoAttributes = getAutoAttributes(ctx, req, url, skipUuid);
22
24
  return Object.assign(Object.assign({}, autoAttributes), providedAttributes);
23
25
  }
24
26
  // Get or create a UUID for the user:
25
27
  // - Try to get the UUID from the cookie
26
28
  // - Or create a new one and store in the cookie
27
29
  function getUUID(ctx, req) {
30
+ var _a;
28
31
  const { config, helpers } = ctx;
29
32
  const crypto = (config === null || config === void 0 ? void 0 : config.crypto) || (globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto);
30
33
  if (!crypto || !(helpers === null || helpers === void 0 ? void 0 : helpers.getCookie)) {
@@ -38,17 +41,21 @@ function getUUID(ctx, req) {
38
41
  (15 >> (c / 4)))).toString(16));
39
42
  };
40
43
  // get the existing UUID from cookie if set, otherwise create one
41
- return helpers.getCookie(req, config.uuidCookieName) || genUUID();
44
+ return helpers.getCookie(req, config.uuidCookieName)
45
+ || ((_a = helpers === null || helpers === void 0 ? void 0 : helpers.getRequestHeader) === null || _a === void 0 ? void 0 : _a.call(helpers, req, "x-gbuuid"))
46
+ || genUUID();
42
47
  }
43
48
  // Infer attributes from the request
44
49
  // - UUID will come from the cookie or be generated
45
50
  // - Other attributes come from the request headers and URL
46
- function getAutoAttributes(ctx, req, url) {
51
+ function getAutoAttributes(ctx, req, url, skipUuid = false) {
47
52
  const { config, helpers } = ctx;
48
53
  const getHeader = helpers === null || helpers === void 0 ? void 0 : helpers.getRequestHeader;
49
- let autoAttributes = {
50
- [config.uuidKey]: getUUID(ctx, req),
51
- };
54
+ let autoAttributes = skipUuid
55
+ ? {}
56
+ : {
57
+ [config.uuidKey]: getUUID(ctx, req),
58
+ };
52
59
  const ua = (getHeader === null || getHeader === void 0 ? void 0 : getHeader(req, "user-agent")) || "";
53
60
  autoAttributes.browser = ua.match(/Edg/)
54
61
  ? "edge"
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Config, Context, ExperimentRunEnvironment } from "./types";
1
+ import { Config, Context, ExperimentRunEnvironment, ExperimentUrlTargeting } from "./types";
2
2
  type Req = any;
3
3
  type Res = any;
4
4
  export declare const defaultContext: Context<Req, Res>;
@@ -8,6 +8,8 @@ export interface ConfigEnv {
8
8
  FOLLOW_REDIRECTS?: string;
9
9
  USE_DEFAULT_CONTENT_TYPE?: string;
10
10
  PROCESS_TEXT_HTML_ONLY?: string;
11
+ AUTO_INFLATE?: string;
12
+ NOCACHE_ORIGIN?: string;
11
13
  NODE_ENV?: string;
12
14
  MAX_PAYLOAD_SIZE?: string;
13
15
  ROUTES?: string;
@@ -18,6 +20,7 @@ export interface ConfigEnv {
18
20
  RUN_CROSS_ORIGIN_URL_REDIRECT_EXPERIMENTS?: ExperimentRunEnvironment;
19
21
  INJECT_REDIRECT_URL_SCRIPT?: string;
20
22
  MAX_REDIRECTS?: string;
23
+ EXPERIMENT_URL_TARGETING?: ExperimentUrlTargeting;
21
24
  SCRIPT_INJECTION_PATTERN?: string;
22
25
  DISABLE_INJECTIONS?: string;
23
26
  ENABLE_STREAMING?: string;
@@ -25,6 +28,7 @@ export interface ConfigEnv {
25
28
  STICKY_BUCKET_PREFIX?: string;
26
29
  CONTENT_SECURITY_POLICY?: string;
27
30
  NONCE?: string;
31
+ EMIT_TRACE_HEADERS?: string;
28
32
  GROWTHBOOK_API_HOST?: string;
29
33
  GROWTHBOOK_CLIENT_KEY?: string;
30
34
  GROWTHBOOK_DECRYPTION_KEY?: string;
package/dist/config.js CHANGED
@@ -9,6 +9,8 @@ exports.defaultContext = {
9
9
  followRedirects: true,
10
10
  useDefaultContentType: false,
11
11
  processTextHtmlOnly: true,
12
+ autoInflate: false,
13
+ nocacheOrigin: false,
12
14
  environment: "production",
13
15
  maxPayloadSize: "2mb",
14
16
  runVisualEditorExperiments: "everywhere",
@@ -18,10 +20,12 @@ exports.defaultContext = {
18
20
  runCrossOriginUrlRedirectExperiments: "browser",
19
21
  injectRedirectUrlScript: true,
20
22
  maxRedirects: 5,
23
+ experimentUrlTargeting: "request",
21
24
  scriptInjectionPattern: "</head>",
22
25
  disableInjections: false,
23
26
  enableStreaming: false,
24
27
  enableStickyBucketing: false,
28
+ emitTraceHeaders: true,
25
29
  apiHost: "",
26
30
  clientKey: "",
27
31
  persistUuid: false,
@@ -51,16 +55,18 @@ exports.defaultContext = {
51
55
  };
52
56
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
57
  function getConfig(env) {
54
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
58
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
55
59
  const config = exports.defaultContext.config;
56
60
  config.proxyTarget = (_a = env.PROXY_TARGET) !== null && _a !== void 0 ? _a : exports.defaultContext.config.proxyTarget;
57
61
  config.forwardProxyHeaders = ["true", "1"].includes((_b = env.FORWARD_PROXY_HEADERS) !== null && _b !== void 0 ? _b : "" + exports.defaultContext.config.forwardProxyHeaders);
58
62
  config.followRedirects = ["true", "1"].includes((_c = env.FOLLOW_REDIRECTS) !== null && _c !== void 0 ? _c : "" + exports.defaultContext.config.followRedirects);
59
63
  config.useDefaultContentType = ["true", "1"].includes((_d = env.USE_DEFAULT_CONTENT_TYPE) !== null && _d !== void 0 ? _d : "" + exports.defaultContext.config.useDefaultContentType);
60
64
  config.processTextHtmlOnly = ["true", "1"].includes((_e = env.PROCESS_TEXT_HTML_ONLY) !== null && _e !== void 0 ? _e : "" + exports.defaultContext.config.processTextHtmlOnly);
61
- config.environment = (_f = env.NODE_ENV) !== null && _f !== void 0 ? _f : exports.defaultContext.config.environment;
65
+ config.autoInflate = ["true", "1"].includes((_f = env.AUTO_INFLATE) !== null && _f !== void 0 ? _f : "" + exports.defaultContext.config.autoInflate);
66
+ config.nocacheOrigin = ["true", "1"].includes((_g = env.NOCACHE_ORIGIN) !== null && _g !== void 0 ? _g : "" + exports.defaultContext.config.nocacheOrigin);
67
+ config.environment = (_h = env.NODE_ENV) !== null && _h !== void 0 ? _h : exports.defaultContext.config.environment;
62
68
  config.maxPayloadSize =
63
- (_g = env.MAX_PAYLOAD_SIZE) !== null && _g !== void 0 ? _g : exports.defaultContext.config.maxPayloadSize;
69
+ (_j = env.MAX_PAYLOAD_SIZE) !== null && _j !== void 0 ? _j : exports.defaultContext.config.maxPayloadSize;
64
70
  try {
65
71
  config.routes = JSON.parse(env.ROUTES || "[]");
66
72
  }
@@ -68,32 +74,35 @@ function getConfig(env) {
68
74
  console.error("Error parsing ROUTES", e);
69
75
  config.routes = [];
70
76
  }
71
- config.runVisualEditorExperiments = ((_h = env.RUN_VISUAL_EDITOR_EXPERIMENTS) !== null && _h !== void 0 ? _h : exports.defaultContext.config
77
+ config.runVisualEditorExperiments = ((_k = env.RUN_VISUAL_EDITOR_EXPERIMENTS) !== null && _k !== void 0 ? _k : exports.defaultContext.config
72
78
  .runVisualEditorExperiments);
73
- config.disableJsInjection = ["true", "1"].includes((_j = env.DISABLE_JS_INJECTION) !== null && _j !== void 0 ? _j : "" + exports.defaultContext.config.disableJsInjection);
74
- config.alwaysParseDOM = ["true", "1"].includes((_k = env.ALWAYS_PARSE_DOM) !== null && _k !== void 0 ? _k : "" + exports.defaultContext.config.alwaysParseDOM);
75
- config.runUrlRedirectExperiments = ((_l = env.RUN_URL_REDIRECT_EXPERIMENTS) !== null && _l !== void 0 ? _l : exports.defaultContext.config
79
+ config.disableJsInjection = ["true", "1"].includes((_l = env.DISABLE_JS_INJECTION) !== null && _l !== void 0 ? _l : "" + exports.defaultContext.config.disableJsInjection);
80
+ config.alwaysParseDOM = ["true", "1"].includes((_m = env.ALWAYS_PARSE_DOM) !== null && _m !== void 0 ? _m : "" + exports.defaultContext.config.alwaysParseDOM);
81
+ config.runUrlRedirectExperiments = ((_o = env.RUN_URL_REDIRECT_EXPERIMENTS) !== null && _o !== void 0 ? _o : exports.defaultContext.config
76
82
  .runUrlRedirectExperiments);
77
83
  config.runCrossOriginUrlRedirectExperiments =
78
- ((_m = env.RUN_CROSS_ORIGIN_URL_REDIRECT_EXPERIMENTS) !== null && _m !== void 0 ? _m : exports.defaultContext.config
84
+ ((_p = env.RUN_CROSS_ORIGIN_URL_REDIRECT_EXPERIMENTS) !== null && _p !== void 0 ? _p : exports.defaultContext.config
79
85
  .runCrossOriginUrlRedirectExperiments);
80
- config.injectRedirectUrlScript = ["true", "1"].includes((_o = env.INJECT_REDIRECT_URL_SCRIPT) !== null && _o !== void 0 ? _o : "" + exports.defaultContext.config.injectRedirectUrlScript);
86
+ config.injectRedirectUrlScript = ["true", "1"].includes((_q = env.INJECT_REDIRECT_URL_SCRIPT) !== null && _q !== void 0 ? _q : "" + exports.defaultContext.config.injectRedirectUrlScript);
81
87
  config.maxRedirects = parseInt(env.MAX_REDIRECTS || "" + exports.defaultContext.config.maxRedirects);
88
+ config.experimentUrlTargeting = ((_r = env.EXPERIMENT_URL_TARGETING) !== null && _r !== void 0 ? _r : exports.defaultContext.config
89
+ .experimentUrlTargeting);
82
90
  config.scriptInjectionPattern =
83
91
  env.SCRIPT_INJECTION_PATTERN ||
84
92
  exports.defaultContext.config.scriptInjectionPattern;
85
- config.disableInjections = ["true", "1"].includes((_p = env.DISABLE_INJECTIONS) !== null && _p !== void 0 ? _p : "" + exports.defaultContext.config.disableInjections);
86
- config.enableStreaming = ["true", "1"].includes((_q = env.ENABLE_STREAMING) !== null && _q !== void 0 ? _q : "" + exports.defaultContext.config.enableStreaming);
87
- config.enableStickyBucketing = ["true", "1"].includes((_r = env.ENABLE_STICKY_BUCKETING) !== null && _r !== void 0 ? _r : "" + exports.defaultContext.config.enableStickyBucketing);
93
+ config.disableInjections = ["true", "1"].includes((_s = env.DISABLE_INJECTIONS) !== null && _s !== void 0 ? _s : "" + exports.defaultContext.config.disableInjections);
94
+ config.enableStreaming = ["true", "1"].includes((_t = env.ENABLE_STREAMING) !== null && _t !== void 0 ? _t : "" + exports.defaultContext.config.enableStreaming);
95
+ config.enableStickyBucketing = ["true", "1"].includes((_u = env.ENABLE_STICKY_BUCKETING) !== null && _u !== void 0 ? _u : "" + exports.defaultContext.config.enableStickyBucketing);
88
96
  "STICKY_BUCKET_PREFIX" in env &&
89
97
  (config.stickyBucketPrefix = env.STICKY_BUCKET_PREFIX);
90
98
  config.contentSecurityPolicy = env.CONTENT_SECURITY_POLICY || "";
91
99
  // warning: for testing only; nonce should be unique per request
92
100
  config.nonce = env.NONCE || undefined;
93
101
  config.crypto = crypto;
102
+ config.emitTraceHeaders = ["true", "1"].includes((_v = env.EMIT_TRACE_HEADERS) !== null && _v !== void 0 ? _v : "" + exports.defaultContext.config.emitTraceHeaders);
94
103
  // growthbook
95
- config.apiHost = ((_s = env.GROWTHBOOK_API_HOST) !== null && _s !== void 0 ? _s : "").replace(/\/*$/, "");
96
- config.clientKey = (_t = env.GROWTHBOOK_CLIENT_KEY) !== null && _t !== void 0 ? _t : "";
104
+ config.apiHost = ((_w = env.GROWTHBOOK_API_HOST) !== null && _w !== void 0 ? _w : "").replace(/\/*$/, "");
105
+ config.clientKey = (_x = env.GROWTHBOOK_CLIENT_KEY) !== null && _x !== void 0 ? _x : "";
97
106
  "GROWTHBOOK_DECRYPTION_KEY" in env &&
98
107
  (config.decryptionKey = env.GROWTHBOOK_DECRYPTION_KEY);
99
108
  "GROWTHBOOK_TRACKING_CALLBACK" in env &&
@@ -106,12 +115,12 @@ function getConfig(env) {
106
115
  console.error("Error parsing GROWTHBOOK_PAYLOAD", e);
107
116
  }
108
117
  "STALE_TTL" in env && (config.staleTTL = parseInt(env.STALE_TTL || (1000 * 60) + ""));
109
- config.persistUuid = ["true", "1"].includes((_u = env.PERSIST_UUID) !== null && _u !== void 0 ? _u : "" + exports.defaultContext.config.persistUuid);
110
- config.noAutoCookies = ["true", "1"].includes((_v = env.NO_AUTO_COOKIES) !== null && _v !== void 0 ? _v : "" + exports.defaultContext.config.noAutoCookies);
118
+ config.persistUuid = ["true", "1"].includes((_y = env.PERSIST_UUID) !== null && _y !== void 0 ? _y : "" + exports.defaultContext.config.persistUuid);
119
+ config.noAutoCookies = ["true", "1"].includes((_z = env.NO_AUTO_COOKIES) !== null && _z !== void 0 ? _z : "" + exports.defaultContext.config.noAutoCookies);
111
120
  config.uuidCookieName =
112
121
  env.UUID_COOKIE_NAME || exports.defaultContext.config.uuidCookieName;
113
122
  config.uuidKey = env.UUID_KEY || exports.defaultContext.config.uuidKey;
114
- config.skipAutoAttributes = ["true", "1"].includes((_w = env.SKIP_AUTO_ATTRIBUTES) !== null && _w !== void 0 ? _w : "" + exports.defaultContext.config.skipAutoAttributes);
123
+ config.skipAutoAttributes = ["true", "1"].includes((_0 = env.SKIP_AUTO_ATTRIBUTES) !== null && _0 !== void 0 ? _0 : "" + exports.defaultContext.config.skipAutoAttributes);
115
124
  return config;
116
125
  }
117
126
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}