@picked/client 0.0.98-next.3 → 0.0.98-next.4
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/{api-Du1CXHwf.js → api-BzqtrZm_.js} +1 -1
- package/dist/{api-DKvG5BpW.cjs → api-C0pJEY8e.cjs} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/how-to/call-an-external-api-from-a-workflow.md +2 -0
- package/dist/docs/reference/dashboard/workflow-templates.md +130 -0
- package/dist/docs/reference/dashboard/workflow-test-runs.md +5 -0
- package/dist/docs/reference/glossary.md +7 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +2 -2
- package/dist/{plugin-CsE8tmaX.cjs → plugin-B2ZH8qTR.cjs} +1 -1
- package/dist/{plugin-CttEcyFL.js → plugin-vkDbMGuz.js} +2 -2
- package/dist/{preview-unavailable-DlWDUdpa.cjs → preview-unavailable-Cxy_a-K9.cjs} +1 -1
- package/dist/{preview-unavailable-ByX1cyKS.js → preview-unavailable-zy3QNLAf.js} +1 -1
- package/dist/{provider-DdRIjrTz.js → provider-DD-RtGP-.js} +1 -1
- package/dist/{provider-B1TabtRC.cjs → provider-rya2fMUd.cjs} +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./logger-DMN6TxJJ.js";
|
|
2
|
-
import { o as e } from "./preview-unavailable-
|
|
2
|
+
import { o as e } from "./preview-unavailable-zy3QNLAf.js";
|
|
3
3
|
import { createClientHeaders as t, fetchExperienceContent as n, fetchProject as r } from "@picked/delivery-api-client";
|
|
4
4
|
//#region src/data-source/api.ts
|
|
5
5
|
function i(n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-Cxy_a-K9.cjs");let t=require("@picked/delivery-api-client");function n(n){return{...n,headers:{...(0,t.createClientHeaders)(`sdk`,e.o()),...n?.headers},onWarn:(e,t)=>{}}}async function r(e,r,i){return(0,t.fetchProject)(e,r,n(i))}async function i(e,r,i,a){return(0,t.fetchExperienceContent)(e,r,i,n(a))}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-VUbvWqdi.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-DlLH3FxV.cjs"),a=require("../experience-instance-C9WV52iQ.cjs"),o=require("./logic-engine.js"),s=require("../storage-DUw9UJ2h.cjs"),c=require("../preview-unavailable-DlWDUdpa.cjs"),l=require("../id-Js-62re-.cjs"),u=require("../inert-script-report-ijRHPtcY.cjs");let d=require("effector"),f=require("@withease/factories");var p=(0,d.createDomain)(`experience`),m=(0,f.createFactory)(({client:e,experience:n})=>{let r=p.store(n),o=(0,d.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,d.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),l=(0,d.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.d).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.u).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),u=r.map(e=>a.l(e.nodes,e.edges)),f=n.actions??[],m,h=(0,d.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(m,t,r):e.experienceInstances.spawn(m,t)})}}),g=(0,d.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),_=(0,d.attach)({source:g,effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0||!t.n(s)||await t.t(e,s)===!0}}),v=(0,d.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),y=(0,d.createEvent)(),b=(0,d.createEvent)(),x=p.createStore(void 0,{skipVoid:!1}).on(y,(e,t)=>t).on(b,(e,t)=>t);return(0,d.sample)({clock:y,target:_}),(0,d.sample)({clock:_.doneData,source:x,filter:(e,t)=>t,fn:e=>e,target:h}),(0,d.sample)({clock:_.doneData,filter:Boolean,target:v}),(0,d.sample)({clock:b,source:x,fn:e=>e,target:h}),(0,d.sample)({clock:b,target:v}),m={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:l,nodeTreeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:h,shouldInitialiseFx:_,initialiseRequested:y,initialiseDirectly:b,prepareExperienceContentFx:v},m});function h(e){return(0,f.invoke)(m,e)}var g=(0,f.createFactory)(({client:e})=>{let t=p.store({}),n=(0,d.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,d.createEvent)(),i=(0,d.createEffect)(t=>{n.register(h({client:e,experience:t}))});(0,d.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,d.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,d.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,d.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}let a=`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}};await c(a)}}),listStore:a,initialiseExperiencesFx:(0,d.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function _(e){return(0,f.invoke)(g,e)}var v=async e=>{await e.experiences.initialiseExperiencesFx()};function y(e){return(0,d.createEffect)(async()=>{await e()})}var b=(e,t,n)=>{let r=t.name,i=t.setup(e),a=n[r]??{};n[r]=Object.freeze({...a,...i})},x=(0,d.createDomain)(`component`),S=(0,f.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function C(e){return(0,f.invoke)(S,e)}var w=(0,f.createFactory)(({client:e})=>{let t=x.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({name:t,component:n})=>C({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function T(e){return(0,f.invoke)(w,e)}var E=(e,t,n)=>{n.register({name:e,component:t})},D=(0,d.createDomain)(`framework`),O=(0,f.createFactory)(e=>{let t=D.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function k(e){return(0,f.invoke)(O,e)}var A=(e,t)=>{t.register({name:e.name,framework:e})},j=(0,f.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,d.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function ee(e){return(0,f.invoke)(j,e)}function M(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>!n.has(i)&&await o.apply(a.logic,{...t,conditions:M(e,t,new Set(n).add(i))})===!0}})}function N(e,t=[],n=new WeakSet){if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return!0;if(typeof e!=`object`||t.includes(e))return!1;if(n.has(e))return!0;let r=Object.getPrototypeOf(e);if(!Array.isArray(e)&&r!==Object.prototype&&r!==null)return!1;let i=[...t,e];return Object.values(e).every(e=>N(e,i,n))?(n.add(e),!0):!1}var te=(0,f.createFactory)(({client:e})=>(0,d.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:s,context:c})=>{let l=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),u=n.reduce((t,n)=>(t[n.key]=async(...t)=>{let r=await n.action({...e,args:t},null);return N(r)?r:void 0},t),{}),d=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),f={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:l,actions:u,features:d,...c},p={...f,conditions:M(a,f,new Set)};return await o.apply(s,p)}}));function ne(e){return(0,f.invoke)(te,e)}var P=(0,d.createDomain)(`lifecycle`),re=(0,f.createFactory)(({client:e})=>{let n=P.store(!1),a=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),o=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),s=P.store(`idle`),c=P.store([]),l=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),u=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),f=(0,d.createEvent)(),p=(0,d.createEvent)(),m=(0,d.createEvent)(),h=(0,d.createEvent)(),g=(0,d.createEvent)(),_=(0,d.createEvent)();c.on(h,(e,t)=>[...e,t]),l.on(g,(e,t)=>t),u.on(_,(e,t)=>t),n.on(p,()=>!0);let y=(0,d.createEffect)(async()=>{await i.r()}),b=(0,d.createEffect)(async()=>{await v(e)}),x=(0,d.attach)({effect:b}),S=(0,d.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),C=(0,d.attach)({source:l,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),w=(0,d.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,d.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,d.sample)({clock:T,fn:()=>`starting`,target:s}),T.watch(e.performance.markBegin),p.watch(e.performance.measure),(0,d.sample)({clock:T,target:S}),(0,d.sample)({clock:T,target:y}),(0,d.sample)({clock:S.done,target:C}),(0,d.sample)({clock:C.doneData,target:a}),(0,d.sample)({clock:w.doneData,target:o}),(0,d.sample)({clock:C.doneData,filter:e=>e,target:w}),(0,d.sample)({clock:w.doneData,target:e.session.setIsUser}),(0,d.sample)({clock:w.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,d.sample)({clock:C.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,d.sample)({clock:w.doneData,fn:()=>void 0,target:m}),(0,d.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let E=(0,d.createStore)(!1).on(y.done,()=>!0),D=(0,d.createStore)(!1).on(m,()=>!0),O=(0,d.createStore)(!1).on(x.done,()=>!0),k=(0,d.combine)(a,o,(e,t)=>e===!0&&t===!0);(0,d.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:b});let A=(0,d.combine)(E,D,k,(e,t,n)=>e&&t&&n);(0,d.sample)({clock:A,filter:e=>e,fn:()=>void 0,target:x});let j=(0,d.combine)(E,D,k,O,(e,t,n,r)=>e&&t&&(!n||r));return(0,d.sample)({clock:j,filter:e=>e,fn:()=>void 0,target:p}),(0,d.sample)({clock:p,fn:()=>`ready`,target:s}),(0,d.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,d.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,d.sample)({clock:[S.fail,C.fail,w.fail,b.fail,x.fail,y.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:g,setCondition:_}});function ie(e){return(0,f.invoke)(re,e)}var ae=(0,d.createDomain)(`predicate`),oe=(0,f.createFactory)(({client:e})=>{let t=ae.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,d.createStore)(()=>void 0,{skipVoid:!1}),r=(0,d.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,d.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,d.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function se(e){return(0,f.invoke)(oe,e)}var ce=(e,t,n)=>{n.register({name:e,predicate:t})},F=(0,d.createDomain)(`history`);function I(e,t){return{id:l.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var le=(0,f.createFactory)(()=>{let e=F.store({entries:[]}),t=F.event(),n=F.event(),r=F.event(),i=F.event();e.on(t,(e,t)=>({entries:[...e.entries,I(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),I(t.experienceId,t.node)]})),e.on(i,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let i=e[r],o=i?.node;if(!(!o||!a.d(o))&&!(t&&i.experienceId!==t))if(n.lastStepIndex===-1)n.lastStepIndex=r;else{n.secondLastStepIndex=r;break}}return n}return e.on(r,(e,t)=>{let{secondLastStepIndex:n}=o(e.entries,t.experienceId),r=n===-1?e.entries:e.entries.slice(0,n+1);return{...e,entries:r}}),{push:t,replace:n,back:r,restore:i,entriesStore:e.map(e=>e.entries)}});function ue(){return(0,f.invoke)(le)}var de=0,fe=e=>{let t=(0,d.createStore)([]);return t.on(e,(e,t)=>[...e,{id:de++,at:new Date,payload:t}]),t};function L(e){let{doNotTrackValue:t,doNotStoreValue:n}=e??{},r=e?.trackValue??t===!1,i=e?.storeValue??n===!1;return{trackValue:r,storeValue:i,doNotTrackValue:!r,doNotStoreValue:!i}}var pe=(0,d.createDomain)(`field`),me=(0,f.createFactory)(()=>{let e=pe.store({}),t=(0,d.createApi)(e,{register(e,t){let n=Object.assign({},t.field,{policies:L(t.field.policies)});return{...e,[n.id]:n}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);if(!n)return e;let r=Object.assign({},n,t.updates);return{...e,[n.id]:Object.assign({},r,{policies:L(r.policies)})}}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function he(){return(0,f.invoke)(me)}var ge=(0,d.createDomain)(`step`),_e=(0,f.createFactory)(()=>{let e=ge.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function ve(){return(0,f.invoke)(_e)}function ye(e,t){t.register(e)}var be=(0,d.createDomain)(`content`),xe=(0,f.createFactory)(()=>{let e=be.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}},patch(e,t){let n=e[t.id];if(!n)return e;let r=t.apply(n.data);return r===n.data?e:{...e,[t.id]:{...n,data:r}}}});function n(e){t.register({content:e})}function r(e,n){t.patch({id:e,apply:n})}let i=e.map(e=>Object.values(e));function a(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,patch:r,getById:a,listStore:i,indexStore:e}});function Se(){return(0,f.invoke)(xe)}function Ce(e,t){t.register(e)}var we=(0,d.createDomain)(`action`),R={status:`idle`,response:void 0,error:void 0},Te={...R,status:`running`},z={};function B(e){let t=new WeakMap,n=(e,n)=>t.get(n?.experience??z)?.get(e);return Object.assign((r,i)=>{let a=n(r,i);if(a===void 0){let n=i?.experience??z;a=e(r,i),t.set(n,(t.get(n)??new Map).set(r,a))}return a},{find:n})}function Ee(e){return e.status===`succeeded`?{status:`succeeded`,response:e.response,error:void 0}:{status:`failed`,response:void 0,error:e.error}}var De=(0,f.createFactory)(({client:e})=>{let t=we.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action,published:t.published===!0}}},unregister(e,t){return Object.hasOwn(e,t)?Object.fromEntries(Object.entries(e).filter(([e])=>e!==t)):e}}),i=(0,d.createEvent)(),a=r.unregister;(0,d.sample)({clock:i,source:t,filter:(e,{key:t,published:n})=>{let r=e[t];return r!==void 0&&!(n&&r.published)},fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({key:e,action:t,published:n})=>Object.freeze({key:e,action:t,published:n}),target:r.register});let o=t.map(e=>Object.values(e));function s(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function c(n,r,i){let a=r?{experience:r.experience}:null;return(...r)=>{let o=t.getState()[n]?.action;return o?.({...i??e.stateSnapshotStore.getState(),args:r},a)}}let l=new WeakMap,u=[];function f(e,t,n){let r=e?.experience??z,i=l.get(r)??{region:!e||u.includes(e.experience)?(0,d.createNode)():null,builders:[],unlinkers:[]};l.set(r,i),i.builders.push(t),i.unlinkers.push(n),i.region&&(0,d.withRegion)(i.region,t)}e.experienceInstances.listStore.watch(e=>{for(let t of u){let n=l.get(t);if(n?.region&&!e.includes(t)){(0,d.clearNode)(n.region),n.region=null;for(let e of n.unlinkers)e()}}for(let t of e){let e=l.get(t);if(e&&!e.region){let t=(0,d.createNode)();e.region=t;for(let n of e.builders)(0,d.withRegion)(t,n)}}u=e});let p=B((t,n)=>{let r=(0,d.createEvent)(),i=(0,d.createStore)(c(t,n),{skipVoid:!1}).on(r,(e,t)=>t);return f(n,()=>{let i=(0,d.combine)(s(t),e.stateSnapshotStore,(e,r)=>c(t,n,r));(0,d.sample)({clock:i,target:r}),r(i.getState())},()=>{r(c(t,n))}),i});async function m(n,r={}){let i=t.getState()[n]?.action;if(!i)throw Error(`Action '${n}' is not registered`);let a=r.experience?{experience:r.experience}:null,o=e.stateSnapshotStore.getState(),s=r.args??[],c=Oe(r.signal,r.timeoutMs);return c?(c.throwIfAborted(),new Promise((e,t)=>{let n=()=>{t(c.reason)};c.addEventListener(`abort`,n,{once:!0}),Promise.resolve().then(()=>i({...o,args:s,signal:c},a)).then(e,t).finally(()=>{c.removeEventListener(`abort`,n)})})):i({...o,args:s},a)}let h=B((e,t)=>{let n=(0,d.createEvent)(),r=(0,d.createEvent)(),i=0,a=async(...a)=>{i+=1;let o=i;n();let s;try{s={status:`succeeded`,response:await m(e,{...t,args:a})}}catch(e){s={status:`failed`,error:e}}return o===i&&r(s),s},o=n=>Object.assign(c(e,t),{...n,run:a});return(0,d.createStore)(o(R)).on(n,()=>o(Te)).on(r,(e,t)=>o(Ee(t)))}),g=B((n,r)=>{let i=p(n,r),a=(0,d.createStore)(void 0,{skipVoid:!1}),o=0,s=!1,l=!1,u=()=>[t.getState()[n]?.action,e.stateSnapshotStore.getState()],f=[],m=(0,d.createEffect)(async e=>{o+=1;let t=o;if(f=u(),b(n))return s||(s=!0,`${n}`),{evaluation:t,value:void 0};try{return{evaluation:t,value:await e()}}catch{return`${n}`,{evaluation:t,value:void 0}}});(0,d.sample)({clock:m.doneData,filter:({evaluation:e})=>e===o,fn:({value:e})=>e,target:a}),(0,d.sample)({clock:i,filter:()=>!l&&u().some((e,t)=>e!==f[t]),target:m});let h=()=>{l||(l=!0,queueMicrotask(()=>{l=!1,m(c(n,r))}))};return h(),{result:a,refresh:h,isQueued:()=>l}});function _(e,t){return g(e,t).result}function v(e,t){g.find(e,t)?.refresh()}function y(e,t){return g.find(e,t)?.isQueued()===!0}function b(e){return t.getState()[e]?.published===!0}return{register:i,unregister:a,getByKey:s,listStore:o,getEvokableAction:p,getActionBinding:h,getActionResult:_,refreshActionResult:v,isActionResultQueued:y,run:m,isPublished:b}});function Oe(e,t){let n=t===void 0?void 0:AbortSignal.timeout(t);return e&&n?AbortSignal.any([e,n]):e??n}function ke(e){return(0,f.invoke)(De,e)}var Ae=(e,t,n)=>{n.register({key:e,action:t})};function V(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function H(e){return e===null||e===``||Array.isArray(e)&&!e.length}function je(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function U(e){try{return JSON.stringify(e),!0}catch{return!1}}function Me(e,t){return t.find(t=>t.key===e)??null}function Ne(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Pe(e,t){if(e.type!==`object`||H(t))return null;if(e.multiple){if(!Array.isArray(t))return V(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return V(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!U(n))return V(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?V(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?V(e,t,`This field expects an object value`,`Field expects an object value.`):U(t)?null:V(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Fe(e,t){if(H(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:V(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!je(e)||e===null?!1:r.includes(e))?null:V(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Ie(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!H(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return V(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return V(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&H(r)?V(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?V(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Le=(0,d.createDomain)(`response`),Re=(0,f.createFactory)(({client:e})=>{let n=Le.store({}),r=(0,d.createEvent)(),i=(0,d.createEvent)(),a=(0,d.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,d.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Me(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=Ne(o,n),l=await Ie(s,o,c,a);if(l){r.push(l);return}let u=Pe(o,c);if(u){r.push(u);return}let d=Fe(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function l(e){return c(e)}let u=(0,d.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return u(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,d.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}return(0,d.sample)({clock:r,target:a.clearAll}),(0,d.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:l,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function ze(e){return(0,f.invoke)(Re,e)}var Be=(0,d.createDomain)(`condition`),Ve=(0,f.createFactory)(()=>{let e=Be.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function He(){return(0,f.invoke)(Ve)}function Ue(){if(r.i()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}var We=`picked:start:begin`,Ge=`picked:start`;function W(){try{return r.f()&&!!r.p.window&&`performance`in r.p}catch{return!1}}function Ke(){let e=null,t=null;return{markBegin:()=>{if(W())try{e=performance.mark(We).startTime}catch{}},measure:()=>{if(!(!W()||e===null))try{t=performance.measure(Ge,{start:e})}catch{}},get startMeasure(){return t}}}function qe(){let e=null;return{observeDeliveryAPIRequests:t=>{e=t},get deliveryAPIRequestObserver(){return e}}}var G=s.t(`session`,`global`);function Je(){return r.r()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function Ye(){if(!r.s())return null;let e=s.n.get(G);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Xe=(0,f.createFactory)(()=>{let e=Ye(),t={id:e?.id??Je()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,d.createStore)(t),i=(0,d.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}}),a=(0,d.attach)({source:n,effect:e=>{if(r.s())try{s.n.get(G).set(e)}catch{}}});return(0,d.sample)({source:n,target:a}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Ze(){return(0,f.invoke)(Xe,void 0)}function K(){if(r.f())return globalThis.window.pickedConfig}function Qe(){if(r.f())return K()?.projectId}function $e(){if(!r.i())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function et(e){if(e.projectId)return e.projectId;let t=Qe();if(t)return t;let n=$e();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-VUbvWqdi.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-DlLH3FxV.cjs"),a=require("../experience-instance-C9WV52iQ.cjs"),o=require("./logic-engine.js"),s=require("../storage-DUw9UJ2h.cjs"),c=require("../preview-unavailable-Cxy_a-K9.cjs"),l=require("../id-Js-62re-.cjs"),u=require("../inert-script-report-ijRHPtcY.cjs");let d=require("effector"),f=require("@withease/factories");var p=(0,d.createDomain)(`experience`),m=(0,f.createFactory)(({client:e,experience:n})=>{let r=p.store(n),o=(0,d.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,d.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),l=(0,d.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.d).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.u).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),u=r.map(e=>a.l(e.nodes,e.edges)),f=n.actions??[],m,h=(0,d.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(m,t,r):e.experienceInstances.spawn(m,t)})}}),g=(0,d.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),_=(0,d.attach)({source:g,effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0||!t.n(s)||await t.t(e,s)===!0}}),v=(0,d.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),y=(0,d.createEvent)(),b=(0,d.createEvent)(),x=p.createStore(void 0,{skipVoid:!1}).on(y,(e,t)=>t).on(b,(e,t)=>t);return(0,d.sample)({clock:y,target:_}),(0,d.sample)({clock:_.doneData,source:x,filter:(e,t)=>t,fn:e=>e,target:h}),(0,d.sample)({clock:_.doneData,filter:Boolean,target:v}),(0,d.sample)({clock:b,source:x,fn:e=>e,target:h}),(0,d.sample)({clock:b,target:v}),m={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:l,nodeTreeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:h,shouldInitialiseFx:_,initialiseRequested:y,initialiseDirectly:b,prepareExperienceContentFx:v},m});function h(e){return(0,f.invoke)(m,e)}var g=(0,f.createFactory)(({client:e})=>{let t=p.store({}),n=(0,d.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,d.createEvent)(),i=(0,d.createEffect)(t=>{n.register(h({client:e,experience:t}))});(0,d.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,d.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,d.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,d.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}let a=`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}};await c(a)}}),listStore:a,initialiseExperiencesFx:(0,d.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function _(e){return(0,f.invoke)(g,e)}var v=async e=>{await e.experiences.initialiseExperiencesFx()};function y(e){return(0,d.createEffect)(async()=>{await e()})}var b=(e,t,n)=>{let r=t.name,i=t.setup(e),a=n[r]??{};n[r]=Object.freeze({...a,...i})},x=(0,d.createDomain)(`component`),S=(0,f.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function C(e){return(0,f.invoke)(S,e)}var w=(0,f.createFactory)(({client:e})=>{let t=x.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({name:t,component:n})=>C({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function T(e){return(0,f.invoke)(w,e)}var E=(e,t,n)=>{n.register({name:e,component:t})},D=(0,d.createDomain)(`framework`),O=(0,f.createFactory)(e=>{let t=D.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function k(e){return(0,f.invoke)(O,e)}var A=(e,t)=>{t.register({name:e.name,framework:e})},j=(0,f.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,d.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function ee(e){return(0,f.invoke)(j,e)}function M(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>!n.has(i)&&await o.apply(a.logic,{...t,conditions:M(e,t,new Set(n).add(i))})===!0}})}function N(e,t=[],n=new WeakSet){if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return!0;if(typeof e!=`object`||t.includes(e))return!1;if(n.has(e))return!0;let r=Object.getPrototypeOf(e);if(!Array.isArray(e)&&r!==Object.prototype&&r!==null)return!1;let i=[...t,e];return Object.values(e).every(e=>N(e,i,n))?(n.add(e),!0):!1}var te=(0,f.createFactory)(({client:e})=>(0,d.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:s,context:c})=>{let l=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),u=n.reduce((t,n)=>(t[n.key]=async(...t)=>{let r=await n.action({...e,args:t},null);return N(r)?r:void 0},t),{}),d=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),f={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:l,actions:u,features:d,...c},p={...f,conditions:M(a,f,new Set)};return await o.apply(s,p)}}));function ne(e){return(0,f.invoke)(te,e)}var P=(0,d.createDomain)(`lifecycle`),re=(0,f.createFactory)(({client:e})=>{let n=P.store(!1),a=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),o=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),s=P.store(`idle`),c=P.store([]),l=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),u=(0,d.createStore)(void 0,{skipVoid:!1,domain:P}),f=(0,d.createEvent)(),p=(0,d.createEvent)(),m=(0,d.createEvent)(),h=(0,d.createEvent)(),g=(0,d.createEvent)(),_=(0,d.createEvent)();c.on(h,(e,t)=>[...e,t]),l.on(g,(e,t)=>t),u.on(_,(e,t)=>t),n.on(p,()=>!0);let y=(0,d.createEffect)(async()=>{await i.r()}),b=(0,d.createEffect)(async()=>{await v(e)}),x=(0,d.attach)({effect:b}),S=(0,d.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),C=(0,d.attach)({source:l,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),w=(0,d.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,d.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,d.sample)({clock:T,fn:()=>`starting`,target:s}),T.watch(e.performance.markBegin),p.watch(e.performance.measure),(0,d.sample)({clock:T,target:S}),(0,d.sample)({clock:T,target:y}),(0,d.sample)({clock:S.done,target:C}),(0,d.sample)({clock:C.doneData,target:a}),(0,d.sample)({clock:w.doneData,target:o}),(0,d.sample)({clock:C.doneData,filter:e=>e,target:w}),(0,d.sample)({clock:w.doneData,target:e.session.setIsUser}),(0,d.sample)({clock:w.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,d.sample)({clock:C.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,d.sample)({clock:w.doneData,fn:()=>void 0,target:m}),(0,d.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let E=(0,d.createStore)(!1).on(y.done,()=>!0),D=(0,d.createStore)(!1).on(m,()=>!0),O=(0,d.createStore)(!1).on(x.done,()=>!0),k=(0,d.combine)(a,o,(e,t)=>e===!0&&t===!0);(0,d.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:b});let A=(0,d.combine)(E,D,k,(e,t,n)=>e&&t&&n);(0,d.sample)({clock:A,filter:e=>e,fn:()=>void 0,target:x});let j=(0,d.combine)(E,D,k,O,(e,t,n,r)=>e&&t&&(!n||r));return(0,d.sample)({clock:j,filter:e=>e,fn:()=>void 0,target:p}),(0,d.sample)({clock:p,fn:()=>`ready`,target:s}),(0,d.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,d.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,d.sample)({clock:[S.fail,C.fail,w.fail,b.fail,x.fail,y.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:g,setCondition:_}});function ie(e){return(0,f.invoke)(re,e)}var ae=(0,d.createDomain)(`predicate`),oe=(0,f.createFactory)(({client:e})=>{let t=ae.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,d.createEvent)();(0,d.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,d.createStore)(()=>void 0,{skipVoid:!1}),r=(0,d.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,d.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,d.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function se(e){return(0,f.invoke)(oe,e)}var ce=(e,t,n)=>{n.register({name:e,predicate:t})},F=(0,d.createDomain)(`history`);function I(e,t){return{id:l.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var le=(0,f.createFactory)(()=>{let e=F.store({entries:[]}),t=F.event(),n=F.event(),r=F.event(),i=F.event();e.on(t,(e,t)=>({entries:[...e.entries,I(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),I(t.experienceId,t.node)]})),e.on(i,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let i=e[r],o=i?.node;if(!(!o||!a.d(o))&&!(t&&i.experienceId!==t))if(n.lastStepIndex===-1)n.lastStepIndex=r;else{n.secondLastStepIndex=r;break}}return n}return e.on(r,(e,t)=>{let{secondLastStepIndex:n}=o(e.entries,t.experienceId),r=n===-1?e.entries:e.entries.slice(0,n+1);return{...e,entries:r}}),{push:t,replace:n,back:r,restore:i,entriesStore:e.map(e=>e.entries)}});function ue(){return(0,f.invoke)(le)}var de=0,fe=e=>{let t=(0,d.createStore)([]);return t.on(e,(e,t)=>[...e,{id:de++,at:new Date,payload:t}]),t};function L(e){let{doNotTrackValue:t,doNotStoreValue:n}=e??{},r=e?.trackValue??t===!1,i=e?.storeValue??n===!1;return{trackValue:r,storeValue:i,doNotTrackValue:!r,doNotStoreValue:!i}}var pe=(0,d.createDomain)(`field`),me=(0,f.createFactory)(()=>{let e=pe.store({}),t=(0,d.createApi)(e,{register(e,t){let n=Object.assign({},t.field,{policies:L(t.field.policies)});return{...e,[n.id]:n}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);if(!n)return e;let r=Object.assign({},n,t.updates);return{...e,[n.id]:Object.assign({},r,{policies:L(r.policies)})}}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function he(){return(0,f.invoke)(me)}var ge=(0,d.createDomain)(`step`),_e=(0,f.createFactory)(()=>{let e=ge.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function ve(){return(0,f.invoke)(_e)}function ye(e,t){t.register(e)}var be=(0,d.createDomain)(`content`),xe=(0,f.createFactory)(()=>{let e=be.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}},patch(e,t){let n=e[t.id];if(!n)return e;let r=t.apply(n.data);return r===n.data?e:{...e,[t.id]:{...n,data:r}}}});function n(e){t.register({content:e})}function r(e,n){t.patch({id:e,apply:n})}let i=e.map(e=>Object.values(e));function a(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,patch:r,getById:a,listStore:i,indexStore:e}});function Se(){return(0,f.invoke)(xe)}function Ce(e,t){t.register(e)}var we=(0,d.createDomain)(`action`),R={status:`idle`,response:void 0,error:void 0},Te={...R,status:`running`},z={};function B(e){let t=new WeakMap,n=(e,n)=>t.get(n?.experience??z)?.get(e);return Object.assign((r,i)=>{let a=n(r,i);if(a===void 0){let n=i?.experience??z;a=e(r,i),t.set(n,(t.get(n)??new Map).set(r,a))}return a},{find:n})}function Ee(e){return e.status===`succeeded`?{status:`succeeded`,response:e.response,error:void 0}:{status:`failed`,response:void 0,error:e.error}}var De=(0,f.createFactory)(({client:e})=>{let t=we.store({}),r=(0,d.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action,published:t.published===!0}}},unregister(e,t){return Object.hasOwn(e,t)?Object.fromEntries(Object.entries(e).filter(([e])=>e!==t)):e}}),i=(0,d.createEvent)(),a=r.unregister;(0,d.sample)({clock:i,source:t,filter:(e,{key:t,published:n})=>{let r=e[t];return r!==void 0&&!(n&&r.published)},fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,d.sample)({clock:i,fn:({key:e,action:t,published:n})=>Object.freeze({key:e,action:t,published:n}),target:r.register});let o=t.map(e=>Object.values(e));function s(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function c(n,r,i){let a=r?{experience:r.experience}:null;return(...r)=>{let o=t.getState()[n]?.action;return o?.({...i??e.stateSnapshotStore.getState(),args:r},a)}}let l=new WeakMap,u=[];function f(e,t,n){let r=e?.experience??z,i=l.get(r)??{region:!e||u.includes(e.experience)?(0,d.createNode)():null,builders:[],unlinkers:[]};l.set(r,i),i.builders.push(t),i.unlinkers.push(n),i.region&&(0,d.withRegion)(i.region,t)}e.experienceInstances.listStore.watch(e=>{for(let t of u){let n=l.get(t);if(n?.region&&!e.includes(t)){(0,d.clearNode)(n.region),n.region=null;for(let e of n.unlinkers)e()}}for(let t of e){let e=l.get(t);if(e&&!e.region){let t=(0,d.createNode)();e.region=t;for(let n of e.builders)(0,d.withRegion)(t,n)}}u=e});let p=B((t,n)=>{let r=(0,d.createEvent)(),i=(0,d.createStore)(c(t,n),{skipVoid:!1}).on(r,(e,t)=>t);return f(n,()=>{let i=(0,d.combine)(s(t),e.stateSnapshotStore,(e,r)=>c(t,n,r));(0,d.sample)({clock:i,target:r}),r(i.getState())},()=>{r(c(t,n))}),i});async function m(n,r={}){let i=t.getState()[n]?.action;if(!i)throw Error(`Action '${n}' is not registered`);let a=r.experience?{experience:r.experience}:null,o=e.stateSnapshotStore.getState(),s=r.args??[],c=Oe(r.signal,r.timeoutMs);return c?(c.throwIfAborted(),new Promise((e,t)=>{let n=()=>{t(c.reason)};c.addEventListener(`abort`,n,{once:!0}),Promise.resolve().then(()=>i({...o,args:s,signal:c},a)).then(e,t).finally(()=>{c.removeEventListener(`abort`,n)})})):i({...o,args:s},a)}let h=B((e,t)=>{let n=(0,d.createEvent)(),r=(0,d.createEvent)(),i=0,a=async(...a)=>{i+=1;let o=i;n();let s;try{s={status:`succeeded`,response:await m(e,{...t,args:a})}}catch(e){s={status:`failed`,error:e}}return o===i&&r(s),s},o=n=>Object.assign(c(e,t),{...n,run:a});return(0,d.createStore)(o(R)).on(n,()=>o(Te)).on(r,(e,t)=>o(Ee(t)))}),g=B((n,r)=>{let i=p(n,r),a=(0,d.createStore)(void 0,{skipVoid:!1}),o=0,s=!1,l=!1,u=()=>[t.getState()[n]?.action,e.stateSnapshotStore.getState()],f=[],m=(0,d.createEffect)(async e=>{o+=1;let t=o;if(f=u(),b(n))return s||(s=!0,`${n}`),{evaluation:t,value:void 0};try{return{evaluation:t,value:await e()}}catch{return`${n}`,{evaluation:t,value:void 0}}});(0,d.sample)({clock:m.doneData,filter:({evaluation:e})=>e===o,fn:({value:e})=>e,target:a}),(0,d.sample)({clock:i,filter:()=>!l&&u().some((e,t)=>e!==f[t]),target:m});let h=()=>{l||(l=!0,queueMicrotask(()=>{l=!1,m(c(n,r))}))};return h(),{result:a,refresh:h,isQueued:()=>l}});function _(e,t){return g(e,t).result}function v(e,t){g.find(e,t)?.refresh()}function y(e,t){return g.find(e,t)?.isQueued()===!0}function b(e){return t.getState()[e]?.published===!0}return{register:i,unregister:a,getByKey:s,listStore:o,getEvokableAction:p,getActionBinding:h,getActionResult:_,refreshActionResult:v,isActionResultQueued:y,run:m,isPublished:b}});function Oe(e,t){let n=t===void 0?void 0:AbortSignal.timeout(t);return e&&n?AbortSignal.any([e,n]):e??n}function ke(e){return(0,f.invoke)(De,e)}var Ae=(e,t,n)=>{n.register({key:e,action:t})};function V(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function H(e){return e===null||e===``||Array.isArray(e)&&!e.length}function je(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function U(e){try{return JSON.stringify(e),!0}catch{return!1}}function Me(e,t){return t.find(t=>t.key===e)??null}function Ne(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Pe(e,t){if(e.type!==`object`||H(t))return null;if(e.multiple){if(!Array.isArray(t))return V(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return V(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!U(n))return V(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?V(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?V(e,t,`This field expects an object value`,`Field expects an object value.`):U(t)?null:V(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Fe(e,t){if(H(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:V(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!je(e)||e===null?!1:r.includes(e))?null:V(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Ie(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!H(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return V(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return V(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&H(r)?V(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?V(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Le=(0,d.createDomain)(`response`),Re=(0,f.createFactory)(({client:e})=>{let n=Le.store({}),r=(0,d.createEvent)(),i=(0,d.createEvent)(),a=(0,d.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,d.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Me(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=Ne(o,n),l=await Ie(s,o,c,a);if(l){r.push(l);return}let u=Pe(o,c);if(u){r.push(u);return}let d=Fe(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function l(e){return c(e)}let u=(0,d.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return u(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,d.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}return(0,d.sample)({clock:r,target:a.clearAll}),(0,d.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:l,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function ze(e){return(0,f.invoke)(Re,e)}var Be=(0,d.createDomain)(`condition`),Ve=(0,f.createFactory)(()=>{let e=Be.store({}),t=(0,d.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function He(){return(0,f.invoke)(Ve)}function Ue(){if(r.i()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}var We=`picked:start:begin`,Ge=`picked:start`;function W(){try{return r.f()&&!!r.p.window&&`performance`in r.p}catch{return!1}}function Ke(){let e=null,t=null;return{markBegin:()=>{if(W())try{e=performance.mark(We).startTime}catch{}},measure:()=>{if(!(!W()||e===null))try{t=performance.measure(Ge,{start:e})}catch{}},get startMeasure(){return t}}}function qe(){let e=null;return{observeDeliveryAPIRequests:t=>{e=t},get deliveryAPIRequestObserver(){return e}}}var G=s.t(`session`,`global`);function Je(){return r.r()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function Ye(){if(!r.s())return null;let e=s.n.get(G);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Xe=(0,f.createFactory)(()=>{let e=Ye(),t={id:e?.id??Je()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,d.createStore)(t),i=(0,d.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}}),a=(0,d.attach)({source:n,effect:e=>{if(r.s())try{s.n.get(G).set(e)}catch{}}});return(0,d.sample)({source:n,target:a}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Ze(){return(0,f.invoke)(Xe,void 0)}function K(){if(r.f())return globalThis.window.pickedConfig}function Qe(){if(r.f())return K()?.projectId}function $e(){if(!r.i())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function et(e){if(e.projectId)return e.projectId;let t=Qe();if(t)return t;let n=$e();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
2
2
|
(1) createClient({ projectId }) options;
|
|
3
3
|
(2) window.pickedConfig = { projectId };
|
|
4
|
-
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function q(e){return e==null||e===``||Number.isNaN(e)}var tt={default:(e,t)=>q(e)?String(t??``):String(e),append:(e,t)=>t&&!q(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!q(e)?`${t} ${e}`:e,upper:e=>typeof e==`string`?e.toUpperCase():e,lower:e=>typeof e==`string`?e.toLowerCase():e,capitalize:e=>typeof e==`string`?e.charAt(0).toUpperCase()+e.slice(1):e,list:e=>{if(!e||typeof e!=`object`)return e;let t=new Intl.ListFormat(`en`,{style:`long`,type:`conjunction`});if(Array.isArray(e))return t.format(e.map(String));if(e instanceof Map){let n=Array.from(e.entries()).map(([e,t])=>`${e}: ${t}`);return t.format(n)}return e instanceof Set?t.format(Array.from(e).map(String)):e}};function nt(e){return typeof e==`object`&&!!e}function rt(e,t){let n=t;for(let t of e.split(`.`))if(nt(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function it(e,t){let n=e.split(`|`).map(e=>e.trim()),r=rt(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=tt[i];o&&(r=o(r,a))}return q(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function at(e,t){let n=``,r=0;for(;r<e.length;)if(e[r]===`{`&&e[r+1]===`{`){r+=2;let i=``;for(;r<e.length;){if(e[r]===`}`&&e[r+1]===`}`){r+=2;break}i+=e[r++]}n+=it(i.trim(),t)}else n+=e[r++];return n}var J=class{static logger=n.t;options;dataSource=null;seededVersionId=null;versionSkew=null;previewUnavailable=!1;contentLoader;previewEmbedderOrigins=null;plugins={};telemetry=qe();dataProviders=new Map;eventBus=(0,d.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=Ze();performance=Ke();searchParams=c.a();history=ue();components=T({client:this});experienceInstances=a.n({client:this});experiences=_({client:this});frameworks=k({client:this});predicates=se({client:this});features=c.s({client:this});conditions=He();fields=he();responses=ze({client:this});steps=ve();contents=Se();actions=ke({client:this});conditionResults=a.r();stateSnapshotStore=ee({client:this});evaluateRuleLogicFx=ne({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=ie({client:this});renderStringFx=(0,d.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return at(t,{...n,responses:r})}});constructor(e){this.events=fe(this.eventBus),this.projectId=et(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ue(),this.dashboardUrl=e.dashboardUrl??`https://dashboard.picked.app`,this.documentationSiteUrl=e.documentationSiteUrl??`https://docs.picked.app`,this.start=this.lifecycle.start,this.readyStore=this.lifecycle.readyStore,this.preconditionPassedStore=this.lifecycle.preconditionPassedStore,this.conditionPassedStore=this.lifecycle.conditionPassedStore,this.lifecycleStageStore=this.lifecycle.lifecycleStageStore,this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupFields(),this.setupComponents(),this.lifecycle.setPrecondition(e.precondition),this.lifecycle.setCondition(e.condition),this.eventBus({type:`load`,version:c.o()}),this.maybeStartPreviewChannel()}dataProviderFor(e){let t=e??``,n=this.dataProviders.get(t);if(n)return n;let r=Promise.resolve().then(()=>require("../provider-B1TabtRC.cjs")).then(t=>t.createPickedDataProvider({apiUrl:this.apiUrl,projectId:this.projectId,getRequestObserver:()=>this.telemetry.deliveryAPIRequestObserver,...e!==void 0&&{previewToken:e}}));return this.dataProviders.set(t,r),r}async getProjectConfig(e){let t=await this.dataProviderFor(e?.previewToken),n=await t.getProjectConfig();if(this.dataSource=t.meta.manifest,n===null&&t.meta.previewUnavailable)throw new c.t(this.projectId);if(n===null)throw Error(`Picked could not resolve the configuration for project "${this.projectId}" from ${this.apiUrl}.`);return n}async getExperienceContent(e,t){return(await this.dataProviderFor(t?.previewToken)).getContent(e,t?.signal===void 0?void 0:{signal:t.signal})}maybeStartPreviewChannel(){c.r()&&Promise.resolve().then(()=>require("../preview-channel-Cx0e6fye.cjs")).then(e=>e.initPreviewChannel(this)).catch(()=>void 0)}registerFramework=e=>{A(e,this.frameworks)};registerComponent=(e,t)=>{E(e,t,this.components)};registerPlugin=e=>{b(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{c.l(e,t,this.features)};registerPredicate=(e,t)=>{ce(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{ye(e,this.steps)};registerContent=e=>{Ce(e,this.contents)};patchContent=(e,t)=>{this.contents.patch(e,t)};registerAction=(e,t)=>{Ae(e,t,this.actions)};registerExperience=e=>{e.component&&E(`experience:${e.id}`,e.component,this.components),this.experiences.register(e)};launchExperienceById=async(e,t)=>{this.experiences.launch({id:e,options:t})};launchExperienceByKey=async(e,t)=>{this.experiences.launch({key:e,options:t})};openExperienceById=async e=>{this.experiences.open({id:e})};openExperienceByKey=async e=>{this.experiences.open({key:e})};setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(e=>{this.registerPlugin(e)});return}let t=typeof e==`function`?e():e;if(Array.isArray(t)){t.forEach(e=>this.registerPlugin(e));return}this.registerPlugin(t)})}setupFeatures(){let e=this.options.features;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerFeature(e,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(e=>{try{let t=c.c(e);if(!t)return;let{id:n,bucket:r}=t;this.registerFeature(n,{key:`${r}`,name:n,enabled:!0,decide:()=>r,storage:`session`})}catch{}})}setupPredicates(){let e=this.options.predicates;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerPredicate(e,t)})}setupActions(){let e=this.options.actions;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerAction(e,t)})}setupFields(){let e=this.options.fields;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerField({...n,key:n.key??e})})}setupComponents(){let e=this.options.components;e&&Object.entries(e).forEach(([e,t])=>{this.registerComponent(e,t)})}getPluginConfig=e=>this.plugins[e]??{}},ot=`application/picked-javascript`,st=`application/picked-module`,ct=`data-picked-hydrated`;async function Y(e){if(!(`document`in globalThis))return;let t=`application/picked-module`,n=`data-picked-hydrated`;function r(e){try{Function(e.textContent)}catch(t){return t instanceof SyntaxError&&(console.error(`[picked] Skipped a rehydrated inline script that failed to parse.`,t),e.setAttribute(n,``),!0)}return!1}function i(e,t){let r=document.createElement(`script`);for(let t of Array.from(e.attributes))t.name!==`type`&&r.setAttribute(t.name,t.value);t&&r.setAttribute(`type`,t),r.setAttribute(n,``),e.src?r.async=!1:r.textContent=e.textContent;let i=e.src?new Promise(e=>{r.addEventListener(`load`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>e(),{once:!0})}):null;return e.src?e.replaceWith(r):(globalThis.__pickedEmbedScriptRoot=e.getRootNode(),e.replaceWith(r),globalThis.__pickedEmbedScriptRoot=null),i}let a=Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter(e=>e instanceof HTMLScriptElement);for(let e of a){if(!e.isConnected)continue;let n=e.getAttribute(`type`)===t?`module`:null;if(!e.src&&n===null&&r(e))continue;let a=i(e,n);a&&await a}}function lt(){return`<script>(${Y.toString()})(document)<\/script>`}function ut(e){return typeof e==`object`&&!!e&&`id`in e&&typeof e.id==`string`&&`content`in e&&(typeof e.content==`string`||e.content===null)}function dt(e){return{$$type:`lazy-component`,load:e}}function ft(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}function X(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`contentEntryId`in e&&typeof e.contentEntryId==`string`}function Z(e){return X(e)?e.contentEntryId:null}function Q(e){let t=Array.isArray(e)?e:[e],n=[];for(let e of t)X(e)&&n.push(e.contentEntryId);return n}function pt(e,t){return t===null?null:e[t]??null}function $(e,t){let n=[];for(let r of t){let t=e[r];t!==void 0&&n.push(t)}return n}function mt(e,t){if(d.is.store(t))return(0,d.combine)(t,e.indexStore,(e,t)=>pt(t,Z(e)));let n=Z(t);return e.indexStore.map(e=>pt(e,n),{skipVoid:!1})}function ht(e,t){if(d.is.store(t))return(0,d.combine)(t,e.indexStore,(e,t)=>$(t,Q(e)));let n=Q(t);return e.indexStore.map(e=>$(e,n),{skipVoid:!1})}var gt=e=>{let t=new J(e);return r.m(t),t};function _t(e){return typeof e.data==`object`}function vt(e){return e.map(e=>!e||!_t(e)?null:e,{skipVoid:!1})}function yt(e,t){return e.contentModelKey===t}exports.PICKED_HYDRATED_ATTR=ct,exports.PICKED_MODULE_SCRIPT_TYPE=st,exports.PICKED_SCRIPT_TYPE=ot,exports.PREVIEW_TOKEN_PARAM=c.n,exports.Picked=J,exports.PreviewUnavailableError=c.t,exports.buildRehydrateBootstrap=lt,exports.createClient=gt,exports.createPluginEffect=y,exports.createStorageKey=s.t,exports.deriveReference=mt,exports.deriveReferences=ht,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=K,exports.isContentOfModel=yt,exports.isContentReference=X,exports.isHtmlAssetValue=ut,exports.isInsideIframe=r.t,exports.isLazyLoader=ft,exports.isPickedRoot=i.a,exports.isPreviewSession=c.r,exports.lazyComponent=dt,exports.localStore=s.n,exports.onInertScriptSubtrees=u.t,exports.readReferenceId=Z,exports.readReferenceIds=Q,exports.rehydrateScripts=Y,exports.reportInertScriptSubtrees=u.n,exports.resetInertScriptReport=u.r,exports.sessionStore=s.r,exports.subscribe=s.i,exports.supportsCookies=r.n,exports.supportsCryptoRandomUUID=r.r,exports.supportsDocument=r.i,exports.supportsHistory=r.a,exports.supportsIntersectionObserver=r.o,exports.supportsLocalStorage=r.s,exports.supportsLocation=r.c,exports.supportsSessionStorage=r.l,exports.supportsShadowRoot=r.u,exports.supportsWebComponents=r.d,exports.supportsWindow=r.f,exports.toTypedContentStore=vt;
|
|
4
|
+
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function q(e){return e==null||e===``||Number.isNaN(e)}var tt={default:(e,t)=>q(e)?String(t??``):String(e),append:(e,t)=>t&&!q(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!q(e)?`${t} ${e}`:e,upper:e=>typeof e==`string`?e.toUpperCase():e,lower:e=>typeof e==`string`?e.toLowerCase():e,capitalize:e=>typeof e==`string`?e.charAt(0).toUpperCase()+e.slice(1):e,list:e=>{if(!e||typeof e!=`object`)return e;let t=new Intl.ListFormat(`en`,{style:`long`,type:`conjunction`});if(Array.isArray(e))return t.format(e.map(String));if(e instanceof Map){let n=Array.from(e.entries()).map(([e,t])=>`${e}: ${t}`);return t.format(n)}return e instanceof Set?t.format(Array.from(e).map(String)):e}};function nt(e){return typeof e==`object`&&!!e}function rt(e,t){let n=t;for(let t of e.split(`.`))if(nt(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function it(e,t){let n=e.split(`|`).map(e=>e.trim()),r=rt(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=tt[i];o&&(r=o(r,a))}return q(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function at(e,t){let n=``,r=0;for(;r<e.length;)if(e[r]===`{`&&e[r+1]===`{`){r+=2;let i=``;for(;r<e.length;){if(e[r]===`}`&&e[r+1]===`}`){r+=2;break}i+=e[r++]}n+=it(i.trim(),t)}else n+=e[r++];return n}var J=class{static logger=n.t;options;dataSource=null;seededVersionId=null;versionSkew=null;previewUnavailable=!1;contentLoader;previewEmbedderOrigins=null;plugins={};telemetry=qe();dataProviders=new Map;eventBus=(0,d.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=Ze();performance=Ke();searchParams=c.a();history=ue();components=T({client:this});experienceInstances=a.n({client:this});experiences=_({client:this});frameworks=k({client:this});predicates=se({client:this});features=c.s({client:this});conditions=He();fields=he();responses=ze({client:this});steps=ve();contents=Se();actions=ke({client:this});conditionResults=a.r();stateSnapshotStore=ee({client:this});evaluateRuleLogicFx=ne({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=ie({client:this});renderStringFx=(0,d.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return at(t,{...n,responses:r})}});constructor(e){this.events=fe(this.eventBus),this.projectId=et(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ue(),this.dashboardUrl=e.dashboardUrl??`https://dashboard.picked.app`,this.documentationSiteUrl=e.documentationSiteUrl??`https://docs.picked.app`,this.start=this.lifecycle.start,this.readyStore=this.lifecycle.readyStore,this.preconditionPassedStore=this.lifecycle.preconditionPassedStore,this.conditionPassedStore=this.lifecycle.conditionPassedStore,this.lifecycleStageStore=this.lifecycle.lifecycleStageStore,this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupFields(),this.setupComponents(),this.lifecycle.setPrecondition(e.precondition),this.lifecycle.setCondition(e.condition),this.eventBus({type:`load`,version:c.o()}),this.maybeStartPreviewChannel()}dataProviderFor(e){let t=e??``,n=this.dataProviders.get(t);if(n)return n;let r=Promise.resolve().then(()=>require("../provider-rya2fMUd.cjs")).then(t=>t.createPickedDataProvider({apiUrl:this.apiUrl,projectId:this.projectId,getRequestObserver:()=>this.telemetry.deliveryAPIRequestObserver,...e!==void 0&&{previewToken:e}}));return this.dataProviders.set(t,r),r}async getProjectConfig(e){let t=await this.dataProviderFor(e?.previewToken),n=await t.getProjectConfig();if(this.dataSource=t.meta.manifest,n===null&&t.meta.previewUnavailable)throw new c.t(this.projectId);if(n===null)throw Error(`Picked could not resolve the configuration for project "${this.projectId}" from ${this.apiUrl}.`);return n}async getExperienceContent(e,t){return(await this.dataProviderFor(t?.previewToken)).getContent(e,t?.signal===void 0?void 0:{signal:t.signal})}maybeStartPreviewChannel(){c.r()&&Promise.resolve().then(()=>require("../preview-channel-Cx0e6fye.cjs")).then(e=>e.initPreviewChannel(this)).catch(()=>void 0)}registerFramework=e=>{A(e,this.frameworks)};registerComponent=(e,t)=>{E(e,t,this.components)};registerPlugin=e=>{b(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{c.l(e,t,this.features)};registerPredicate=(e,t)=>{ce(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{ye(e,this.steps)};registerContent=e=>{Ce(e,this.contents)};patchContent=(e,t)=>{this.contents.patch(e,t)};registerAction=(e,t)=>{Ae(e,t,this.actions)};registerExperience=e=>{e.component&&E(`experience:${e.id}`,e.component,this.components),this.experiences.register(e)};launchExperienceById=async(e,t)=>{this.experiences.launch({id:e,options:t})};launchExperienceByKey=async(e,t)=>{this.experiences.launch({key:e,options:t})};openExperienceById=async e=>{this.experiences.open({id:e})};openExperienceByKey=async e=>{this.experiences.open({key:e})};setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(e=>{this.registerPlugin(e)});return}let t=typeof e==`function`?e():e;if(Array.isArray(t)){t.forEach(e=>this.registerPlugin(e));return}this.registerPlugin(t)})}setupFeatures(){let e=this.options.features;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerFeature(e,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(e=>{try{let t=c.c(e);if(!t)return;let{id:n,bucket:r}=t;this.registerFeature(n,{key:`${r}`,name:n,enabled:!0,decide:()=>r,storage:`session`})}catch{}})}setupPredicates(){let e=this.options.predicates;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerPredicate(e,t)})}setupActions(){let e=this.options.actions;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerAction(e,t)})}setupFields(){let e=this.options.fields;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerField({...n,key:n.key??e})})}setupComponents(){let e=this.options.components;e&&Object.entries(e).forEach(([e,t])=>{this.registerComponent(e,t)})}getPluginConfig=e=>this.plugins[e]??{}},ot=`application/picked-javascript`,st=`application/picked-module`,ct=`data-picked-hydrated`;async function Y(e){if(!(`document`in globalThis))return;let t=`application/picked-module`,n=`data-picked-hydrated`;function r(e){try{Function(e.textContent)}catch(t){return t instanceof SyntaxError&&(console.error(`[picked] Skipped a rehydrated inline script that failed to parse.`,t),e.setAttribute(n,``),!0)}return!1}function i(e,t){let r=document.createElement(`script`);for(let t of Array.from(e.attributes))t.name!==`type`&&r.setAttribute(t.name,t.value);t&&r.setAttribute(`type`,t),r.setAttribute(n,``),e.src?r.async=!1:r.textContent=e.textContent;let i=e.src?new Promise(e=>{r.addEventListener(`load`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>e(),{once:!0})}):null;return e.src?e.replaceWith(r):(globalThis.__pickedEmbedScriptRoot=e.getRootNode(),e.replaceWith(r),globalThis.__pickedEmbedScriptRoot=null),i}let a=Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter(e=>e instanceof HTMLScriptElement);for(let e of a){if(!e.isConnected)continue;let n=e.getAttribute(`type`)===t?`module`:null;if(!e.src&&n===null&&r(e))continue;let a=i(e,n);a&&await a}}function lt(){return`<script>(${Y.toString()})(document)<\/script>`}function ut(e){return typeof e==`object`&&!!e&&`id`in e&&typeof e.id==`string`&&`content`in e&&(typeof e.content==`string`||e.content===null)}function dt(e){return{$$type:`lazy-component`,load:e}}function ft(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}function X(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`contentEntryId`in e&&typeof e.contentEntryId==`string`}function Z(e){return X(e)?e.contentEntryId:null}function Q(e){let t=Array.isArray(e)?e:[e],n=[];for(let e of t)X(e)&&n.push(e.contentEntryId);return n}function pt(e,t){return t===null?null:e[t]??null}function $(e,t){let n=[];for(let r of t){let t=e[r];t!==void 0&&n.push(t)}return n}function mt(e,t){if(d.is.store(t))return(0,d.combine)(t,e.indexStore,(e,t)=>pt(t,Z(e)));let n=Z(t);return e.indexStore.map(e=>pt(e,n),{skipVoid:!1})}function ht(e,t){if(d.is.store(t))return(0,d.combine)(t,e.indexStore,(e,t)=>$(t,Q(e)));let n=Q(t);return e.indexStore.map(e=>$(e,n),{skipVoid:!1})}var gt=e=>{let t=new J(e);return r.m(t),t};function _t(e){return typeof e.data==`object`}function vt(e){return e.map(e=>!e||!_t(e)?null:e,{skipVoid:!1})}function yt(e,t){return e.contentModelKey===t}exports.PICKED_HYDRATED_ATTR=ct,exports.PICKED_MODULE_SCRIPT_TYPE=st,exports.PICKED_SCRIPT_TYPE=ot,exports.PREVIEW_TOKEN_PARAM=c.n,exports.Picked=J,exports.PreviewUnavailableError=c.t,exports.buildRehydrateBootstrap=lt,exports.createClient=gt,exports.createPluginEffect=y,exports.createStorageKey=s.t,exports.deriveReference=mt,exports.deriveReferences=ht,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=K,exports.isContentOfModel=yt,exports.isContentReference=X,exports.isHtmlAssetValue=ut,exports.isInsideIframe=r.t,exports.isLazyLoader=ft,exports.isPickedRoot=i.a,exports.isPreviewSession=c.r,exports.lazyComponent=dt,exports.localStore=s.n,exports.onInertScriptSubtrees=u.t,exports.readReferenceId=Z,exports.readReferenceIds=Q,exports.rehydrateScripts=Y,exports.reportInertScriptSubtrees=u.n,exports.resetInertScriptReport=u.r,exports.sessionStore=s.r,exports.subscribe=s.i,exports.supportsCookies=r.n,exports.supportsCryptoRandomUUID=r.r,exports.supportsDocument=r.i,exports.supportsHistory=r.a,exports.supportsIntersectionObserver=r.o,exports.supportsLocalStorage=r.s,exports.supportsLocation=r.c,exports.supportsSessionStorage=r.l,exports.supportsShadowRoot=r.u,exports.supportsWebComponents=r.d,exports.supportsWindow=r.f,exports.toTypedContentStore=vt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../plugin-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../plugin-B2ZH8qTR.cjs"),t=require("../../../api-C0pJEY8e.cjs"),n=require("../../../registry-C1t8l3t9.cjs");let r=require("@picked/delivery-api-client");Object.defineProperty(exports,"ActionResponseTimeoutError",{enumerable:!0,get:function(){return r.ActionResponseTimeoutError}}),Object.defineProperty(exports,"ActionRunFailedError",{enumerable:!0,get:function(){return r.ActionRunFailedError}}),Object.defineProperty(exports,"createClientHeaders",{enumerable:!0,get:function(){return r.createClientHeaders}}),exports.dynamicExperiencesPlugin=e.t,exports.fetchExperienceContent=t.t,exports.fetchProject=t.n,Object.defineProperty(exports,"fetchSchema",{enumerable:!0,get:function(){return r.fetchSchema}}),exports.registerPickedBundle=n.n;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-C9WV52iQ.cjs"),t=require("../../preview-unavailable-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-C9WV52iQ.cjs"),t=require("../../preview-unavailable-Cxy_a-K9.cjs"),n=require("../../plugin-B2ZH8qTR.cjs");let r=require("effector");var i=1e4;function a(e){if(e?.location!==void 0)return{location:e.location}}function o(t,n){return t.nodes.filter(e.d).some(e=>n.get(e.stepId)===!0)}async function s(r,s={}){let c=s.previewToken===void 0?void 0:{previewToken:s.previewToken},l=await r.getProjectConfig(c).catch(e=>{if(!(e instanceof t.t))throw e;return c=void 0,r.getProjectConfig()}),u=r.session.store.getState().id;r.conditionResults.reset(),n.n(r,l,{isPreview:!1,sessionId:u});let d=a(s.attributes),f=s.timeoutMs??i,p=new Map(l.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),m=Object.fromEntries(l.conditions.map(e=>[e.key,e])),h=l.experiences.filter(t=>!e.c(t.condition,m)),g=(await Promise.all(h.map(async t=>({experience:t,active:await e.o(r,{condition:t.condition},{context:d})})))).filter(e=>e.active).map(e=>e.experience),_=await Promise.all(g.filter(e=>o(e,p)).map(e=>r.getExperienceContent({id:e.id,key:e.key},{...c,signal:AbortSignal.timeout(f)}))),v=new Map;for(let e of _)if(e)for(let t of[...e.references??[],...e.content])v.set(t.id,t);return{versionId:l.versionId,projectConfig:l,content:Array.from(v.values()),conditionResults:r.conditionResults.store.getState()}}function c(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:t=>e(t),reject:e=>t(e)}}function l(t,n){let{promise:i,resolve:a}=c(),o=(0,r.createEvent)(),s=(0,r.createEvent)(),l=(0,r.createEvent)(),u=(0,r.createEvent)(),d=(0,r.createEvent)(),f=t.experiences.listStore.map(n=>n.map(n=>e.t({client:t,experience:n}))),p=(0,r.createStore)({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=(0,r.createEffect)(async e=>{let n=(0,r.attach)({source:e.experience.componentStore,effect:async(n,r)=>{let i=e.availableRenderers[r];return n&&i?.isValidComponent(n.component)?{rendered:await i.render(n.component,t,e.experience),rendererIndex:r}:null}}),i=e.startRendererIndex??0;for(let t=i;t<e.availableRenderers.length;t++){let e=await n(t);if(e)return e}return null}),h=(0,r.createEffect)(async({experience:e,availableRenderers:t,startRendererIndex:n=0})=>e?m({experience:e,availableRenderers:t,startRendererIndex:n}):null);p.on(l,(e,t)=>({...e,renderedExperiences:[...e.renderedExperiences,t],currentExperienceIndex:e.currentExperienceIndex+1})).on(d,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(u,e=>({...e,isComplete:!0})).reset(o),(0,r.sample)({clock:o,target:s}),(0,r.sample)({clock:s,source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex<e.length&&!t.isComplete,fn:({experiences:e,state:t})=>({experience:e[t.currentExperienceIndex],availableRenderers:n,startRendererIndex:0}),target:h}),(0,r.sample)({clock:h.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),(0,r.sample)({clock:l,target:s}),(0,r.sample)({clock:h.doneData,filter:e=>e===null,target:d}),(0,r.sample)({clock:d,target:s}),(0,r.sample)({clock:[s,d,l],source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex>=e.length,target:u});let g=(0,r.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}});return(0,r.sample)({clock:u,target:g}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=n.n,exports.render=l,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=s;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow templates
|
|
7
|
+
|
|
8
|
+
A template is text with `{{ … }}` in it. Picked fills it with data from the run before the
|
|
9
|
+
node uses it. A tool node can have a template in each of its fields. A condition node can
|
|
10
|
+
have a template in a text value of its rule.
|
|
11
|
+
|
|
12
|
+
## Data that a template reads
|
|
13
|
+
|
|
14
|
+
| Root | Data | Example |
|
|
15
|
+
| ----------------- | --------------------------------------------------------------- | -------------------------------- |
|
|
16
|
+
| `trigger` | The event or the action that started the run. | `trigger.action.responses.email` |
|
|
17
|
+
| `nodes.<node-id>` | The output of a tool node that runs before this node. | `nodes.n2.leads[0].id` |
|
|
18
|
+
| `run` | The run. Refer to [Variables](#variables). | `run.startedAt` |
|
|
19
|
+
| `workflow` | The workflow. Refer to [Variables](#variables). | `workflow.name` |
|
|
20
|
+
| `current` | The node that reads the data. Refer to [Variables](#variables). | `current.visit` |
|
|
21
|
+
|
|
22
|
+
A template writes an index as `[0]`, such as `leads[0].id`. The `var` operator of a rule
|
|
23
|
+
reads the same paths, and writes an index as a segment, such as `leads.0.id`.
|
|
24
|
+
|
|
25
|
+
In the editor, the **Insert reference** button of a field shows the data that the node can
|
|
26
|
+
read. The **Previous steps** tab shows `trigger` and `nodes`. The **Variables** tab shows
|
|
27
|
+
`run`, `workflow` and `current`.
|
|
28
|
+
|
|
29
|
+
## Variables
|
|
30
|
+
|
|
31
|
+
| Path | Type | Value |
|
|
32
|
+
| ------------------- | ------------- | ------------------------------------------------------------------------------------------- |
|
|
33
|
+
| `run.id` | Text | The ID of the run, such as `wkrun_…`. In a test run, the ID of the test run. |
|
|
34
|
+
| `run.startedAt` | Text | The time that Picked recorded the run. In a test run, the time that the test run started. |
|
|
35
|
+
| `run.preview` | True or false | True for a run of the draft from a preview of the workspace, and for a test run. |
|
|
36
|
+
| `workflow.id` | Text | The ID of the workflow. |
|
|
37
|
+
| `workflow.name` | Text | The name of the workflow. |
|
|
38
|
+
| `current.id` | Text | The ID of the node that reads the variable. |
|
|
39
|
+
| `current.startedAt` | Text | The time that the node started. If the node starts again, the time of the last start. |
|
|
40
|
+
| `current.visit` | Number | The number of the visit to the node. A run gets to a node one time only, so it is always 1. |
|
|
41
|
+
|
|
42
|
+
A time is ISO 8601 in UTC, such as `2026-10-12T21:30:00.000Z`. The `date` filter changes the
|
|
43
|
+
format and the timezone.
|
|
44
|
+
|
|
45
|
+
Picked sets `run.startedAt` and `run.preview` one time, when it records the run. All the
|
|
46
|
+
nodes of the run read the same values.
|
|
47
|
+
|
|
48
|
+
Picked gets the `current` values when the node starts, and records the result of the node:
|
|
49
|
+
|
|
50
|
+
- When a run continues after a stop, Picked uses the recorded results of the nodes that ran.
|
|
51
|
+
It does not run these nodes again.
|
|
52
|
+
- If a node stops before Picked records its result, Picked starts the node again. The node
|
|
53
|
+
gets a new `current.startedAt`.
|
|
54
|
+
- Picked does not start a failed node again. The run continues on the error exit of the node,
|
|
55
|
+
or stops at the node. Refer to the
|
|
56
|
+
[Workflow runs reference](/reference/dashboard/workflow-runs#run-status).
|
|
57
|
+
- When the `retry` argument of an **External API** node is on, the node can send its request
|
|
58
|
+
more than one time. Each request uses the values that the node got when it started.
|
|
59
|
+
|
|
60
|
+
When you save a workflow, Picked refuses a path below `run`, `workflow` or `current` that is
|
|
61
|
+
not in this table. It also refuses `run`, `workflow` or `current` without a path below it.
|
|
62
|
+
The error shows the path.
|
|
63
|
+
|
|
64
|
+
## Templates in a condition
|
|
65
|
+
|
|
66
|
+
A text value in a rule can have a template. Picked fills the template before it checks the
|
|
67
|
+
rule.
|
|
68
|
+
|
|
69
|
+
| Value | Result |
|
|
70
|
+
| -------------------------------------------------------- | ------------------------------------------------- |
|
|
71
|
+
| Only one `{{ … }}`, such as `"{{ nodes.n2.count }}"` | The value with its type. A number stays a number. |
|
|
72
|
+
| Text with a `{{ … }}` in it, such as `"id-{{ run.id }}"` | Text. |
|
|
73
|
+
| Only one `{{ … }}`, with no value | `null`. |
|
|
74
|
+
|
|
75
|
+
A value that is only one `{{ … }}` must give text, a number, `true`, `false` or `null`. If it
|
|
76
|
+
gives a list or an object, the condition stops with the code `condition_failed`. Text with a
|
|
77
|
+
`{{ … }}` in it always gives text, also when the `{{ … }}` gives a list.
|
|
78
|
+
|
|
79
|
+
Picked fills all the templates of a rule before it checks the rule. This includes a template
|
|
80
|
+
in a part of `if`, `and` or `or` that the rule does not use. A template that gives a list or
|
|
81
|
+
an object stops the condition, also when the rule does not use that part.
|
|
82
|
+
|
|
83
|
+
A template in the rule of `map`, `filter`, `reduce`, `all`, `some` or `none` reads the data of
|
|
84
|
+
the run. Picked fills it one time, before it checks the rule. It does not read the item.
|
|
85
|
+
|
|
86
|
+
In a rule, only `{{` starts a template. A text value with only `{% … %}` in it stays as you
|
|
87
|
+
write it. In a field of a tool node, `{% … %}` also starts a template.
|
|
88
|
+
|
|
89
|
+
These values cannot have a template. Picked refuses the workflow when you save it:
|
|
90
|
+
|
|
91
|
+
- The path of `var`.
|
|
92
|
+
- The pattern and the flags of `regexp_matches`.
|
|
93
|
+
- The message of `throw`.
|
|
94
|
+
|
|
95
|
+
When you save a workflow, Picked checks each path in a template of a rule. It checks them as
|
|
96
|
+
it checks a template in a tool node.
|
|
97
|
+
|
|
98
|
+
## Example: a rule for a time of day
|
|
99
|
+
|
|
100
|
+
This rule is true on days 1 to 5 of the week, from 08:00 to 16:59, in the timezone
|
|
101
|
+
`Australia/Sydney`:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"and": [
|
|
106
|
+
{ "<=": ["{{ current.startedAt | date: '%u', 'Australia/Sydney' | plus: 0 }}", 5] },
|
|
107
|
+
{ ">=": ["{{ current.startedAt | date: '%H', 'Australia/Sydney' | plus: 0 }}", 8] },
|
|
108
|
+
{ "<": ["{{ current.startedAt | date: '%H', 'Australia/Sydney' | plus: 0 }}", 17] }
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
- `%u` gives the ISO day of the week, from 1 to 7.
|
|
114
|
+
- `%H` gives the hour, from `00` to `23`.
|
|
115
|
+
- `plus: 0` changes the text to a number.
|
|
116
|
+
|
|
117
|
+
The offset of `Australia/Sydney` from UTC changes two times each year. The `date` filter
|
|
118
|
+
follows the offset that applies on the date of the time.
|
|
119
|
+
|
|
120
|
+
| Node started at, in UTC | Time in `Australia/Sydney` | Branch |
|
|
121
|
+
| ----------------------- | ----------------------------- | ------- |
|
|
122
|
+
| `2026-10-12T21:30:00Z` | Day 2, 08:30, offset `+11:00` | `true` |
|
|
123
|
+
| `2026-06-12T21:30:00Z` | Day 6, 07:30, offset `+10:00` | `false` |
|
|
124
|
+
|
|
125
|
+
## Related
|
|
126
|
+
|
|
127
|
+
- [Workflow test runs](/reference/dashboard/workflow-test-runs) — run the draft of a
|
|
128
|
+
workflow one time, and see the values that each node read.
|
|
129
|
+
- [How to call an external API from a workflow](/how-to/call-an-external-api-from-a-workflow)
|
|
130
|
+
— read the answer of a call in a later node.
|
|
@@ -63,3 +63,8 @@ show `Completed`. Refer to the [workflow runs reference](/reference/dashboard/wo
|
|
|
63
63
|
|
|
64
64
|
Each node shows its input and its output. A test run does not show in **Runs**, and it
|
|
65
65
|
does not create or change leads or labels.
|
|
66
|
+
|
|
67
|
+
## Run variables
|
|
68
|
+
|
|
69
|
+
A test run gives its own values to `run.id`, `run.startedAt` and `run.preview`. Refer to
|
|
70
|
+
[Workflow templates](/reference/dashboard/workflow-templates#variables).
|
|
@@ -104,6 +104,13 @@ documentation uses, and it names the others.
|
|
|
104
104
|
| **Visit** | The events one visitor made in one session. The API calls it `session`. |
|
|
105
105
|
| **Capture event** | The analytics event that recorded the capture of a lead. |
|
|
106
106
|
|
|
107
|
+
## Workflows
|
|
108
|
+
|
|
109
|
+
| Term | What it is |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| **Workflow template** | Text with `{{ … }}` in a node of a workflow. Picked fills it with data from the run. Refer to [Workflow templates](/reference/dashboard/workflow-templates). |
|
|
112
|
+
| **Run variable** | A value that each node of a run can read, such as `run.startedAt` or `current.visit`. |
|
|
113
|
+
|
|
107
114
|
## The SDK
|
|
108
115
|
|
|
109
116
|
| Term | What it is |
|
package/dist/esm/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { a as v, i as y, r as ee, s as b, t as x } from "../dom-BqcToNL0.js";
|
|
|
6
6
|
import { d as S, l as C, n as w, r as T, u as E } from "../experience-instance-4KUBH8Gb.js";
|
|
7
7
|
import { apply as D } from "./logic-engine.js";
|
|
8
8
|
import { i as te, n as O, r as ne, t as re } from "../storage-1MW3-_As.js";
|
|
9
|
-
import { a as ie, c as ae, l as oe, n as se, o as ce, r as le, s as ue, t as de } from "../preview-unavailable-
|
|
9
|
+
import { a as ie, c as ae, l as oe, n as se, o as ce, r as le, s as ue, t as de } from "../preview-unavailable-zy3QNLAf.js";
|
|
10
10
|
import { t as fe } from "../id-Bo4RBeOs.js";
|
|
11
11
|
import { n as pe, r as me, t as he } from "../inert-script-report-B_bMPRzp.js";
|
|
12
12
|
import { attach as k, clearNode as ge, combine as A, createApi as j, createDomain as M, createEffect as N, createEvent as P, createNode as _e, createStore as F, is as ve, sample as I, withRegion as ye } from "effector";
|
|
@@ -1547,7 +1547,7 @@ var Yt = class {
|
|
|
1547
1547
|
dataProviderFor(e) {
|
|
1548
1548
|
let t = e ?? "", n = this.dataProviders.get(t);
|
|
1549
1549
|
if (n) return n;
|
|
1550
|
-
let r = import("../provider-
|
|
1550
|
+
let r = import("../provider-DD-RtGP-.js").then((t) => t.createPickedDataProvider({
|
|
1551
1551
|
apiUrl: this.apiUrl,
|
|
1552
1552
|
projectId: this.projectId,
|
|
1553
1553
|
getRequestObserver: () => this.telemetry.deliveryAPIRequestObserver,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "../../../plugin-
|
|
2
|
-
import { n as t, t as n } from "../../../api-
|
|
1
|
+
import { t as e } from "../../../plugin-vkDbMGuz.js";
|
|
2
|
+
import { n as t, t as n } from "../../../api-BzqtrZm_.js";
|
|
3
3
|
import { n as r } from "../../../registry-CXZv0uLg.js";
|
|
4
4
|
import { ActionResponseTimeoutError as i, ActionRunFailedError as a, createClientHeaders as o, fetchSchema as s } from "@picked/delivery-api-client";
|
|
5
5
|
export { i as ActionResponseTimeoutError, a as ActionRunFailedError, o as createClientHeaders, e as dynamicExperiencesPlugin, n as fetchExperienceContent, t as fetchProject, s as fetchSchema, r as registerPickedBundle };
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as e, c as t, d as n, i as r, o as i, s as a, t as o } from "../../experience-instance-4KUBH8Gb.js";
|
|
2
|
-
import { t as s } from "../../preview-unavailable-
|
|
3
|
-
import { n as c } from "../../plugin-
|
|
2
|
+
import { t as s } from "../../preview-unavailable-zy3QNLAf.js";
|
|
3
|
+
import { n as c } from "../../plugin-vkDbMGuz.js";
|
|
4
4
|
import { attach as l, createEffect as u, createEvent as d, createStore as f, sample as p } from "effector";
|
|
5
5
|
//#region src/server/serialize.ts
|
|
6
6
|
var m = 1e4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-Cxy_a-K9.cjs");require("./api-C0pJEY8e.cjs");let t=require("effector"),n=require("@picked/delivery-api-client");function r(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return t>>>0}function i(e){let t=e;return t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16,t>>>0}function a(e,t){return i(r(`${e}:${t}`))%100}function o(e,t){return t<=0?!1:t>=100||e<t}var s=4294967296;function c(e,t,n){return(i(r(`${e}:${t}:${n}`))+.5)/s}function l(e,t,n){return n.weight<=0?0:n.weight/-Math.log(c(e,t,n.key))}function u(e,t,n){let r=null,i=0;for(let a of n){let n=l(e,t,a);n<=0||(n>i||n===i&&r!==null&&a.key<r.key)&&(i=n,r=a)}return r}function d(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function f(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function p(e){return typeof e!=`object`||!e?!1:`id`in e&&`key`in e&&`type`in e&&`name`in e}function m(e,t){if(Array.isArray(t.fields))for(let n of t.fields)p(n)&&e.registerField(n)}function h(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function g(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)f(e,n)}function _(e,t,n){E(e,t,n.isPreview,n.sessionId),d(e,t),m(e,t),h(e,t),b(e,t),g(e,t)}var v=25e3,y=3e4;function b(e,t){if(!Array.isArray(t.actions))return;let n=new Map(t.fields.map(e=>[e.id,e.key])),r=new Set(t.actions.map(e=>e.key)),i=new Set;for(let t of e.actions.listStore.getState())t.published?r.has(t.key)||e.actions.unregister(t.key):i.add(t.key);for(let r of t.actions){if(i.has(r.key)){`${r.key}`;continue}let a=[];for(let e of r.fieldIds??[]){let t=n.get(e);if(t===void 0){`${r.key}${e}`;continue}a.push(t)}let o={key:r.key,fieldKeys:a,versionId:t.versionId};e.actions.register({key:r.key,action:async t=>x(e,o,t),published:!0})}}async function x(e,t,r){let i=Date.now()+y,a={};for(let e of t.fieldKeys){let t=r.responses.find(t=>t.fieldKey===e);t?.value!==void 0&&(a[e]=t.value)}let o=e.session.store.getState().id,s=S(e),c=r.signal,l=await(0,n.runAction)(e.apiUrl,{key:t.key,projectId:e.projectId,session:{id:o},responses:a,versionId:t.versionId},{timeoutMs:Math.min(v,i-Date.now()),...c?{signal:c}:{},...s===void 0?{}:{previewToken:s}});if(l.status===`succeeded`)return l.response;if(l.status===`no_response`)return;if(l.workflowRunId===null)throw Error(`Action '${t.key}' is pending with no run to wait on`);let u=await(0,n.waitForActionResponse)(e.apiUrl,{workflowRunId:l.workflowRunId,projectId:e.projectId,sessionId:o},{timeoutMs:Math.max(1,i-Date.now()),...c?{signal:c}:{}});return u.status===`succeeded`?u.response:void 0}function S(t){let n=t.searchParams[e.n];if(n&&n.length>0)return n[0]}function C(t,n){return t.getProjectConfig(n===void 0?void 0:{previewToken:n}).catch(t=>t instanceof e.t?t:null)}async function w(t){let n=S(t),r=await C(t,n);if(!(r instanceof e.t))return{config:r,previewToken:n};e.i(t.searchParams,e.n),t.previewUnavailable=!0,`${r.message}`;let i=await C(t,void 0);return{config:i instanceof e.t?null:i,previewToken:void 0}}function T(t){let n=new Map,r=t.searchParams.feature;if(!r)return n;for(let t of r){let r=e.c(t);r&&n.set(r.id,r.bucket)}return n}function E(e,t,n,r){let i=T(e);for(let a of t.features){let t=i.get(a.id);if(t!==void 0){D(e,a,t);continue}O(e,a,n,r)}}function D(e,t,n){e.registerFeature(t.id,{key:`${n}`,name:t.name,enabled:!0,weight:t.weight,...t.valueType!==void 0&&{valueType:t.valueType},...t.variants!==void 0&&{variants:t.variants},storage:`session`,decide:()=>n})}function O(e,t,n,r){let i=t.id,s=t.variants;e.registerFeature(i,{key:`v${t.version}`,name:t.name,enabled:t.enabled,weight:t.weight,storage:n?`session`:`local`,valueType:t.valueType,variants:s,decide:()=>t.valueType===`text`?!s||s.length===0?(`${i}`,!1):u(r,i,s)?.value??!1:o(a(r,i),t.weight)})}function k(e,t){for(let n of[...t.references??[],...t.content])e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function A(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&k(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function j(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}function M(){return{name:`dynamic-experiences`,setup:e=>({onStart:(0,t.attach)({source:e.session.store.map(e=>e.id),effect:async t=>{let{config:n,previewToken:r}=await w(e),i=r!==void 0,a=r===void 0?void 0:{previewToken:r};if(e.contentLoader=A(e,j(t=>e.getExperienceContent(t,a),n)),!n)return;let o=e.seededVersionId;if(o!==null&&o!==n.versionId){e.versionSkew={seeded:o,resolved:n.versionId},`${n.versionId}${o}`;return}e.previewEmbedderOrigins=n.previewEmbedderOrigins??null,_(e,n,{isPreview:i,sessionId:t})}})})}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return M}});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./logger-DMN6TxJJ.js";
|
|
2
|
-
import { c as e, i as t, n, t as r } from "./preview-unavailable-
|
|
3
|
-
import "./api-
|
|
2
|
+
import { c as e, i as t, n, t as r } from "./preview-unavailable-zy3QNLAf.js";
|
|
3
|
+
import "./api-BzqtrZm_.js";
|
|
4
4
|
import { attach as i } from "effector";
|
|
5
5
|
import { runAction as a, waitForActionResponse as o } from "@picked/delivery-api-client";
|
|
6
6
|
//#region src/plugins/dynamic-experiences/hash.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./logger-CSTvAyyB.cjs"),t=require("./supports-DBzjGaWD.cjs"),n=require("./storage-DUw9UJ2h.cjs");let r=require("effector"),i=require("@withease/factories");var a=(0,r.createDomain)(`feature`);function o(e){return e?.enabled===!1}function s(e){return e===`true`||e!==`false`&&e}function c(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.substring(0,t),r=e.substring(t+1);return r.length===0?null:{id:n,bucket:s(r)}}var l=(0,i.createFactory)(({client:t})=>{let i=a.store({}),c=a.store([]),l=(0,r.createApi)(i,{register(e,t){return{...e,[t.id]:t.feature}}}),u=(0,r.createEvent)();(0,r.sample)({clock:u,source:i,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(t=>e.t(`warn`,t)),(0,r.sample)({clock:u,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:l.register});let d=(0,r.createEffect)(async({id:e,key:t,storage:r=`local`,enabled:i})=>{if(i===!1)return null;let a=n.t(`feature:${e}:${t}`,`global`),o=(r===`session`?n.r:n.n).get(a).text();return o?{id:e,key:t,bucket:s(o),storage:r}:null}),f=(0,r.createEffect)(e=>{if(!e)return null;let t=n.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?n.r:n.n).set(t,e.bucket)}),p=new Map,m=(0,r.attach)({source:{allFeaturesStore:i,resolvedFeaturesStore:c},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let s=e[n];if(!s)throw Error(`Feature with id '${n}' not found`);if(o(s.feature))return{id:s.id,bucket:!1,key:i,storage:s.feature.storage};let c=p.get(`${n}:${i}`);if(c!==void 0){let e=await c;return{id:s.id,bucket:e,key:i,storage:s.feature.storage}}let l=r();p.set(`${n}:${i}`,l);let u=await l;return{id:s.id,bucket:u,key:i,storage:s.feature.storage}}});(0,r.sample)({clock:l.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage,enabled:n.feature.enabled}},target:d}),(0,r.sample)({source:i,clock:m.doneData,filter:(e,t)=>!o(e[t.id]?.feature),fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:f});let h=(0,r.combine)({allFeaturesStore:i,resolvedFeaturesStore:c}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:async()=>await m(e.feature),isResolved:!1}}));(0,r.sample)({clock:m.doneData,source:{resolvedFeatures:c,allFeatures:i},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!o(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:t.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,r.sample)({clock:[d.doneData,m.doneData],source:{resolvedFeatures:c,allFeatures:i},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||o(t[n.id]?.feature)||e.some(e=>e.id===n.id&&e.key===n.key)?e:[...e,n],target:c});function g(e){return h.map(t=>t.find(t=>t.id===e),{skipVoid:!1})}let _=new Map,v=new Map,y=new Map;function b(e){let t=_.get(e);if(t)return t;let n=g(e);return _.set(e,n),n}function x(e){return i.map(t=>t[e],{skipVoid:!1})}function S(e){let t=(0,r.createStore)(async()=>void 0,{skipVoid:!1}),n=b(e),i=(0,r.attach)({source:n,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,r.sample)({clock:n,target:i}),(0,r.sample)({clock:i.doneData,filter:e=>e!==void 0,target:t}),i(),t}function C(e){let t=v.get(e);if(t)return t;let n=S(e);return v.set(e,n),n}function w(e){let t=C(e),n=(0,r.createStore)(void 0,{skipVoid:!1}),i=(0,r.attach)({source:t,mapParams:(e,t)=>t,effect:(0,r.createEffect)(async e=>await e())});return(0,r.sample)({clock:i.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:n}),(0,r.sample)({clock:t,target:i}),i(),n}function T(e){let t=y.get(e);if(t)return t;let n=w(e);return y.set(e,n),n}return{register:u,getById:b,getByName:x,listStore:h,getEvokableFeature:C,getFeatureResult:T}});function u(e){return(0,i.invoke)(l,e)}var d=(e,t,n)=>{n.register({id:e,feature:t})},f=()=>`0.0.98-next.
|
|
1
|
+
const e=require("./logger-CSTvAyyB.cjs"),t=require("./supports-DBzjGaWD.cjs"),n=require("./storage-DUw9UJ2h.cjs");let r=require("effector"),i=require("@withease/factories");var a=(0,r.createDomain)(`feature`);function o(e){return e?.enabled===!1}function s(e){return e===`true`||e!==`false`&&e}function c(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.substring(0,t),r=e.substring(t+1);return r.length===0?null:{id:n,bucket:s(r)}}var l=(0,i.createFactory)(({client:t})=>{let i=a.store({}),c=a.store([]),l=(0,r.createApi)(i,{register(e,t){return{...e,[t.id]:t.feature}}}),u=(0,r.createEvent)();(0,r.sample)({clock:u,source:i,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(t=>e.t(`warn`,t)),(0,r.sample)({clock:u,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:l.register});let d=(0,r.createEffect)(async({id:e,key:t,storage:r=`local`,enabled:i})=>{if(i===!1)return null;let a=n.t(`feature:${e}:${t}`,`global`),o=(r===`session`?n.r:n.n).get(a).text();return o?{id:e,key:t,bucket:s(o),storage:r}:null}),f=(0,r.createEffect)(e=>{if(!e)return null;let t=n.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?n.r:n.n).set(t,e.bucket)}),p=new Map,m=(0,r.attach)({source:{allFeaturesStore:i,resolvedFeaturesStore:c},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let s=e[n];if(!s)throw Error(`Feature with id '${n}' not found`);if(o(s.feature))return{id:s.id,bucket:!1,key:i,storage:s.feature.storage};let c=p.get(`${n}:${i}`);if(c!==void 0){let e=await c;return{id:s.id,bucket:e,key:i,storage:s.feature.storage}}let l=r();p.set(`${n}:${i}`,l);let u=await l;return{id:s.id,bucket:u,key:i,storage:s.feature.storage}}});(0,r.sample)({clock:l.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage,enabled:n.feature.enabled}},target:d}),(0,r.sample)({source:i,clock:m.doneData,filter:(e,t)=>!o(e[t.id]?.feature),fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:f});let h=(0,r.combine)({allFeaturesStore:i,resolvedFeaturesStore:c}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:async()=>await m(e.feature),isResolved:!1}}));(0,r.sample)({clock:m.doneData,source:{resolvedFeatures:c,allFeatures:i},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!o(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:t.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,r.sample)({clock:[d.doneData,m.doneData],source:{resolvedFeatures:c,allFeatures:i},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||o(t[n.id]?.feature)||e.some(e=>e.id===n.id&&e.key===n.key)?e:[...e,n],target:c});function g(e){return h.map(t=>t.find(t=>t.id===e),{skipVoid:!1})}let _=new Map,v=new Map,y=new Map;function b(e){let t=_.get(e);if(t)return t;let n=g(e);return _.set(e,n),n}function x(e){return i.map(t=>t[e],{skipVoid:!1})}function S(e){let t=(0,r.createStore)(async()=>void 0,{skipVoid:!1}),n=b(e),i=(0,r.attach)({source:n,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,r.sample)({clock:n,target:i}),(0,r.sample)({clock:i.doneData,filter:e=>e!==void 0,target:t}),i(),t}function C(e){let t=v.get(e);if(t)return t;let n=S(e);return v.set(e,n),n}function w(e){let t=C(e),n=(0,r.createStore)(void 0,{skipVoid:!1}),i=(0,r.attach)({source:t,mapParams:(e,t)=>t,effect:(0,r.createEffect)(async e=>await e())});return(0,r.sample)({clock:i.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:n}),(0,r.sample)({clock:t,target:i}),i(),n}function T(e){let t=y.get(e);if(t)return t;let n=w(e);return y.set(e,n),n}return{register:u,getById:b,getByName:x,listStore:h,getEvokableFeature:C,getFeatureResult:T}});function u(e){return(0,i.invoke)(l,e)}var d=(e,t,n)=>{n.register({id:e,feature:t})},f=()=>`0.0.98-next.4`;function p(){if(!t.f())return{};let e=new URLSearchParams(window.location.search),r={},i=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&i.add(t);for(let t of i){let n=t.replace(`picked-`,``);r[n]=e.getAll(t)}let a=n.t(`s`);if(i.size>0)n.r.set(a,r);else{let e=n.r.get(a);if(e)return e.json()||{}}return r}function m(e,r){if(delete e[r],!t.f())return;let i=n.t(`s`),a=n.r.get(i).json();if(!a)return;let o=Object.fromEntries(Object.entries(a).filter(([e])=>e!==r));if(Object.keys(o).length===0){n.r.remove(i);return}n.r.set(i,o)}var h=`preview-token`;function g(){return!t.f()||!t.t()?!1:!!p()[h]?.[0]}var _=class extends Error{constructor(e){super(`The preview workspace for project "${e}" no longer exists; its published configuration is still available.`),this.name=`PreviewUnavailableError`}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return _}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./api-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./api-C0pJEY8e.cjs"),t=require("./registry-C1t8l3t9.cjs");function n(e,t){try{return e?.onRequest(t)??{}}catch{return{}}}function r(e,t,n){try{e.onSettled?.(t,n)}catch{}}async function i(e,t,i){let a=n(e?.(),t),o;try{let e=await i(a.headers,e=>{o=e});return r(a,e!==null,o),e}catch(e){throw r(a,!1,o),e}}var a=`bundle`,o=`api`;async function s(){try{let e=await import(`virtual:picked/data`);return t.r(e)?e:null}catch{return null}}function c(e){if(e===void 0||t.r(e))return e}function l(n){let{apiUrl:r,projectId:l,previewToken:u,signal:d,getRequestObserver:f}=n,p=!!u,m=p?o:n.mode,h=c(p?void 0:n.bundle),g=p?void 0:n.projectConfig,_=n.getContent,v={mode:m??o,manifest:null,previewUnavailable:!1},y,b,x=new Map;function S(){if(m===o)return Promise.resolve(null);if(h)return Promise.resolve(h);let e=t.t();return e?Promise.resolve(e):(y??=s(),y)}function C(e){v.mode=e?a:o,v.manifest=e?e.manifestMetadata:null}async function w(){if(g)return C(await S()),g;let t=await S();return C(t),t?t.projectConfig:m===a?null:i(f,`project-config`,(t,n)=>e.n(r,l,{...u!==void 0&&{previewToken:u},...d!==void 0&&{signal:d},...t!==void 0&&{headers:t},onResponse:e=>{v.previewUnavailable=p&&e===404,n?.(e)}}))}async function T(t,n){let o=u===void 0?void 0:{previewToken:u};if(_)return _(t,o);let s=await S();if(C(s),s)try{return await s.experienceContent(t,o)}catch{return`${t.id}`,null}if(m===a)return null;let c=n??d;return i(f,`experience-content`,(n,i)=>e.t(r,l,t.id,{...u!==void 0&&{previewToken:u},...c!==void 0&&{signal:c},...n!==void 0&&{headers:n},...i!==void 0&&{onResponse:i}}))}return{meta:v,getProjectConfig:()=>(b??=w(),b),getContent:(e,t)=>{let n=x.get(e.id);if(n)return n;let r=T(e,t?.signal).finally(()=>{x.delete(e.id)});return x.set(e.id,r),r}}}exports.createPickedDataProvider=l;
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@picked/client",
|
|
3
|
-
"version": "0.0.98-next.
|
|
3
|
+
"version": "0.0.98-next.4",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@picked/delivery-api-client": "0.0.98-next.
|
|
5
|
+
"@picked/delivery-api-client": "0.0.98-next.4",
|
|
6
6
|
"@withease/factories": "^1.0.5",
|
|
7
|
-
"@picked/telemetry": "0.0.98-next.
|
|
7
|
+
"@picked/telemetry": "0.0.98-next.4"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@repo/eslint-config": "workspace:*",
|