@picked/client 0.0.1-dev.1769473835566 → 0.0.1-dev.1769486944066

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.
Files changed (33) hide show
  1. package/dist/cjs/index.js +2 -2
  2. package/dist/cjs/plugins/create-experience/index.js +1 -1
  3. package/dist/cjs/plugins/data-layer/index.js +1 -0
  4. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  5. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  6. package/dist/cjs/server/index.js +1 -1
  7. package/dist/esm/index.js +270 -997
  8. package/dist/esm/plugins/create-experience/index.js +251 -255
  9. package/dist/esm/plugins/data-layer/index.js +198 -0
  10. package/dist/esm/plugins/responses-browser-storage/index.js +23 -25
  11. package/dist/esm/plugins/responses-indexeddb/index.js +49 -67
  12. package/dist/esm/plugins/single-page-app/index.js +3 -3
  13. package/dist/esm/plugins/web-components/index.js +1 -1
  14. package/dist/esm/plugins/window-object/index.js +1 -1
  15. package/dist/esm/server/index.js +19 -19
  16. package/dist/experience-instance-CsMhH0DN.cjs +1 -0
  17. package/dist/{experience-instance-Bg6BWuwI.js → experience-instance-DJCJUe0h.js} +227 -218
  18. package/dist/{supports-BjhuLJ8z.js → supports-DCSoenK6.js} +11 -11
  19. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  20. package/dist/types/plugins/data-layer/custom-event.d.ts +5 -0
  21. package/dist/types/plugins/data-layer/custom-event.d.ts.map +1 -0
  22. package/dist/types/plugins/data-layer/index.d.ts +2 -0
  23. package/dist/types/plugins/data-layer/index.d.ts.map +1 -0
  24. package/dist/types/plugins/data-layer/plugin.d.ts +55 -0
  25. package/dist/types/plugins/data-layer/plugin.d.ts.map +1 -0
  26. package/dist/types/plugins/data-layer/utils.d.ts +39 -0
  27. package/dist/types/plugins/data-layer/utils.d.ts.map +1 -0
  28. package/dist/types/utils/events.d.ts +7 -1
  29. package/dist/types/utils/events.d.ts.map +1 -1
  30. package/dist/user-session-DQh0BBTx.cjs +1 -0
  31. package/dist/user-session-XidjAPGf.js +747 -0
  32. package/package.json +11 -5
  33. package/dist/experience-instance-DBi45xr9.cjs +0 -1
@@ -1,4 +1,4 @@
1
- const o = Symbol("Picked"), t = globalThis, r = (n) => {
1
+ const o = /* @__PURE__ */ Symbol("Picked"), t = globalThis, r = (n) => {
2
2
  t[o] = n;
3
3
  };
4
4
  function e() {
@@ -81,15 +81,15 @@ function h() {
81
81
  export {
82
82
  t as G,
83
83
  l as a,
84
- a as b,
85
- h as c,
86
- r as d,
87
- e,
88
- s as f,
89
- c as g,
90
- u as h,
91
- i,
92
- f as j,
93
- y as k,
84
+ r as b,
85
+ e as c,
86
+ s as d,
87
+ a as e,
88
+ c as f,
89
+ u as g,
90
+ i as h,
91
+ f as i,
92
+ y as j,
93
+ h as k,
94
94
  p as s
95
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ZF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
1
+ {"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsbF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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,QA+B1B"}
@@ -0,0 +1,2 @@
1
+ export { dataLayerPlugin } from './plugin';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,55 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,39 @@
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
@@ -0,0 +1 @@
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"}
@@ -16,7 +16,7 @@ export interface PayloadMap {
16
16
  id: string;
17
17
  };
18
18
  user_decide: {
19
- value: boolean;
19
+ is_user: boolean;
20
20
  };
21
21
  feature_decide: {
22
22
  feature: ResolvedFeature;
@@ -27,6 +27,11 @@ export interface PayloadMap {
27
27
  experience_open: {
28
28
  experience: ExperienceStore;
29
29
  };
30
+ experience_interaction: {
31
+ step?: ExperienceStep;
32
+ experienceInstance: ExperienceInstance;
33
+ value: string;
34
+ };
30
35
  experience_close: {
31
36
  experience: ExperienceStore;
32
37
  };
@@ -87,6 +92,7 @@ export type PickedEventType = keyof PayloadMap;
87
92
  export type EventBusPayload = {
88
93
  [K in PickedEventType]: {
89
94
  type: K;
95
+ value?: string | boolean;
90
96
  } & (PayloadMap[K] extends never ? object : PayloadMap[K]);
91
97
  }[PickedEventType];
92
98
  export declare const createEventBus: () => import('effector').EventCallable<EventBusPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
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;