@picked/client 0.0.98-next.2 → 0.0.98-next.3
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-PeY2M79y.cjs → api-DKvG5BpW.cjs} +1 -1
- package/dist/{api-C3VRwEmm.js → api-Du1CXHwf.js} +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 +26 -3
- package/dist/docs/reference/dashboard/external-apis.md +61 -29
- package/dist/docs/reference/dashboard/workflow-runs.md +30 -5
- package/dist/docs/reference/dashboard/workflow-test-runs.md +9 -5
- 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-Dbj4RFUo.cjs → plugin-CsE8tmaX.cjs} +1 -1
- package/dist/{plugin-DCUBvwwg.js → plugin-CttEcyFL.js} +2 -2
- package/dist/{preview-unavailable-CRdiC9KU.js → preview-unavailable-ByX1cyKS.js} +1 -1
- package/dist/{preview-unavailable-ChKFij_K.cjs → preview-unavailable-DlWDUdpa.cjs} +1 -1
- package/dist/{provider-DtJJrz-_.cjs → provider-B1TabtRC.cjs} +1 -1
- package/dist/{provider-B3cWi4ev.js → provider-DdRIjrTz.js} +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-DlWDUdpa.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}});
|
|
@@ -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-ByX1cyKS.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) {
|
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-ChKFij_K.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-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:
|
|
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-DtJJrz-_.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-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;
|
|
@@ -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-CsE8tmaX.cjs"),t=require("../../../api-DKvG5BpW.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-DlWDUdpa.cjs"),n=require("../../plugin-CsE8tmaX.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;
|
|
@@ -49,19 +49,42 @@ Picked sends the authorization header from the registration for you.
|
|
|
49
49
|
A later node reads what the call recorded:
|
|
50
50
|
|
|
51
51
|
- `{{ nodes.<node-id>.status }}` — the HTTP status.
|
|
52
|
-
- `{{ nodes.<node-id>.ok }}` — true for a status
|
|
52
|
+
- `{{ nodes.<node-id>.ok }}` — true for a status from 200 to 299.
|
|
53
53
|
- `{{ nodes.<node-id>.body }}` — the parsed JSON answer.
|
|
54
54
|
|
|
55
55
|
## 4. Continue after an error status
|
|
56
56
|
|
|
57
|
-
By default, a status
|
|
58
|
-
the node that failed. Refer to the [workflow runs reference](/reference/dashboard/workflow-runs). To test
|
|
57
|
+
By default, a status outside 200 to 299 fails the node and stops the run. The run page
|
|
58
|
+
shows the node that failed. Refer to the [workflow runs reference](/reference/dashboard/workflow-runs). To test
|
|
59
59
|
the status in the workflow instead:
|
|
60
60
|
|
|
61
61
|
1. Set `failOnErrorStatus` to off.
|
|
62
62
|
2. Add a condition node after the External API node.
|
|
63
63
|
3. Test `{{ nodes.<node-id>.status }}` in the condition.
|
|
64
64
|
|
|
65
|
+
## 5. Continue after a failed call
|
|
66
|
+
|
|
67
|
+
A timeout or a connection failure also fails the node. To continue the run after a
|
|
68
|
+
failed call:
|
|
69
|
+
|
|
70
|
+
1. Connect the node's error exit to a condition node.
|
|
71
|
+
2. Test `{{ nodes.<node-id>.error.retryable }}` in the condition.
|
|
72
|
+
3. Connect the condition's `false` exit to the nodes that record the failure.
|
|
73
|
+
|
|
74
|
+
The run follows the error exit only when the call fails. These failures stop the run at
|
|
75
|
+
the node:
|
|
76
|
+
|
|
77
|
+
- A required argument has no value.
|
|
78
|
+
- An argument has a value that the tool does not accept. For example, the value has the
|
|
79
|
+
wrong type, `method` is not one of the six methods, or `timeoutMs` is not from
|
|
80
|
+
1000 to 30000.
|
|
81
|
+
- A template cannot be rendered.
|
|
82
|
+
- The workflow does not have a scope that the tool needs.
|
|
83
|
+
- An error occurs in Picked.
|
|
84
|
+
|
|
85
|
+
Refer to the [External APIs reference](/reference/dashboard/external-apis#errors) for each
|
|
86
|
+
reason.
|
|
87
|
+
|
|
65
88
|
## Related
|
|
66
89
|
|
|
67
90
|
- [External APIs](/reference/dashboard/external-apis) — every argument, every limit and
|
|
@@ -10,37 +10,37 @@ An external API is an origin that this project's workflows are allowed to call w
|
|
|
10
10
|
|
|
11
11
|
## Registration
|
|
12
12
|
|
|
13
|
-
| Field
|
|
14
|
-
|
|
|
15
|
-
| Display name
|
|
16
|
-
| Origin
|
|
17
|
-
| Authorization header | Optional. A header name and a value. The value is encrypted and is never returned. The dashboard shows the header name and a mask.
|
|
13
|
+
| Field | Rule |
|
|
14
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| Display name | Required. 1 to 120 characters. For you only; it does not go out with the request. |
|
|
16
|
+
| Origin | Required. The scheme, the host and the optional port, with no path, query, fragment or sign-in details. `http` or `https` only, on port 80 or 443. Must not point at a private, loopback or link-local address. One live registration per origin per project. |
|
|
17
|
+
| Authorization header | Optional. A header name and a value. The value is encrypted and is never returned. The dashboard shows the header name and a mask. |
|
|
18
18
|
|
|
19
19
|
To change an origin, delete the registration and register the new origin. The origin is
|
|
20
20
|
the registration's identity.
|
|
21
21
|
|
|
22
22
|
## Node arguments
|
|
23
23
|
|
|
24
|
-
| Argument
|
|
25
|
-
|
|
|
26
|
-
| `method`
|
|
27
|
-
| `url`
|
|
28
|
-
| `headers`
|
|
29
|
-
| `body`
|
|
30
|
-
| `timeoutMs`
|
|
31
|
-
| `retry`
|
|
32
|
-
| `failOnErrorStatus` | on
|
|
33
|
-
| `recordBody`
|
|
24
|
+
| Argument | Default | Rule |
|
|
25
|
+
| ------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
26
|
+
| `method` | — | Required. `GET`, `HEAD`, `POST`, `PUT`, `PATCH` or `DELETE`. |
|
|
27
|
+
| `url` | — | Required. The full address. Its origin must be registered to this project. |
|
|
28
|
+
| `headers` | none | A JSON object of headers to send. Picked refuses a credential here when you save. |
|
|
29
|
+
| `body` | none | The JSON body. Used by `POST`, `PUT` and `PATCH`. |
|
|
30
|
+
| `timeoutMs` | 10000 | 1000 to 30000. The time that the whole call has, with every retry. |
|
|
31
|
+
| `retry` | on for `GET`, `HEAD`, `PUT` and `DELETE`; off for `POST` and `PATCH` | Whether to send the request again after a failed connection, an unknown host, or a status of 408, 429 or 500 to 599. |
|
|
32
|
+
| `failOnErrorStatus` | on | Whether a status outside 200 to 299 fails the node. |
|
|
33
|
+
| `recordBody` | on | Whether to record the answer's body. |
|
|
34
34
|
|
|
35
35
|
## Output
|
|
36
36
|
|
|
37
|
-
| Name
|
|
38
|
-
|
|
|
39
|
-
| `status`
|
|
40
|
-
| `ok`
|
|
41
|
-
| `body`
|
|
42
|
-
| `bodyTruncated` | True when the answer was too large to record in full.
|
|
43
|
-
| `durationMs`
|
|
37
|
+
| Name | Value |
|
|
38
|
+
| --------------- | ------------------------------------------------------------------------ |
|
|
39
|
+
| `status` | The HTTP status. |
|
|
40
|
+
| `ok` | True for a status from 200 to 299. |
|
|
41
|
+
| `body` | The parsed JSON answer, or null when it is not JSON or was not recorded. |
|
|
42
|
+
| `bodyTruncated` | True when the answer was too large to record in full. |
|
|
43
|
+
| `durationMs` | The time the call took. |
|
|
44
44
|
|
|
45
45
|
## Limits
|
|
46
46
|
|
|
@@ -50,16 +50,48 @@ the registration's identity.
|
|
|
50
50
|
new address.
|
|
51
51
|
- Picked sends a request three times at most. Picked waits longer before each retry, and
|
|
52
52
|
waits for the time that a `Retry-After` header gives.
|
|
53
|
+
- A timeout uses all of `timeoutMs`, so Picked does not send the request again after a
|
|
54
|
+
timeout.
|
|
53
55
|
|
|
54
56
|
## Errors
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
When the node fails, the run stops at the node. If the call fails and an edge leaves the
|
|
59
|
+
node's error exit, the run continues on that edge. These failures stop the run at the
|
|
60
|
+
node, with or without that edge:
|
|
61
|
+
|
|
62
|
+
- A required argument has no value.
|
|
63
|
+
- An argument has a value that the tool does not accept. For example, the value has the
|
|
64
|
+
wrong type, `method` is not one of the six methods, or `timeoutMs` is not from
|
|
65
|
+
1000 to 30000.
|
|
66
|
+
- A template cannot be rendered.
|
|
67
|
+
- The workflow does not have a scope that the tool needs.
|
|
68
|
+
- An error occurs in Picked.
|
|
69
|
+
|
|
70
|
+
A later node reads why the call failed from `nodes.<node-id>.error`:
|
|
71
|
+
|
|
72
|
+
| Field | Value |
|
|
73
|
+
| ----------- | -------------------------------------------------------- |
|
|
74
|
+
| `code` | `http_failed`. |
|
|
75
|
+
| `message` | The node, the tool and the message from the table below. |
|
|
76
|
+
| `reason` | The reason from the table below. |
|
|
77
|
+
| `retryable` | True when the same request can pass at a later time. |
|
|
78
|
+
| `status` | The HTTP status, for the reason `error_status` only. |
|
|
79
|
+
|
|
80
|
+
After an error status, `nodes.<node-id>.status`, `ok` and `body` also keep the answer.
|
|
81
|
+
|
|
82
|
+
| Reason | Message ends with | Retryable | When |
|
|
83
|
+
| ------------------------ | ----------------------------------------------------- | --------------------------- | ----------------------------------------------------------------- |
|
|
84
|
+
| `error_status` | `the API answered <status>` | For 408, 429 and 500 to 599 | The status was outside 200 to 299, and `failOnErrorStatus` is on. |
|
|
85
|
+
| `timeout` | `no answer within the node's timeout` | Yes | Nothing answered within `timeoutMs`. |
|
|
86
|
+
| `transport` | `the request could not be delivered` | Yes | The connection failed. |
|
|
87
|
+
| `unresolvable` | `the destination hostname did not resolve` | Yes | No address was found for the host. |
|
|
88
|
+
| `refused` | `the destination was refused` | No | The URL points at a private, loopback or link-local address. |
|
|
89
|
+
| `refused` | `no external API is registered for <origin>` | No | The URL's origin has no live registration in this project. |
|
|
90
|
+
| `request_too_large` | `the request body is over 1 MiB` | No | The body is larger than the limit. |
|
|
91
|
+
| `invalid_request` | `the request is not one the tool can send` | No | The arguments do not make a valid request. |
|
|
92
|
+
| `invalid_request` | `the URL is not one the tool can send` | No | The tool cannot send to the URL. |
|
|
93
|
+
| `invalid_headers` | The header that Picked refused | No | A header name or value is not valid for HTTP. |
|
|
94
|
+
| `credential_unavailable` | `the credential for this external API is unavailable` | No | Picked cannot read the registration's authorization header. |
|
|
63
95
|
|
|
64
96
|
Picked also refuses a workflow when you save it if a node holds a credential in
|
|
65
97
|
`headers`. Register the external API, and put the credential on the registration.
|
|
@@ -22,11 +22,36 @@ you did not publish does not start runs.
|
|
|
22
22
|
|
|
23
23
|
## Run status
|
|
24
24
|
|
|
25
|
-
| Status | Meaning
|
|
26
|
-
| ----------- |
|
|
27
|
-
| `Running` | The run started and did not stop yet. A **Wait** node can keep a run in this status for days.
|
|
28
|
-
| `Completed` | Each node that the run reached did its work.
|
|
29
|
-
| `Failed` | A node failed. The run stopped at that node. The run shows the reason.
|
|
25
|
+
| Status | Meaning |
|
|
26
|
+
| ----------- | ----------------------------------------------------------------------------------------------- |
|
|
27
|
+
| `Running` | The run started and did not stop yet. A **Wait** node can keep a run in this status for days. |
|
|
28
|
+
| `Completed` | Each node that the run reached did its work, or failed and the run continued on its error exit. |
|
|
29
|
+
| `Failed` | A node failed. The run stopped at that node. The run shows the reason. |
|
|
30
|
+
|
|
31
|
+
A tool node that fails with an edge on its error exit shows `Failed` on its task. The run
|
|
32
|
+
continues on that edge only when the tool itself fails:
|
|
33
|
+
|
|
34
|
+
- An External API call fails. Refer to the [External APIs reference](/reference/dashboard/external-apis#errors).
|
|
35
|
+
- Another tool refuses the request. For example, a label value is not a number for a
|
|
36
|
+
`number` label, or the lead does not exist.
|
|
37
|
+
|
|
38
|
+
When the tool refuses the request, the error record has the code `tool_failed` and a
|
|
39
|
+
reason from the tool, for example `value_invalid_for_type` or `not_found`.
|
|
40
|
+
|
|
41
|
+
Other failures stop the run, with or without an edge on the error exit:
|
|
42
|
+
|
|
43
|
+
- A required argument has no value.
|
|
44
|
+
- An argument has a value that the tool does not accept:
|
|
45
|
+
- The value has the wrong type.
|
|
46
|
+
- The value is not one of the options.
|
|
47
|
+
- A number is not in the range that the tool accepts.
|
|
48
|
+
- A label namespace or key does not have the correct format.
|
|
49
|
+
- Two labels have the same namespace and key.
|
|
50
|
+
- A list of labels is empty.
|
|
51
|
+
- A template cannot be rendered.
|
|
52
|
+
- The workflow does not have a scope that the tool needs.
|
|
53
|
+
- The tool gives output that is not valid.
|
|
54
|
+
- An error occurs in Picked.
|
|
30
55
|
|
|
31
56
|
## Records
|
|
32
57
|
|
|
@@ -51,11 +51,15 @@ A later node that reads the output of a skipped node gets no value.
|
|
|
51
51
|
|
|
52
52
|
## Result
|
|
53
53
|
|
|
54
|
-
| Status | Meaning
|
|
55
|
-
| ----------- |
|
|
56
|
-
| `Succeeded` | The node did its work.
|
|
57
|
-
| `Skipped` | The tool writes, so the test run did not run it.
|
|
58
|
-
| `Failed` | The node failed
|
|
54
|
+
| Status | Meaning |
|
|
55
|
+
| ----------- | ------------------------------------------------ |
|
|
56
|
+
| `Succeeded` | The node did its work. |
|
|
57
|
+
| `Skipped` | The tool writes, so the test run did not run it. |
|
|
58
|
+
| `Failed` | The node failed, and shows the reason. |
|
|
59
|
+
|
|
60
|
+
When a node fails, the test run stops at that node and shows `Failed`. If an edge leaves
|
|
61
|
+
the error exit of the node, the test run continues on that edge as a run does, and can
|
|
62
|
+
show `Completed`. Refer to the [workflow runs reference](/reference/dashboard/workflow-runs#run-status).
|
|
59
63
|
|
|
60
64
|
Each node shows its input and its output. A test run does not show in **Runs**, and it
|
|
61
65
|
does not create or change leads or labels.
|
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-ByX1cyKS.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-DdRIjrTz.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-CttEcyFL.js";
|
|
2
|
+
import { n as t, t as n } from "../../../api-Du1CXHwf.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-ByX1cyKS.js";
|
|
3
|
+
import { n as c } from "../../plugin-CttEcyFL.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-DlWDUdpa.cjs");require("./api-DKvG5BpW.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-ByX1cyKS.js";
|
|
3
|
+
import "./api-Du1CXHwf.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.3`;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-DKvG5BpW.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.3",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@picked/delivery-api-client": "0.0.98-next.
|
|
5
|
+
"@picked/delivery-api-client": "0.0.98-next.3",
|
|
6
6
|
"@withease/factories": "^1.0.5",
|
|
7
|
-
"@picked/telemetry": "0.0.98-next.
|
|
7
|
+
"@picked/telemetry": "0.0.98-next.3"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@repo/eslint-config": "workspace:*",
|