@se-studio/ab-testing 18.1.0 → 18.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @se-studio/ab-testing
2
2
 
3
+ ## 18.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e4796f8: Prune inactive A/B cookie entries more reliably: expire `ab-test-info` when the assignment map is empty after prune, and cover static middleware Set-Cookie behaviour when a bake drops a test.
8
+
9
+ ## 18.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 3177455: AbTestStickyNavScript: beforeInteractive DOM patch for sticky nav CTA leaves (data-ab-sticky-cta), plus buildNavLeafOverridesBySlug helper — same early-apply pattern as AbTestUtmScript.
14
+
3
15
  ## 18.1.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -209,7 +209,19 @@ const overrides = useAbTestStickyNavOverrides({ testsByPath });
209
209
  const cta = applyNavLeafOverride(ssrCta, findNavLeafOverride(overrides, ctaPath));
210
210
  ```
211
211
 
212
- Editor pattern: clone the Navigation, change the CTA item, link it on `pageVariant.menu`. After deploy, that CTA follows the visitor site-wide for the assigned bucket. Brief control→variant flash on the CTA after JS is expected in v1.
212
+ Editor pattern: clone the Navigation, change the CTA item, link it on `pageVariant.menu`. After deploy, that CTA follows the visitor site-wide for the assigned bucket.
213
+
214
+ Optional early paint (same pattern as `AbTestUtmScript`): mark CTA hosts with `data-ab-sticky-cta="{indexPath}"` and mount in the root layout:
215
+
216
+ ```tsx
217
+ import { AbTestStickyNavScript } from '@se-studio/ab-testing/components';
218
+ import { testsByPath } from '@/generated/abTests';
219
+
220
+ // root layout <head>:
221
+ <AbTestStickyNavScript testsByPath={testsByPath} />
222
+ ```
223
+
224
+ Keep the React hook path so HubSpot click props match after hydration. Brief control→variant flash is still possible if the script is omitted.
213
225
 
214
226
  ### 5. Create Your Analytics Reporter (Project-Specific)
215
227
 
@@ -0,0 +1,13 @@
1
+ import type { CachedAbTest } from './middleware/types.js';
2
+ import type { NavLeafOverride } from './types.js';
3
+ /**
4
+ * Collapse baked `navLeafOverrides` across all tests into a slug → leaves map
5
+ * for {@link AbTestStickyNavScript} (beforeInteractive DOM patch).
6
+ *
7
+ * Later tests win on duplicate paths within the same slug; callers that need
8
+ * assignment-scoped merges should keep using {@link useAbTestStickyNavOverrides}.
9
+ */
10
+ export declare function buildNavLeafOverridesBySlug(testsByPath: Record<string, CachedAbTest[]>): Record<string, NavLeafOverride[]>;
11
+ /** DOM attribute sites put on sticky CTA hosts for {@link AbTestStickyNavScript}. */
12
+ export declare const STICKY_NAV_CTA_ATTR = "data-ab-sticky-cta";
13
+ //# sourceMappingURL=buildNavLeafOverridesBySlug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildNavLeafOverridesBySlug.d.ts","sourceRoot":"","sources":["../src/buildNavLeafOverridesBySlug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAYnC;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Collapse baked `navLeafOverrides` across all tests into a slug → leaves map
3
+ * for {@link AbTestStickyNavScript} (beforeInteractive DOM patch).
4
+ *
5
+ * Later tests win on duplicate paths within the same slug; callers that need
6
+ * assignment-scoped merges should keep using {@link useAbTestStickyNavOverrides}.
7
+ */
8
+ export function buildNavLeafOverridesBySlug(testsByPath) {
9
+ const overridesBySlug = {};
10
+ for (const tests of Object.values(testsByPath)) {
11
+ for (const test of tests) {
12
+ if (!test.navLeafOverrides)
13
+ continue;
14
+ for (const [slug, leaves] of Object.entries(test.navLeafOverrides)) {
15
+ const existing = overridesBySlug[slug] ?? [];
16
+ overridesBySlug[slug] = [...existing, ...leaves];
17
+ }
18
+ }
19
+ }
20
+ return overridesBySlug;
21
+ }
22
+ /** DOM attribute sites put on sticky CTA hosts for {@link AbTestStickyNavScript}. */
23
+ export const STICKY_NAV_CTA_ATTR = 'data-ab-sticky-cta';
24
+ //# sourceMappingURL=buildNavLeafOverridesBySlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildNavLeafOverridesBySlug.js","sourceRoot":"","sources":["../src/buildNavLeafOverridesBySlug.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAA2C;IAE3C,MAAM,eAAe,GAAsC,EAAE,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAAE,SAAS;YACrC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACnE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7C,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { CachedAbTest } from '../middleware/types.js';
2
+ export interface AbTestStickyNavScriptProps {
3
+ /**
4
+ * Baked testsByPath map from generate-ab-tests (same as the sticky hook).
5
+ */
6
+ testsByPath: Record<string, CachedAbTest[]>;
7
+ /**
8
+ * Cookie name to read assignments from.
9
+ * @default "ab-test-info"
10
+ */
11
+ cookieName?: string;
12
+ }
13
+ /**
14
+ * Inline script that patches sticky nav CTA leaves from the assignment cookie
15
+ * as early as possible (before React hydration), matching {@link AbTestUtmScript}.
16
+ *
17
+ * Sites mark CTA hosts with `data-ab-sticky-cta="{indexPath}"` (see
18
+ * {@link STICKY_NAV_CTA_ATTR}). Keep {@link useAbTestStickyNavOverrides} in the
19
+ * nav client so React props (and HubSpot click text) match after hydration.
20
+ *
21
+ * Must be rendered in the root layout only — Next.js requires
22
+ * `strategy="beforeInteractive"` scripts to live in the root layout.
23
+ */
24
+ export declare function AbTestStickyNavScript({ testsByPath, cookieName, }: AbTestStickyNavScriptProps): import("react").JSX.Element;
25
+ //# sourceMappingURL=AbTestStickyNavScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbTestStickyNavScript.d.ts","sourceRoot":"","sources":["../../src/components/AbTestStickyNavScript.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,WAAW,EACX,UAA2B,GAC5B,EAAE,0BAA0B,+BAgF5B"}
@@ -0,0 +1,93 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Script from 'next/script';
3
+ import { buildNavLeafOverridesBySlug, STICKY_NAV_CTA_ATTR, } from '../buildNavLeafOverridesBySlug.js';
4
+ /**
5
+ * Inline script that patches sticky nav CTA leaves from the assignment cookie
6
+ * as early as possible (before React hydration), matching {@link AbTestUtmScript}.
7
+ *
8
+ * Sites mark CTA hosts with `data-ab-sticky-cta="{indexPath}"` (see
9
+ * {@link STICKY_NAV_CTA_ATTR}). Keep {@link useAbTestStickyNavOverrides} in the
10
+ * nav client so React props (and HubSpot click text) match after hydration.
11
+ *
12
+ * Must be rendered in the root layout only — Next.js requires
13
+ * `strategy="beforeInteractive"` scripts to live in the root layout.
14
+ */
15
+ export function AbTestStickyNavScript({ testsByPath, cookieName = 'ab-test-info', }) {
16
+ const overridesBySlug = buildNavLeafOverridesBySlug(testsByPath);
17
+ const payload = JSON.stringify(overridesBySlug);
18
+ const attr = STICKY_NAV_CTA_ATTR;
19
+ return (_jsx(Script, { id: "ab-test-sticky-nav", strategy: "beforeInteractive", children: `
20
+ (function() {
21
+ try {
22
+ var overridesBySlug = ${payload};
23
+ var cookieName = ${JSON.stringify(cookieName)};
24
+ var attr = ${JSON.stringify(attr)};
25
+ function readLeaves() {
26
+ var m = document.cookie.match(new RegExp('(?:^| )' + cookieName + '=([^;]+)'));
27
+ if (!m) return [];
28
+ var assignments = JSON.parse(decodeURIComponent(m[1]));
29
+ var leaves = [];
30
+ var seen = {};
31
+ for (var testId in assignments) {
32
+ if (!Object.prototype.hasOwnProperty.call(assignments, testId)) continue;
33
+ var slug = assignments[testId] && assignments[testId].variant_slug;
34
+ if (!slug || slug === 'control') continue;
35
+ var list = overridesBySlug[slug];
36
+ if (!list || !list.length) continue;
37
+ for (var i = 0; i < list.length; i++) {
38
+ var leaf = list[i];
39
+ if (!leaf || !leaf.path || seen[leaf.path]) continue;
40
+ seen[leaf.path] = true;
41
+ leaves.push(leaf);
42
+ }
43
+ }
44
+ return leaves;
45
+ }
46
+ var applying = false;
47
+ function applyLeaves(leaves) {
48
+ if (!leaves.length || applying) return;
49
+ applying = true;
50
+ try {
51
+ var nodes = document.querySelectorAll('[' + attr + ']');
52
+ for (var n = 0; n < nodes.length; n++) {
53
+ var host = nodes[n];
54
+ var path = host.getAttribute(attr);
55
+ if (!path) continue;
56
+ var el =
57
+ host.tagName === 'A' || host.tagName === 'BUTTON'
58
+ ? host
59
+ : host.querySelector('a,button');
60
+ if (!el) continue;
61
+ for (var i = 0; i < leaves.length; i++) {
62
+ if (leaves[i].path !== path) continue;
63
+ if (leaves[i].label && el.textContent !== leaves[i].label) {
64
+ el.textContent = leaves[i].label;
65
+ }
66
+ if (
67
+ leaves[i].href != null &&
68
+ el.tagName === 'A' &&
69
+ el.getAttribute('href') !== leaves[i].href
70
+ ) {
71
+ el.setAttribute('href', leaves[i].href);
72
+ }
73
+ break;
74
+ }
75
+ }
76
+ } finally {
77
+ applying = false;
78
+ }
79
+ }
80
+ function run() {
81
+ if (applying) return;
82
+ applyLeaves(readLeaves());
83
+ }
84
+ run();
85
+ if (typeof MutationObserver !== 'undefined') {
86
+ var obs = new MutationObserver(run);
87
+ obs.observe(document.documentElement, { childList: true, subtree: true });
88
+ }
89
+ } catch (e) {}
90
+ })();
91
+ ` }));
92
+ }
93
+ //# sourceMappingURL=AbTestStickyNavScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbTestStickyNavScript.js","sourceRoot":"","sources":["../../src/components/AbTestStickyNavScript.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAe3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,WAAW,EACX,UAAU,GAAG,cAAc,GACA;IAC3B,MAAM,eAAe,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,mBAAmB,CAAC;IAEjC,OAAO,CACL,KAAC,MAAM,IAAC,EAAE,EAAC,oBAAoB,EAAC,QAAQ,EAAC,mBAAmB,YAAE;;;4BAGtC,OAAO;uBACZ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;iBAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmEhC,GAAU,CACZ,CAAC;AACJ,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export { AbTestReporter } from './AbTestReporter';
2
+ export type { AbTestStickyNavScriptProps } from './AbTestStickyNavScript';
3
+ export { AbTestStickyNavScript } from './AbTestStickyNavScript';
2
4
  export { AbTestUtmScript } from './AbTestUtmScript';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { AbTestReporter } from './AbTestReporter';
2
+ export { AbTestStickyNavScript } from './AbTestStickyNavScript';
2
3
  export { AbTestUtmScript } from './AbTestUtmScript';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
+ export { buildNavLeafOverridesBySlug, STICKY_NAV_CTA_ATTR, } from './buildNavLeafOverridesBySlug.js';
8
9
  export type { ActiveAbTestAssignment, UseAbTestAssignmentsOptions, UseAbTestStickyNavOverridesOptions, } from './hooks/index.js';
9
10
  export { applyNavLeafOverride, findNavLeafOverride, useAbTestAssignments, useAbTestStickyNavOverrides, } from './hooks/index.js';
10
11
  export type { AbTestMiddlewareConfig, AbTestResult, CachedAbTest, StaticAbTestMiddlewareOptions, TestsCache, } from './middleware/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAC7B,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChG,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAC7B,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChG,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
+ // Sticky nav leaf helpers (codegen + sites)
9
+ export { buildNavLeafOverridesBySlug, STICKY_NAV_CTA_ATTR, } from './buildNavLeafOverridesBySlug.js';
8
10
  // Re-export hooks
9
11
  export { applyNavLeafOverride, findNavLeafOverride, useAbTestAssignments, useAbTestStickyNavOverrides, } from './hooks/index.js';
10
12
  // Re-export middleware utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,kBAAkB;AAClB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAQ1B,iCAAiC;AACjC,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAWrF,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMhG,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4CAA4C;AAC5C,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAM1C,kBAAkB;AAClB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAQ1B,iCAAiC;AACjC,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAWrF,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMhG,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/middleware/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAC;AAY/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkFlF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,aAcnB,WAAW,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgE3F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,EACrD,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,sBAAsB,CAAC,aAAa,CAAC,EACnD,OAAO,GAAE,IAAI,CACX,sBAAsB,EACtB,uBAAuB,GAAG,0BAA0B,GAAG,qBAAqB,CACxE,GACL,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EACjD,OAAO,GAAE,6BAAkC,aAeK,WAAW,KAAG,YAAY,GAAG,IAAI,CAiDlF"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/middleware/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAC;AAY/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA0FlF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,aAcnB,WAAW,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgE3F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,EACrD,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,sBAAsB,CAAC,aAAa,CAAC,EACnD,OAAO,GAAE,IAAI,CACX,sBAAsB,EACtB,uBAAuB,GAAG,0BAA0B,GAAG,qBAAqB,CACxE,GACL,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EACjD,OAAO,GAAE,6BAAkC,aAeK,WAAW,KAAG,YAAY,GAAG,IAAI,CAiDlF"}
@@ -44,14 +44,21 @@ function applyTestUrlParams(url, test, assignment, respectExistingUrlParams) {
44
44
  return applyUrlParams(url, assignment.url_params, respectExistingUrlParams);
45
45
  }
46
46
  function setCookieHeader(response, cookie, cookieName, cookieMaxAge) {
47
- const cookieValue = serializeCookie(cookie);
48
- if (cookieValue) {
49
- response.cookies.set(cookieName, cookieValue, {
47
+ // Always persist after prune/assignment so browsers drop inactive test IDs.
48
+ // Empty map → expire the cookie (clear browser state) instead of leaving `{}`.
49
+ if (Object.keys(cookie).length === 0) {
50
+ response.cookies.set(cookieName, '', {
50
51
  path: '/',
51
- maxAge: cookieMaxAge,
52
+ maxAge: 0,
52
53
  sameSite: 'lax',
53
54
  });
55
+ return;
54
56
  }
57
+ response.cookies.set(cookieName, serializeCookie(cookie), {
58
+ path: '/',
59
+ maxAge: cookieMaxAge,
60
+ sameSite: 'lax',
61
+ });
55
62
  }
56
63
  /**
57
64
  * Create an A/B test middleware handler.
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/middleware/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,SAAS,iBAAiB,CAAC,IAAkB,EAAE,YAA6B;IAC1E,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAkB,EAClB,MAAoB,EACpB,kBAA0B,EAC1B,mBAA4E;IAE5E,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEpD,IAAI,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/D,mBAAmB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/C,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACzD,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtF,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CACtB,UAA4B,EAC5B,iBAAyB;IAEzB,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC;IAC5C,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACnF,OAAO,GAAG,iBAAiB,IAAI,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,kBAAkB,CACzB,GAAQ,EACR,IAAkB,EAClB,UAA4B,EAC5B,wBAAiC;IAEjC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CACtB,QAAsB,EACtB,MAAoB,EACpB,UAAkB,EAClB,YAAoB;IAEpB,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE;YAC5C,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA8B;IACnE,MAAM,EACJ,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,mBAAmB,EAChC,YAAY,GAAG,sBAAsB,EACrC,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAAG,EAAE,EACtB,qBAAqB,EAAE,UAAU,GAAG,IAAI,EACxC,wBAAwB,GAAG,IAAI,GAChC,GAAG,MAAM,CAAC;IAEX,OAAO,KAAK,UAAU,gBAAgB,CAAC,OAAoB;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAE1C,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAExE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;YAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEzF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAClD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC3D,SAAS;oBACX,CAAC;oBAED,MAAM,UAAU,GAAG,iBAAiB,CAClC,IAAI,EACJ,MAAM,EACN,kBAAkB,EAClB,mBAAmB,CACpB,CAAC;oBACF,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;oBAClE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEpC,IAAI,UAAU,EAAE,CAAC;wBACf,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC;oBAC5B,CAAC;oBAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;oBAC1F,MAAM,UAAU,GACd,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;oBAErF,MAAM,QAAQ,GACZ,UAAU,IAAI,aAAa,IAAI,UAAU;wBACvC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;wBAC3B,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAE1B,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;oBAC5D,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;gBACrC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC5D,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,YAA6B,EAC7B,WAA+B,EAC/B,KAAqD,EACrD,UAAkB,EAClB,WAAmD,EACnD,OAAO,GAGH,EAAE;IAEN,MAAM,EAAE,qBAAqB,EAAE,UAAU,GAAG,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAElF,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW;YACX,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/D,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,UAAU;YACV,UAAU;YACV,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC;YACpC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,WAAW;QACX,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC;AACJ,CAAC;AAgCD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,iBAAiD,EACjD,OAAO,GAAkC,EAAE;IAE3C,MAAM,EACJ,UAAU,GAAG,mBAAmB,EAChC,YAAY,GAAG,sBAAsB,EACrC,iBAAiB,GAAG,EAAE,EACtB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EAAE,UAAU,GAAG,IAAI,EACxC,wBAAwB,GAAG,IAAI,GAChC,GAAG,OAAO,CAAC;IAEZ,MAAM,cAAc,GAAG,IAAI,GAAG,CAAyB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,OAAO,SAAS,sBAAsB,CAAC,OAAoB;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAE1C,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;QAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEzF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;gBAC5F,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEpC,IAAI,UAAU,EAAE,CAAC;oBACf,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC;gBAC5B,CAAC;gBAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;gBAC1F,MAAM,UAAU,GACd,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBAErF,MAAM,QAAQ,GACZ,UAAU,IAAI,aAAa,IAAI,UAAU;oBACvC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC3B,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAE1B,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC5D,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YACrC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAC5D,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/middleware/handler.ts"],"names":[],"mappings":"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"}
package/docs/llms.md CHANGED
@@ -87,6 +87,7 @@ const cta = applyNavLeafOverride(ssrCta, findNavLeafOverride(overrides, ctaPath)
87
87
  - Control bucket → empty overrides (SSR default nav).
88
88
  - Shape mismatch / missing menu → codegen skips sticky nav for that variant (warns, does not fail build).
89
89
  - `experiment_impression` stays path-scoped via `useAbTestAssignments`; sticky chrome does not re-fire exposure.
90
+ - Optional early DOM patch: `AbTestStickyNavScript` from `@se-studio/ab-testing/components` with `testsByPath`, plus `data-ab-sticky-cta` markers on CTA hosts (`STICKY_NAV_CTA_ATTR`). Mount next to `AbTestUtmScript` in the root layout. Keep the hook so React/HubSpot props stay aligned after hydration.
90
91
 
91
92
  ## Webhook Handler (Contentful → update test cache)
92
93
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/ab-testing",
3
- "version": "18.1.0",
3
+ "version": "18.3.0",
4
4
  "description": "Server-side A/B testing framework for Next.js applications with Contentful CMS",
5
5
  "repository": {
6
6
  "type": "git",