@picked/client 0.0.1-dev.1769554766412 → 0.0.1-dev.1769991916367
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/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
- package/dist/esm/index.js +939 -221
- package/dist/esm/plugins/experience-browser-storage/index.js +1 -1
- package/dist/esm/plugins/history-browser-storage/index.js +1 -1
- package/dist/esm/plugins/responses-browser-storage/index.js +1 -1
- package/dist/esm/plugins/single-page-app/index.js +3 -3
- package/dist/esm/plugins/web-components/index.js +1 -1
- package/dist/esm/plugins/window-object/index.js +1 -1
- package/dist/esm/server/index.js +7 -7
- package/dist/{experience-instance-DJCJUe0h.js → experience-instance-CwXYJkRx.js} +7 -7
- package/dist/storage-Be5xWNPC.cjs +1 -0
- package/dist/storage-Co_LbKr_.js +239 -0
- package/dist/{supports-DCSoenK6.js → supports-COb-sl36.js} +10 -10
- package/dist/types/utils/events.d.ts +1 -6
- package/dist/types/utils/events.d.ts.map +1 -1
- package/dist/types/utils/storage.d.ts +357 -1
- package/dist/types/utils/storage.d.ts.map +1 -1
- package/package.json +1 -7
- package/dist/cjs/plugins/data-layer/index.js +0 -1
- package/dist/esm/plugins/data-layer/index.js +0 -202
- package/dist/storage-BLmAhfhl.js +0 -94
- package/dist/storage-YlR83AWP.cjs +0 -1
- package/dist/types/plugins/data-layer/custom-event.d.ts +0 -5
- package/dist/types/plugins/data-layer/custom-event.d.ts.map +0 -1
- package/dist/types/plugins/data-layer/index.d.ts +0 -2
- package/dist/types/plugins/data-layer/index.d.ts.map +0 -1
- package/dist/types/plugins/data-layer/plugin.d.ts +0 -55
- package/dist/types/plugins/data-layer/plugin.d.ts.map +0 -1
- package/dist/types/plugins/data-layer/utils.d.ts +0 -39
- package/dist/types/plugins/data-layer/utils.d.ts.map +0 -1
- package/dist/user-session-DQh0BBTx.cjs +0 -1
- package/dist/user-session-XidjAPGf.js +0 -747
package/dist/storage-BLmAhfhl.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
const f = (e) => btoa([...e].map((t) => String.fromCharCode(t.charCodeAt(0) ^ 7)).join("")).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
2
|
-
function m(e, t = "global", r) {
|
|
3
|
-
let o = "pckd";
|
|
4
|
-
if (t === "experience") {
|
|
5
|
-
if (!r)
|
|
6
|
-
throw new Error("Experience instance is required to scope storage to an experience");
|
|
7
|
-
o = `${o}:${r.experienceId}`;
|
|
8
|
-
}
|
|
9
|
-
return { _: `${o}:${f(e)}`, scope: t };
|
|
10
|
-
}
|
|
11
|
-
function l(e, t, r, o) {
|
|
12
|
-
const n = r === "local" ? localStorage : sessionStorage, s = typeof t != "string" ? JSON.stringify(t) : t;
|
|
13
|
-
if (n.setItem(e._, s), typeof o == "number") {
|
|
14
|
-
const a = new Date(Date.now() + o).toISOString();
|
|
15
|
-
n.setItem(`${e._}:expires-at`, a);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function c(e, t) {
|
|
19
|
-
const r = t === "local" ? localStorage : sessionStorage;
|
|
20
|
-
r.removeItem(e._), r.removeItem(`${e._}:expires-at`);
|
|
21
|
-
}
|
|
22
|
-
function u(e, t, r, o) {
|
|
23
|
-
const n = t === "local" ? localStorage : sessionStorage;
|
|
24
|
-
function s(i) {
|
|
25
|
-
i.storageArea === n && i.key === e._ && o(r(e));
|
|
26
|
-
}
|
|
27
|
-
return window.addEventListener("storage", s), function() {
|
|
28
|
-
window.removeEventListener("storage", s);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function g(e, t) {
|
|
32
|
-
const r = t === "local" ? localStorage : sessionStorage, o = r.getItem(e._), n = r.getItem(`${e._}:expires-at`), s = (a) => l(e, a, t), i = () => c(e, t);
|
|
33
|
-
if (n) {
|
|
34
|
-
const a = /* @__PURE__ */ new Date(), S = new Date(n);
|
|
35
|
-
if (a > S)
|
|
36
|
-
return c(e, t), {
|
|
37
|
-
isSet: () => !1,
|
|
38
|
-
text: () => null,
|
|
39
|
-
json: () => null,
|
|
40
|
-
boolean: () => null,
|
|
41
|
-
set: s,
|
|
42
|
-
remove: i
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
return {
|
|
46
|
-
isSet() {
|
|
47
|
-
return o !== null;
|
|
48
|
-
},
|
|
49
|
-
text() {
|
|
50
|
-
return o;
|
|
51
|
-
},
|
|
52
|
-
json() {
|
|
53
|
-
return o ? JSON.parse(o) : null;
|
|
54
|
-
},
|
|
55
|
-
boolean() {
|
|
56
|
-
return o ? o === "true" : null;
|
|
57
|
-
},
|
|
58
|
-
set: s,
|
|
59
|
-
remove: i
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
const p = {
|
|
63
|
-
get(e) {
|
|
64
|
-
return g(e, "session");
|
|
65
|
-
},
|
|
66
|
-
set(e, t, r) {
|
|
67
|
-
l(e, t, "session", r);
|
|
68
|
-
},
|
|
69
|
-
remove(e) {
|
|
70
|
-
c(e, "session");
|
|
71
|
-
},
|
|
72
|
-
subscribe(e, t) {
|
|
73
|
-
return u(e, "session", this.get, t);
|
|
74
|
-
}
|
|
75
|
-
}, b = {
|
|
76
|
-
get(e) {
|
|
77
|
-
return g(e, "local");
|
|
78
|
-
},
|
|
79
|
-
set(e, t, r) {
|
|
80
|
-
l(e, t, "local", r);
|
|
81
|
-
},
|
|
82
|
-
remove(e) {
|
|
83
|
-
c(e, "local");
|
|
84
|
-
},
|
|
85
|
-
subscribe(e, t) {
|
|
86
|
-
return u(e, "local", this.get, t);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
export {
|
|
90
|
-
u as a,
|
|
91
|
-
m as c,
|
|
92
|
-
b as l,
|
|
93
|
-
p as s
|
|
94
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const f=e=>btoa([...e].map(t=>String.fromCharCode(t.charCodeAt(0)^7)).join("")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");function m(e,t="global",r){let o="pckd";if(t==="experience"){if(!r)throw new Error("Experience instance is required to scope storage to an experience");o=`${o}:${r.experienceId}`}return{_:`${o}:${f(e)}`,scope:t}}function l(e,t,r,o){const n=r==="local"?localStorage:sessionStorage,s=typeof t!="string"?JSON.stringify(t):t;if(n.setItem(e._,s),typeof o=="number"){const c=new Date(Date.now()+o).toISOString();n.setItem(`${e._}:expires-at`,c)}}function a(e,t){const r=t==="local"?localStorage:sessionStorage;r.removeItem(e._),r.removeItem(`${e._}:expires-at`)}function u(e,t,r,o){const n=t==="local"?localStorage:sessionStorage;function s(i){i.storageArea===n&&i.key===e._&&o(r(e))}return window.addEventListener("storage",s),function(){window.removeEventListener("storage",s)}}function g(e,t){const r=t==="local"?localStorage:sessionStorage,o=r.getItem(e._),n=r.getItem(`${e._}:expires-at`),s=c=>l(e,c,t),i=()=>a(e,t);if(n){const c=new Date,S=new Date(n);if(c>S)return a(e,t),{isSet:()=>!1,text:()=>null,json:()=>null,boolean:()=>null,set:s,remove:i}}return{isSet(){return o!==null},text(){return o},json(){return o?JSON.parse(o):null},boolean(){return o?o==="true":null},set:s,remove:i}}const b={get(e){return g(e,"session")},set(e,t,r){l(e,t,"session",r)},remove(e){a(e,"session")},subscribe(e,t){return u(e,"session",this.get,t)}},p={get(e){return g(e,"local")},set(e,t,r){l(e,t,"local",r)},remove(e){a(e,"local")},subscribe(e,t){return u(e,"local",this.get,t)}};exports.createStorageKey=m;exports.localStore=p;exports.sessionStore=b;exports.subscribe=u;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
declare const INTERACTION_TYPES: readonly ["click", "double_click", "mouse_over", "mouse_out", "mouse_down", "mouse_up", "focus", "blur"];
|
|
2
|
-
export type InteractionType = (typeof INTERACTION_TYPES)[number];
|
|
3
|
-
export declare function bindPickedCustomEventListeners(handler: (value: string) => void, target: ShadowRoot | null): void;
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=custom-event.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-event.d.ts","sourceRoot":"","sources":["../../../../src/plugins/data-layer/custom-event.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,iBAAiB,0GASb,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAgBhE,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,EAAE,UAAU,GAAG,IAAI,QAsC1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/data-layer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ExperienceStep } from '../../entities/experience/experience';
|
|
2
|
-
import { FeatureBucket } from '../../entities/feature/feature';
|
|
3
|
-
import { Picked } from '../../picked';
|
|
4
|
-
import { FormPayload, EventBusPayload } from '../../utils/events';
|
|
5
|
-
type DataLayer = Array<DataLayerEvent>;
|
|
6
|
-
declare global {
|
|
7
|
-
var dataLayer: DataLayer | undefined;
|
|
8
|
-
}
|
|
9
|
-
interface PickedItem {
|
|
10
|
-
item_name?: string;
|
|
11
|
-
item_id?: string;
|
|
12
|
-
affiliation?: string;
|
|
13
|
-
currency?: string;
|
|
14
|
-
item_brand?: string;
|
|
15
|
-
item_list_id?: string;
|
|
16
|
-
item_list_name?: string;
|
|
17
|
-
item_variant?: string;
|
|
18
|
-
price?: number;
|
|
19
|
-
quantity?: number;
|
|
20
|
-
item_category1?: string;
|
|
21
|
-
item_category2?: string;
|
|
22
|
-
item_category3?: string;
|
|
23
|
-
item_category4?: string;
|
|
24
|
-
}
|
|
25
|
-
interface DataLayerEvent {
|
|
26
|
-
event: 'picked_event';
|
|
27
|
-
picked_app: {
|
|
28
|
-
organizationId: string;
|
|
29
|
-
projectId: string;
|
|
30
|
-
};
|
|
31
|
-
picked_environment: string;
|
|
32
|
-
picked_form?: FormPayload;
|
|
33
|
-
picked_cvly_env?: string;
|
|
34
|
-
picked_feature_list?: FeatureBucket[];
|
|
35
|
-
picked_action: (typeof defaultEventList)[number];
|
|
36
|
-
picked_value?: string | boolean;
|
|
37
|
-
picked_experience?: {
|
|
38
|
-
id: string;
|
|
39
|
-
title: string;
|
|
40
|
-
};
|
|
41
|
-
picked_step?: ExperienceStep;
|
|
42
|
-
picked_item?: PickedItem;
|
|
43
|
-
}
|
|
44
|
-
declare const defaultEventList: string[];
|
|
45
|
-
export declare const dataLayerPlugin: ({ featureWatchList, eventListOverride, eventMappingOverride, mappedProductToPicked, }?: {
|
|
46
|
-
featureWatchList?: string[];
|
|
47
|
-
eventListOverride?: string[];
|
|
48
|
-
eventMappingOverride?: Partial<Record<EventBusPayload["type"], string>>;
|
|
49
|
-
mappedProductToPicked?: () => PickedItem;
|
|
50
|
-
}) => {
|
|
51
|
-
name: string;
|
|
52
|
-
setup: (client: Picked) => void;
|
|
53
|
-
};
|
|
54
|
-
export {};
|
|
55
|
-
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/data-layer/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAGnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AActE,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,CAAA;AAEtC,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;CACrC;AAGD,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,cAAc,CAAA;IACrB,UAAU,EAAE;QACV,cAAc,EAAE,MAAM,CAAA;QACtB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,aAAa,EAAE,CAAA;IACrC,aAAa,EAAE,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,iBAAiB,CAAC,EAAE;QAClB,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,WAAW,CAAC,EAAE,UAAU,CAAA;CACzB;AAID,QAAA,MAAM,gBAAgB,UAOrB,CAAA;AAwDD,eAAO,MAAM,eAAe,GAAI,wFAK7B;IACD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IACvE,qBAAqB,CAAC,EAAE,MAAM,UAAU,CAAA;CACpC,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAqGvD,CAAA"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ExperienceInstance } from '../../entities/experience-instance/experience-instance';
|
|
2
|
-
import { ExperienceStep } from '../../entities/experience/experience';
|
|
3
|
-
import { FeatureBucket, ResolvedFeatureBucket } from '../../entities/feature/feature';
|
|
4
|
-
import { FieldValue } from '../../entities/field/field';
|
|
5
|
-
import { EventBusPayload } from '../../utils/events';
|
|
6
|
-
export declare const getCvlyEnv: () => string | null;
|
|
7
|
-
export declare function setPickedUserCookie(value: boolean): void;
|
|
8
|
-
export declare function setPickedSessionIdCookie(value: string): void;
|
|
9
|
-
export declare const getStepResponses: (responses: {
|
|
10
|
-
fieldId: string;
|
|
11
|
-
value: FieldValue | undefined;
|
|
12
|
-
}[], step: ExperienceStep | undefined) => {
|
|
13
|
-
fieldId: string;
|
|
14
|
-
value: FieldValue | undefined;
|
|
15
|
-
}[];
|
|
16
|
-
export declare const getExperienceFromInstance: (experienceInstance: ExperienceInstance) => {
|
|
17
|
-
id: string;
|
|
18
|
-
title: string;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Type guard to check if a FeatureBucket is resolved. Events require the resolved bucket value.
|
|
22
|
-
*/
|
|
23
|
-
export declare function isFeatureResolved(feature: FeatureBucket): feature is ResolvedFeatureBucket;
|
|
24
|
-
export declare const getFeatureList: (features: FeatureBucket[]) => {
|
|
25
|
-
bucket: string | boolean;
|
|
26
|
-
isResolved: true;
|
|
27
|
-
getBucket: () => {
|
|
28
|
-
id: string;
|
|
29
|
-
bucket: string | boolean;
|
|
30
|
-
};
|
|
31
|
-
name: string;
|
|
32
|
-
key: string;
|
|
33
|
-
id: string;
|
|
34
|
-
}[];
|
|
35
|
-
export declare const mapExperienceToEvent: (payload: EventBusPayload) => {
|
|
36
|
-
id: string;
|
|
37
|
-
title: string;
|
|
38
|
-
} | undefined;
|
|
39
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/plugins/data-layer/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,eAAO,MAAM,UAAU,qBAEtB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,QAGjD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,QAErD;AAED,eAAO,MAAM,gBAAgB,GAC3B,WAAW;IACT,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;CAC9B,EAAE,EACH,MAAM,cAAc,GAAG,SAAS;aAHrB,MAAM;WACR,UAAU,GAAG,SAAS;GAUhC,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,oBAAoB,kBAAkB;;;CAK/E,CAAA;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,IAAI,qBAAqB,CAE1F;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,aAAa,EAAE;;;;;;;;;;GAYvD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,eAAe;;;aAgB5D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const l=require("effector"),S=require("@withease/factories"),w=require("./experience-instance-CsMhH0DN.cjs"),E=require("./logger-BsmHUUw1.cjs"),F=require("./storage-YlR83AWP.cjs"),T=require("./id-BKIWbSTy.cjs"),C=require("./object-BbFTsGh3.cjs"),B=require("./supports-YvpQZxbh.cjs"),O=l.createDomain("experience"),N=S.createFactory(({client:e,experience:t})=>{const o=O.store(t),d=l.createApi(o,{merge(i,f){return{...i,...f.experience}}}),g=o.map(i=>({name:i.name,decisionLogic:i.condition??i.decide,targetSelectors:i.targets,initializeOpenLogic:t.initializeOpen})),p=e.components.listStore.map(i=>i.find(f=>f.name===`experience:${t.id}`)||i.find(f=>f.name==="experience"),{skipVoid:!1}),n=o.map(i=>({steps:i.steps,nodes:i.nodes,edges:i.edges,conditionals:i.conditionals})),r=t.actions??[];return{id:t.id,configStore:g,treeStore:n,componentStore:p,actions:r,merge:d.merge}});function U(e){return S.invoke(N,e)}const q=S.createFactory(({client:e})=>{const t=O.store({}),o=l.createApi(t,{register(n,r){return{...n,[r.id]:r}}});function d(n){const r=t.getState()[n.id];if(r){r.merge({experience:n,strategy:"override"});return}const i=U({client:e,experience:n});o.register(i)}const g=t.map(n=>Object.values(n));function p(n){return t.map(r=>r[n],{skipVoid:!1})}return{register:d,getById:p,listStore:g}});function L(e){return S.invoke(q,e)}const _=(e,t)=>{t.register(e)},P=(e,t)=>{const{targetSelectors:o}=t.configStore.getState(),d=w.getTargetElements(o,t.id);d.forEach(({elements:p})=>p.forEach(n=>w.tagTargetElement(n,t.id))),w.createAppHosts(d,t.id).forEach(p=>{e.experienceInstances.spawn(t,p)})},H=async e=>{await Promise.all(e.experiences.listStore.getState().map(async t=>{await z(e,t)&&P(e,t)}))},z=async(e,t)=>{const{decisionLogic:o,targetSelectors:d}=t.configStore.getState();return w.getTargetElements(d,t.id).length<1||d.length===0?!1:o&&w.isRulesLogic(o)?await w.evaluateRuleLogic(e,o)===!0:!0},K=l.createDomain("component"),G=S.createFactory(({client:e,component:t,name:o})=>{const d=e.frameworks.getByName(t.frameworkName);return{name:o,component:t,frameworkStore:d}});function Y(e){return S.invoke(G,e)}const J=S.createFactory(({client:e})=>{const t=K.store({}),o=l.createApi(t,{register(n,r){return{...n,[r.name]:r}}});function d(n,r){t.getState()[n]&&E.logger("warn",`Component '${n}' already registered. Registering again will override the previous registration.`);const f=Y({client:e,name:n,component:r});o.register(f)}const g=t.map(n=>Object.values(n));function p(n){return t.map(r=>r[n],{skipVoid:!1})}return{register:d,getByName:p,listStore:g}});function Q(e){return S.invoke(J,e)}const W=(e,t,o)=>{o.register(e,t)},X=l.createDomain("framework"),Z=S.createFactory(({client:e})=>{const t=X.store({}),o=l.createApi(t,{register(n,r){return{...n,[r.name]:r.framework}}});function d(n,r){t.getState()[n]&&E.logger("warn",`Framework '${n}' already registered. Registering again will override the previous registration.`),o.register({name:n,framework:r})}const g=t.map(n=>Object.values(n));function p(n){return t.map(r=>r[n],{skipVoid:!1})}return{register:d,getByName:p,listStore:g}});function ee(e){return S.invoke(Z,e)}const te=(e,t)=>{t.register(e.name,e)},re=6e3,ne=F.createStorageKey("last_ping","global"),se=e=>`${e}/api/v1/ping`,oe=async e=>{try{const t=Date.now(),o=F.localStore.get(ne);let d=0;if(o.isSet()&&(d=o.json()??0),d&&t-d<re)return!0;const g=se(e.apiUrl),p={projectId:e.projectId,path:window.location.pathname},n=JSON.stringify(p),r={"Content-Type":"application/json"},f=document.getElementById("picked_script")?.dataset.verceltoken;f&&(r["x-vercel-protection-bypass"]=f);const h=(await fetch(g,{method:"POST",headers:r,body:n})).ok;return h&&o.set(t),h}catch(t){return E.logger("error",t),!1}};function V(e){const t=typeof window<"u",o={client:e,responses:e.responses.listStore.getState(),fields:e.fields.listStore.getState(),location:t?window.location:void 0,document:t?window.document:void 0,sessionStorage:t?window.sessionStorage:void 0,localStorage:t?window.localStorage:void 0};return Object.freeze(o)}const ie=l.createDomain("predicate"),ae=S.createFactory(({client:e})=>{const t=ie.store({}),o=l.createApi(t,{register(r,i){return{...r,[i.name]:{name:i.name,predicate:i.predicate}}}});function d(r,i){t.getState()[r]&&E.logger("warn",`Predicate '${r}' already registered. Registering again will override the previous registration.`),o.register(Object.freeze({name:r,predicate:i}))}const g=t.map(r=>Object.values(r));function p(r){return t.map(i=>i[r]?.predicate,{skipVoid:!1})}function n(r){const i=l.createStore(()=>{},{skipVoid:!1}),f=l.createEffect(async()=>{const k=p(r).getState();if(!k)return;const h=V(e);return(...m)=>k({...h,args:m})});return l.sample({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:f}),l.sample({clock:f.doneData,filter:k=>k!==void 0,target:i}),f(),i}return{register:d,getByName:p,listStore:g,getEvokablePredicate:n}});function ce(e){return S.invoke(ae,e)}const ue=(e,t,o)=>{o.register(e,t)},R=l.createDomain("feature"),le=S.createFactory(({client:e})=>{const t=R.store({}),o=R.store([]),d=l.createApi(t,{register(s,a){return{...s,[a.id]:a.feature}}});function g(s,a){t.getState()[s]&&E.logger("warn",`Feature '${s}' already registered. Registering again will override the previous registration.`);const c={id:s,feature:{...a,id:s}};d.register(Object.freeze({id:s,feature:c}))}const p=l.createEffect(async({id:s,key:a,storage:u="local"})=>{const c=F.createStorageKey(`feature:${s}:${a}`,"global"),v=(u==="session"?F.sessionStore:F.localStore).get(c).boolean();return v===null?null:{id:s,key:a,bucket:v,storage:u}}),n=l.createEffect(s=>{if(!s)return null;const a=F.createStorageKey(`feature:${s.id}:${s.key}`,"global");(s.storage==="session"?F.sessionStore:F.localStore).set(a,s.bucket)}),r=new Map,i=l.attach({source:{allFeaturesStore:t,resolvedFeaturesStore:o},effect:async({allFeaturesStore:s,resolvedFeaturesStore:a},{id:u,decide:c,key:y})=>{const v=a.find(D=>D.id===u&&D.key===y);if(v)return v;const b=s[u];if(!b)throw new Error(`Feature with id '${u}' not found`);const x=r.get(`${u}:${y}`);if(x!==void 0){const D=await x;return{id:b.id,bucket:D,key:y,storage:b.feature.storage}}const A=c();r.set(`${u}:${y}`,A);const M=await A;return{id:b.id,bucket:M,key:y,storage:b.feature.storage}}});l.sample({clock:d.register,fn:s=>{const{id:a,feature:u}=s;return{id:a,key:u.feature.key,storage:u.feature.storage}},target:p}),l.sample({source:t,clock:i.doneData,fn:(s,a)=>{const{id:u,bucket:c,storage:y}=a,v=s[u]?.feature.key;return v?{key:v,id:u,bucket:c,storage:y}:null},target:n});const f=l.combine({allFeaturesStore:t,resolvedFeaturesStore:o}).map(({allFeaturesStore:s,resolvedFeaturesStore:a})=>Object.values(s).map(u=>{const c=a.find(y=>y.id===u.id&&y.key===u.feature.key);return c?{id:u.id,name:u.feature.name,key:u.feature.key,getBucket:()=>({id:u.id,bucket:c.bucket}),isResolved:!0}:{id:u.id,name:u.feature.name,key:u.feature.key,getBucket:async()=>await i(u.feature),isResolved:!1}}));l.sample({clock:i.doneData,source:{resolvedFeatures:o},filter:({resolvedFeatures:s},{id:a,key:u})=>!s.some(y=>y.id===a&&y.key===u),fn:(s,a)=>a,target:e.eventBus.prepend(s=>({type:"feature_decide",feature:s}))}),l.sample({clock:[p.doneData,i.doneData],source:o,fn:(s,a)=>!a||s.some(c=>c.id===a.id&&c.key===a.key)?s:[...s,a],target:o});function k(s){return f.map(a=>a.find(u=>u.id===s))}function h(s){return t.map(a=>a[s],{skipVoid:!1})}function m(s){const a=l.createStore(async()=>{},{skipVoid:!1}),u=l.createEffect(async()=>{const c=k(s).getState();if(c)return async()=>(await c.getBucket()).bucket});return l.sample({source:o,filter:c=>c.some(y=>y.id===s),target:u}),l.sample({clock:u.doneData,filter:c=>c!==void 0,target:a}),u(),a}return{register:g,getById:k,getByName:h,listStore:f,getEvokableFeature:m}});function de(e){return S.invoke(le,e)}const ge=(e,t,o)=>{o.register(e,t)},I=l.createDomain("history");function $(e,t){return{id:T.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}const pe=S.createFactory(()=>{const e=I.store({entries:[]}),t=I.event(),o=I.event(),d=I.event(),g=I.event();e.on(t,(n,r)=>({entries:[...n.entries,$(r.experienceId,r.node)]})),e.on(o,(n,r)=>({entries:[...n.entries.slice(0,-1),$(r.experienceId,r.node)]})),e.on(g,(n,r)=>r);function p(n,r){const i={lastStepIndex:-1,secondLastStepIndex:-1};for(let f=n.length-1;f>=0;f--){const k=n[f],h=k?.node;if(!(!h||!w.isStepNode(h))&&!(r&&k?.experienceId!==r))if(i.lastStepIndex===-1)i.lastStepIndex=f;else{i.secondLastStepIndex=f;break}}return i}return e.on(d,(n,r)=>{const{secondLastStepIndex:i}=p(n.entries,r.experienceId),f=i!==-1?n.entries.slice(0,i+1):n.entries;return{...n,entries:f}}),{push:t,replace:o,back:d,restore:g,entriesStore:e.map(n=>n.entries)}});function fe(){return S.invoke(pe)}const me=l.createDomain("field"),ye=S.createFactory(()=>{const e=me.store({}),t=l.createApi(e,{register(r,i){return{...r,[i.field.id]:i.field}}});function o(r){t.register({field:r})}function d(r,i){const f=p(r).getState();if(!f)return;const k=Object.assign({},f,{...i});t.register({field:{...k}})}const g=e.map(r=>Object.values(r));function p(r){return e.map(i=>i[r]||null)}function n(r){return e.map(i=>Object.values(i).find(f=>f.name===r)||null)}return{register:o,update:d,getById:p,listStore:g,getByName:n}});function Se(){return S.invoke(ye)}const ve=(e,t)=>{t.register(e)},ke=l.createDomain("action"),he=S.createFactory(()=>{const e=ke.store({}),t=l.createApi(e,{register(n,r){return{...n,[r.name]:{name:r.name,action:r.action}}}});function o(n,r){t.register({name:n,action:r})}const d=e.map(n=>Object.values(n));function g(n){return e.map(r=>r[n],{skipVoid:!1})}function p(n){return e.map(r=>{const i=r[n];return i?i.action:void 0},{skipVoid:!1})}return{register:o,getByName:g,listStore:d,getEvokableAction:p}});function Fe(){return S.invoke(he)}const we=(e,t,o)=>{o.register(e,t)};function j(e){return typeof e>"u"||e===null||e===""||Array.isArray(e)&&!e.length}const be=l.createDomain("response"),xe=S.createFactory(({client:e})=>{const t=be.store({}),o=l.createEvent(),d=l.createEvent(),g=l.createApi(t,{register(m,s){return{...m,[s.fieldId]:s.response}},registerBatch(m,s){return{...m,...s}},clear(m,s){const{[s]:a,...u}=m;return u},clearAll(){return{}}});function p(m,s){if(typeof m=="string"){if(s===void 0)throw new Error("Response is required when registering a single field");g.register({fieldId:m,response:s})}else g.registerBatch(m)}async function n(m){const s=[];return await Promise.allSettled(Object.entries(m).map(async([a,u])=>{let c=u;const y=e.fields.getById(a).getState();if(!y){s.push({fieldId:a,userMessage:`Field '${a}' not found`,systemMessage:`No field with ID '${a}' exists. Available field IDs are: ${Object.keys(e.fields.listStore.getState()).join(",")}.`,value:c});return}if(y.multiple&&(typeof c=="string"||typeof c=="number"||typeof c=="boolean")&&(c=[c]),y.validation&&!C.isEmpty(y.validation)&&!j(c)){const v=await w.evaluateRuleLogic(e,y.validation,{$input:c});if(typeof v=="string"){s.push({fieldId:a,userMessage:v,systemMessage:`Field validation resulted in an error: ${v}.`,value:c});return}if(v===!1){s.push({fieldId:a,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:c});return}}if(y.required&&j(c)){s.push({fieldId:a,userMessage:"This field is required",systemMessage:"Field is required.",value:c});return}if(!y.multiple&&Array.isArray(c)&&c.length>1){s.push({fieldId:a,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:c});return}if(y.options){const v=y.options.map(x=>x.value),b=Array.isArray(c)?c:[c];Array.isArray(c)&&(b.every(x=>v.includes(x))||s.push({fieldId:a,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${v.join(", ")}`,value:c}))}})),{responsesToCommit:m,validationErrors:s}}async function r(m){const{responsesToCommit:s,validationErrors:a}=await n(m);return a.length?{errors:a}:(g.registerBatch(s),{errors:[]})}const i=t.map(m=>m),f=t.map(m=>Object.keys(m).map(a=>({fieldId:a,value:m[a]})));function k(m){const s=e.fields.getById(m),a=t.map(u=>u[m]||null);return l.combine({f:s,r:a},({f:u,r:c})=>c||(u?.defaultValue?u.defaultValue:null))}function h(m){const s=e.fields.getByName(m);return l.combine({f:s,s:t},({f:a,s:u})=>{const c=a&&u[a.id]||null;return c||(a?.defaultValue?a.defaultValue:null)})}return l.sample({clock:o,target:g.clearAll}),l.sample({clock:d,target:g.clear}),{register:p,clearAll:o,clear:d,commit:r,getResponsesToCommit:n,listStore:f,getAllStore:i,getByFieldId:k,getByFieldName:h}});function Ie(e){return S.invoke(xe,e)}function Ee(){if(B.supportsCryptoRandomUUID())return crypto.randomUUID();const e=Date.now().toString(36),t=Math.random().toString(36).substring(2,15),o=Math.random().toString(36).substring(2,15),d=Math.random().toString(36).substring(2,15);return`${e}-${t}-${o}-${d}`}const De=F.createStorageKey("session","global"),Ae=()=>{const e=F.localStore.get(De);let t;e.isSet()&&(t=e.json());const o=g=>e.set({id:g.id,isUser:g.isUser,identifiers:g.identifiers}),d={id:t?.id??Ee(),isUser:t?.isUser??void 0,identifiers:t?.identifiers??void 0,setIsUser(g){this.isUser=g,o(this)},setIdentifier(g,p){this.identifiers={...this.identifiers,[g]:p},o(this)},removeIdentifier(g){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([p])=>p!==g)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,o(this))}};return o(d),d},Re=()=>B.supportsLocalStorage()?Ae():null;exports.createActionIndex=Fe;exports.createComponentIndex=Q;exports.createExperienceIndex=L;exports.createFeatureIndex=de;exports.createFieldIndex=Se;exports.createFrameworkIndex=ee;exports.createHistory=fe;exports.createPredicateIndex=ce;exports.createResponseIndex=Ie;exports.createStateSnapshot=V;exports.initialiseExperience=P;exports.initialiseExperiences=H;exports.initialiseSession=Re;exports.ping=oe;exports.setupAction=we;exports.setupComponent=W;exports.setupExperience=_;exports.setupFeature=ge;exports.setupField=ve;exports.setupFramework=te;exports.setupPredicate=ue;
|