@picked/client 0.0.38-next.2 → 0.0.38
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/server/index.js +1 -1
- package/dist/esm/index.js +216 -215
- package/dist/esm/server/index.js +1 -1
- package/dist/{experience-instance-CsMhH0DN.cjs → experience-instance-CVIXiBiy.cjs} +1 -1
- package/dist/{experience-instance-CwXYJkRx.js → experience-instance-Dl8KzR7C.js} +1 -0
- package/dist/types/entities/experience/experience.d.ts +3 -0
- package/dist/types/entities/experience/experience.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +3 -0
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/picked.d.ts +4 -0
- package/dist/types/picked.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("effector"),h=require("@withease/factories"),I=require("../experience-instance-CsMhH0DN.cjs"),F=require("../logger-BsmHUUw1.cjs"),v=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),S=require("../supports-YvpQZxbh.cjs"),z=g.createDomain("experience"),K=h.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=g.createApi(r,{merge(a,f){return{...a,...f.experience}}}),i=r.map(a=>({name:a.name,decisionLogic:a.condition??a.decide,targetSelectors:a.targets,initializeOpenLogic:e.initializeOpen})),u=t.components.listStore.map(a=>a.find(f=>f.name===`experience:${e.id}`)||a.find(f=>f.name==="experience"),{skipVoid:!1}),o=r.map(a=>({steps:a.steps,nodes:a.nodes,edges:a.edges,conditionals:a.conditionals})),s=e.actions??[];return{id:e.id,configStore:i,treeStore:o,componentStore:u,actions:s,merge:n.merge}});function W(t){return h.invoke(K,t)}const H=h.createFactory(({client:t})=>{const e=z.store({}),r=g.createApi(e,{register(o,s){return{...o,[s.id]:s}}});function n(o){const s=e.getState()[o.id];if(s){s.merge({experience:o,strategy:"override"});return}const a=W({client:t,experience:o});r.register(a)}const i=e.map(o=>Object.values(o));function u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:u,listStore:i}});function G(t){return h.invoke(H,t)}const Y=(t,e)=>{e.register(t)},U=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=I.getTargetElements(r,e.id);n.forEach(({elements:u})=>u.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(u=>{t.experienceInstances.spawn(e,u)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await J(t,e)&&U(t,e)}))},J=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return I.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Q=(t,e,r)=>{const n=e.name,i=e.setup(t);if(i){const u=r[n]??{};r[n]=Object.freeze({...u,...i})}},X=g.createDomain("component"),Z=h.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function ee(t){return h.invoke(Z,t)}const te=h.createFactory(({client:t})=>{const e=X.store({}),r=g.createApi(e,{register(o,s){return{...o,[s.name]:s}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Component '${o}' already registered. Registering again will override the previous registration.`);const f=ee({client:t,name:o,component:s});r.register(f)}const i=e.map(o=>Object.values(o));function u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:u,listStore:i}});function re(t){return h.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=g.createDomain("framework"),se=h.createFactory(({client:t})=>{const e=ne.store({}),r=g.createApi(e,{register(o,s){return{...o,[s.name]:s.framework}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Framework '${o}' already registered. Registering again will override the previous registration.`),r.register({name:o,framework:s})}const i=e.map(o=>Object.values(o));function u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:u,listStore:i}});function ie(t){return h.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=v.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=v.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),u={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(u),s={"Content-Type":"application/json"},f=document.getElementById("picked_script")?.dataset.verceltoken;f&&(s["x-vercel-protection-bypass"]=f);const b=(await fetch(i,{method:"POST",headers:s,body:o})).ok;return b&&r.set(e),b}catch(e){return F.logger("error",e),!1}};function L(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const le=g.createDomain("predicate"),pe=h.createFactory(({client:t})=>{const e=le.store({}),r=g.createApi(e,{register(s,a){return{...s,[a.name]:{name:a.name,predicate:a.predicate}}}});function n(s,a){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:a}))}const i=e.map(s=>Object.values(s));function u(s){return e.map(a=>a[s]?.predicate,{skipVoid:!1})}function o(s){const a=g.createStore(()=>{},{skipVoid:!1}),f=g.createEffect(async()=>{const k=u(s).getState();if(!k)return;const b=L(t);return(...m)=>k({...b,args:m})});return g.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:f}),g.sample({clock:f.doneData,filter:k=>k!==void 0,target:a}),f(),a}return{register:n,getByName:u,listStore:i,getEvokablePredicate:o}});function ge(t){return h.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=g.createDomain("feature"),me=h.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=g.createApi(e,{register(c,d){return{...c,[d.id]:d.feature}}});function i(c,d){e.getState()[c]&&F.logger("warn",`Feature '${c}' already registered. Registering again will override the previous registration.`);const l={id:c,feature:{...d,id:c}};n.register(Object.freeze({id:c,feature:l}))}const u=g.createEffect(async({id:c,key:d,storage:p="local"})=>{const l=v.createStorageKey(`feature:${c}:${d}`,"global"),w=(p==="session"?v.sessionStore:v.localStore).get(l).boolean();return w===null?null:{id:c,key:d,bucket:w,storage:p}}),o=g.createEffect(c=>{if(!c)return null;const d=v.createStorageKey(`feature:${c.id}:${c.key}`,"global");(c.storage==="session"?v.sessionStore:v.localStore).set(d,c.bucket)}),s=new Map,a=g.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:c,resolvedFeaturesStore:d},{id:p,decide:l,key:y})=>{const w=d.find(R=>R.id===p&&R.key===y);if(w)return w;const E=c[p];if(!E)throw new Error(`Feature with id '${p}' not found`);const x=s.get(`${p}:${y}`);if(x!==void 0){const R=await x;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${p}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});g.sample({clock:n.register,fn:c=>{const{id:d,feature:p}=c;return{id:d,key:p.feature.key,storage:p.feature.storage}},target:u}),g.sample({source:e,clock:a.doneData,fn:(c,d)=>{const{id:p,bucket:l,storage:y}=d,w=c[p]?.feature.key;return w?{key:w,id:p,bucket:l,storage:y}:null},target:o});const f=g.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:c,resolvedFeaturesStore:d})=>Object.values(c).map(p=>{const l=d.find(y=>y.id===p.id&&y.key===p.feature.key);return l?{id:p.id,name:p.feature.name,key:p.feature.key,getBucket:()=>({id:p.id,bucket:l.bucket}),isResolved:!0}:{id:p.id,name:p.feature.name,key:p.feature.key,getBucket:async()=>await a(p.feature),isResolved:!1}}));g.sample({clock:a.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:c},{id:d,key:p})=>!c.some(y=>y.id===d&&y.key===p),fn:(c,d)=>d,target:t.eventBus.prepend(c=>({type:"feature_decide",feature:c}))}),g.sample({clock:[u.doneData,a.doneData],source:r,fn:(c,d)=>!d||c.some(l=>l.id===d.id&&l.key===d.key)?c:[...c,d],target:r});function k(c){return f.map(d=>d.find(p=>p.id===c))}function b(c){return e.map(d=>d[c],{skipVoid:!1})}function m(c){const d=g.createStore(async()=>{},{skipVoid:!1}),p=g.createEffect(async()=>{const l=k(c).getState();if(l)return async()=>(await l.getBucket()).bucket});return g.sample({source:r,filter:l=>l.some(y=>y.id===c),target:p}),g.sample({clock:p.doneData,filter:l=>l!==void 0,target:d}),p(),d}return{register:i,getById:k,getByName:b,listStore:f,getEvokableFeature:m}});function ye(t){return h.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},j=g.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=h.createFactory(()=>{const t=j.store({entries:[]}),e=j.event(),r=j.event(),n=j.event(),i=j.event();t.on(e,(o,s)=>({entries:[...o.entries,$(s.experienceId,s.node)]})),t.on(r,(o,s)=>({entries:[...o.entries.slice(0,-1),$(s.experienceId,s.node)]})),t.on(i,(o,s)=>s);function u(o,s){const a={lastStepIndex:-1,secondLastStepIndex:-1};for(let f=o.length-1;f>=0;f--){const k=o[f],b=k?.node;if(!(!b||!I.isStepNode(b))&&!(s&&k?.experienceId!==s))if(a.lastStepIndex===-1)a.lastStepIndex=f;else{a.secondLastStepIndex=f;break}}return a}return t.on(n,(o,s)=>{const{secondLastStepIndex:a}=u(o.entries,s.experienceId),f=a!==-1?o.entries.slice(0,a+1):o.entries;return{...o,entries:f}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ke(){return h.invoke(Se)}const ve=()=>g.createEvent(),we=g.createDomain("field"),Ie=h.createFactory(()=>{const t=we.store({}),e=g.createApi(t,{register(s,a){return{...s,[a.field.id]:a.field}}});function r(s){e.register({field:s})}function n(s,a){const f=u(s).getState();if(!f)return;const k=Object.assign({},f,{...a});e.register({field:{...k}})}const i=t.map(s=>Object.values(s));function u(s){return t.map(a=>a[s]||null)}function o(s){return t.map(a=>Object.values(a).find(f=>f.name===s)||null)}return{register:r,update:n,getById:u,listStore:i,getByName:o}});function be(){return h.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=g.createDomain("action"),xe=h.createFactory(()=>{const t=Ee.store({}),e=g.createApi(t,{register(o,s){return{...o,[s.name]:{name:s.name,action:s.action}}}});function r(o,s){e.register({name:o,action:s})}const n=t.map(o=>Object.values(o));function i(o){return t.map(s=>s[o],{skipVoid:!1})}function u(o){return t.map(s=>{const a=s[o];return a?a.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:u}});function je(){return h.invoke(xe)}const Re=(t,e,r)=>{r.register(t,e)};function O(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}const Ae=g.createDomain("response"),Pe=h.createFactory(({client:t})=>{const e=Ae.store({}),r=g.createEvent(),n=g.createEvent(),i=g.createApi(e,{register(m,c){return{...m,[c.fieldId]:c.response}},registerBatch(m,c){return{...m,...c}},clear(m,c){const{[c]:d,...p}=m;return p},clearAll(){return{}}});function u(m,c){if(typeof m=="string"){if(c===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:c})}else i.registerBatch(m)}async function o(m){const c=[];return await Promise.allSettled(Object.entries(m).map(async([d,p])=>{let l=p;const y=t.fields.getById(d).getState();if(!y){c.push({fieldId:d,userMessage:`Field '${d}' not found`,systemMessage:`No field with ID '${d}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:l});return}if(y.multiple&&(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(l=[l]),y.validation&&!q.isEmpty(y.validation)&&!O(l)){const w=await I.evaluateRuleLogic(t,y.validation,{$input:l});if(typeof w=="string"){c.push({fieldId:d,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){c.push({fieldId:d,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){c.push({fieldId:d,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){c.push({fieldId:d,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(x=>x.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(x=>w.includes(x))||c.push({fieldId:d,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:c}}async function s(m){const{responsesToCommit:c,validationErrors:d}=await o(m);return d.length?{errors:d}:(i.registerBatch(c),{errors:[]})}const a=e.map(m=>m),f=e.map(m=>Object.keys(m).map(d=>({fieldId:d,value:m[d]})));function k(m){const c=t.fields.getById(m),d=e.map(p=>p[m]||null);return g.combine({f:c,r:d},({f:p,r:l})=>l||(p?.defaultValue?p.defaultValue:null))}function b(m){const c=t.fields.getByName(m);return g.combine({f:c,s:e},({f:d,s:p})=>{const l=d&&p[d.id]||null;return l||(d?.defaultValue?d.defaultValue:null)})}return g.sample({clock:r,target:i.clearAll}),g.sample({clock:n,target:i.clear}),{register:u,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:f,getAllStore:a,getByFieldId:k,getByFieldName:b}});function Be(t){return h.invoke(Pe,t)}const De=()=>"0.0.38-next.2";function Ce(){if(S.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!S.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&r.add(i);for(const i of r){const u=i.replace("picked-","");e[u]=t.getAll(i)}const n=v.createStorageKey("s");if(r.size>0)v.sessionStore.set(n,e);else{const i=v.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){if(S.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=v.createStorageKey("session","global"),Ue=()=>{const t=v.localStore.get(ze);let e;t.isSet()&&(e=t.json());const r=i=>t.set({id:i.id,isUser:i.isUser,identifiers:i.identifiers}),n={id:e?.id??Oe(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(i){this.isUser=i,r(this)},setIdentifier(i,u){this.identifiers={...this.identifiers,[i]:u},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([u])=>u!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>S.supportsLocalStorage()?Ue():null;function V(){if(S.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!S.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){if(!S.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function Ne(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const n=Ve();if(n)return n;const i=Me();if(i)return i;throw new Error(`organizationId and projectId are required. You can provide them via one of:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-CVIXiBiy.cjs"),F=require("../logger-BsmHUUw1.cjs"),v=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),k=require("../supports-YvpQZxbh.cjs"),z=f.createDomain("experience"),K=S.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=f.createApi(r,{merge(p,h){return{...p,...h.experience}}}),i=r.map(p=>({name:p.name,decisionLogic:p.condition??p.decide,targetSelectors:p.targets,initializeOpenLogic:e.initializeOpen})),c=t.components.listStore.map(p=>p.find(h=>h.name===`experience:${e.id}`)||p.find(h=>h.name==="experience"),{skipVoid:!1}),o=r.map(p=>({steps:p.steps,nodes:p.nodes,edges:p.edges,conditionals:p.conditionals})),s=r.map(p=>p.fields),d=e.actions??[];return{id:e.id,configStore:i,treeStore:o,fieldsStore:s,componentStore:c,actions:d,merge:n.merge}});function W(t){return S.invoke(K,t)}const H=S.createFactory(({client:t})=>{const e=z.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.id]:s}}});function n(o){const s=e.getState()[o.id];if(s){s.merge({experience:o,strategy:"override"});return}const d=W({client:t,experience:o});r.register(d)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:c,listStore:i}});function G(t){return S.invoke(H,t)}const Y=(t,e)=>{e.register(t)},U=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=I.getTargetElements(r,e.id);n.forEach(({elements:c})=>c.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(c=>{t.experienceInstances.spawn(e,c)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await J(t,e)&&U(t,e)}))},J=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return I.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Q=(t,e,r)=>{const n=e.name,i=e.setup(t);if(i){const c=r[n]??{};r[n]=Object.freeze({...c,...i})}},X=f.createDomain("component"),Z=S.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function ee(t){return S.invoke(Z,t)}const te=S.createFactory(({client:t})=>{const e=X.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Component '${o}' already registered. Registering again will override the previous registration.`);const p=ee({client:t,name:o,component:s});r.register(p)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function re(t){return S.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=f.createDomain("framework"),se=S.createFactory(({client:t})=>{const e=ne.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s.framework}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Framework '${o}' already registered. Registering again will override the previous registration.`),r.register({name:o,framework:s})}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function ie(t){return S.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=v.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=v.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(c),s={"Content-Type":"application/json"},p=document.getElementById("picked_script")?.dataset.verceltoken;p&&(s["x-vercel-protection-bypass"]=p);const b=(await fetch(i,{method:"POST",headers:s,body:o})).ok;return b&&r.set(e),b}catch(e){return F.logger("error",e),!1}};function L(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const le=f.createDomain("predicate"),pe=S.createFactory(({client:t})=>{const e=le.store({}),r=f.createApi(e,{register(s,d){return{...s,[d.name]:{name:d.name,predicate:d.predicate}}}});function n(s,d){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:d}))}const i=e.map(s=>Object.values(s));function c(s){return e.map(d=>d[s]?.predicate,{skipVoid:!1})}function o(s){const d=f.createStore(()=>{},{skipVoid:!1}),p=f.createEffect(async()=>{const h=c(s).getState();if(!h)return;const b=L(t);return(...m)=>h({...b,args:m})});return f.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:p}),f.sample({clock:p.doneData,filter:h=>h!==void 0,target:d}),p(),d}return{register:n,getByName:c,listStore:i,getEvokablePredicate:o}});function ge(t){return S.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),me=S.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(a,u){return{...a,[u.id]:u.feature}}});function i(a,u){e.getState()[a]&&F.logger("warn",`Feature '${a}' already registered. Registering again will override the previous registration.`);const l={id:a,feature:{...u,id:a}};n.register(Object.freeze({id:a,feature:l}))}const c=f.createEffect(async({id:a,key:u,storage:g="local"})=>{const l=v.createStorageKey(`feature:${a}:${u}`,"global"),w=(g==="session"?v.sessionStore:v.localStore).get(l).boolean();return w===null?null:{id:a,key:u,bucket:w,storage:g}}),o=f.createEffect(a=>{if(!a)return null;const u=v.createStorageKey(`feature:${a.id}:${a.key}`,"global");(a.storage==="session"?v.sessionStore:v.localStore).set(u,a.bucket)}),s=new Map,d=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:a,resolvedFeaturesStore:u},{id:g,decide:l,key:y})=>{const w=u.find(R=>R.id===g&&R.key===y);if(w)return w;const E=a[g];if(!E)throw new Error(`Feature with id '${g}' not found`);const j=s.get(`${g}:${y}`);if(j!==void 0){const R=await j;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${g}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});f.sample({clock:n.register,fn:a=>{const{id:u,feature:g}=a;return{id:u,key:g.feature.key,storage:g.feature.storage}},target:c}),f.sample({source:e,clock:d.doneData,fn:(a,u)=>{const{id:g,bucket:l,storage:y}=u,w=a[g]?.feature.key;return w?{key:w,id:g,bucket:l,storage:y}:null},target:o});const p=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:a,resolvedFeaturesStore:u})=>Object.values(a).map(g=>{const l=u.find(y=>y.id===g.id&&y.key===g.feature.key);return l?{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:()=>({id:g.id,bucket:l.bucket}),isResolved:!0}:{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:async()=>await d(g.feature),isResolved:!1}}));f.sample({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:a},{id:u,key:g})=>!a.some(y=>y.id===u&&y.key===g),fn:(a,u)=>u,target:t.eventBus.prepend(a=>({type:"feature_decide",feature:a}))}),f.sample({clock:[c.doneData,d.doneData],source:r,fn:(a,u)=>!u||a.some(l=>l.id===u.id&&l.key===u.key)?a:[...a,u],target:r});function h(a){return p.map(u=>u.find(g=>g.id===a))}function b(a){return e.map(u=>u[a],{skipVoid:!1})}function m(a){const u=f.createStore(async()=>{},{skipVoid:!1}),g=f.createEffect(async()=>{const l=h(a).getState();if(l)return async()=>(await l.getBucket()).bucket});return f.sample({source:r,filter:l=>l.some(y=>y.id===a),target:g}),f.sample({clock:g.doneData,filter:l=>l!==void 0,target:u}),g(),u}return{register:i,getById:h,getByName:b,listStore:p,getEvokableFeature:m}});function ye(t){return S.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},x=f.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),r=x.event(),n=x.event(),i=x.event();t.on(e,(o,s)=>({entries:[...o.entries,$(s.experienceId,s.node)]})),t.on(r,(o,s)=>({entries:[...o.entries.slice(0,-1),$(s.experienceId,s.node)]})),t.on(i,(o,s)=>s);function c(o,s){const d={lastStepIndex:-1,secondLastStepIndex:-1};for(let p=o.length-1;p>=0;p--){const h=o[p],b=h?.node;if(!(!b||!I.isStepNode(b))&&!(s&&h?.experienceId!==s))if(d.lastStepIndex===-1)d.lastStepIndex=p;else{d.secondLastStepIndex=p;break}}return d}return t.on(n,(o,s)=>{const{secondLastStepIndex:d}=c(o.entries,s.experienceId),p=d!==-1?o.entries.slice(0,d+1):o.entries;return{...o,entries:p}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ke(){return S.invoke(Se)}const ve=()=>f.createEvent(),we=f.createDomain("field"),Ie=S.createFactory(()=>{const t=we.store({}),e=f.createApi(t,{register(s,d){return{...s,[d.field.id]:d.field}}});function r(s){e.register({field:s})}function n(s,d){const p=c(s).getState();if(!p)return;const h=Object.assign({},p,{...d});e.register({field:{...h}})}const i=t.map(s=>Object.values(s));function c(s){return t.map(d=>d[s]||null)}function o(s){return t.map(d=>Object.values(d).find(p=>p.name===s)||null)}return{register:r,update:n,getById:c,listStore:i,getByName:o}});function be(){return S.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=f.createDomain("action"),je=S.createFactory(()=>{const t=Ee.store({}),e=f.createApi(t,{register(o,s){return{...o,[s.name]:{name:s.name,action:s.action}}}});function r(o,s){e.register({name:o,action:s})}const n=t.map(o=>Object.values(o));function i(o){return t.map(s=>s[o],{skipVoid:!1})}function c(o){return t.map(s=>{const d=s[o];return d?d.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:c}});function xe(){return S.invoke(je)}const Re=(t,e,r)=>{r.register(t,e)};function O(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}const Ae=f.createDomain("response"),Pe=S.createFactory(({client:t})=>{const e=Ae.store({}),r=f.createEvent(),n=f.createEvent(),i=f.createApi(e,{register(m,a){return{...m,[a.fieldId]:a.response}},registerBatch(m,a){return{...m,...a}},clear(m,a){const{[a]:u,...g}=m;return g},clearAll(){return{}}});function c(m,a){if(typeof m=="string"){if(a===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:a})}else i.registerBatch(m)}async function o(m){const a=[];return await Promise.allSettled(Object.entries(m).map(async([u,g])=>{let l=g;const y=t.fields.getById(u).getState();if(!y){a.push({fieldId:u,userMessage:`Field '${u}' not found`,systemMessage:`No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:l});return}if(y.multiple&&(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(l=[l]),y.validation&&!q.isEmpty(y.validation)&&!O(l)){const w=await I.evaluateRuleLogic(t,y.validation,{$input:l});if(typeof w=="string"){a.push({fieldId:u,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){a.push({fieldId:u,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){a.push({fieldId:u,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){a.push({fieldId:u,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(j=>j.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(j=>w.includes(j))||a.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:a}}async function s(m){const{responsesToCommit:a,validationErrors:u}=await o(m);return u.length?{errors:u}:(i.registerBatch(a),{errors:[]})}const d=e.map(m=>m),p=e.map(m=>Object.keys(m).map(u=>({fieldId:u,value:m[u]})));function h(m){const a=t.fields.getById(m),u=e.map(g=>g[m]||null);return f.combine({f:a,r:u},({f:g,r:l})=>l||(g?.defaultValue?g.defaultValue:null))}function b(m){const a=t.fields.getByName(m);return f.combine({f:a,s:e},({f:u,s:g})=>{const l=u&&g[u.id]||null;return l||(u?.defaultValue?u.defaultValue:null)})}return f.sample({clock:r,target:i.clearAll}),f.sample({clock:n,target:i.clear}),{register:c,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:p,getAllStore:d,getByFieldId:h,getByFieldName:b}});function Be(t){return S.invoke(Pe,t)}const De=()=>"0.0.38";function Ce(){if(k.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&r.add(i);for(const i of r){const c=i.replace("picked-","");e[c]=t.getAll(i)}const n=v.createStorageKey("s");if(r.size>0)v.sessionStore.set(n,e);else{const i=v.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){if(k.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=v.createStorageKey("session","global"),Ue=()=>{const t=v.localStore.get(ze);let e;t.isSet()&&(e=t.json());const r=i=>t.set({id:i.id,isUser:i.isUser,identifiers:i.identifiers}),n={id:e?.id??Oe(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(i){this.isUser=i,r(this)},setIdentifier(i,c){this.identifiers={...this.identifiers,[i]:c},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([c])=>c!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>k.supportsLocalStorage()?Ue():null;function V(){if(k.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!k.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){if(!k.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function Ne(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const n=Ve();if(n)return n;const i=Me();if(i)return i;throw new Error(`organizationId and projectId are required. You can provide them via one of:
|
|
2
2
|
(1) createClient({ organizationId, projectId }) options;
|
|
3
3
|
(2) window.pickedConfig = { organizationId, projectId };
|
|
4
|
-
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`)}function A(t){return t==null||t===""||Number.isNaN(t)}const Te={default:(t,e)=>A(t)?String(e??""):String(t),append:(t,e)=>e&&!A(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!A(t)?`${e} ${t}`:t,upper:t=>typeof t=="string"?t.toUpperCase():t,lower:t=>typeof t=="string"?t.toLowerCase():t,capitalize:t=>typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):t,list:t=>{if(!t||typeof t!="object")return t;const e=new Intl.ListFormat("en",{style:"long",type:"conjunction"});if(Array.isArray(t))return e.format(t.map(String));if(t instanceof Map){const r=Array.from(t.entries()).map(([n,i])=>`${n}: ${i}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function _e(t){return typeof t=="object"&&t!==null}function qe(t,e){let r=e;for(const n of t.split("."))if(_e(r)&&n in r)r=r[n];else return;return typeof r=="function"?r():r}function Ke(t,e){const r=t.split("|").map(
|
|
4
|
+
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`)}function A(t){return t==null||t===""||Number.isNaN(t)}const Te={default:(t,e)=>A(t)?String(e??""):String(t),append:(t,e)=>e&&!A(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!A(t)?`${e} ${t}`:t,upper:t=>typeof t=="string"?t.toUpperCase():t,lower:t=>typeof t=="string"?t.toLowerCase():t,capitalize:t=>typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):t,list:t=>{if(!t||typeof t!="object")return t;const e=new Intl.ListFormat("en",{style:"long",type:"conjunction"});if(Array.isArray(t))return e.format(t.map(String));if(t instanceof Map){const r=Array.from(t.entries()).map(([n,i])=>`${n}: ${i}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function _e(t){return typeof t=="object"&&t!==null}function qe(t,e){let r=e;for(const n of t.split("."))if(_e(r)&&n in r)r=r[n];else return;return typeof r=="function"?r():r}function Ke(t,e){const r=t.split("|").map(c=>c.trim()),n=r.shift()??"";let i=qe(n,e);for(const c of r){const[o,...s]=c.split(":"),d=o?.trim()??"",p=s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),h=Te[d];h&&(i=h(i,p))}return A(i)?"":typeof i=="object"?JSON.stringify(i):String(i)}function We(t,e){let r="",n=0;for(;n<t.length;)if(t[n]==="{"&&t[n+1]==="{"){n+=2;let i="";for(;n<t.length;){if(t[n]==="}"&&t[n+1]==="}"){n+=2;break}i+=t[n++]}r+=Ke(i.trim(),e)}else r+=t[n++];return r}class M{static logger=F.logger;options;isReady=!1;project;plugins={};eventBus=ve();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=$e();history=ke();components=re({client:this});experienceInstances=I.createExperienceInstanceIndex({client:this});experiences=G({client:this});frameworks=ie({client:this});predicates=ge({client:this});features=ye({client:this});responses=Be({client:this});fields=be();actions=xe();constructor(e){F.logger("info","Picked client initializing.");const{organizationId:r,projectId:n}=Ne(e);this.organizationId=r,this.projectId=n,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ce(),this.session=Le(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:De()}),F.logger("info","Picked client initialized.")}start(){de(this),(async()=>{if(!k.supportsDocument())return;let r;typeof this.precondition>"u"?r=!0:typeof this.precondition=="boolean"?r=this.precondition:r=await I.evaluateRuleLogic(this,this.precondition)===!0;let n;r&&(this.condition===void 0?n=!0:typeof this.condition=="boolean"?n=this.condition:n=await I.evaluateRuleLogic(this,this.condition)===!0);const i=r&&n===!0;if(typeof n=="boolean"&&this.session){const c=n;this.session.setIsUser(c),this.eventBus({type:"user_decide",value:c})}this.eventBus({type:"initialize"}),document.body&&i&&B(this),await I.domInteractive(),i&&B(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session})})()}registerFramework(e){oe(e,this.frameworks)}registerComponent(e,r){D(e,r,this.components)}registerPlugin(e){Q(this,e,this.plugins)}registerFeature(e,r){he(e,r,this.features)}registerPredicate(e,r){fe(e,r,this.predicates)}registerField(e){Fe(e,this.fields)}registerAction(e,r){Re(e,r,this.actions)}registerExperience(e){e.component&&D(`experience:${e.id}`,e.component,this.components),Y(e,this.experiences)}getStateSnapshot(){return L(this)}async launchExperienceById(e){const r=this.experiences.getById(e).getState();if(!r){F.logger("warn",`Experience with id '${e}' not found.`);return}U(this,r)}setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(n=>{this.registerPlugin(n)});return}const r=typeof e=="function"?e():e;if(Array.isArray(r)){r.forEach(n=>this.registerPlugin(n));return}this.registerPlugin(r)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,n])=>{const i=typeof n=="function"?n():n;this.registerFeature(r,i)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[n,i]=r.split(":");if(!n||!i)return;let c=i;c==="true"&&(c=!0),c==="false"&&(c=!1),this.registerFeature(n,{key:`${c}`,name:n,decide:()=>c,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Predicate "${r}" is not a function.`);return}this.registerPredicate(r,n)})}setupActions(){const e=this.options.actions;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,n)})}getPluginConfig(e){return this.plugins[e]??{}}renderString=(e,r)=>{const n=this.responses.listStore.getState().reduce((i,c)=>(i[c.fieldId]=c.value,i),{});return We(e,{...r,responses:n})}}function N(t){return t.options?.some(e=>"condition"in e)??!1}function He(t){return t.some(e=>e.condition||N(e))}async function Ge(t,e){return e.length===0||!He(e)?e:(await Promise.all(e.map(async n=>{if(!(n.condition?await I.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!N(n))return n;const o=(await Promise.all(n.options.map(async d=>d.condition?await I.evaluateRuleLogic(t,d.condition)?d:null:d))).filter(d=>d!==null);return o.length===n.options.length?n:o.length===0?null:{...n,options:o}}))).filter(n=>n!==null)}const Ye=t=>{const e=new M(t);return k.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=v.createStorageKey;exports.localStore=v.localStore;exports.sessionStore=v.sessionStore;exports.subscribe=v.subscribe;exports.supportsCookies=k.supportsCookies;exports.supportsCryptoRandomUUID=k.supportsCryptoRandomUUID;exports.supportsDocument=k.supportsDocument;exports.supportsHistory=k.supportsHistory;exports.supportsIntersectionObserver=k.supportsIntersectionObserver;exports.supportsLocalStorage=k.supportsLocalStorage;exports.supportsLocation=k.supportsLocation;exports.supportsSessionStorage=k.supportsSessionStorage;exports.supportsShadowRoot=k.supportsShadowRoot;exports.supportsWebComponents=k.supportsWebComponents;exports.supportsWindow=k.supportsWindow;exports.Picked=M;exports.createClient=Ye;exports.getPickedConfig=V;exports.getStepFields=Ge;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-CVIXiBiy.cjs");function S(){let c,i;return{promise:new Promise((t,o)=>{c=t,i=o}),resolve:t=>c(t),reject:t=>i(t)}}function C(c,i){const{promise:E,resolve:t}=S(),o=r.createEvent(),s=r.createEvent(),l=r.createEvent(),x=r.createEvent(),p=r.createEvent(),f=c.experiences.listStore.map(e=>e.map(n=>k.createExperienceInstance({client:c,experience:n}))),a=r.createStore({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),u=r.createEffect(async({experience:e,availableRenderers:n,startRendererIndex:v=0})=>{if(!e)return null;for(let d=v;d<n.length;d++){const g=n[d],m=e.componentStore.getState();if(m&&g?.isValidComponent(m.component))return{rendered:await g.render(m.component,c,e),rendererIndex:d}}return null});a.on(l,(e,n)=>({...e,renderedExperiences:[...e.renderedExperiences,n],currentExperienceIndex:e.currentExperienceIndex+1})).on(p,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(x,e=>({...e,isComplete:!0})).reset(o),r.sample({clock:o,target:s}),r.sample({clock:s,source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex<e.length&&!n.isComplete,fn:({experiences:e,state:n})=>({experience:e[n.currentExperienceIndex],availableRenderers:i,startRendererIndex:0}),target:u}),r.sample({clock:u.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),r.sample({clock:l,target:s}),r.sample({clock:u.doneData,filter:e=>e===null,target:p}),r.sample({clock:p,target:s}),r.sample({clock:[s,p,l],source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex>=e.length,target:x});const I=r.attach({source:a,effect:e=>{e.isComplete&&t(e.renderedExperiences)}});return r.sample({clock:x,target:I}),o(),E}exports.render=C;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createDomain as b, createApi as F, createStore as H, createEffect as R, sample as I, attach as X, combine as O, createEvent as D } from "effector";
|
|
2
2
|
import { createFactory as w, invoke as v } from "@withease/factories";
|
|
3
|
-
import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-
|
|
4
|
-
import { f as jt } from "../experience-instance-
|
|
3
|
+
import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-Dl8KzR7C.js";
|
|
4
|
+
import { f as jt } from "../experience-instance-Dl8KzR7C.js";
|
|
5
5
|
import { l as k } from "../logger-C9a75KZn.js";
|
|
6
6
|
import { c as A, l as C, s as z } from "../storage-Co_LbKr_.js";
|
|
7
7
|
import { a as At } from "../storage-Co_LbKr_.js";
|
|
@@ -12,32 +12,33 @@ import { h as Rt, f as $t, j as Ct, e as zt, g as Ot, i as Dt, k as Ut } from ".
|
|
|
12
12
|
const K = b("experience"), de = w(
|
|
13
13
|
({ client: t, experience: e }) => {
|
|
14
14
|
const r = K.store(e), n = F(r, {
|
|
15
|
-
merge(
|
|
15
|
+
merge(p, h) {
|
|
16
16
|
return {
|
|
17
|
-
...
|
|
18
|
-
...
|
|
17
|
+
...p,
|
|
18
|
+
...h.experience
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
}), i = r.map((
|
|
22
|
-
name:
|
|
23
|
-
decisionLogic:
|
|
24
|
-
targetSelectors:
|
|
21
|
+
}), i = r.map((p) => ({
|
|
22
|
+
name: p.name,
|
|
23
|
+
decisionLogic: p.condition ?? p.decide,
|
|
24
|
+
targetSelectors: p.targets,
|
|
25
25
|
initializeOpenLogic: e.initializeOpen
|
|
26
|
-
})),
|
|
27
|
-
(
|
|
26
|
+
})), c = t.components.listStore.map(
|
|
27
|
+
(p) => p.find((h) => h.name === `experience:${e.id}`) || p.find((h) => h.name === "experience"),
|
|
28
28
|
{ skipVoid: !1 }
|
|
29
|
-
), o = r.map((
|
|
30
|
-
steps:
|
|
31
|
-
nodes:
|
|
32
|
-
edges:
|
|
33
|
-
conditionals:
|
|
34
|
-
})), s = e.actions ?? [];
|
|
29
|
+
), o = r.map((p) => ({
|
|
30
|
+
steps: p.steps,
|
|
31
|
+
nodes: p.nodes,
|
|
32
|
+
edges: p.edges,
|
|
33
|
+
conditionals: p.conditionals
|
|
34
|
+
})), s = r.map((p) => p.fields), d = e.actions ?? [];
|
|
35
35
|
return {
|
|
36
36
|
id: e.id,
|
|
37
37
|
configStore: i,
|
|
38
38
|
treeStore: o,
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
fieldsStore: s,
|
|
40
|
+
componentStore: c,
|
|
41
|
+
actions: d,
|
|
41
42
|
merge: n.merge
|
|
42
43
|
};
|
|
43
44
|
}
|
|
@@ -60,16 +61,16 @@ const pe = w(({ client: t }) => {
|
|
|
60
61
|
s.merge({ experience: o, strategy: "override" });
|
|
61
62
|
return;
|
|
62
63
|
}
|
|
63
|
-
const
|
|
64
|
-
r.register(
|
|
64
|
+
const d = le({ client: t, experience: o });
|
|
65
|
+
r.register(d);
|
|
65
66
|
}
|
|
66
67
|
const i = e.map((o) => Object.values(o));
|
|
67
|
-
function
|
|
68
|
+
function c(o) {
|
|
68
69
|
return e.map((s) => s[o], { skipVoid: !1 });
|
|
69
70
|
}
|
|
70
71
|
return {
|
|
71
72
|
register: n,
|
|
72
|
-
getById:
|
|
73
|
+
getById: c,
|
|
73
74
|
listStore: i
|
|
74
75
|
};
|
|
75
76
|
});
|
|
@@ -81,9 +82,9 @@ const ge = (t, e) => {
|
|
|
81
82
|
}, W = (t, e) => {
|
|
82
83
|
const { targetSelectors: r } = e.configStore.getState(), n = q(r, e.id);
|
|
83
84
|
n.forEach(
|
|
84
|
-
({ elements:
|
|
85
|
-
), ee(n, e.id).forEach((
|
|
86
|
-
t.experienceInstances.spawn(e,
|
|
85
|
+
({ elements: c }) => c.forEach((o) => Z(o, e.id))
|
|
86
|
+
), ee(n, e.id).forEach((c) => {
|
|
87
|
+
t.experienceInstances.spawn(e, c);
|
|
87
88
|
});
|
|
88
89
|
}, M = async (t) => {
|
|
89
90
|
await Promise.all(
|
|
@@ -97,8 +98,8 @@ const ge = (t, e) => {
|
|
|
97
98
|
}, he = (t, e, r) => {
|
|
98
99
|
const n = e.name, i = e.setup(t);
|
|
99
100
|
if (i) {
|
|
100
|
-
const
|
|
101
|
-
r[n] = Object.freeze({ ...
|
|
101
|
+
const c = r[n] ?? {};
|
|
102
|
+
r[n] = Object.freeze({ ...c, ...i });
|
|
102
103
|
}
|
|
103
104
|
}, ye = b("component"), Se = w(
|
|
104
105
|
({ client: t, component: e, name: r }) => {
|
|
@@ -127,16 +128,16 @@ const we = w(({ client: t }) => {
|
|
|
127
128
|
"warn",
|
|
128
129
|
`Component '${o}' already registered. Registering again will override the previous registration.`
|
|
129
130
|
);
|
|
130
|
-
const
|
|
131
|
-
r.register(
|
|
131
|
+
const p = ke({ client: t, name: o, component: s });
|
|
132
|
+
r.register(p);
|
|
132
133
|
}
|
|
133
134
|
const i = e.map((o) => Object.values(o));
|
|
134
|
-
function
|
|
135
|
+
function c(o) {
|
|
135
136
|
return e.map((s) => s[o], { skipVoid: !1 });
|
|
136
137
|
}
|
|
137
138
|
return {
|
|
138
139
|
register: n,
|
|
139
|
-
getByName:
|
|
140
|
+
getByName: c,
|
|
140
141
|
listStore: i
|
|
141
142
|
};
|
|
142
143
|
});
|
|
@@ -161,12 +162,12 @@ const T = (t, e, r) => {
|
|
|
161
162
|
), r.register({ name: o, framework: s });
|
|
162
163
|
}
|
|
163
164
|
const i = e.map((o) => Object.values(o));
|
|
164
|
-
function
|
|
165
|
+
function c(o) {
|
|
165
166
|
return e.map((s) => s[o], { skipVoid: !1 });
|
|
166
167
|
}
|
|
167
168
|
return {
|
|
168
169
|
register: n,
|
|
169
|
-
getByName:
|
|
170
|
+
getByName: c,
|
|
170
171
|
listStore: i
|
|
171
172
|
};
|
|
172
173
|
});
|
|
@@ -181,13 +182,13 @@ const Ee = (t, e) => {
|
|
|
181
182
|
let n = 0;
|
|
182
183
|
if (r.isSet() && (n = r.json() ?? 0), n && e - n < xe)
|
|
183
184
|
return !0;
|
|
184
|
-
const i = Pe(t.apiUrl),
|
|
185
|
+
const i = Pe(t.apiUrl), c = {
|
|
185
186
|
projectId: t.projectId,
|
|
186
187
|
path: window.location.pathname
|
|
187
|
-
}, o = JSON.stringify(
|
|
188
|
+
}, o = JSON.stringify(c), s = {
|
|
188
189
|
"Content-Type": "application/json"
|
|
189
|
-
},
|
|
190
|
-
|
|
190
|
+
}, p = document.getElementById("picked_script")?.dataset.verceltoken;
|
|
191
|
+
p && (s["x-vercel-protection-bypass"] = p);
|
|
191
192
|
const S = (await fetch(i, {
|
|
192
193
|
method: "POST",
|
|
193
194
|
headers: s,
|
|
@@ -212,32 +213,32 @@ function Y(t) {
|
|
|
212
213
|
}
|
|
213
214
|
const Be = b("predicate"), Re = w(({ client: t }) => {
|
|
214
215
|
const e = Be.store({}), r = F(e, {
|
|
215
|
-
register(s,
|
|
216
|
+
register(s, d) {
|
|
216
217
|
return {
|
|
217
218
|
...s,
|
|
218
|
-
[
|
|
219
|
-
name:
|
|
220
|
-
predicate:
|
|
219
|
+
[d.name]: {
|
|
220
|
+
name: d.name,
|
|
221
|
+
predicate: d.predicate
|
|
221
222
|
}
|
|
222
223
|
};
|
|
223
224
|
}
|
|
224
225
|
});
|
|
225
|
-
function n(s,
|
|
226
|
+
function n(s, d) {
|
|
226
227
|
e.getState()[s] && k(
|
|
227
228
|
"warn",
|
|
228
229
|
`Predicate '${s}' already registered. Registering again will override the previous registration.`
|
|
229
|
-
), r.register(Object.freeze({ name: s, predicate:
|
|
230
|
+
), r.register(Object.freeze({ name: s, predicate: d }));
|
|
230
231
|
}
|
|
231
232
|
const i = e.map((s) => Object.values(s));
|
|
232
|
-
function
|
|
233
|
-
return e.map((
|
|
233
|
+
function c(s) {
|
|
234
|
+
return e.map((d) => d[s]?.predicate, { skipVoid: !1 });
|
|
234
235
|
}
|
|
235
236
|
function o(s) {
|
|
236
|
-
const
|
|
237
|
+
const d = H(() => {
|
|
237
238
|
}, {
|
|
238
239
|
skipVoid: !1
|
|
239
|
-
}),
|
|
240
|
-
const h =
|
|
240
|
+
}), p = R(async () => {
|
|
241
|
+
const h = c(s).getState();
|
|
241
242
|
if (!h)
|
|
242
243
|
return;
|
|
243
244
|
const S = Y(t);
|
|
@@ -245,16 +246,16 @@ const Be = b("predicate"), Re = w(({ client: t }) => {
|
|
|
245
246
|
});
|
|
246
247
|
return I({
|
|
247
248
|
source: { responses: t.responses.listStore, fields: t.fields.listStore },
|
|
248
|
-
target:
|
|
249
|
+
target: p
|
|
249
250
|
}), I({
|
|
250
|
-
clock:
|
|
251
|
+
clock: p.doneData,
|
|
251
252
|
filter: (h) => h !== void 0,
|
|
252
|
-
target:
|
|
253
|
-
}),
|
|
253
|
+
target: d
|
|
254
|
+
}), p(), d;
|
|
254
255
|
}
|
|
255
256
|
return {
|
|
256
257
|
register: n,
|
|
257
|
-
getByName:
|
|
258
|
+
getByName: c,
|
|
258
259
|
listStore: i,
|
|
259
260
|
getEvokablePredicate: o
|
|
260
261
|
};
|
|
@@ -266,157 +267,157 @@ const Ce = (t, e, r) => {
|
|
|
266
267
|
r.register(t, e);
|
|
267
268
|
}, _ = b("feature"), ze = w(({ client: t }) => {
|
|
268
269
|
const e = _.store({}), r = _.store([]), n = F(e, {
|
|
269
|
-
register(
|
|
270
|
+
register(a, u) {
|
|
270
271
|
return {
|
|
271
|
-
...
|
|
272
|
-
[
|
|
272
|
+
...a,
|
|
273
|
+
[u.id]: u.feature
|
|
273
274
|
};
|
|
274
275
|
}
|
|
275
276
|
});
|
|
276
|
-
function i(
|
|
277
|
-
e.getState()[
|
|
277
|
+
function i(a, u) {
|
|
278
|
+
e.getState()[a] && k(
|
|
278
279
|
"warn",
|
|
279
|
-
`Feature '${
|
|
280
|
+
`Feature '${a}' already registered. Registering again will override the previous registration.`
|
|
280
281
|
);
|
|
281
282
|
const l = {
|
|
282
|
-
id:
|
|
283
|
+
id: a,
|
|
283
284
|
feature: {
|
|
284
|
-
...
|
|
285
|
-
id:
|
|
285
|
+
...u,
|
|
286
|
+
id: a
|
|
286
287
|
}
|
|
287
288
|
};
|
|
288
289
|
n.register(
|
|
289
290
|
Object.freeze({
|
|
290
|
-
id:
|
|
291
|
+
id: a,
|
|
291
292
|
feature: l
|
|
292
293
|
})
|
|
293
294
|
);
|
|
294
295
|
}
|
|
295
|
-
const
|
|
296
|
+
const c = R(
|
|
296
297
|
async ({
|
|
297
|
-
id:
|
|
298
|
-
key:
|
|
299
|
-
storage:
|
|
298
|
+
id: a,
|
|
299
|
+
key: u,
|
|
300
|
+
storage: f = "local"
|
|
300
301
|
}) => {
|
|
301
|
-
const l = A(`feature:${
|
|
302
|
-
return y === null ? null : { id:
|
|
302
|
+
const l = A(`feature:${a}:${u}`, "global"), y = (f === "session" ? z : C).get(l).boolean();
|
|
303
|
+
return y === null ? null : { id: a, key: u, bucket: y, storage: f };
|
|
303
304
|
}
|
|
304
|
-
), o = R((
|
|
305
|
-
if (!
|
|
305
|
+
), o = R((a) => {
|
|
306
|
+
if (!a)
|
|
306
307
|
return null;
|
|
307
|
-
const
|
|
308
|
-
(
|
|
309
|
-
}), s = /* @__PURE__ */ new Map(),
|
|
308
|
+
const u = A(`feature:${a.id}:${a.key}`, "global");
|
|
309
|
+
(a.storage === "session" ? z : C).set(u, a.bucket);
|
|
310
|
+
}), s = /* @__PURE__ */ new Map(), d = X({
|
|
310
311
|
source: { allFeaturesStore: e, resolvedFeaturesStore: r },
|
|
311
|
-
effect: async ({ allFeaturesStore:
|
|
312
|
-
const y =
|
|
313
|
-
(B) => B.id ===
|
|
312
|
+
effect: async ({ allFeaturesStore: a, resolvedFeaturesStore: u }, { id: f, decide: l, key: m }) => {
|
|
313
|
+
const y = u.find(
|
|
314
|
+
(B) => B.id === f && B.key === m
|
|
314
315
|
);
|
|
315
316
|
if (y)
|
|
316
317
|
return y;
|
|
317
|
-
const E =
|
|
318
|
+
const E = a[f];
|
|
318
319
|
if (!E)
|
|
319
|
-
throw new Error(`Feature with id '${
|
|
320
|
-
const x = s.get(`${
|
|
320
|
+
throw new Error(`Feature with id '${f}' not found`);
|
|
321
|
+
const x = s.get(`${f}:${m}`);
|
|
321
322
|
if (x !== void 0) {
|
|
322
323
|
const B = await x;
|
|
323
324
|
return { id: E.id, bucket: B, key: m, storage: E.feature.storage };
|
|
324
325
|
}
|
|
325
326
|
const N = l();
|
|
326
|
-
s.set(`${
|
|
327
|
+
s.set(`${f}:${m}`, N);
|
|
327
328
|
const Q = await N;
|
|
328
329
|
return { id: E.id, bucket: Q, key: m, storage: E.feature.storage };
|
|
329
330
|
}
|
|
330
331
|
});
|
|
331
332
|
I({
|
|
332
333
|
clock: n.register,
|
|
333
|
-
fn: (
|
|
334
|
-
const { id:
|
|
335
|
-
return { id:
|
|
334
|
+
fn: (a) => {
|
|
335
|
+
const { id: u, feature: f } = a;
|
|
336
|
+
return { id: u, key: f.feature.key, storage: f.feature.storage };
|
|
336
337
|
},
|
|
337
|
-
target:
|
|
338
|
+
target: c
|
|
338
339
|
}), I({
|
|
339
340
|
source: e,
|
|
340
|
-
clock:
|
|
341
|
-
fn: (
|
|
342
|
-
const { id:
|
|
343
|
-
return y ? { key: y, id:
|
|
341
|
+
clock: d.doneData,
|
|
342
|
+
fn: (a, u) => {
|
|
343
|
+
const { id: f, bucket: l, storage: m } = u, y = a[f]?.feature.key;
|
|
344
|
+
return y ? { key: y, id: f, bucket: l, storage: m } : null;
|
|
344
345
|
},
|
|
345
346
|
target: o
|
|
346
347
|
});
|
|
347
|
-
const
|
|
348
|
+
const p = O({ allFeaturesStore: e, resolvedFeaturesStore: r }).map(
|
|
348
349
|
({
|
|
349
|
-
allFeaturesStore:
|
|
350
|
-
resolvedFeaturesStore:
|
|
351
|
-
}) => Object.values(
|
|
352
|
-
const l =
|
|
353
|
-
(m) => m.id ===
|
|
350
|
+
allFeaturesStore: a,
|
|
351
|
+
resolvedFeaturesStore: u
|
|
352
|
+
}) => Object.values(a).map((f) => {
|
|
353
|
+
const l = u.find(
|
|
354
|
+
(m) => m.id === f.id && m.key === f.feature.key
|
|
354
355
|
);
|
|
355
356
|
return l ? {
|
|
356
|
-
id:
|
|
357
|
-
name:
|
|
358
|
-
key:
|
|
359
|
-
getBucket: () => ({ id:
|
|
357
|
+
id: f.id,
|
|
358
|
+
name: f.feature.name,
|
|
359
|
+
key: f.feature.key,
|
|
360
|
+
getBucket: () => ({ id: f.id, bucket: l.bucket }),
|
|
360
361
|
isResolved: !0
|
|
361
362
|
} : {
|
|
362
|
-
id:
|
|
363
|
-
name:
|
|
364
|
-
key:
|
|
365
|
-
getBucket: async () => await
|
|
363
|
+
id: f.id,
|
|
364
|
+
name: f.feature.name,
|
|
365
|
+
key: f.feature.key,
|
|
366
|
+
getBucket: async () => await d(f.feature),
|
|
366
367
|
isResolved: !1
|
|
367
368
|
};
|
|
368
369
|
})
|
|
369
370
|
);
|
|
370
371
|
I({
|
|
371
|
-
clock:
|
|
372
|
+
clock: d.doneData,
|
|
372
373
|
source: { resolvedFeatures: r },
|
|
373
|
-
filter: ({ resolvedFeatures:
|
|
374
|
-
(m) => m.id ===
|
|
374
|
+
filter: ({ resolvedFeatures: a }, { id: u, key: f }) => !a.some(
|
|
375
|
+
(m) => m.id === u && m.key === f
|
|
375
376
|
),
|
|
376
|
-
fn: (
|
|
377
|
-
target: t.eventBus.prepend((
|
|
377
|
+
fn: (a, u) => u,
|
|
378
|
+
target: t.eventBus.prepend((a) => ({
|
|
378
379
|
type: "feature_decide",
|
|
379
|
-
feature:
|
|
380
|
+
feature: a
|
|
380
381
|
}))
|
|
381
382
|
}), I({
|
|
382
|
-
clock: [
|
|
383
|
+
clock: [c.doneData, d.doneData],
|
|
383
384
|
source: r,
|
|
384
|
-
fn: (
|
|
385
|
-
(l) => l.id ===
|
|
386
|
-
) ?
|
|
385
|
+
fn: (a, u) => !u || a.some(
|
|
386
|
+
(l) => l.id === u.id && l.key === u.key
|
|
387
|
+
) ? a : [...a, u],
|
|
387
388
|
target: r
|
|
388
389
|
});
|
|
389
|
-
function h(
|
|
390
|
-
return
|
|
390
|
+
function h(a) {
|
|
391
|
+
return p.map((u) => u.find((f) => f.id === a));
|
|
391
392
|
}
|
|
392
|
-
function S(
|
|
393
|
-
return e.map((
|
|
393
|
+
function S(a) {
|
|
394
|
+
return e.map((u) => u[a], { skipVoid: !1 });
|
|
394
395
|
}
|
|
395
|
-
function g(
|
|
396
|
-
const
|
|
396
|
+
function g(a) {
|
|
397
|
+
const u = H(
|
|
397
398
|
async () => {
|
|
398
399
|
},
|
|
399
400
|
{ skipVoid: !1 }
|
|
400
|
-
),
|
|
401
|
-
const l = h(
|
|
401
|
+
), f = R(async () => {
|
|
402
|
+
const l = h(a).getState();
|
|
402
403
|
if (l)
|
|
403
404
|
return async () => (await l.getBucket()).bucket;
|
|
404
405
|
});
|
|
405
406
|
return I({
|
|
406
407
|
source: r,
|
|
407
|
-
filter: (l) => l.some((m) => m.id ===
|
|
408
|
-
target:
|
|
408
|
+
filter: (l) => l.some((m) => m.id === a),
|
|
409
|
+
target: f
|
|
409
410
|
}), I({
|
|
410
|
-
clock:
|
|
411
|
+
clock: f.doneData,
|
|
411
412
|
filter: (l) => l !== void 0,
|
|
412
|
-
target:
|
|
413
|
-
}),
|
|
413
|
+
target: u
|
|
414
|
+
}), f(), u;
|
|
414
415
|
}
|
|
415
416
|
return {
|
|
416
417
|
register: i,
|
|
417
418
|
getById: h,
|
|
418
419
|
getByName: S,
|
|
419
|
-
listStore:
|
|
420
|
+
listStore: p,
|
|
420
421
|
getEvokableFeature: g
|
|
421
422
|
};
|
|
422
423
|
});
|
|
@@ -445,25 +446,25 @@ const Ue = w(() => {
|
|
|
445
446
|
L(s.experienceId, s.node)
|
|
446
447
|
]
|
|
447
448
|
})), t.on(i, (o, s) => s);
|
|
448
|
-
function
|
|
449
|
-
const
|
|
450
|
-
for (let
|
|
451
|
-
const h = o[
|
|
449
|
+
function c(o, s) {
|
|
450
|
+
const d = { lastStepIndex: -1, secondLastStepIndex: -1 };
|
|
451
|
+
for (let p = o.length - 1; p >= 0; p--) {
|
|
452
|
+
const h = o[p], S = h?.node;
|
|
452
453
|
if (!(!S || !re(S)) && !(s && h?.experienceId !== s))
|
|
453
|
-
if (
|
|
454
|
-
|
|
454
|
+
if (d.lastStepIndex === -1)
|
|
455
|
+
d.lastStepIndex = p;
|
|
455
456
|
else {
|
|
456
|
-
|
|
457
|
+
d.secondLastStepIndex = p;
|
|
457
458
|
break;
|
|
458
459
|
}
|
|
459
460
|
}
|
|
460
|
-
return
|
|
461
|
+
return d;
|
|
461
462
|
}
|
|
462
463
|
return t.on(n, (o, s) => {
|
|
463
|
-
const { secondLastStepIndex:
|
|
464
|
+
const { secondLastStepIndex: d } = c(o.entries, s.experienceId), p = d !== -1 ? o.entries.slice(0, d + 1) : o.entries;
|
|
464
465
|
return {
|
|
465
466
|
...o,
|
|
466
|
-
entries:
|
|
467
|
+
entries: p
|
|
467
468
|
};
|
|
468
469
|
}), {
|
|
469
470
|
push: e,
|
|
@@ -478,36 +479,36 @@ function Ve() {
|
|
|
478
479
|
}
|
|
479
480
|
const Ne = () => D(), Me = b("field"), Te = w(() => {
|
|
480
481
|
const t = Me.store({}), e = F(t, {
|
|
481
|
-
register(s,
|
|
482
|
+
register(s, d) {
|
|
482
483
|
return {
|
|
483
484
|
...s,
|
|
484
|
-
[
|
|
485
|
+
[d.field.id]: d.field
|
|
485
486
|
};
|
|
486
487
|
}
|
|
487
488
|
});
|
|
488
489
|
function r(s) {
|
|
489
490
|
e.register({ field: s });
|
|
490
491
|
}
|
|
491
|
-
function n(s,
|
|
492
|
-
const
|
|
493
|
-
if (!
|
|
492
|
+
function n(s, d) {
|
|
493
|
+
const p = c(s).getState();
|
|
494
|
+
if (!p)
|
|
494
495
|
return;
|
|
495
|
-
const h = Object.assign({},
|
|
496
|
-
...
|
|
496
|
+
const h = Object.assign({}, p, {
|
|
497
|
+
...d
|
|
497
498
|
});
|
|
498
499
|
e.register({ field: { ...h } });
|
|
499
500
|
}
|
|
500
501
|
const i = t.map((s) => Object.values(s));
|
|
501
|
-
function
|
|
502
|
-
return t.map((
|
|
502
|
+
function c(s) {
|
|
503
|
+
return t.map((d) => d[s] || null);
|
|
503
504
|
}
|
|
504
505
|
function o(s) {
|
|
505
|
-
return t.map((
|
|
506
|
+
return t.map((d) => Object.values(d).find((p) => p.name === s) || null);
|
|
506
507
|
}
|
|
507
508
|
return {
|
|
508
509
|
register: r,
|
|
509
510
|
update: n,
|
|
510
|
-
getById:
|
|
511
|
+
getById: c,
|
|
511
512
|
listStore: i,
|
|
512
513
|
getByName: o
|
|
513
514
|
};
|
|
@@ -536,11 +537,11 @@ const Le = (t, e) => {
|
|
|
536
537
|
function i(o) {
|
|
537
538
|
return t.map((s) => s[o], { skipVoid: !1 });
|
|
538
539
|
}
|
|
539
|
-
function
|
|
540
|
+
function c(o) {
|
|
540
541
|
return t.map(
|
|
541
542
|
(s) => {
|
|
542
|
-
const
|
|
543
|
-
return
|
|
543
|
+
const d = s[o];
|
|
544
|
+
return d ? d.action : void 0;
|
|
544
545
|
},
|
|
545
546
|
{ skipVoid: !1 }
|
|
546
547
|
);
|
|
@@ -549,7 +550,7 @@ const Le = (t, e) => {
|
|
|
549
550
|
register: r,
|
|
550
551
|
getByName: i,
|
|
551
552
|
listStore: n,
|
|
552
|
-
getEvokableAction:
|
|
553
|
+
getEvokableAction: c
|
|
553
554
|
};
|
|
554
555
|
});
|
|
555
556
|
function qe() {
|
|
@@ -563,45 +564,45 @@ function G(t) {
|
|
|
563
564
|
}
|
|
564
565
|
const We = b("response"), Ye = w(({ client: t }) => {
|
|
565
566
|
const e = We.store({}), r = D(), n = D(), i = F(e, {
|
|
566
|
-
register(g,
|
|
567
|
+
register(g, a) {
|
|
567
568
|
return {
|
|
568
569
|
...g,
|
|
569
|
-
[
|
|
570
|
+
[a.fieldId]: a.response
|
|
570
571
|
};
|
|
571
572
|
},
|
|
572
|
-
registerBatch(g,
|
|
573
|
+
registerBatch(g, a) {
|
|
573
574
|
return {
|
|
574
575
|
...g,
|
|
575
|
-
...
|
|
576
|
+
...a
|
|
576
577
|
};
|
|
577
578
|
},
|
|
578
|
-
clear(g,
|
|
579
|
-
const { [
|
|
580
|
-
return
|
|
579
|
+
clear(g, a) {
|
|
580
|
+
const { [a]: u, ...f } = g;
|
|
581
|
+
return f;
|
|
581
582
|
},
|
|
582
583
|
clearAll() {
|
|
583
584
|
return {};
|
|
584
585
|
}
|
|
585
586
|
});
|
|
586
|
-
function
|
|
587
|
+
function c(g, a) {
|
|
587
588
|
if (typeof g == "string") {
|
|
588
|
-
if (
|
|
589
|
+
if (a === void 0)
|
|
589
590
|
throw new Error("Response is required when registering a single field");
|
|
590
|
-
i.register({ fieldId: g, response:
|
|
591
|
+
i.register({ fieldId: g, response: a });
|
|
591
592
|
} else
|
|
592
593
|
i.registerBatch(g);
|
|
593
594
|
}
|
|
594
595
|
async function o(g) {
|
|
595
|
-
const
|
|
596
|
+
const a = [];
|
|
596
597
|
return await Promise.allSettled(
|
|
597
|
-
Object.entries(g).map(async ([
|
|
598
|
-
let l =
|
|
599
|
-
const m = t.fields.getById(
|
|
598
|
+
Object.entries(g).map(async ([u, f]) => {
|
|
599
|
+
let l = f;
|
|
600
|
+
const m = t.fields.getById(u).getState();
|
|
600
601
|
if (!m) {
|
|
601
|
-
|
|
602
|
-
fieldId:
|
|
603
|
-
userMessage: `Field '${
|
|
604
|
-
systemMessage: `No field with ID '${
|
|
602
|
+
a.push({
|
|
603
|
+
fieldId: u,
|
|
604
|
+
userMessage: `Field '${u}' not found`,
|
|
605
|
+
systemMessage: `No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
|
|
605
606
|
value: l
|
|
606
607
|
});
|
|
607
608
|
return;
|
|
@@ -611,8 +612,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
611
612
|
$input: l
|
|
612
613
|
});
|
|
613
614
|
if (typeof y == "string") {
|
|
614
|
-
|
|
615
|
-
fieldId:
|
|
615
|
+
a.push({
|
|
616
|
+
fieldId: u,
|
|
616
617
|
userMessage: y,
|
|
617
618
|
systemMessage: `Field validation resulted in an error: ${y}.`,
|
|
618
619
|
value: l
|
|
@@ -620,8 +621,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
620
621
|
return;
|
|
621
622
|
}
|
|
622
623
|
if (y === !1) {
|
|
623
|
-
|
|
624
|
-
fieldId:
|
|
624
|
+
a.push({
|
|
625
|
+
fieldId: u,
|
|
625
626
|
userMessage: "This field is invalid",
|
|
626
627
|
systemMessage: "Field validation resulted in an unspecified error.",
|
|
627
628
|
value: l
|
|
@@ -630,8 +631,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
630
631
|
}
|
|
631
632
|
}
|
|
632
633
|
if (m.required && G(l)) {
|
|
633
|
-
|
|
634
|
-
fieldId:
|
|
634
|
+
a.push({
|
|
635
|
+
fieldId: u,
|
|
635
636
|
userMessage: "This field is required",
|
|
636
637
|
systemMessage: "Field is required.",
|
|
637
638
|
value: l
|
|
@@ -639,8 +640,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
639
640
|
return;
|
|
640
641
|
}
|
|
641
642
|
if (!m.multiple && Array.isArray(l) && l.length > 1) {
|
|
642
|
-
|
|
643
|
-
fieldId:
|
|
643
|
+
a.push({
|
|
644
|
+
fieldId: u,
|
|
644
645
|
userMessage: "This field expects a single response",
|
|
645
646
|
systemMessage: "Field expects a single response.",
|
|
646
647
|
value: l
|
|
@@ -649,33 +650,33 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
649
650
|
}
|
|
650
651
|
if (m.options) {
|
|
651
652
|
const y = m.options.map((x) => x.value), E = Array.isArray(l) ? l : [l];
|
|
652
|
-
Array.isArray(l) && (E.every((x) => y.includes(x)) ||
|
|
653
|
-
fieldId:
|
|
653
|
+
Array.isArray(l) && (E.every((x) => y.includes(x)) || a.push({
|
|
654
|
+
fieldId: u,
|
|
654
655
|
userMessage: "This field expects a valid option",
|
|
655
656
|
systemMessage: `Field expects a valid option. Valid options are: ${y.join(", ")}`,
|
|
656
657
|
value: l
|
|
657
658
|
}));
|
|
658
659
|
}
|
|
659
660
|
})
|
|
660
|
-
), { responsesToCommit: g, validationErrors:
|
|
661
|
+
), { responsesToCommit: g, validationErrors: a };
|
|
661
662
|
}
|
|
662
663
|
async function s(g) {
|
|
663
|
-
const { responsesToCommit:
|
|
664
|
-
return
|
|
664
|
+
const { responsesToCommit: a, validationErrors: u } = await o(g);
|
|
665
|
+
return u.length ? { errors: u } : (i.registerBatch(a), { errors: [] });
|
|
665
666
|
}
|
|
666
|
-
const
|
|
667
|
-
fieldId:
|
|
668
|
-
value: g[
|
|
667
|
+
const d = e.map((g) => g), p = e.map((g) => Object.keys(g).map((u) => ({
|
|
668
|
+
fieldId: u,
|
|
669
|
+
value: g[u]
|
|
669
670
|
})));
|
|
670
671
|
function h(g) {
|
|
671
|
-
const
|
|
672
|
-
return O({ f:
|
|
672
|
+
const a = t.fields.getById(g), u = e.map((f) => f[g] || null);
|
|
673
|
+
return O({ f: a, r: u }, ({ f, r: l }) => l || (f?.defaultValue ? f.defaultValue : null));
|
|
673
674
|
}
|
|
674
675
|
function S(g) {
|
|
675
|
-
const
|
|
676
|
-
return O({ f:
|
|
677
|
-
const l =
|
|
678
|
-
return l || (
|
|
676
|
+
const a = t.fields.getByName(g);
|
|
677
|
+
return O({ f: a, s: e }, ({ f: u, s: f }) => {
|
|
678
|
+
const l = u && f[u.id] || null;
|
|
679
|
+
return l || (u?.defaultValue ? u.defaultValue : null);
|
|
679
680
|
});
|
|
680
681
|
}
|
|
681
682
|
return I({
|
|
@@ -685,13 +686,13 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
685
686
|
clock: n,
|
|
686
687
|
target: i.clear
|
|
687
688
|
}), {
|
|
688
|
-
register:
|
|
689
|
+
register: c,
|
|
689
690
|
clearAll: r,
|
|
690
691
|
clear: n,
|
|
691
692
|
commit: s,
|
|
692
693
|
getResponsesToCommit: o,
|
|
693
|
-
listStore:
|
|
694
|
-
getAllStore:
|
|
694
|
+
listStore: p,
|
|
695
|
+
getAllStore: d,
|
|
695
696
|
getByFieldId: h,
|
|
696
697
|
getByFieldName: S
|
|
697
698
|
};
|
|
@@ -699,7 +700,7 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
699
700
|
function Je(t) {
|
|
700
701
|
return v(Ye, t);
|
|
701
702
|
}
|
|
702
|
-
const Qe = () => "0.0.38
|
|
703
|
+
const Qe = () => "0.0.38";
|
|
703
704
|
function Xe() {
|
|
704
705
|
if (U()) {
|
|
705
706
|
const t = [
|
|
@@ -722,8 +723,8 @@ function Ze() {
|
|
|
722
723
|
for (const [i] of t.entries())
|
|
723
724
|
i.startsWith("picked-") && r.add(i);
|
|
724
725
|
for (const i of r) {
|
|
725
|
-
const
|
|
726
|
-
e[
|
|
726
|
+
const c = i.replace("picked-", "");
|
|
727
|
+
e[c] = t.getAll(i);
|
|
727
728
|
}
|
|
728
729
|
const n = A("s");
|
|
729
730
|
if (r.size > 0)
|
|
@@ -756,12 +757,12 @@ const tt = A("session", "global"), rt = () => {
|
|
|
756
757
|
setIsUser(i) {
|
|
757
758
|
this.isUser = i, r(this);
|
|
758
759
|
},
|
|
759
|
-
setIdentifier(i,
|
|
760
|
-
this.identifiers = { ...this.identifiers, [i]:
|
|
760
|
+
setIdentifier(i, c) {
|
|
761
|
+
this.identifiers = { ...this.identifiers, [i]: c }, r(this);
|
|
761
762
|
},
|
|
762
763
|
removeIdentifier(i) {
|
|
763
764
|
this.identifiers && (this.identifiers = Object.fromEntries(
|
|
764
|
-
Object.entries(this.identifiers).filter(([
|
|
765
|
+
Object.entries(this.identifiers).filter(([c]) => c !== i)
|
|
765
766
|
), this.identifiers = Object.keys(this.identifiers).length ? this.identifiers : void 0, r(this));
|
|
766
767
|
}
|
|
767
768
|
};
|
|
@@ -840,11 +841,11 @@ function dt(t, e) {
|
|
|
840
841
|
return typeof r == "function" ? r() : r;
|
|
841
842
|
}
|
|
842
843
|
function lt(t, e) {
|
|
843
|
-
const r = t.split("|").map((
|
|
844
|
+
const r = t.split("|").map((c) => c.trim()), n = r.shift() ?? "";
|
|
844
845
|
let i = dt(n, e);
|
|
845
|
-
for (const
|
|
846
|
-
const [o, ...s] =
|
|
847
|
-
h && (i = h(i,
|
|
846
|
+
for (const c of r) {
|
|
847
|
+
const [o, ...s] = c.split(":"), d = o?.trim() ?? "", p = s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g, ""), h = ct[d];
|
|
848
|
+
h && (i = h(i, p));
|
|
848
849
|
}
|
|
849
850
|
return $(i) ? "" : typeof i == "object" ? JSON.stringify(i) : String(i);
|
|
850
851
|
}
|
|
@@ -905,8 +906,8 @@ class ft {
|
|
|
905
906
|
r && (this.condition === void 0 ? n = !0 : typeof this.condition == "boolean" ? n = this.condition : n = await j(this, this.condition) === !0);
|
|
906
907
|
const i = r && n === !0;
|
|
907
908
|
if (typeof n == "boolean" && this.session) {
|
|
908
|
-
const
|
|
909
|
-
this.session.setIsUser(
|
|
909
|
+
const c = n;
|
|
910
|
+
this.session.setIsUser(c), this.eventBus({ type: "user_decide", value: c });
|
|
910
911
|
}
|
|
911
912
|
this.eventBus({ type: "initialize" }), document.body && i && M(this), await se(), i && M(this), this.eventBus({ type: "ready" }), this.isReady = !0, this.session && this.eventBus({ type: "session", ...this.session });
|
|
912
913
|
})();
|
|
@@ -981,13 +982,13 @@ class ft {
|
|
|
981
982
|
const [n, i] = r.split(":");
|
|
982
983
|
if (!n || !i)
|
|
983
984
|
return;
|
|
984
|
-
let
|
|
985
|
-
|
|
986
|
-
key: `${
|
|
985
|
+
let c = i;
|
|
986
|
+
c === "true" && (c = !0), c === "false" && (c = !1), this.registerFeature(n, {
|
|
987
|
+
key: `${c}`,
|
|
987
988
|
// use the assigned bucket value as the key
|
|
988
989
|
name: n,
|
|
989
990
|
// eslint-disable-next-line sonarjs/function-return-type
|
|
990
|
-
decide: () =>
|
|
991
|
+
decide: () => c,
|
|
991
992
|
storage: "session"
|
|
992
993
|
});
|
|
993
994
|
} catch {
|
|
@@ -1060,7 +1061,7 @@ class ft {
|
|
|
1060
1061
|
* // => "Fruits: apple, banana, and cherry"
|
|
1061
1062
|
*/
|
|
1062
1063
|
renderString = (e, r) => {
|
|
1063
|
-
const n = this.responses.listStore.getState().reduce((i,
|
|
1064
|
+
const n = this.responses.listStore.getState().reduce((i, c) => (i[c.fieldId] = c.value, i), {});
|
|
1064
1065
|
return pt(e, {
|
|
1065
1066
|
...r,
|
|
1066
1067
|
responses: n
|
|
@@ -1081,8 +1082,8 @@ async function bt(t, e) {
|
|
|
1081
1082
|
if (!n.options || !J(n))
|
|
1082
1083
|
return n;
|
|
1083
1084
|
const o = (await Promise.all(
|
|
1084
|
-
n.options.map(async (
|
|
1085
|
-
)).filter((
|
|
1085
|
+
n.options.map(async (d) => d.condition ? await j(t, d.condition) ? d : null : d)
|
|
1086
|
+
)).filter((d) => d !== null);
|
|
1086
1087
|
return o.length === n.options.length ? n : o.length === 0 ? null : { ...n, options: o };
|
|
1087
1088
|
})
|
|
1088
1089
|
)).filter((n) => n !== null);
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createEvent as i, createStore as v, createEffect as C, sample as n, attach as S } from "effector";
|
|
2
|
-
import { h as F } from "../../experience-instance-
|
|
2
|
+
import { h as F } from "../../experience-instance-Dl8KzR7C.js";
|
|
3
3
|
function R() {
|
|
4
4
|
let c, p;
|
|
5
5
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const i=require("effector"),q=require("@withease/factories"),H=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),ye=require("./object-BbFTsGh3.cjs");function we(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ie(e){return e instanceof Promise}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(we(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function T(e){return`${e}`}const Ee={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await A(e),"!":async e=>!await A(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(T(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(T).join(""),substr:(e,t,r)=>{const n=T(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=T(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(t))},throw(e){throw new Error(T(e))}};async function g(e,t){if(!e)return e;if(ie(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!ne(e))return e;const r=Ne(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await A(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await A(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await A(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const h=await A(await g(n[1],p));return{item:p,shouldInclude:h}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let h=n.length>2?await g(n[2],t):null;for(const k of o)h=await g(u,{current:k,accumulator:h});return h}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await A(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await A(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await A(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return ne(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ee[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function A(e){return ie(e)?A(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ne(e){return Object.keys(e)[0]}function ae(e){return!ye.isEmpty(e)}async function z(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...h)=>p.predicate({...n,args:h})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:h}=await p.getBucket();return h}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function xe(e){return!H.supportsWindow()||!H.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const Ie="open";function ke(e){if(!H.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:Ie})}function ve(){return new Promise((e,t)=>{if(!H.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function be(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const C="picked-root",j="picked-target",Ae="picked-root";function Oe(e,t){return[...e,{selector:`${Ae}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=xe(n.selector).filter(c=>!_e(c,t)&&!ce(c,t));return{...n,elements:a}})}function Fe(e,t){return e.flatMap(r=>r.elements.map(n=>Te(n,r.placement,t)))}function Be(e,t){e.classList.add(j),e.classList.add(`${j}-${t}`)}function _e(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(`${j}`)}function ce(e,t){return t?e.classList.contains(`${C}-${t}`):e.classList.contains(C)}function $e(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(C),t.classList.add(`${C}-${e}`),t}function Te(e,t,r){let n;const a=$e(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function re(e){return e.type==="conditional"}function M(e){return e.type==="step"}function oe(e){return e.type==="experience"}function V(e){return e.type==="origin"}function se(e){return e.type==="action"}const ue=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),M(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?ue(e,t,u,!1,a):[]})),Me=(e,t,r)=>ue(e,t,r,!0,new Set),fe=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const h=e.find(L=>L.id===p.destinationNodeId);if(!h)continue;const[k,F]=fe(e,t,h,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,F+1))}return o===1/0?[-1,-1]:[o,u]},Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(F=>F.id===u.sourceNodeId);if(!p)continue;const[h,k]=le(e,t,p,new Set(n));h!==-1&&(c=Math.min(c,h+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},De=(e,t,r)=>le(e,t,r,new Set),de=e=>e.find(r=>r.type==="origin")||null,X=(e,t,r)=>{if(!e)return de(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Re(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const J=i.createDomain("experience-instance"),Pe=q.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),h=t.componentStore,k=J.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),L=F.map(s=>s.filter(d=>M(d.node))),x=F.map(s=>s[s.length-1]?.node||null),f=i.combine(t.treeStore,x,({steps:s},d)=>s.find(l=>d&&M(d)&&l.id===d.stepId)||null),S=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?Me(s,d,l):[]),v=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?De(s,d,l):[-1,-1]),B=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?Le(s,d,l):[-1,-1]),b=J.store(!1),_=i.createApi(b,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),ge=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),me=i.attach({source:t.treeStore,effect:async(s,d)=>{const l=s.nodes.find(w=>M(w)&&w.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),Q=i.attach({source:x,effect:s=>{}}),U=i.attach({source:t.treeStore,effect:async({nodes:s})=>de(s)}),W=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(V(l))return X(l,s,d)}}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:l},w)=>{if(!re(w))return;const $=l.find(O=>O.id===w.conditionalId);if(!$)return;const I=w.id,y=await z(e,$.condition);return Re(!!y,I,s,d)}}),Y=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(!se(l))return;const w=l.action;if(!w){N.logger("warn",`Action node ${l.id} has no action name`);return}const $=e.actions.getByName(w).getState();if(!$){N.logger("warn",`Action '${w}' not registered on client`);const I=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return I?s.find(y=>y.id===I.destinationNodeId):null}if(typeof $.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const I=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return I?s.find(y=>y.id===I.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await $.action(w);const I=d.find(O=>O.sourceNodeId===l.id&&O.sourceNodeHandle==="true");if(!I)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const y=s.find(O=>O.id===I.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${y?.id}`),y||null}catch(I){N.logger("warn",`Action '${w}' failed:`,I);const y=d.find(P=>P.sourceNodeId===l.id&&P.sourceNodeHandle==="false");if(!y)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const O=s.find(P=>P.id===y.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${O?.id}`),O||null}}}),he=i.createEffect(s=>{if(oe(s))return e.launchExperienceById(s.experienceId)}),Z=i.attach({source:[x,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),D=i.attach({source:[x,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),Se=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),ee=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ae(s)?!!await z(e,s):s??!1}),K=i.createEvent(),te=i.createEvent();return i.sample({source:x,target:K}),i.sample({clock:K,filter:s=>s===null,target:U}),i.sample({clock:K,filter:s=>s!==null,target:te}),i.split({source:te,match:s=>re(s)?"condition":M(s)?"step":oe(s)?"launchExperience":V(s)?"origin":se(s)?"action":"other",cases:{origin:W,condition:G,step:Q,launchExperience:he,action:Y,__:i.createEvent()}}),i.sample({clock:[G.doneData,W.doneData,U.doneData,D.doneData,Z.doneData,Y.doneData],filter:Boolean,target:Se}),i.sample({clock:a,target:D}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:ge}),i.sample({clock:o,target:me}),i.sample({source:i.combine([G.pending,W.pending,U.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Q.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:ee}),i.sample({source:ee.doneData,fn:Boolean,target:b}),i.sample({source:x,clock:n,filter:s=>s?V(s):!0,target:Z}),i.sample({source:b,filter:Boolean,target:n}),i.sample({source:b,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:b,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:h,stateStore:k,isOpenStore:b,open:_.open,close:_.close,toggleOpen:_.toggle,setOpen:_.set,treeStore:t.treeStore,currentNodeStore:x,currentStepStore:f,nextReachableStepNodesStore:S,stepsToOriginStore:v,stepsToLeafStore:B,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:L}});function pe(e){return q.invoke(Pe,e)}const He=q.createFactory(({client:e})=>{const t=J.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,S){const v=[...f[S.experienceId]??[]];return v.push(S),{...f,[S.experienceId]:v}},unregister(f,S){const v=S.experienceId,B=f[v]?.filter(b=>b!==S);return{...f,[v]:B??[]}}}),o=i.createEffect(({experience:f,target:S})=>pe({client:e,experience:f,target:S})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&be(f.target,()=>{a(f)})}),h=i.createEffect(f=>{c.unregister(f)}),k=i.createEffect(f=>{const S=f.componentStore.getState();if(!S){N.logger("warn","No app component registered. Skipping init.");return}const v=S.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${S.name}'. Skipping rendering.`);return}const B=f.target;if(!B){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const b=ke(B);try{v.render(b,S.component,e,f)}catch(_){N.logger("error",_)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:h}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialize",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,S){r({experience:f,target:S})}const L=t.map(f=>Object.values(f).flat());function x(f){return t.map(S=>S[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:x,listStore:L}});function Ce(e){return q.invoke(He,e)}exports.createAppHosts=Fe;exports.createExperienceInstance=pe;exports.createExperienceInstanceIndex=Ce;exports.domInteractive=ve;exports.evaluateRuleLogic=z;exports.getTargetElements=Oe;exports.isPickedRoot=ce;exports.isRulesLogic=ae;exports.isStepNode=M;exports.tagTargetElement=Be;
|
|
1
|
+
"use strict";const i=require("effector"),q=require("@withease/factories"),H=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),ye=require("./object-BbFTsGh3.cjs");function we(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ie(e){return e instanceof Promise}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(we(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function T(e){return`${e}`}const Ee={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await A(e),"!":async e=>!await A(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(T(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(T).join(""),substr:(e,t,r)=>{const n=T(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=T(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(t))},throw(e){throw new Error(T(e))}};async function g(e,t){if(!e)return e;if(ie(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!ne(e))return e;const r=Ne(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await A(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await A(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await A(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const S=await A(await g(n[1],p));return{item:p,shouldInclude:S}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let S=n.length>2?await g(n[2],t):null;for(const k of o)S=await g(u,{current:k,accumulator:S});return S}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await A(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await A(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await A(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return ne(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ee[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function A(e){return ie(e)?A(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ne(e){return Object.keys(e)[0]}function ae(e){return!ye.isEmpty(e)}async function z(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...S)=>p.predicate({...n,args:S})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:S}=await p.getBucket();return S}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function Ie(e){return!H.supportsWindow()||!H.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const xe="open";function ke(e){if(!H.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:xe})}function ve(){return new Promise((e,t)=>{if(!H.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function be(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const C="picked-root",j="picked-target",Ae="picked-root";function Oe(e,t){return[...e,{selector:`${Ae}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=Ie(n.selector).filter(c=>!_e(c,t)&&!ce(c,t));return{...n,elements:a}})}function Fe(e,t){return e.flatMap(r=>r.elements.map(n=>Te(n,r.placement,t)))}function Be(e,t){e.classList.add(j),e.classList.add(`${j}-${t}`)}function _e(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(`${j}`)}function ce(e,t){return t?e.classList.contains(`${C}-${t}`):e.classList.contains(C)}function $e(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(C),t.classList.add(`${C}-${e}`),t}function Te(e,t,r){let n;const a=$e(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function re(e){return e.type==="conditional"}function M(e){return e.type==="step"}function oe(e){return e.type==="experience"}function V(e){return e.type==="origin"}function se(e){return e.type==="action"}const ue=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),M(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?ue(e,t,u,!1,a):[]})),Me=(e,t,r)=>ue(e,t,r,!0,new Set),fe=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const S=e.find(L=>L.id===p.destinationNodeId);if(!S)continue;const[k,F]=fe(e,t,S,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,F+1))}return o===1/0?[-1,-1]:[o,u]},Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(F=>F.id===u.sourceNodeId);if(!p)continue;const[S,k]=le(e,t,p,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},De=(e,t,r)=>le(e,t,r,new Set),de=e=>e.find(r=>r.type==="origin")||null,X=(e,t,r)=>{if(!e)return de(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Re(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const J=i.createDomain("experience-instance"),Pe=q.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),S=t.componentStore,k=J.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),L=F.map(s=>s.filter(d=>M(d.node))),I=F.map(s=>s[s.length-1]?.node||null),f=i.combine(t.treeStore,I,({steps:s},d)=>s.find(l=>d&&M(d)&&l.id===d.stepId)||null),h=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Me(s,d,l):[]),v=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?De(s,d,l):[-1,-1]),B=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Le(s,d,l):[-1,-1]),b=J.store(!1),_=i.createApi(b,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),ge=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),me=i.attach({source:t.treeStore,effect:async(s,d)=>{const l=s.nodes.find(w=>M(w)&&w.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),Q=i.attach({source:I,effect:s=>{}}),U=i.attach({source:t.treeStore,effect:async({nodes:s})=>de(s)}),W=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(V(l))return X(l,s,d)}}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:l},w)=>{if(!re(w))return;const $=l.find(O=>O.id===w.conditionalId);if(!$)return;const x=w.id,y=await z(e,$.condition);return Re(!!y,x,s,d)}}),Y=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(!se(l))return;const w=l.action;if(!w){N.logger("warn",`Action node ${l.id} has no action name`);return}const $=e.actions.getByName(w).getState();if(!$){N.logger("warn",`Action '${w}' not registered on client`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}if(typeof $.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await $.action(w);const x=d.find(O=>O.sourceNodeId===l.id&&O.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const y=s.find(O=>O.id===x.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${y?.id}`),y||null}catch(x){N.logger("warn",`Action '${w}' failed:`,x);const y=d.find(P=>P.sourceNodeId===l.id&&P.sourceNodeHandle==="false");if(!y)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const O=s.find(P=>P.id===y.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${O?.id}`),O||null}}}),Se=i.createEffect(s=>{if(oe(s))return e.launchExperienceById(s.experienceId)}),Z=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),D=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),he=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),ee=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ae(s)?!!await z(e,s):s??!1}),K=i.createEvent(),te=i.createEvent();return i.sample({source:I,target:K}),i.sample({clock:K,filter:s=>s===null,target:U}),i.sample({clock:K,filter:s=>s!==null,target:te}),i.split({source:te,match:s=>re(s)?"condition":M(s)?"step":oe(s)?"launchExperience":V(s)?"origin":se(s)?"action":"other",cases:{origin:W,condition:G,step:Q,launchExperience:Se,action:Y,__:i.createEvent()}}),i.sample({clock:[G.doneData,W.doneData,U.doneData,D.doneData,Z.doneData,Y.doneData],filter:Boolean,target:he}),i.sample({clock:a,target:D}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:ge}),i.sample({clock:o,target:me}),i.sample({source:i.combine([G.pending,W.pending,U.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Q.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:ee}),i.sample({source:ee.doneData,fn:Boolean,target:b}),i.sample({source:I,clock:n,filter:s=>s?V(s):!0,target:Z}),i.sample({source:b,filter:Boolean,target:n}),i.sample({source:b,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:b,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:S,stateStore:k,isOpenStore:b,open:_.open,close:_.close,toggleOpen:_.toggle,setOpen:_.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:I,currentStepStore:f,nextReachableStepNodesStore:h,stepsToOriginStore:v,stepsToLeafStore:B,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:L}});function pe(e){return q.invoke(Pe,e)}const He=q.createFactory(({client:e})=>{const t=J.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,h){const v=[...f[h.experienceId]??[]];return v.push(h),{...f,[h.experienceId]:v}},unregister(f,h){const v=h.experienceId,B=f[v]?.filter(b=>b!==h);return{...f,[v]:B??[]}}}),o=i.createEffect(({experience:f,target:h})=>pe({client:e,experience:f,target:h})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&be(f.target,()=>{a(f)})}),S=i.createEffect(f=>{c.unregister(f)}),k=i.createEffect(f=>{const h=f.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const v=h.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const B=f.target;if(!B){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const b=ke(B);try{v.render(b,h.component,e,f)}catch(_){N.logger("error",_)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialize",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,h){r({experience:f,target:h})}const L=t.map(f=>Object.values(f).flat());function I(f){return t.map(h=>h[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:I,listStore:L}});function Ce(e){return q.invoke(He,e)}exports.createAppHosts=Fe;exports.createExperienceInstance=pe;exports.createExperienceInstanceIndex=Ce;exports.domInteractive=ve;exports.evaluateRuleLogic=z;exports.getTargetElements=Oe;exports.isPickedRoot=ce;exports.isRulesLogic=ae;exports.isStepNode=M;exports.tagTargetElement=Be;
|
|
@@ -21,6 +21,7 @@ declare const createExperienceFactory: ({ client, experience }: {
|
|
|
21
21
|
edges: ExperienceEdge[];
|
|
22
22
|
conditionals: ExperienceConditional[];
|
|
23
23
|
}>;
|
|
24
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
24
25
|
componentStore: import('effector').Store<{
|
|
25
26
|
name: string;
|
|
26
27
|
component: AdaptedComponent<string, unknown>;
|
|
@@ -51,6 +52,7 @@ declare const createExperienceIndexFactory: ({ client }: {
|
|
|
51
52
|
edges: ExperienceEdge[];
|
|
52
53
|
conditionals: ExperienceConditional[];
|
|
53
54
|
}>;
|
|
55
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
54
56
|
componentStore: import('effector').Store<{
|
|
55
57
|
name: string;
|
|
56
58
|
component: AdaptedComponent<string, unknown>;
|
|
@@ -76,6 +78,7 @@ declare const createExperienceIndexFactory: ({ client }: {
|
|
|
76
78
|
edges: ExperienceEdge[];
|
|
77
79
|
conditionals: ExperienceConditional[];
|
|
78
80
|
}>;
|
|
81
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
79
82
|
componentStore: import('effector').Store<{
|
|
80
83
|
name: string;
|
|
81
84
|
component: AdaptedComponent<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience/experience.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAC3E,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAIjE,QAAA,MAAM,uBAAuB,2BACF;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience/experience.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ declare const createExperienceInstanceFactory: ({ client, experience, target, }:
|
|
|
37
37
|
edges: import('../..').ExperienceEdge[];
|
|
38
38
|
conditionals: import('../..').ExperienceConditional[];
|
|
39
39
|
}>;
|
|
40
|
+
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
40
41
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
41
42
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
42
43
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
@@ -79,6 +80,7 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
|
|
|
79
80
|
edges: import('../..').ExperienceEdge[];
|
|
80
81
|
conditionals: import('../..').ExperienceConditional[];
|
|
81
82
|
}>;
|
|
83
|
+
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
82
84
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
83
85
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
84
86
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
@@ -116,6 +118,7 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
|
|
|
116
118
|
edges: import('../..').ExperienceEdge[];
|
|
117
119
|
conditionals: import('../..').ExperienceConditional[];
|
|
118
120
|
}>;
|
|
121
|
+
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
119
122
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
120
123
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
121
124
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAubF,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"}
|
package/dist/types/picked.d.ts
CHANGED
|
@@ -82,6 +82,7 @@ export declare class Picked {
|
|
|
82
82
|
edges: import('.').ExperienceEdge[];
|
|
83
83
|
conditionals: import('.').ExperienceConditional[];
|
|
84
84
|
}>;
|
|
85
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
85
86
|
currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
|
|
86
87
|
currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
87
88
|
nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
|
|
@@ -119,6 +120,7 @@ export declare class Picked {
|
|
|
119
120
|
edges: import('.').ExperienceEdge[];
|
|
120
121
|
conditionals: import('.').ExperienceConditional[];
|
|
121
122
|
}>;
|
|
123
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
122
124
|
currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
|
|
123
125
|
currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
124
126
|
nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
|
|
@@ -146,6 +148,7 @@ export declare class Picked {
|
|
|
146
148
|
edges: import('.').ExperienceEdge[];
|
|
147
149
|
conditionals: import('.').ExperienceConditional[];
|
|
148
150
|
}>;
|
|
151
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
149
152
|
componentStore: import('effector').Store<{
|
|
150
153
|
name: string;
|
|
151
154
|
component: AdaptedComponent<string, unknown>;
|
|
@@ -171,6 +174,7 @@ export declare class Picked {
|
|
|
171
174
|
edges: import('.').ExperienceEdge[];
|
|
172
175
|
conditionals: import('.').ExperienceConditional[];
|
|
173
176
|
}>;
|
|
177
|
+
fieldsStore: import('effector').Store<Field[]>;
|
|
174
178
|
componentStore: import('effector').Store<{
|
|
175
179
|
name: string;
|
|
176
180
|
component: AdaptedComponent<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,EAIhB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAe,MAAM,0BAA0B,CAAA;AAC3F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAGtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAMzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAOtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAM,0FAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,OAAO,UAAQ;IAEf,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,SAAgB,QAAQ,gEAAmB;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAExC,QAAQ,CAAC,YAAY,qDAAoB;IAEzC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;MAAkB;IAElC,QAAQ,CAAC,UAAU;;;;;;;;;;;MAAyC;IAC5D,QAAQ,CAAC,mBAAmB
|
|
1
|
+
{"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"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"}
|