@growthbook/edge-utils 0.1.0 → 0.1.2

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
@@ -19,7 +19,7 @@ The **GrowthBook Edge App** provides turnkey Visual Editor and URL Redirect expe
19
19
  To run the edge app, add our base app to request handler to your project. You will need to manually build app context and helper functions:
20
20
 
21
21
  ```javascript
22
- import { edgeApp, getConfig } from "@growthbook/edge-utils";
22
+ import { edgeApp, getConfig, defaultContext } from "@growthbook/edge-utils";
23
23
 
24
24
  export async function handler(request, env) {
25
25
  const context = await init(env);
@@ -27,7 +27,8 @@ export async function handler(request, env) {
27
27
  }
28
28
 
29
29
  function init(env) {
30
- const context = getConfig(env);
30
+ const context = defaultContext;
31
+ context.config = getConfig(env);
31
32
  context.helpers = {
32
33
  // define utility functions for request/response manipulation
33
34
  };
package/dist/redirect.js CHANGED
@@ -22,18 +22,17 @@ function redirect({ context, req, setCookie, growthbook, previousUrl, resetDomCh
22
22
  if (!newUrl)
23
23
  return previousUrl;
24
24
  while (previousUrl != newUrl) {
25
- newUrl = previousUrl;
26
25
  if (redirectCount >= maxRedirects)
27
26
  return previousUrl;
28
27
  // clear visual experiment effects since we're no longer on the same page
29
28
  resetDomChanges();
30
29
  // keep track of experiments that triggered prior to final redirect
31
30
  setPreRedirectChangeIds(growthbook.getCompletedChangeIds());
32
- // change the URL to trigger the experiment
31
+ // update attributes and change the URL to trigger the experiment
33
32
  yield growthbook.setAttributes((0, attributes_1.getUserAttributes)(context, req, newUrl, setCookie));
34
33
  yield growthbook.setURL(newUrl);
35
34
  previousUrl = newUrl;
36
- newUrl = growthbook.getRedirectUrl();
35
+ newUrl = growthbook.getRedirectUrl() || previousUrl;
37
36
  redirectCount++;
38
37
  }
39
38
  return newUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,6CAAiD;AAEjD,SAA8B,QAAQ,CAAC,EACrC,OAAO,EACP,GAAG,EACH,SAAS,EACT,UAAU,EACV,WAAW,EACX,eAAe,EACf,uBAAuB,GASxB;;QACC,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAChE,OAAO,CAAC,MAAM,CAAC,yBAAyB,CACzC,CAAC;QACF,IAAI,6BAA6B;YAAE,OAAO,WAAW,CAAC;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,IAAI,MAAM,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QACzC,cAAc;QACd,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QAEhC,OAAO,WAAW,IAAI,MAAM,EAAE;YAC5B,MAAM,GAAG,WAAW,CAAC;YACrB,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,WAAW,CAAC;YAEtD,yEAAyE;YACzE,eAAe,EAAE,CAAC;YAClB,mEAAmE;YACnE,uBAAuB,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAE5D,2CAA2C;YAC3C,MAAM,UAAU,CAAC,aAAa,CAC5B,IAAA,8BAAiB,EAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CACnD,CAAC;YACF,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,WAAW,GAAG,MAAM,CAAC;YACrB,MAAM,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YACrC,aAAa,EAAE,CAAC;SACjB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAhDD,2BAgDC"}
1
+ {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,6CAAiD;AAEjD,SAA8B,QAAQ,CAAC,EACrC,OAAO,EACP,GAAG,EACH,SAAS,EACT,UAAU,EACV,WAAW,EACX,eAAe,EACf,uBAAuB,GASxB;;QACC,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAChE,OAAO,CAAC,MAAM,CAAC,yBAAyB,CACzC,CAAC;QACF,IAAI,6BAA6B;YAAE,OAAO,WAAW,CAAC;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,IAAI,MAAM,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QACzC,cAAc;QACd,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QAEhC,OAAO,WAAW,IAAI,MAAM,EAAE;YAC5B,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,WAAW,CAAC;YAEtD,yEAAyE;YACzE,eAAe,EAAE,CAAC;YAClB,mEAAmE;YACnE,uBAAuB,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAE5D,iEAAiE;YACjE,MAAM,UAAU,CAAC,aAAa,CAC5B,IAAA,8BAAiB,EAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CACnD,CAAC;YACF,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEhC,WAAW,GAAG,MAAM,CAAC;YACrB,MAAM,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC;YAEpD,aAAa,EAAE,CAAC;SACjB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAjDD,2BAiDC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@growthbook/edge-utils",
3
3
  "description": "Edge worker base app",
4
- "version": "0.1.0",
4
+ "version": "0.1.2",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",
7
7
  "repository": {
package/src/redirect.ts CHANGED
@@ -32,7 +32,6 @@ export default async function redirect({
32
32
  if (!newUrl) return previousUrl;
33
33
 
34
34
  while (previousUrl != newUrl) {
35
- newUrl = previousUrl;
36
35
  if (redirectCount >= maxRedirects) return previousUrl;
37
36
 
38
37
  // clear visual experiment effects since we're no longer on the same page
@@ -40,13 +39,15 @@ export default async function redirect({
40
39
  // keep track of experiments that triggered prior to final redirect
41
40
  setPreRedirectChangeIds(growthbook.getCompletedChangeIds());
42
41
 
43
- // change the URL to trigger the experiment
42
+ // update attributes and change the URL to trigger the experiment
44
43
  await growthbook.setAttributes(
45
44
  getUserAttributes(context, req, newUrl, setCookie),
46
45
  );
47
46
  await growthbook.setURL(newUrl);
47
+
48
48
  previousUrl = newUrl;
49
- newUrl = growthbook.getRedirectUrl();
49
+ newUrl = growthbook.getRedirectUrl() || previousUrl;
50
+
50
51
  redirectCount++;
51
52
  }
52
53
  return newUrl;