@picked/client 0.0.99-next.3 → 0.0.100-next.1
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-DmfXs40y.js → api-BjkZcZMV.js} +1 -1
- package/dist/{api-Crti2I1Z.cjs → api-CmkGPdqO.cjs} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/how-to/call-an-external-api-from-a-workflow.md +5 -1
- package/dist/docs/how-to/register-an-api-that-uses-oauth2.md +107 -0
- package/dist/docs/reference/dashboard/external-apis.md +98 -26
- 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-DJH2ADNG.cjs → plugin-CIG8UQzw.cjs} +1 -1
- package/dist/{plugin-CYy_MOIM.js → plugin-Dxql_m9_.js} +2 -2
- package/dist/{preview-unavailable-DY4MP5BE.cjs → preview-unavailable-DgOFK-Zw.cjs} +1 -1
- package/dist/{preview-unavailable-CBTqLZrf.js → preview-unavailable-DrONO3zv.js} +1 -1
- package/dist/{provider-BSBCryOK.js → provider-DDUKa3yC.js} +1 -1
- package/dist/{provider-IdQjYHGS.cjs → provider-kPJhBjDd.cjs} +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./logger-DMN6TxJJ.js";
|
|
2
|
-
import { o as e } from "./preview-unavailable-
|
|
2
|
+
import { o as e } from "./preview-unavailable-DrONO3zv.js";
|
|
3
3
|
import { createClientHeaders as t, fetchExperienceContent as n, fetchProject as r } from "@picked/delivery-api-client";
|
|
4
4
|
//#region src/data-source/api.ts
|
|
5
5
|
function i(n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-DgOFK-Zw.cjs");let t=require("@picked/delivery-api-client");function n(n){return{...n,headers:{...(0,t.createClientHeaders)(`sdk`,e.o()),...n?.headers},onWarn:(e,t)=>{}}}async function r(e,r,i){return(0,t.fetchProject)(e,r,n(i))}async function i(e,r,i,a){return(0,t.fetchExperienceContent)(e,r,i,n(a))}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-VUbvWqdi.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-DlLH3FxV.cjs"),a=require("../experience-instance-C9WV52iQ.cjs"),o=require("./logic-engine.js"),s=require("../storage-DUw9UJ2h.cjs"),c=require("../preview-unavailable-DY4MP5BE.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-DgOFK-Zw.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-IdQjYHGS.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-kPJhBjDd.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-CIG8UQzw.cjs"),t=require("../../../api-CmkGPdqO.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-DgOFK-Zw.cjs"),n=require("../../plugin-CIG8UQzw.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;
|
|
@@ -21,10 +21,14 @@ register one, every path on it becomes available to the workflow.
|
|
|
21
21
|
request.
|
|
22
22
|
5. Enter the **Origin**, such as `https://api.vendor.test`. Do not enter a path, a query
|
|
23
23
|
or a fragment.
|
|
24
|
-
6. If the API needs an authorization header,
|
|
24
|
+
6. If the API needs an authorization header, set **Credential** to **Authorization
|
|
25
|
+
header**.
|
|
25
26
|
7. Enter the header name and its value.
|
|
26
27
|
8. Choose **Register external API**.
|
|
27
28
|
|
|
29
|
+
For an API whose access tokens expire, refer to
|
|
30
|
+
[How to register an API that uses OAuth2](/how-to/register-an-api-that-uses-oauth2).
|
|
31
|
+
|
|
28
32
|
The header value is write-only. After you save it, Picked shows only the header name and
|
|
29
33
|
a mask. To replace the value, choose **Rotate authorization header**.
|
|
30
34
|
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: how-to
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# How to register an API that uses OAuth2
|
|
7
|
+
|
|
8
|
+
This guide shows you how to let a workflow call an API whose access tokens expire, such as
|
|
9
|
+
Zoho CRM. You need a client ID and a client secret from the provider. For the refresh token
|
|
10
|
+
grant, you also need a refresh token.
|
|
11
|
+
|
|
12
|
+
Picked keeps the credential, gets an access token from the provider, and sends the token
|
|
13
|
+
with each request. Picked gets a new token before the old token expires.
|
|
14
|
+
|
|
15
|
+
## 1. Make a refresh token in Zoho
|
|
16
|
+
|
|
17
|
+
Do this step for Zoho CRM only. For another provider, get the credential from the
|
|
18
|
+
provider's documentation.
|
|
19
|
+
|
|
20
|
+
1. Open the Zoho API console for the region of your Zoho account.
|
|
21
|
+
2. Add a client of the type `Self Client`.
|
|
22
|
+
3. Make a grant code with the scopes that the workflow needs, such as
|
|
23
|
+
`ZohoCRM.modules.leads.CREATE`.
|
|
24
|
+
4. Send a `POST` request to the token URL of your region, such as
|
|
25
|
+
`https://accounts.zoho.com.au/oauth/v2/token`. Put the parameters in the form body, not
|
|
26
|
+
in the URL. The parameters are `grant_type=authorization_code`, `client_id`,
|
|
27
|
+
`client_secret`, and `code` with the grant code. The grant code expires soon, so do this
|
|
28
|
+
step immediately.
|
|
29
|
+
5. Keep the `refresh_token` from the answer.
|
|
30
|
+
|
|
31
|
+
:::warning
|
|
32
|
+
Make the refresh token as a Zoho user that only Picked uses. Zoho keeps 20 refresh tokens
|
|
33
|
+
for each user and client. When you make one more, Zoho stops the oldest refresh token. That
|
|
34
|
+
token can be the token that Picked uses.
|
|
35
|
+
:::
|
|
36
|
+
|
|
37
|
+
## 2. Register the external API
|
|
38
|
+
|
|
39
|
+
1. Open **Integrations**.
|
|
40
|
+
2. Choose **Configure external APIs**.
|
|
41
|
+
3. Choose **New external API**.
|
|
42
|
+
4. For Zoho CRM, set **Preset** to the region of your Zoho account. The preset sets the
|
|
43
|
+
**Display name**, the **Origin**, the **Credential** and the settings of the OAuth2
|
|
44
|
+
credential. Then go to step 10. If **Preset** does not show your region, do steps 5 to 9.
|
|
45
|
+
5. Enter a **Display name**.
|
|
46
|
+
6. Enter the **Origin**, such as `https://www.zohoapis.com.au`.
|
|
47
|
+
7. Set **Credential** to **OAuth2 credential**.
|
|
48
|
+
8. Enter the **Token URL** from the provider's documentation. Do not put a secret in the
|
|
49
|
+
token URL.
|
|
50
|
+
9. Set the **Grant**, the **Client authentication** and the **Header scheme** from the
|
|
51
|
+
provider's documentation.
|
|
52
|
+
10. Enter the **Client ID**.
|
|
53
|
+
11. Enter the **Client secret**.
|
|
54
|
+
12. For the refresh token grant, enter the **Refresh token**.
|
|
55
|
+
13. Choose **Register external API**.
|
|
56
|
+
|
|
57
|
+
The client secret and the refresh token are write-only. After you save them, Picked shows
|
|
58
|
+
only that they are stored.
|
|
59
|
+
|
|
60
|
+
## 3. Add a credential to an external API that you registered
|
|
61
|
+
|
|
62
|
+
1. Open the external API.
|
|
63
|
+
2. Choose **Use an OAuth2 credential**.
|
|
64
|
+
3. For Zoho CRM, set **Preset** to the region of your Zoho account. For another provider,
|
|
65
|
+
do steps 8 and 9 of section 2.
|
|
66
|
+
4. Do steps 10 to 12 of section 2.
|
|
67
|
+
5. Choose **Save credential**.
|
|
68
|
+
|
|
69
|
+
The credential replaces the authorization header of the external API.
|
|
70
|
+
|
|
71
|
+
## 4. Refresh only for an expired token
|
|
72
|
+
|
|
73
|
+
Some APIs answer 401 for an error that a new token does not correct. To get a new token only
|
|
74
|
+
for an expired token:
|
|
75
|
+
|
|
76
|
+
1. Open the external API.
|
|
77
|
+
2. Choose **Edit OAuth2 credential**.
|
|
78
|
+
3. In **401 rule: response body path**, enter the path of the error code in the 401 answer,
|
|
79
|
+
such as `code`. Put a dot between the parts of the path, for example `data.0.code`.
|
|
80
|
+
4. In **401 rule: values**, enter the error codes that show an expired token, such as
|
|
81
|
+
`INVALID_TOKEN`.
|
|
82
|
+
5. Choose **Save credential**.
|
|
83
|
+
|
|
84
|
+
The Zoho CRM preset sets this rule for you.
|
|
85
|
+
|
|
86
|
+
## 5. Replace a refresh token that the provider rejected
|
|
87
|
+
|
|
88
|
+
When the provider rejects the credential, the external API page shows the reason in **Last
|
|
89
|
+
refresh failure**. Each call fails with `credential_rejected` until you correct the
|
|
90
|
+
credential.
|
|
91
|
+
|
|
92
|
+
1. Make a new refresh token.
|
|
93
|
+
2. Open the external API.
|
|
94
|
+
3. Choose **Edit OAuth2 credential**.
|
|
95
|
+
4. Enter the new **Refresh token**.
|
|
96
|
+
5. Choose **Save credential**.
|
|
97
|
+
|
|
98
|
+
Leave the **Client secret** empty to keep the stored client secret. If you change the
|
|
99
|
+
**Token URL**, the **Client ID** or the **Client authentication**, enter the client secret
|
|
100
|
+
and the refresh token again.
|
|
101
|
+
|
|
102
|
+
## Related
|
|
103
|
+
|
|
104
|
+
- [External APIs](/reference/dashboard/external-apis#oauth2-credential) — every setting of
|
|
105
|
+
an OAuth2 credential, and when Picked gets a new token.
|
|
106
|
+
- [How to call an external API from a workflow](/how-to/call-an-external-api-from-a-workflow)
|
|
107
|
+
— the node that sends the request.
|
|
@@ -6,19 +6,89 @@ layout: docs
|
|
|
6
6
|
# External APIs
|
|
7
7
|
|
|
8
8
|
An external API is an origin that this project's workflows are allowed to call with the
|
|
9
|
-
**External API** node.
|
|
9
|
+
**External API** node. For the steps to register an API that uses OAuth2, refer to
|
|
10
|
+
[How to register an API that uses OAuth2](/how-to/register-an-api-that-uses-oauth2).
|
|
10
11
|
|
|
11
12
|
## Registration
|
|
12
13
|
|
|
13
|
-
| Field
|
|
14
|
-
|
|
|
15
|
-
| Display name
|
|
16
|
-
| Origin
|
|
17
|
-
|
|
|
14
|
+
| Field | Rule |
|
|
15
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
+
| Display name | Required. 1 to 120 characters. For you only; it does not go out with the request. |
|
|
17
|
+
| 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. |
|
|
18
|
+
| Credential | None, an authorization header, or an OAuth2 credential. Each secret is encrypted and is never returned. |
|
|
19
|
+
|
|
20
|
+
An authorization header is a header name and a value. The dashboard shows the header name
|
|
21
|
+
and a mask. An OAuth2 credential gets an access token for each call. Refer to
|
|
22
|
+
[OAuth2 credential](#oauth2-credential). When you set one kind of credential, Picked removes
|
|
23
|
+
the other kind.
|
|
24
|
+
|
|
25
|
+
On a registration with an OAuth2 credential, the dashboard does not show the authorization
|
|
26
|
+
header. Remove the OAuth2 credential before you set a header.
|
|
18
27
|
|
|
19
28
|
To change an origin, delete the registration and register the new origin. The origin is
|
|
20
29
|
the registration's identity.
|
|
21
30
|
|
|
31
|
+
A preset sets the display name, the origin and an OAuth2 credential for a provider. Refer to
|
|
32
|
+
[OAuth2 credential](#oauth2-credential).
|
|
33
|
+
|
|
34
|
+
## OAuth2 credential
|
|
35
|
+
|
|
36
|
+
An OAuth2 credential gets an access token from the provider's token URL. Picked sends the
|
|
37
|
+
header scheme, a space and the access token in the header with each request.
|
|
38
|
+
|
|
39
|
+
| Setting | Default | Rule |
|
|
40
|
+
| --------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| Grant | Refresh token | `Refresh token` or `Client credentials`. |
|
|
42
|
+
| Token URL | — | Required. An `https` URL with no fragment. The query must not contain `grant_type`, `client_id`, `client_secret`, `refresh_token` or `code`. Picked checks the URL as it checks an origin. Picked does not register its origin. |
|
|
43
|
+
| Client ID | — | Required. 1 to 512 characters. |
|
|
44
|
+
| Client secret | — | Required. Encrypted, and never returned. When you edit the credential, an empty field keeps the stored client secret. If you change the token URL, the client ID or the client authentication, enter the client secret again. |
|
|
45
|
+
| Refresh token | — | Required for the refresh token grant. The client credentials grant does not use one. Encrypted, and never returned. When you edit the credential, an empty field keeps the stored refresh token. If you change the token URL, the client ID or the client authentication, enter the refresh token again. |
|
|
46
|
+
| Client authentication | Form body | The client ID and the client secret go in the form body, or in an `Authorization: Basic` header. |
|
|
47
|
+
| Token parameters | None | Up to 20 more form parameters, such as `scope`. `grant_type`, `client_id`, `client_secret`, `refresh_token` and `code` are not permitted. |
|
|
48
|
+
| Header name | `Authorization` | The header that holds the access token. |
|
|
49
|
+
| Header scheme | `Bearer` | The word before the access token, such as `Zoho-oauthtoken`. No spaces. |
|
|
50
|
+
| 401 rule | None | A path in the JSON body of a 401 answer, and 1 to 20 values at that path that show an expired token. Put a dot between the parts of the path, for example `code` or `data.0.code`. A part that is a number identifies an item in a list. With no rule, each 401 shows an expired token. |
|
|
51
|
+
|
|
52
|
+
The Zoho CRM preset sets the display name `Zoho CRM` and the origin of the API for the
|
|
53
|
+
region, such as `https://www.zohoapis.com.au`. It also sets an OAuth2 credential. The
|
|
54
|
+
credential has the token URL for the region, `Form body`, `Zoho-oauthtoken`, and a 401 rule
|
|
55
|
+
of `code` with the value `INVALID_TOKEN`. On the page of a registered external API, the preset sets only the
|
|
56
|
+
OAuth2 credential.
|
|
57
|
+
|
|
58
|
+
### Access tokens
|
|
59
|
+
|
|
60
|
+
- Picked sends the token request as a `POST` with a form body, so no secret is in a URL.
|
|
61
|
+
- Picked uses an access token until 60 seconds before it expires.
|
|
62
|
+
- Picked reads the lifetime from `expires_in_sec`, or else from `expires_in`. Picked keeps
|
|
63
|
+
a token with no lifetime for one hour.
|
|
64
|
+
- Picked counts an answer as a success when its JSON body has an `access_token`, for all
|
|
65
|
+
statuses.
|
|
66
|
+
- A `refresh_token` in the answer replaces the stored refresh token.
|
|
67
|
+
- One token request at a time runs for each credential. Other calls use the token that it
|
|
68
|
+
gets.
|
|
69
|
+
- After a token request fails with `credential_refresh_failed`, Picked sends no token
|
|
70
|
+
request for 60 seconds. Calls in that time fail with `credential_refresh_failed`.
|
|
71
|
+
- Picked uses a stored access token for all values of `timeoutMs`.
|
|
72
|
+
- The token request, and the wait for a token request of another call, use time from the
|
|
73
|
+
node's `timeoutMs`. Each stops while 5 seconds remain. Picked starts a token request only
|
|
74
|
+
when 6 seconds or more remain. A token request stops after 10 seconds.
|
|
75
|
+
- When the node's time stops a token request, other calls can send a token request
|
|
76
|
+
immediately.
|
|
77
|
+
|
|
78
|
+
### A 401 answer
|
|
79
|
+
|
|
80
|
+
Picked gets a new token and sends the request again when these are all true:
|
|
81
|
+
|
|
82
|
+
- The API answered 401.
|
|
83
|
+
- The token is older than 60 seconds.
|
|
84
|
+
- The credential has no 401 rule, or the rule applies to the body of the answer.
|
|
85
|
+
|
|
86
|
+
The second request has the same `Idempotency-Key`. Its answer is the result of the node.
|
|
87
|
+
|
|
88
|
+
If Picked cannot get a new token, the node fails with `credential_rejected` or
|
|
89
|
+
`credential_refresh_failed`. Then `nodes.<node-id>.status`, `ok` and `body` keep the 401
|
|
90
|
+
answer.
|
|
91
|
+
|
|
22
92
|
## Node arguments
|
|
23
93
|
|
|
24
94
|
| Argument | Default | Rule |
|
|
@@ -69,29 +139,31 @@ node, with or without that edge:
|
|
|
69
139
|
|
|
70
140
|
A later node reads why the call failed from `nodes.<node-id>.error`:
|
|
71
141
|
|
|
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
|
|
142
|
+
| Field | Value |
|
|
143
|
+
| ----------- | ------------------------------------------------------------------------------------------------ |
|
|
144
|
+
| `code` | `http_failed`. |
|
|
145
|
+
| `message` | The node, the tool and the message from the table below. |
|
|
146
|
+
| `reason` | The reason from the table below. |
|
|
147
|
+
| `retryable` | True when the same request can pass at a later time. |
|
|
148
|
+
| `status` | The HTTP status, for the reason `error_status`. Also for a credential reason after a 401 answer. |
|
|
79
149
|
|
|
80
150
|
After an error status, `nodes.<node-id>.status`, `ok` and `body` also keep the answer.
|
|
81
151
|
|
|
82
|
-
| Reason
|
|
83
|
-
|
|
|
84
|
-
| `error_status`
|
|
85
|
-
| `timeout`
|
|
86
|
-
| `transport`
|
|
87
|
-
| `unresolvable`
|
|
88
|
-
| `refused`
|
|
89
|
-
| `refused`
|
|
90
|
-
| `request_too_large`
|
|
91
|
-
| `invalid_request`
|
|
92
|
-
| `invalid_request`
|
|
93
|
-
| `invalid_headers`
|
|
94
|
-
| `credential_unavailable`
|
|
152
|
+
| Reason | Message ends with | Retryable | When |
|
|
153
|
+
| --------------------------- | ----------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
154
|
+
| `error_status` | `the API answered <status>` | For 408, 429 and 500 to 599 | The status was outside 200 to 299, and `failOnErrorStatus` is on. |
|
|
155
|
+
| `timeout` | `no answer within the node's timeout` | Yes | Nothing answered within `timeoutMs`. |
|
|
156
|
+
| `transport` | `the request could not be delivered` | Yes | The connection failed. |
|
|
157
|
+
| `unresolvable` | `the destination hostname did not resolve` | Yes | No address was found for the host. |
|
|
158
|
+
| `refused` | `the destination was refused` | No | The URL points at a private, loopback or link-local address. |
|
|
159
|
+
| `refused` | `no external API is registered for <origin>` | No | The URL's origin has no live registration in this project. |
|
|
160
|
+
| `request_too_large` | `the request body is over 1 MiB` | No | The body is larger than the limit. |
|
|
161
|
+
| `invalid_request` | `the request is not one the tool can send` | No | The arguments do not make a valid request. |
|
|
162
|
+
| `invalid_request` | `the URL is not one the tool can send` | No | The tool cannot send to the URL. |
|
|
163
|
+
| `invalid_headers` | The header that Picked refused | No | A header name or value is not valid for HTTP. |
|
|
164
|
+
| `credential_unavailable` | `the credential for this external API is unavailable` | No | Picked cannot read a secret of the registration's credential. |
|
|
165
|
+
| `credential_rejected` | `the token endpoint refused this external API's credential` | No | The token endpoint answered `invalid_client`, `invalid_grant`, `invalid_code`, `invalid_client_secret` or `unauthorized_client`. |
|
|
166
|
+
| `credential_refresh_failed` | `no access token could be fetched for this external API` | Yes | The token endpoint did not answer in time, or Picked cannot reach it. Or the token endpoint answered with no token, or a token request failed less than 60 seconds before. Or the node's time ran out. |
|
|
95
167
|
|
|
96
168
|
Picked also refuses a workflow when you save it if a node holds a credential in
|
|
97
169
|
`headers`. Register the external API, and put the credential on the registration.
|
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-DrONO3zv.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-DDUKa3yC.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-Dxql_m9_.js";
|
|
2
|
+
import { n as t, t as n } from "../../../api-BjkZcZMV.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-DrONO3zv.js";
|
|
3
|
+
import { n as c } from "../../plugin-Dxql_m9_.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-DgOFK-Zw.cjs");require("./api-CmkGPdqO.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-DrONO3zv.js";
|
|
3
|
+
import "./api-BjkZcZMV.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.
|
|
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.100-next.1`;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-CmkGPdqO.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.
|
|
3
|
+
"version": "0.0.100-next.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@picked/delivery-api-client": "0.0.
|
|
5
|
+
"@picked/delivery-api-client": "0.0.100-next.1",
|
|
6
6
|
"@withease/factories": "^1.0.5",
|
|
7
|
-
"@picked/telemetry": "0.0.
|
|
7
|
+
"@picked/telemetry": "0.0.100-next.1"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@repo/eslint-config": "workspace:*",
|