@kywi-software/js 0.24.0 → 0.26.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/README.md CHANGED
@@ -21,11 +21,16 @@ This package ships two builds from the same source
21
21
  npm install @kywi-software/js
22
22
  ```
23
23
 
24
- Most projects don't install this directly — a Kywi CMS site (any deployment
25
- mode) serves the built bundle at `/kywi.js` automatically, and pages that
26
- need it load it with a plain `<script>` tag (see below). Install it directly
27
- if you're building a decoupled frontend and want to import it as an ES
28
- module instead.
24
+ A coupled-mode Kywi CMS app depends on this package, and core serves its
25
+ built bundle at `/kywi.js`: `create-kywi-app` emits `app/kywi.js/route.ts`, a
26
+ thin delegate to `createKywiJsRoute` from `@kywi-software/core/next`, which
27
+ reads `dist/kywi.js` from the copy of this package the app installed (short
28
+ revalidating cache, content-hash `ETag`). There is no copy step, so
29
+ `pnpm up @kywi-software/js` is the whole upgrade; keep it on the same version
30
+ as `@kywi-software/core`. Pages load it with a plain `<script>` tag (see
31
+ below). Headless and decoupled apps serve no `/kywi.js`: install the package in
32
+ your own frontend instead, and either serve `dist/kywi.js` yourself or import
33
+ it as an ES module.
29
34
 
30
35
  ## Usage: script tag (how Kywi CMS itself loads it)
31
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-runner.d.ts","sourceRoot":"","sources":["../../src/audience/adapter-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEzE,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAA;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChF;AAcD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,EAChE,OAAO,SAAY,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC"}
1
+ {"version":3,"file":"adapter-runner.d.ts","sourceRoot":"","sources":["../../src/audience/adapter-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAGzE,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAA;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChF;AAcD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,EAChE,OAAO,SAAY,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audience/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAUnF,OAAO,EAA0C,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAGpG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9J,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAUD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIlF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audience/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAUnF,OAAO,EAA0C,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAIpG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9J,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAUD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2IlF"}
@@ -1,6 +1,26 @@
1
1
  export declare function getPreviewAudienceId(): string | null;
2
2
  export declare function setPreviewAudienceId(id: string): void;
3
+ /**
4
+ * Leave preview: forget the audience here AND drop the cookie, which the server
5
+ * keeps honoring for the session (kywi-cms#219) — clearing only one half would
6
+ * leave the next server render still previewing.
7
+ */
3
8
  export declare function clearPreview(): void;
9
+ /**
10
+ * The audience id in a `kywi_preview_init` value. Core signs it as
11
+ * `<audienceId>.<jti>.<exp>.<signature>` (kywi-cms#219, with the token id
12
+ * since review fix 8) and verifies it server-side; this side only needs the id
13
+ * for the banner, so it reads the first segment and trusts nothing else.
14
+ * Audience ids are UUIDs, so they contain no dot. The earlier three-part shape
15
+ * (`<audienceId>.<exp>.<signature>`) reads the same way. An unsigned value is
16
+ * not a preview.
17
+ */
18
+ export declare function previewAudienceFromCookie(value: string | null | undefined): string | null;
19
+ /**
20
+ * Pick up a preview the server started. The cookie is LEFT in place: it is a
21
+ * signed session cookie the server keeps previewing from as the editor
22
+ * navigates (kywi-cms#219); Exit Preview removes it.
23
+ */
4
24
  export declare function checkPreviewInit(): void;
5
25
  export declare function renderPreviewBanner(audienceName: string): void;
6
26
  //# sourceMappingURL=preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/audience/preview.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAA+C;AACpG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAA4C;AAClG,wBAAgB,YAAY,IAAI,IAAI,CAA2C;AAE/E,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAmB9D"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/audience/preview.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAA+C;AACpG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAA4C;AAElG;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAmB9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"selfid-api.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-api.ts"],"names":[],"mappings":"AAiCA,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IAC/B;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKpF"}
1
+ {"version":3,"file":"selfid-api.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-api.ts"],"names":[],"mappings":"AAkCA,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IAC/B;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKpF"}
@@ -1,5 +1,13 @@
1
+ import { type ConsentGateOptions } from '../consent.js';
1
2
  export declare function collectSelfId(): Record<string, string>;
2
- export declare function storeSelfId(responses: Record<string, string>): void;
3
+ /**
4
+ * Store the answers in the browser. The write follows the SAME consent rule as
5
+ * the server-readable `kywi_selfid` cookie, by asking the category map rather
6
+ * than hard-coding an answer. Today that category is `essential` (D22): the
7
+ * self-ID choice is a preference the visitor made deliberately, like a language
8
+ * cookie, so it is honored without the banner (kywi-cms#203).
9
+ */
10
+ export declare function storeSelfId(responses: Record<string, string>, gate?: ConsentGateOptions): void;
3
11
  /** Forget the visitor's answers entirely (the browser half of clearSelfId). */
4
12
  export declare function clearStoredSelfId(): void;
5
13
  //# sourceMappingURL=selfid-collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selfid-collector.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-collector.ts"],"names":[],"mappings":"AAQA,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEnE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
1
+ {"version":3,"file":"selfid-collector.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-collector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAI5F,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,GAAE,kBAAuB,GAAG,IAAI,CAIlG;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1,3 +1,15 @@
1
+ import { type ConsentGateOptions } from '../consent.js';
1
2
  import type { Audience } from '@kywi-software/core/audiences/types';
2
- export declare function handleSelfIdSubmit(responses: Record<string, string>, audiences?: Audience[], currentPath?: string): void;
3
+ /**
4
+ * The widget's client-only submit path (`serverSubmit: false`, kywi-cms#203):
5
+ * store the answers, re-evaluate in the browser, patch in place.
6
+ *
7
+ * `gate` is `theme.personalization.requireConsent`, threaded from
8
+ * `bootAudienceEngine` through the widget config (kywi-cms#191). The
9
+ * `kywi_visitor` / `kywi_known` reads below are `personalization` cookies, so
10
+ * they go through `hasConsent` exactly as `bootAudienceEngine`'s own reads do —
11
+ * an ungated read here would quietly undo the server's gating. The opt-out
12
+ * flag is essential and is always read.
13
+ */
14
+ export declare function handleSelfIdSubmit(responses: Record<string, string>, audiences?: Audience[], currentPath?: string, gate?: ConsentGateOptions): void;
3
15
  //# sourceMappingURL=selfid-submit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selfid-submit.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-submit.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,qCAAqC,CAAA;AAEnF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAuBN"}
1
+ {"version":3,"file":"selfid-submit.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-submit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,qCAAqC,CAAA;AAEnF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,GAAE,kBAAuB,GAC5B,IAAI,CAyBN"}
@@ -62,6 +62,26 @@ export interface SelfIdWidgetConfig {
62
62
  */
63
63
  audiences?: Audience[];
64
64
  currentPath?: string;
65
+ /**
66
+ * Route a submit through the server (kywi-cms#203): `Kywi.setSelfId()` posts
67
+ * the answers to `POST /kywi/self-id`, which pins the audience they resolve
68
+ * to, then reloads so the server renders the arm. Since #167 losing arms are
69
+ * pruned server-side, so this is the only way a submit can switch a
70
+ * section-level variant container. Default `true`. `false` keeps the old
71
+ * client-only path (store + re-evaluate + patch in place, no network, no
72
+ * reload) for a site whose containers are module-level client patches.
73
+ */
74
+ serverSubmit?: boolean;
75
+ /**
76
+ * `theme.personalization.requireConsent` (kywi-cms#91), threaded from
77
+ * `bootAudienceEngine` so the client-only submit path gates its cookie reads
78
+ * the way the boot path does (kywi-cms#191). Omitted, consent is required.
79
+ */
80
+ requireConsent?: boolean;
81
+ /** Mounted CMS API base for the server submit. Defaults to the one `Kywi.boot()` derived. */
82
+ apiBase?: string;
83
+ /** CSRF token for the server submit. Defaults to the one `Kywi.boot()` read. */
84
+ csrfToken?: string | null;
65
85
  }
66
86
  export interface SelfIdWidget {
67
87
  shouldShow(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"selfid-widget.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-widget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAgBnE;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAE/D,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAKnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,WAAW,GAAG,IAAI,CAItG;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAOD,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEtB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,CAAA;IAC/F,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IACnD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAA;IACrB,SAAS,IAAI,IAAI,CAAA;IACjB,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACtD;AA6BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAwO3E"}
1
+ {"version":3,"file":"selfid-widget.d.ts","sourceRoot":"","sources":["../../src/audience/selfid-widget.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAgBnE;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAE/D,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAKnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,WAAW,GAAG,IAAI,CAItG;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAOD,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEtB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,CAAA;IAC/F,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IACnD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAA;IACrB,SAAS,IAAI,IAAI,CAAA;IACjB,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACtD;AA6BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAsQ3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"transparency.d.ts","sourceRoot":"","sources":["../../src/audience/transparency.ts"],"names":[],"mappings":"AAiCA,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;IACnB,8EAA8E;IAC9E,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAClC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAoBD,8EAA8E;AAC9E,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAeD,wBAAgB,MAAM,IAAI,IAAI,CAG7B;AAED,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAO,GACjF,OAAO,CAAC,OAAO,CAAC,CAkBlB;AA+CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAqItE;AAwBD,kDAAkD;AAClD,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,oFAAoF;AACpF,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAU5C;AAED,wEAAwE;AACxE,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
1
+ {"version":3,"file":"transparency.d.ts","sourceRoot":"","sources":["../../src/audience/transparency.ts"],"names":[],"mappings":"AAkCA,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;IACnB,8EAA8E;IAC9E,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAClC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAoBD,8EAA8E;AAC9E,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAeD,wBAAgB,MAAM,IAAI,IAAI,CAG7B;AAED,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAO,GACjF,OAAO,CAAC,OAAO,CAAC,CAkBlB;AA+CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAqItE;AAwBD,kDAAkD;AAClD,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,oFAAoF;AACpF,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAU5C;AAED,wEAAwE;AACxE,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
package/dist/consent.d.ts CHANGED
@@ -1,4 +1,26 @@
1
1
  export declare const CONSENT_COOKIE: "kywi_consent";
2
+ /**
3
+ * The DOM event (`window`, `CustomEvent<ConsentState>`) every consent decision
4
+ * announces, so a runtime holding events until consent — the pending A/B
5
+ * exposures (kywi-cms#293) — can flush the moment the visitor accepts.
6
+ * Mirrors `CONSENT_EVENT` in core's `audiences/consent.ts`, whose
7
+ * `cookieConsent` module dispatches the same event.
8
+ */
9
+ export declare const CONSENT_EVENT: "kywi:consent";
10
+ /**
11
+ * The DOM event (`window`) that asks the consent banner to show itself again,
12
+ * for a visitor who wants to change an earlier decision (kywi-cms#191). The
13
+ * shipped `cookieConsent` module listens for it. Mirrors
14
+ * `CONSENT_REOPEN_EVENT` in core's `audiences/consent.ts`.
15
+ */
16
+ export declare const CONSENT_REOPEN_EVENT: "kywi:consent-reopen";
17
+ /**
18
+ * Re-open the consent banner so the visitor can change their decision — wire it
19
+ * to a "Cookie settings" link (kywi-cms#191). A link carrying the
20
+ * `data-kywi-consent-reopen` attribute does the same with no script of its own.
21
+ * No-op off the browser.
22
+ */
23
+ export declare function reopenConsent(): void;
2
24
  /** The cookie an audience pin lives in. */
3
25
  export declare const AUDIENCE_PIN_COOKIE: "kywi_audience";
4
26
  /**
@@ -56,6 +78,8 @@ export declare function getConsentState(): ConsentState | null;
56
78
  * The cookie is stored with a 1-year Max-Age.
57
79
  */
58
80
  export declare function setConsent(prefs: Partial<Omit<ConsentState, 'essential'>>): void;
81
+ /** Dispatch `CONSENT_EVENT` for a decision just recorded. No-op off the browser. */
82
+ export declare function announceConsent(state: ConsentState): void;
59
83
  /**
60
84
  * Delete every cookie whose category `state` does not grant, and return the
61
85
  * names deleted.
@@ -1 +1 @@
1
- {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,EAAG,cAAuB,CAAA;AAErD,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,EAAG,eAAwB,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AAEvD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEzF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAWnE,CAAA;AAED,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAmBrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,GAC9C,IAAI,CAYN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,EAAE,CAYvE;AAyBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAM/F"}
1
+ {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,EAAG,cAAuB,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAG,cAAuB,CAAA;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAG,qBAA8B,CAAA;AAElE;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,EAAG,eAAwB,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AAEvD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEzF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAanE,CAAA;AAED,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAmBrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,GAC9C,IAAI,CAaN;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAOzD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,EAAE,CAYvE;AAyBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAM/F"}
package/dist/cookies.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare const COOKIE_NAMES: {
6
6
  readonly OPTOUT: "kywi_optout";
7
7
  readonly KNOWN: "kywi_known";
8
8
  readonly PREVIEW_INIT: "kywi_preview_init";
9
+ readonly BUCKET: "kywi_bucket";
9
10
  };
10
11
  export declare function readCookies(): Map<string, string>;
11
12
  export declare function setCookie(name: string, value: string, maxAge?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY;;;;;;;;CAIf,CAAA;AAEV,wBAAgB,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAI5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY;;;;;;;;;CAIf,CAAA;AAEV,wBAAgB,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAI5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAuClD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAC7D,MAAM,MAAM,KAAG,gBAAgB,CACxC"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAwClD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAC7D,MAAM,MAAM,KAAG,gBAAgB,CACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/experiments/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAA;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,oCAAoC;IACpC,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAChD;AA4CD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,oBAAyB,GAAG,iBAAiB,CAyCpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/experiments/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAI9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAA;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,oCAAoC;IACpC,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAChD;AA4CD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,oBAAyB,GAAG,iBAAiB,CA6CpF"}
@@ -0,0 +1,54 @@
1
+ import { type ConsentGateOptions } from '../consent.js';
2
+ export declare const PENDING_EVENTS_META = "kywi:pending-events";
3
+ export declare const PENDING_STORAGE_KEY = "kywi:pending-events";
4
+ export interface PendingExposure {
5
+ experimentId: string;
6
+ variantKey: string | null;
7
+ at: number;
8
+ /**
9
+ * The site of the page that queued it (`<meta name="kywi:site-id">`), set at
10
+ * queue time on a multi-site page (kywi-cms#293 #233). Absent on a
11
+ * single-site page, and on an entry stored before this field existed.
12
+ */
13
+ siteId?: string;
14
+ }
15
+ /**
16
+ * An audience `matched` analytics event held until consent (kywi-cms#220).
17
+ * `sig` is the server's signature over it; the flush endpoint refuses a match
18
+ * without one, so it is sent back untouched.
19
+ */
20
+ export interface PendingMatch {
21
+ audienceId: string;
22
+ at: number;
23
+ sig: string;
24
+ /** The site of the page that queued it; see {@link PendingExposure.siteId}. */
25
+ siteId?: string;
26
+ }
27
+ export interface PendingEvents {
28
+ exposures: PendingExposure[];
29
+ matched: PendingMatch[];
30
+ }
31
+ export interface PendingFlushConfig extends ConsentGateOptions {
32
+ apiBase: string;
33
+ csrfToken?: string;
34
+ }
35
+ /** The current queue (memory, merged with what earlier pages of the visit stored). */
36
+ export declare function pendingEvents(): PendingEvents;
37
+ /** Add events to the queue, persisting it for the rest of the visit. */
38
+ export declare function queuePendingEvents(events: PendingEvents): void;
39
+ /**
40
+ * Send the queue if the visitor now allows it; discard it if they refused.
41
+ * Returns how many events were sent.
42
+ */
43
+ export declare function flushPendingEvents(config: PendingFlushConfig): number;
44
+ /**
45
+ * Read this page's pending events, queue them, flush if already allowed, and
46
+ * flush again whenever a consent decision is recorded on this page (the
47
+ * `cookieConsent` module, or a site's own banner through `setConsent`).
48
+ */
49
+ export declare function bootPendingEvents(config: PendingFlushConfig): void;
50
+ /** Test seam: forget the in-memory queue (and, unless kept, the stored one). */
51
+ export declare function resetPendingEvents(opts?: {
52
+ keepStorage?: boolean;
53
+ }): void;
54
+ //# sourceMappingURL=pending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/experiments/pending.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA8C,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGnG,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AACxD,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AAExD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,EAAE,EAAE,MAAM,CAAA;IACV;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAyGD,sFAAsF;AACtF,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAG9D;AAoCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAqBrE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAUlE;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAO7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAElE,UAAU,MAAM;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE;AAEhG,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AACvE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAErD,cAAM,WAAW;IACH,OAAO,CAAC,OAAO;IAAe,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,IAAI;gBAAzD,OAAO,EAAE,WAAW,EAAU,KAAK,EAAE,MAAM,EAAU,IAAI,EAAE,KAAK,GAAG,IAAI;IAC3F,OAAO,CAAC,GAAG;IACX,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,UAAU,CAAC,CAAC,EAAE,OAAO;IACrB,QAAQ,CAAC,CAAC,EAAE,OAAO;IACnB,QAAQ,CAAC,CAAC,EAAE,OAAO;IACnB,MAAM;IACN,SAAS;CACV;AAED,cAAM,WAAW;IAKH,OAAO,CAAC,WAAW;IAAU,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,SAAS;IAJpF,QAAQ,EAAE,MAAM,EAAE,CAAK;IACvB,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAsB;gBACf,WAAW,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM;IAE5F,KAAK,IAAI,IAAI;IACb,IAAI,CAAC,KAAK,EAAE,MAAM;IAClB,OAAO,CAAC,KAAK,EAAE,MAAM;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM;IACpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAErB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,YAAY;IAMd,SAAS,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAe1E,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;CAqC1C;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAC3D,MAAM,MAAM,iBACrB"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAGlE,UAAU,MAAM;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE;AAEhG,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AACvE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAErD,cAAM,WAAW;IACH,OAAO,CAAC,OAAO;IAAe,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,IAAI;gBAAzD,OAAO,EAAE,WAAW,EAAU,KAAK,EAAE,MAAM,EAAU,IAAI,EAAE,KAAK,GAAG,IAAI;IAC3F,OAAO,CAAC,GAAG;IACX,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,IAAI,CAAC,CAAC,EAAE,OAAO;IACf,KAAK,CAAC,CAAC,EAAE,OAAO;IAChB,UAAU,CAAC,CAAC,EAAE,OAAO;IACrB,QAAQ,CAAC,CAAC,EAAE,OAAO;IACnB,QAAQ,CAAC,CAAC,EAAE,OAAO;IACnB,MAAM;IACN,SAAS;CACV;AAED,cAAM,WAAW;IAKH,OAAO,CAAC,WAAW;IAAU,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,SAAS;IAJpF,QAAQ,EAAE,MAAM,EAAE,CAAK;IACvB,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAsB;gBACf,WAAW,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM;IAE5F,KAAK,IAAI,IAAI;IACb,IAAI,CAAC,KAAK,EAAE,MAAM;IAClB,OAAO,CAAC,KAAK,EAAE,MAAM;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM;IACpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAErB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,YAAY;IAMd,SAAS,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAe1E,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;CAqC1C;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAC3D,MAAM,MAAM,iBACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-hooks.d.ts","sourceRoot":"","sources":["../src/form-hooks.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,IAAI,IAAI,CAapC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3F"}
1
+ {"version":3,"file":"form-hooks.d.ts","sourceRoot":"","sources":["../src/form-hooks.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI,IAAI,CAapC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3F"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { KywiContext, KywiModuleDefinition } from './types.js';
2
2
  import { setSelfId, clearSelfId } from './audience/selfid-api.js';
3
+ import { reopenConsent } from './consent.js';
3
4
  type PreInitCallback = (kywi: typeof Kywi) => void;
4
5
  export declare const Kywi: {
5
6
  version: string;
@@ -28,6 +29,11 @@ export declare const Kywi: {
28
29
  setSelfId: typeof setSelfId;
29
30
  /** Forget the visitor's self-identification and un-pin their audience. */
30
31
  clearSelfId: typeof clearSelfId;
32
+ /**
33
+ * Re-open the cookie-consent banner so the visitor can change an earlier
34
+ * decision (kywi-cms#191) — for a site's own "Cookie settings" link.
35
+ */
36
+ reopenConsent: typeof reopenConsent;
31
37
  getEntity: (type: string) => any;
32
38
  getFeed: (type: string) => any;
33
39
  renderFeed: (options: any) => void;
@@ -38,5 +44,5 @@ export { setSelfId, clearSelfId, type SelfIdAudience, type SelfIdOptions, type S
38
44
  export { openTransparencyPanel, renderTransparencyPanel, type TransparencyState, type TransparencyAudience, } from './audience/transparency.js';
39
45
  export { bootExperiments, type ExperimentRuntime, type ConversionSignal } from './experiments/index.js';
40
46
  export { initNavMenus, enhanceNav, NAV_BREAKPOINT } from './nav/menu.js';
41
- export { getConsentState, setConsent, hasConsent, clearDeniedCookies, COOKIE_CONSENT_CATEGORY, CONSENT_COOKIE, AUDIENCE_PIN_COOKIE, SWITCHER_PIN_PREFIX, type ConsentCategory, type ConsentGateOptions, type ConsentState, } from './consent.js';
47
+ export { getConsentState, setConsent, hasConsent, clearDeniedCookies, COOKIE_CONSENT_CATEGORY, CONSENT_COOKIE, CONSENT_EVENT, CONSENT_REOPEN_EVENT, reopenConsent, AUDIENCE_PIN_COOKIE, SWITCHER_PIN_PREFIX, type ConsentCategory, type ConsentGateOptions, type ConsentState, } from './consent.js';
42
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AASnE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEjE,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,IAAI,CAAA;AAIlD,eAAO,MAAM,IAAI;;aAEa,WAAW;YACzB,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBACtC,eAAe,GAAG,IAAI;;2BAIb,oBAAoB,GAAG,oBAAoB;;;;oBAM9C,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;4BAC7C,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI;;;IAK1E;;;;;;;;;OASG;;IAEH,0EAA0E;;eAE5C,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;aACvB,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;gBAClB,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;YAC7C,IAAI;CAkBb,CAAA;AAWD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACvG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AASnE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,IAAI,CAAA;AAIlD,eAAO,MAAM,IAAI;;aAEa,WAAW;YACzB,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBACtC,eAAe,GAAG,IAAI;;2BAIb,oBAAoB,GAAG,oBAAoB;;;;oBAM9C,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;4BAC7C,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI;;;IAK1E;;;;;;;;;OASG;;IAEH,0EAA0E;;IAE1E;;;OAGG;;eAE2B,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;aACvB,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;gBAClB,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;YAC7C,IAAI;CAkBb,CAAA;AAWD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACvG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}