@picked/vite-plugin-picked 0.0.1-dev.1785908062293 → 0.0.1-dev.1785988776296

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -857,11 +857,11 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
857
857
  </body>
858
858
  </html>`]),n,t)}function s(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function c(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}var l=`picked`,u=`\x1B[0m`;function d(){let e=process.env.NO_COLOR;return e===`1`||e===`true`}function f(e){return t=>d()?t:`${e}${t}${u}`}var p=[`debug`,`info`,`warn`,`error`,`silent`],m={debug:{color:f(`\x1B[2m`),log:console.debug,enabled:!1},info:{color:f(`\x1B[36m`),log:console.log,enabled:!0},warn:{color:f(`\x1B[33m`),log:console.warn,enabled:!0},error:{color:f(`\x1B[31m`),log:console.error,enabled:!0},silent:{log:()=>{},enabled:!1}};function h(e,t){return`${new Date().toLocaleTimeString()} [${t?`${l}:${t}`:l}] ${e}`}function g(e,t,n,r){if(!e.enabled)return;let i=h(t,r);e.log(e.color?e.color(i):i),n!==void 0&&e.log(n)}function _(e){let t=m[e],n=new Set;return Object.assign((e,n,r)=>{g(t,e,n,r)},{once(e,r,i){!t.enabled||n.has(e)||(n.add(e),g(t,e,r,i))}})}function ee(e){let t=p.indexOf(e);if(t===-1){g(m.error,`invalid log level: ${e}`);return}for(let[e,n]of p.entries())m[n].enabled=e>=t}var v=f(`\x1B[34m`),y=f(`\x1B[36m`);function b(){let e=[` ${v(`_`)} ${y(`_`)} _ _ _`,`${v(`(_)`)} ${y(`(_)`)} _ __(_)__| |_____ __| |`,` ${v(`_`)} ${v(`_`)} | '_ \\ / _| / / -_) _\` |`,`${v(`(_)`)} ${v(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
859
859
  `];console.log(e.join(`
860
- `))}var x={banner:b,debug:_(`debug`),info:_(`info`),warn:_(`warn`),error:_(`error`),setLevel:ee};function te(e){return(t,n,r)=>{if(t.method!==`GET`){r();return}let i=(t.url??``).split(`?`)[0];if(i!==`/`&&i!==`/index.html`){r();return}let a=e();n.setHeader(`Content-Type`,`text/html`),n.statusCode=200,n.end(a)}}var S=`.picked/`;async function C(n,i){if(i)return;let a=(0,t.join)(n,`.gitignore`);if(!(0,e.existsSync)(a)){await(0,r.writeFile)(a,`${S}
861
- `);return}let o=await(0,r.readFile)(a,`utf8`);if(w(o))return;let s=`${o.length>0&&!o.endsWith(`
860
+ `))}var x={banner:b,debug:_(`debug`),info:_(`info`),warn:_(`warn`),error:_(`error`),setLevel:ee};function te(e){return(t,n,r)=>{if(t.method!==`GET`){r();return}let i=(t.url??``).split(`?`)[0];if(i!==`/`&&i!==`/index.html`){r();return}let a=e();n.setHeader(`Content-Type`,`text/html`),n.statusCode=200,n.end(a)}}var S=`.picked/`;async function ne(n,i){if(i)return;let a=(0,t.join)(n,`.gitignore`);if(!(0,e.existsSync)(a)){await(0,r.writeFile)(a,`${S}
861
+ `);return}let o=await(0,r.readFile)(a,`utf8`);if(C(o))return;let s=`${o.length>0&&!o.endsWith(`
862
862
  `)?`
863
863
  `:``}${S}
864
- `;await(0,r.appendFile)(a,s)}function w(e){return e.split(/\r?\n/).map(e=>e.trim()).some(e=>e===S||e===`.picked`)}var T=6,E=5e3;function D(e){let t;try{t=new URL(e).hostname}catch{return!1}return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`||t!==`api.picked.app`&&t.endsWith(`.picked.app`)}function ne(e){return new Promise(t=>{setTimeout(t,e)})}async function O(e,t){let n=null,r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n;for(let i=1;i<=T;i++){let a=E*2**(i-1);t(i,T,a),await ne(a),r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n}if(r!==null)throw r;return null}function k(e){return Array.isArray(e)?e:[]}var re=1;function A(e){let n=(0,t.join)(e,`.picked`);return{pickedDir:n,manifestPath:(0,t.join)(n,`manifest.json`),projectConfigPath:(0,t.join)(n,`project-config.json`),experiencesDir:(0,t.join)(n,`experiences`)}}async function j(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,r.readFile)(t,`utf8`),n=JSON.parse(e);return M(n)?n:null}catch{return null}}function M(e){return!(typeof e!=`object`||!e||!(`version`in e)||typeof e.version!=`number`||!(`projectVersionId`in e)||typeof e.projectVersionId!=`string`||!(`workspaceId`in e)||typeof e.workspaceId!=`string`||!(`experiences`in e)||!Array.isArray(e.experiences))}function N(e){let t=new Set;for(let n of k(e.steps))n.layoutContentId&&t.add(n.id);if(t.size===0)return[];let n=[];for(let r of k(e.experiences))k(r.nodes).some(e=>e.type===`step`&&t.has(e.stepId))&&n.push(r.id);return n}async function P(n){let{apiUrl:i,projectId:a,projectRoot:o,headers:s,reuseWhenUnchanged:c=!0}=n,l=A(o),u=await I(i,a,s),d=N(u);if(await(0,r.mkdir)(l.experiencesDir,{recursive:!0}),await(0,r.writeFile)(l.projectConfigPath,JSON.stringify(u,null,2)),c){let t=await j(l.manifestPath);if(t&&t.projectVersionId===u.versionId&&t.workspaceId===u.workspaceId){let n=F(l,d);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:u,manifest:t,experienceContentPaths:n};x.info(`a manifest-referenced content file is missing; refetching every experience`)}}let f=new Date().toISOString(),p=[];for(let e of d){let n=await L(i,a,e,s),o=(0,t.join)(l.experiencesDir,`${e}.json`);await(0,r.writeFile)(o,JSON.stringify(n,null,2)),p.push({id:e,fetchedAt:f})}let m={version:re,fetchedAt:f,projectVersionId:u.versionId,workspaceId:u.workspaceId,projectId:u.id,experiences:p};return await(0,r.writeFile)(l.manifestPath,JSON.stringify(m,null,2)),{config:u,manifest:m,experienceContentPaths:F(l,d)}}function F(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function I(e,t,r){let i=()=>(0,n.fetchProject)(e,t,{headers:r}),a;try{a=D(e)?await O(i,(e,t,n)=>{x.info(`project config not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await i()}catch(n){throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${R(n)}`)}if(!a)throw Error(`[picked] Build-time fetch of project config returned no usable response for "${t}" at ${e}. Confirm the API is reachable and the project ID is correct.`);return a}async function L(e,t,r,i){let a;try{a=await(0,n.fetchExperienceContent)(e,t,r,{headers:i})}catch(t){throw Error(`[picked] Build-time fetch of content for experience "${r}" failed at ${e}: ${R(t)}`)}if(!a)throw Error(`[picked] Build-time fetch of content for experience "${r}" returned no usable response. Confirm the experience id exists and the API is reachable.`);return a}function R(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}function z(e){let{projectConfigPath:t,experienceContentPaths:n,manifestMetadata:r}=e,i=e=>JSON.stringify(e),a=Object.entries(n).map(([e,t])=>` ${JSON.stringify(e)}: () => import(${i(t)}).then((m) => m.default ?? m),`).join(`
864
+ `;await(0,r.appendFile)(a,s)}function C(e){return e.split(/\r?\n/).map(e=>e.trim()).some(e=>e===S||e===`.picked`)}var w=6,T=5e3;function E(e){let t;try{t=new URL(e).hostname}catch{return!1}return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`||t!==`api.picked.app`&&t.endsWith(`.picked.app`)}function re(e){return new Promise(t=>{setTimeout(t,e)})}async function D(e,t){let n=null,r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n;for(let i=1;i<=w;i++){let a=T*2**(i-1);t(i,w,a),await re(a),r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n}if(r!==null)throw r;return null}function O(e){return Array.isArray(e)?e:[]}var ie=1;function k(e){let n=(0,t.join)(e,`.picked`);return{pickedDir:n,manifestPath:(0,t.join)(n,`manifest.json`),projectConfigPath:(0,t.join)(n,`project-config.json`),experiencesDir:(0,t.join)(n,`experiences`)}}async function A(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,r.readFile)(t,`utf8`),n=JSON.parse(e);return j(n)?n:null}catch{return null}}function j(e){return!(typeof e!=`object`||!e||!(`version`in e)||typeof e.version!=`number`||!(`projectVersionId`in e)||typeof e.projectVersionId!=`string`||!(`workspaceId`in e)||typeof e.workspaceId!=`string`||!(`experiences`in e)||!Array.isArray(e.experiences))}function M(e){let t=new Set;for(let n of O(e.steps))n.layoutContentId&&t.add(n.id);if(t.size===0)return[];let n=[];for(let r of O(e.experiences))O(r.nodes).some(e=>e.type===`step`&&t.has(e.stepId))&&n.push(r.id);return n}async function N(n){let{apiUrl:i,projectId:a,projectRoot:o,headers:s,reuseWhenUnchanged:c=!0}=n,l=k(o),u=await F(i,a,s),d=M(u);if(await(0,r.mkdir)(l.experiencesDir,{recursive:!0}),await(0,r.writeFile)(l.projectConfigPath,JSON.stringify(u,null,2)),c){let t=await A(l.manifestPath);if(t&&t.projectVersionId===u.versionId&&t.workspaceId===u.workspaceId){let n=P(l,d);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:u,manifest:t,experienceContentPaths:n};x.info(`a manifest-referenced content file is missing; refetching every experience`)}}let f=new Date().toISOString(),p=[];for(let e of d){let n=await I(i,a,e,s),o=(0,t.join)(l.experiencesDir,`${e}.json`);await(0,r.writeFile)(o,JSON.stringify(n,null,2)),p.push({id:e,fetchedAt:f})}let m={version:ie,fetchedAt:f,projectVersionId:u.versionId,workspaceId:u.workspaceId,projectId:u.id,experiences:p};return await(0,r.writeFile)(l.manifestPath,JSON.stringify(m,null,2)),{config:u,manifest:m,experienceContentPaths:P(l,d)}}function P(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function F(e,t,r){let i=()=>(0,n.fetchProject)(e,t,{headers:r}),a;try{a=E(e)?await D(i,(e,t,n)=>{x.info(`project config not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await i()}catch(n){throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${L(n)}`)}if(!a)throw Error(`[picked] Build-time fetch of project config returned no usable response for "${t}" at ${e}. Confirm the API is reachable and the project ID is correct.`);return a}async function I(e,t,r,i){let a;try{a=await(0,n.fetchExperienceContent)(e,t,r,{headers:i})}catch(t){throw Error(`[picked] Build-time fetch of content for experience "${r}" failed at ${e}: ${L(t)}`)}if(!a)throw Error(`[picked] Build-time fetch of content for experience "${r}" returned no usable response. Confirm the experience id exists and the API is reachable.`);return a}function L(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}function R(e){let{projectConfigPath:t,experienceContentPaths:n,manifestMetadata:r}=e,i=e=>JSON.stringify(e),a=Object.entries(n).map(([e,t])=>` ${JSON.stringify(e)}: () => import(${i(t)}).then((m) => m.default ?? m),`).join(`
865
865
  `);return`import projectConfigJson from ${i(t)}
866
866
 
867
867
  const experienceImporters = {
@@ -883,7 +883,7 @@ export async function experienceContent(experience, _options) {
883
883
  }
884
884
 
885
885
  export const manifestMetadata = ${JSON.stringify(r)}
886
- `}function B(e){let{apiUrl:t,projectId:n,projectConfig:r}=e,i=r?`import { fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`:`import { fetchProject, fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`,a=r?`export const projectConfig = ${JSON.stringify(r)}`:`export const projectConfig = await fetchProject(apiUrl, projectId)`;return`${i}
886
+ `}function z(e){let{apiUrl:t,projectId:n,projectConfig:r}=e,i=r?`import { fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`:`import { fetchProject, fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`,a=r?`export const projectConfig = ${JSON.stringify(r)}`:`export const projectConfig = await fetchProject(apiUrl, projectId)`;return`${i}
887
887
 
888
888
  const apiUrl = ${JSON.stringify(t)}
889
889
  const projectId = ${JSON.stringify(n)}
@@ -902,5 +902,5 @@ export const manifestMetadata = {
902
902
  projectVersionId: projectConfig?.versionId ?? null,
903
903
  workspaceId: projectConfig?.workspaceId ?? null,
904
904
  }
905
- `}var V=5;function H(e,t,n){if(t.length===0)return;if(t.length>V){console.log(`\n ${e}: ${t.length.toString()} loaded\n`);return}let r=n.map(e=>Math.max(e.header.length,...t.map(t=>e.value(t).length))),i=(e,t)=>e.padEnd(r[t]??e.length),a=` ${n.map((e,t)=>i(e.header,t)).join(` `)}`,o=` ${r.map(e=>`─`.repeat(e)).join(` `)}`,s=t.map(e=>` ${n.map((t,n)=>i(t.value(e),n)).join(` `)}`);console.log([``,` ${e}:`,``,a,o,...s,``].join(`
906
- `))}function U(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var W=[{header:`Name`,value:e=>e.name},{header:`ID`,value:e=>e.id},{header:`Status`,value:e=>e.enabled?`\x1B[32m enabled\x1B[0m`:`\x1B[2mdisabled\x1B[0m`},{header:`Weight`,value:e=>`${e.weight.toString()}%`.padStart(6)},{header:`Ver`,value:e=>`v${e.version.toString()}`}],G=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Component`,value:e=>e.componentName},{header:`Nodes`,value:e=>e.nodes.length.toString()},{header:`Targets`,value:e=>e.targets.length.toString()}],K=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],q=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Type`,value:e=>e.type},{header:`Required`,value:e=>e.required?`yes`:`no`}],J=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function Y(){return`0.0.1-dev.1785908062293`}var X=`https://api.picked.app`,Z=`virtual:picked/data`,Q=`\0${Z}`;function ie(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(Q))return t.fileName}function ae(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}function oe(r){let i=r.apiUrl??X,a=[],s=process.cwd(),c=`serve`,l=`/`,u,d=!1,f=null;return{name:`picked`,config:async(o,l)=>{c=l.command,s=o.root===void 0?process.cwd():(0,t.resolve)(process.cwd(),o.root),x.banner(),i!==X&&x.warn(`using custom API URL: ${i}`);let p=(0,n.createClientHeaders)(`vite-plugin`,Y());if(l.command===`build`){if(d)return;d=!0,x.info(`prefetching project config + content for "${r.projectId}"`);let t=A(s),n=(0,e.existsSync)(t.pickedDir),o=performance.now(),c=await P({apiUrl:i,projectId:r.projectId,projectRoot:s,headers:p}),l=(performance.now()-o).toFixed(0);await C(s,n);let f=c.config;a=k(f.features),$(f,l),u=z({projectConfigPath:t.projectConfigPath,experienceContentPaths:c.experienceContentPaths,manifestMetadata:{mode:`build`,fetchedAt:c.manifest.fetchedAt,projectVersionId:c.manifest.projectVersionId,workspaceId:c.manifest.workspaceId}})}else{x.info(`fetching project config for "${r.projectId}" (dev)`);let e=performance.now(),t=()=>(0,n.fetchProject)(i,r.projectId,{headers:p}),o=D(i)?await O(t,(e,t,n)=>{x.info(`local API not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await t(),s=(performance.now()-e).toFixed(0);f=o,o?(a=k(o.features),$(o,s)):x.warn(`failed to fetch project config for "${r.projectId}" (${s}ms)`)}},configResolved(e){l=e.base},transformIndexHtml:{order:`post`,handler(e,t){if(t.bundle===void 0)return;let n=ie(t.bundle);if(n===void 0)return;let r=ae(l,n);if(!e.includes(`"${r}"`))return[{tag:`link`,attrs:{rel:`modulepreload`,crossorigin:!0,href:r},injectTo:`head`}]}},resolveId(e){if(e===Z)return Q},load(e){if(e===Q)return c===`build`?u:B({apiUrl:i,projectId:r.projectId,projectConfig:f})},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(te(()=>o(a)));let t=e.printUrls.bind(e);e.printUrls=()=>{let n=e.resolvedUrls?.local[0];if(n){let e=n.replace(/:(?<port>\d+)\//,(e,t)=>`:\x1b[1m${t}\x1b[22m/`);console.log(` \x1b[32m➜\x1b[0m \x1b[1mPicked\x1b[22m: \x1b[36m${e}\x1b[0m`)}t()}},generateBundle:{order:`post`,handler(e,t){if(!r.disableLauncher){if(`index.html`in t){x.debug(`index.html came from the build; skipping the launcher page`);return}this.emitFile({type:`asset`,fileName:`index.html`,source:o(a)})}}}}}function $(e,t){let n=k(e.features),r=k(e.experiences),i=k(e.steps),a=k(e.fields),o=k(e.conditions),s=k(e.actions),c=JSON.stringify(e).length,l=[`${n.length.toString()} features`,`${r.length.toString()} experiences`,`${i.length.toString()} steps`,`${a.length.toString()} fields`,`${o.length.toString()} conditions`,`${s.length.toString()} actions`].join(`, `);x.info(`fetched config in ${t}ms (${l})`),H(`Features`,n,W),H(`Experiences`,r,G),H(`Steps`,i,K),H(`Fields`,a,q),H(`Conditions`,o,J),U(`Actions`,s),x.debug(`config size: ${c.toString()} bytes`)}exports.picked=oe;
905
+ `}var B=5;function V(e,t,n){if(t.length===0)return;if(t.length>B){console.log(`\n ${e}: ${t.length.toString()} loaded\n`);return}let r=n.map(e=>Math.max(e.header.length,...t.map(t=>e.value(t).length))),i=(e,t)=>e.padEnd(r[t]??e.length),a=` ${n.map((e,t)=>i(e.header,t)).join(` `)}`,o=` ${r.map(e=>`─`.repeat(e)).join(` `)}`,s=t.map(e=>` ${n.map((t,n)=>i(t.value(e),n)).join(` `)}`);console.log([``,` ${e}:`,``,a,o,...s,``].join(`
906
+ `))}function H(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var U=[{header:`Name`,value:e=>e.name},{header:`ID`,value:e=>e.id},{header:`Status`,value:e=>e.enabled?`\x1B[32m enabled\x1B[0m`:`\x1B[2mdisabled\x1B[0m`},{header:`Weight`,value:e=>`${e.weight.toString()}%`.padStart(6)},{header:`Ver`,value:e=>`v${e.version.toString()}`}],W=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Component`,value:e=>e.componentName},{header:`Nodes`,value:e=>e.nodes.length.toString()},{header:`Targets`,value:e=>e.targets.length.toString()}],G=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],K=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Type`,value:e=>e.type},{header:`Required`,value:e=>e.required?`yes`:`no`}],q=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function J(){return`0.0.1-dev.1785988776296`}var Y=`https://api.picked.app`,X=`virtual:picked/data`,Z=`\0${X}`;function ae(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(Z))return t.fileName}function oe(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}var Q=new Map;function se(e,t,n){return JSON.stringify([e,t,n])}function ce(r){let i=r.apiUrl??Y,a=[],s=process.cwd(),c=`serve`,l=`/`,u,d,f=null;return{name:`picked`,config:async(o,l)=>{c=l.command,s=o.root===void 0?process.cwd():(0,t.resolve)(process.cwd(),o.root),x.banner(),i!==Y&&x.warn(`using custom API URL: ${i}`);let p=(0,n.createClientHeaders)(`vite-plugin`,J());if(l.command===`build`){let t=se(i,r.projectId,s);u=t;let n=Q.get(t);n===void 0&&(n=(async()=>{x.info(`prefetching project config + content for "${r.projectId}"`);let t=k(s),n=(0,e.existsSync)(t.pickedDir),a=performance.now(),o=await N({apiUrl:i,projectId:r.projectId,projectRoot:s,headers:p}),c=(performance.now()-a).toFixed(0);await ne(s,n);let l=o.config;return $(l,c),{virtualSource:R({projectConfigPath:t.projectConfigPath,experienceContentPaths:o.experienceContentPaths,manifestMetadata:{mode:`build`,fetchedAt:o.manifest.fetchedAt,projectVersionId:o.manifest.projectVersionId,workspaceId:o.manifest.workspaceId}}),features:O(l.features)}})(),n.catch(()=>Q.delete(t)),Q.set(t,n));let o=await n;d=o.virtualSource,a=o.features}else if(l.mode===`production`)x.debug(`skipping the dev project-config fetch for a production serve resolution`);else{x.info(`fetching project config for "${r.projectId}" (dev)`);let e=performance.now(),t=()=>(0,n.fetchProject)(i,r.projectId,{headers:p}),o=E(i)?await D(t,(e,t,n)=>{x.info(`local API not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await t(),s=(performance.now()-e).toFixed(0);f=o,o?(a=O(o.features),$(o,s)):x.warn(`failed to fetch project config for "${r.projectId}" (${s}ms)`)}},configResolved(e){l=e.base},closeBundle(){u!==void 0&&Q.delete(u)},transformIndexHtml:{order:`post`,handler(e,t){if(t.bundle===void 0)return;let n=ae(t.bundle);if(n===void 0)return;let r=oe(l,n);if(!e.includes(`"${r}"`))return[{tag:`link`,attrs:{rel:`modulepreload`,crossorigin:!0,href:r},injectTo:`head`}]}},resolveId(e){if(e===X)return Z},load(e){if(e===Z)return c===`build`?d:z({apiUrl:i,projectId:r.projectId,projectConfig:f})},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(te(()=>o(a)));let t=e.printUrls.bind(e);e.printUrls=()=>{let n=e.resolvedUrls?.local[0];if(n){let e=n.replace(/:(?<port>\d+)\//,(e,t)=>`:\x1b[1m${t}\x1b[22m/`);console.log(` \x1b[32m➜\x1b[0m \x1b[1mPicked\x1b[22m: \x1b[36m${e}\x1b[0m`)}t()}},generateBundle:{order:`post`,handler(e,t){if(!r.disableLauncher){if(`index.html`in t){x.debug(`index.html came from the build; skipping the launcher page`);return}this.emitFile({type:`asset`,fileName:`index.html`,source:o(a)})}}}}}function $(e,t){let n=O(e.features),r=O(e.experiences),i=O(e.steps),a=O(e.fields),o=O(e.conditions),s=O(e.actions),c=JSON.stringify(e).length,l=[`${n.length.toString()} features`,`${r.length.toString()} experiences`,`${i.length.toString()} steps`,`${a.length.toString()} fields`,`${o.length.toString()} conditions`,`${s.length.toString()} actions`].join(`, `);x.info(`fetched config in ${t}ms (${l})`),V(`Features`,n,U),V(`Experiences`,r,W),V(`Steps`,i,G),V(`Fields`,a,K),V(`Conditions`,o,q),H(`Actions`,s),x.debug(`config size: ${c.toString()} bytes`)}exports.picked=ce;
package/dist/esm/index.js CHANGED
@@ -40,38 +40,38 @@ function m(e) {
40
40
  }
41
41
  //#endregion
42
42
  //#region src/log.ts
43
- var h = "picked", g = "\x1B[0m";
44
- function ee() {
43
+ var h = "picked", ee = "\x1B[0m";
44
+ function te() {
45
45
  let e = process.env.NO_COLOR;
46
46
  return e === "1" || e === "true";
47
47
  }
48
- function _(e) {
49
- return (t) => ee() ? t : `${e}${t}${g}`;
48
+ function g(e) {
49
+ return (t) => te() ? t : `${e}${t}${ee}`;
50
50
  }
51
- var v = [
51
+ var _ = [
52
52
  "debug",
53
53
  "info",
54
54
  "warn",
55
55
  "error",
56
56
  "silent"
57
- ], y = {
57
+ ], v = {
58
58
  debug: {
59
- color: _("\x1B[2m"),
59
+ color: g("\x1B[2m"),
60
60
  log: console.debug,
61
61
  enabled: !1
62
62
  },
63
63
  info: {
64
- color: _("\x1B[36m"),
64
+ color: g("\x1B[36m"),
65
65
  log: console.log,
66
66
  enabled: !0
67
67
  },
68
68
  warn: {
69
- color: _("\x1B[33m"),
69
+ color: g("\x1B[33m"),
70
70
  log: console.warn,
71
71
  enabled: !0
72
72
  },
73
73
  error: {
74
- color: _("\x1B[31m"),
74
+ color: g("\x1B[31m"),
75
75
  log: console.error,
76
76
  enabled: !0
77
77
  },
@@ -80,52 +80,52 @@ var v = [
80
80
  enabled: !1
81
81
  }
82
82
  };
83
- function te(e, t) {
83
+ function ne(e, t) {
84
84
  return `${(/* @__PURE__ */ new Date()).toLocaleTimeString()} [${t ? `${h}:${t}` : h}] ${e}`;
85
85
  }
86
- function b(e, t, n, r) {
86
+ function y(e, t, n, r) {
87
87
  if (!e.enabled) return;
88
- let i = te(t, r);
88
+ let i = ne(t, r);
89
89
  e.log(e.color ? e.color(i) : i), n !== void 0 && e.log(n);
90
90
  }
91
- function x(e) {
92
- let t = y[e], n = /* @__PURE__ */ new Set();
91
+ function b(e) {
92
+ let t = v[e], n = /* @__PURE__ */ new Set();
93
93
  return Object.assign((e, n, r) => {
94
- b(t, e, n, r);
94
+ y(t, e, n, r);
95
95
  }, { once(e, r, i) {
96
- !t.enabled || n.has(e) || (n.add(e), b(t, e, r, i));
96
+ !t.enabled || n.has(e) || (n.add(e), y(t, e, r, i));
97
97
  } });
98
98
  }
99
- function S(e) {
100
- let t = v.indexOf(e);
99
+ function x(e) {
100
+ let t = _.indexOf(e);
101
101
  if (t === -1) {
102
- b(y.error, `invalid log level: ${e}`);
102
+ y(v.error, `invalid log level: ${e}`);
103
103
  return;
104
104
  }
105
- for (let [e, n] of v.entries()) y[n].enabled = e >= t;
105
+ for (let [e, n] of _.entries()) v[n].enabled = e >= t;
106
106
  }
107
- var C = _("\x1B[34m"), w = _("\x1B[36m");
108
- function ne() {
107
+ var S = g("\x1B[34m"), C = g("\x1B[36m");
108
+ function re() {
109
109
  let e = [
110
- ` ${C("_")} ${w("_")} _ _ _`,
111
- `${C("(_)")} ${w("(_)")} _ __(_)__| |_____ __| |`,
112
- ` ${C("_")} ${C("_")} | '_ \\ / _| / / -_) _\` |`,
113
- `${C("(_)")} ${C("(_)")} | .__/_\\__|_\\_\\___\\__,_|`,
110
+ ` ${S("_")} ${C("_")} _ _ _`,
111
+ `${S("(_)")} ${C("(_)")} _ __(_)__| |_____ __| |`,
112
+ ` ${S("_")} ${S("_")} | '_ \\ / _| / / -_) _\` |`,
113
+ `${S("(_)")} ${S("(_)")} | .__/_\\__|_\\_\\___\\__,_|`,
114
114
  " |_|\n "
115
115
  ];
116
116
  console.log(e.join("\n"));
117
117
  }
118
- var T = {
119
- banner: ne,
120
- debug: x("debug"),
121
- info: x("info"),
122
- warn: x("warn"),
123
- error: x("error"),
124
- setLevel: S
118
+ var w = {
119
+ banner: re,
120
+ debug: b("debug"),
121
+ info: b("info"),
122
+ warn: b("warn"),
123
+ error: b("error"),
124
+ setLevel: x
125
125
  };
126
126
  //#endregion
127
127
  //#region src/middleware.ts
128
- function E(e) {
128
+ function T(e) {
129
129
  return (t, n, r) => {
130
130
  if (t.method !== "GET") {
131
131
  r();
@@ -142,28 +142,28 @@ function E(e) {
142
142
  }
143
143
  //#endregion
144
144
  //#region src/gitignore.ts
145
- var D = ".picked/";
146
- async function O(n, r) {
145
+ var E = ".picked/";
146
+ async function D(n, r) {
147
147
  if (r) return;
148
148
  let i = t(n, ".gitignore");
149
149
  if (!e(i)) {
150
- await l(i, `${D}
150
+ await l(i, `${E}
151
151
  `);
152
152
  return;
153
153
  }
154
154
  let a = await c(i, "utf8");
155
- if (k(a)) return;
156
- let s = `${a.length > 0 && !a.endsWith("\n") ? "\n" : ""}${D}
155
+ if (O(a)) return;
156
+ let s = `${a.length > 0 && !a.endsWith("\n") ? "\n" : ""}${E}
157
157
  `;
158
158
  await o(i, s);
159
159
  }
160
- function k(e) {
161
- return e.split(/\r?\n/).map((e) => e.trim()).some((e) => e === D || e === ".picked");
160
+ function O(e) {
161
+ return e.split(/\r?\n/).map((e) => e.trim()).some((e) => e === E || e === ".picked");
162
162
  }
163
163
  //#endregion
164
164
  //#region src/retry.ts
165
- var A = 6, re = 5e3;
166
- function j(e) {
165
+ var k = 6, ie = 5e3;
166
+ function A(e) {
167
167
  let t;
168
168
  try {
169
169
  t = new URL(e).hostname;
@@ -172,12 +172,12 @@ function j(e) {
172
172
  }
173
173
  return t === "localhost" || t === "127.0.0.1" || t === "::1" || t === "[::1]" || t !== "api.picked.app" && t.endsWith(".picked.app");
174
174
  }
175
- function ie(e) {
175
+ function ae(e) {
176
176
  return new Promise((t) => {
177
177
  setTimeout(t, e);
178
178
  });
179
179
  }
180
- async function M(e, t) {
180
+ async function j(e, t) {
181
181
  let n = null, r = null;
182
182
  try {
183
183
  n = await e();
@@ -185,9 +185,9 @@ async function M(e, t) {
185
185
  r = e;
186
186
  }
187
187
  if (n !== null) return n;
188
- for (let i = 1; i <= A; i++) {
189
- let a = re * 2 ** (i - 1);
190
- t(i, A, a), await ie(a), r = null;
188
+ for (let i = 1; i <= k; i++) {
189
+ let a = ie * 2 ** (i - 1);
190
+ t(i, k, a), await ae(a), r = null;
191
191
  try {
192
192
  n = await e();
193
193
  } catch (e) {
@@ -200,13 +200,13 @@ async function M(e, t) {
200
200
  }
201
201
  //#endregion
202
202
  //#region src/util.ts
203
- function N(e) {
203
+ function M(e) {
204
204
  return Array.isArray(e) ? e : [];
205
205
  }
206
206
  //#endregion
207
207
  //#region src/prefetch.ts
208
- var P = 1;
209
- function F(e) {
208
+ var N = 1;
209
+ function P(e) {
210
210
  let n = t(e, ".picked");
211
211
  return {
212
212
  pickedDir: n,
@@ -215,50 +215,50 @@ function F(e) {
215
215
  experiencesDir: t(n, "experiences")
216
216
  };
217
217
  }
218
- async function I(t) {
218
+ async function F(t) {
219
219
  if (!e(t)) return null;
220
220
  try {
221
221
  let e = await c(t, "utf8"), n = JSON.parse(e);
222
- return L(n) ? n : null;
222
+ return I(n) ? n : null;
223
223
  } catch {
224
224
  return null;
225
225
  }
226
226
  }
227
- function L(e) {
227
+ function I(e) {
228
228
  return !(typeof e != "object" || !e || !("version" in e) || typeof e.version != "number" || !("projectVersionId" in e) || typeof e.projectVersionId != "string" || !("workspaceId" in e) || typeof e.workspaceId != "string" || !("experiences" in e) || !Array.isArray(e.experiences));
229
229
  }
230
- function R(e) {
230
+ function L(e) {
231
231
  let t = /* @__PURE__ */ new Set();
232
- for (let n of N(e.steps)) n.layoutContentId && t.add(n.id);
232
+ for (let n of M(e.steps)) n.layoutContentId && t.add(n.id);
233
233
  if (t.size === 0) return [];
234
234
  let n = [];
235
- for (let r of N(e.experiences)) N(r.nodes).some((e) => e.type === "step" && t.has(e.stepId)) && n.push(r.id);
235
+ for (let r of M(e.experiences)) M(r.nodes).some((e) => e.type === "step" && t.has(e.stepId)) && n.push(r.id);
236
236
  return n;
237
237
  }
238
- async function z(n) {
239
- let { apiUrl: r, projectId: i, projectRoot: a, headers: o, reuseWhenUnchanged: c = !0 } = n, u = F(a), d = await V(r, i, o), f = R(d);
238
+ async function R(n) {
239
+ let { apiUrl: r, projectId: i, projectRoot: a, headers: o, reuseWhenUnchanged: c = !0 } = n, u = P(a), d = await B(r, i, o), f = L(d);
240
240
  if (await s(u.experiencesDir, { recursive: !0 }), await l(u.projectConfigPath, JSON.stringify(d, null, 2)), c) {
241
- let t = await I(u.manifestPath);
241
+ let t = await F(u.manifestPath);
242
242
  if (t && t.projectVersionId === d.versionId && t.workspaceId === d.workspaceId) {
243
- let n = B(u, f);
243
+ let n = z(u, f);
244
244
  if (Object.values(n).every((t) => e(t))) return {
245
245
  config: d,
246
246
  manifest: t,
247
247
  experienceContentPaths: n
248
248
  };
249
- T.info("a manifest-referenced content file is missing; refetching every experience");
249
+ w.info("a manifest-referenced content file is missing; refetching every experience");
250
250
  }
251
251
  }
252
252
  let p = (/* @__PURE__ */ new Date()).toISOString(), m = [];
253
253
  for (let e of f) {
254
- let n = await H(r, i, e, o), a = t(u.experiencesDir, `${e}.json`);
254
+ let n = await V(r, i, e, o), a = t(u.experiencesDir, `${e}.json`);
255
255
  await l(a, JSON.stringify(n, null, 2)), m.push({
256
256
  id: e,
257
257
  fetchedAt: p
258
258
  });
259
259
  }
260
260
  let h = {
261
- version: P,
261
+ version: N,
262
262
  fetchedAt: p,
263
263
  projectVersionId: d.versionId,
264
264
  workspaceId: d.workspaceId,
@@ -268,37 +268,37 @@ async function z(n) {
268
268
  return await l(u.manifestPath, JSON.stringify(h, null, 2)), {
269
269
  config: d,
270
270
  manifest: h,
271
- experienceContentPaths: B(u, f)
271
+ experienceContentPaths: z(u, f)
272
272
  };
273
273
  }
274
- function B(e, n) {
274
+ function z(e, n) {
275
275
  let r = {};
276
276
  for (let i of n) r[i] = t(e.experiencesDir, `${i}.json`);
277
277
  return r;
278
278
  }
279
- async function V(e, t, n) {
279
+ async function B(e, t, n) {
280
280
  let r = () => a(e, t, { headers: n }), i;
281
281
  try {
282
- i = j(e) ? await M(r, (e, t, n) => {
283
- T.info(`project config not ready, retrying in ${(n / 1e3).toString()}s (${e.toString()}/${t.toString()})`);
282
+ i = A(e) ? await j(r, (e, t, n) => {
283
+ w.info(`project config not ready, retrying in ${(n / 1e3).toString()}s (${e.toString()}/${t.toString()})`);
284
284
  }) : await r();
285
285
  } catch (n) {
286
- throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${U(n)}`);
286
+ throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${H(n)}`);
287
287
  }
288
288
  if (!i) throw Error(`[picked] Build-time fetch of project config returned no usable response for "${t}" at ${e}. Confirm the API is reachable and the project ID is correct.`);
289
289
  return i;
290
290
  }
291
- async function H(e, t, n, r) {
291
+ async function V(e, t, n, r) {
292
292
  let a;
293
293
  try {
294
294
  a = await i(e, t, n, { headers: r });
295
295
  } catch (t) {
296
- throw Error(`[picked] Build-time fetch of content for experience "${n}" failed at ${e}: ${U(t)}`);
296
+ throw Error(`[picked] Build-time fetch of content for experience "${n}" failed at ${e}: ${H(t)}`);
297
297
  }
298
298
  if (!a) throw Error(`[picked] Build-time fetch of content for experience "${n}" returned no usable response. Confirm the experience id exists and the API is reachable.`);
299
299
  return a;
300
300
  }
301
- function U(e) {
301
+ function H(e) {
302
302
  if (e instanceof Error) return e.message;
303
303
  if (typeof e == "string") return e;
304
304
  try {
@@ -309,7 +309,7 @@ function U(e) {
309
309
  }
310
310
  //#endregion
311
311
  //#region src/virtual-module/build.ts
312
- function W(e) {
312
+ function U(e) {
313
313
  let { projectConfigPath: t, experienceContentPaths: n, manifestMetadata: r } = e, i = (e) => JSON.stringify(e), a = Object.entries(n).map(([e, t]) => ` ${JSON.stringify(e)}: () => import(${i(t)}).then((m) => m.default ?? m),`).join("\n");
314
314
  return `import projectConfigJson from ${i(t)}
315
315
 
@@ -336,7 +336,7 @@ export const manifestMetadata = ${JSON.stringify(r)}
336
336
  }
337
337
  //#endregion
338
338
  //#region src/virtual-module/dev.ts
339
- function G(e) {
339
+ function W(e) {
340
340
  let { apiUrl: t, projectId: n, projectConfig: r } = e, i = r ? "import { fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'" : "import { fetchProject, fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'", a = r ? `export const projectConfig = ${JSON.stringify(r)}` : "export const projectConfig = await fetchProject(apiUrl, projectId)";
341
341
  return `${i}
342
342
 
@@ -361,10 +361,10 @@ export const manifestMetadata = {
361
361
  }
362
362
  //#endregion
363
363
  //#region src/index.ts
364
- var K = 5;
365
- function q(e, t, n) {
364
+ var G = 5;
365
+ function K(e, t, n) {
366
366
  if (t.length === 0) return;
367
- if (t.length > K) {
367
+ if (t.length > G) {
368
368
  console.log(`\n ${e}: ${t.length.toString()} loaded\n`);
369
369
  return;
370
370
  }
@@ -379,10 +379,10 @@ function q(e, t, n) {
379
379
  ""
380
380
  ].join("\n"));
381
381
  }
382
- function J(e, t) {
382
+ function q(e, t) {
383
383
  t.length !== 0 && console.log(`\n ${e}: ${t.length.toString()} loaded\n`);
384
384
  }
385
- var ae = [
385
+ var oe = [
386
386
  {
387
387
  header: "Name",
388
388
  value: (e) => e.name
@@ -403,7 +403,7 @@ var ae = [
403
403
  header: "Ver",
404
404
  value: (e) => `v${e.version.toString()}`
405
405
  }
406
- ], oe = [
406
+ ], se = [
407
407
  {
408
408
  header: "Name",
409
409
  value: (e) => e.name
@@ -424,7 +424,7 @@ var ae = [
424
424
  header: "Targets",
425
425
  value: (e) => e.targets.length.toString()
426
426
  }
427
- ], se = [
427
+ ], ce = [
428
428
  {
429
429
  header: "Name",
430
430
  value: (e) => e.name
@@ -437,7 +437,7 @@ var ae = [
437
437
  header: "Fields",
438
438
  value: (e) => (e.fieldIds?.length ?? 0).toString()
439
439
  }
440
- ], ce = [
440
+ ], le = [
441
441
  {
442
442
  header: "Name",
443
443
  value: (e) => e.name
@@ -454,69 +454,90 @@ var ae = [
454
454
  header: "Required",
455
455
  value: (e) => e.required ? "yes" : "no"
456
456
  }
457
- ], le = [{
457
+ ], ue = [{
458
458
  header: "Name",
459
459
  value: (e) => e.name
460
460
  }, {
461
461
  header: "Key",
462
462
  value: (e) => e.key
463
463
  }];
464
- function ue() {
465
- return "0.0.1-dev.1785908062293";
464
+ function de() {
465
+ return "0.0.1-dev.1785988776296";
466
466
  }
467
- var Y = "https://api.picked.app", X = "virtual:picked/data", Z = `\0${X}`;
468
- function Q(e) {
469
- for (let t of Object.values(e)) if (t.type === "chunk" && t.moduleIds.includes(Z)) return t.fileName;
467
+ var J = "https://api.picked.app", Y = "virtual:picked/data", X = `\0${Y}`;
468
+ function Z(e) {
469
+ for (let t of Object.values(e)) if (t.type === "chunk" && t.moduleIds.includes(X)) return t.fileName;
470
470
  }
471
- function de(e, t) {
471
+ function fe(e, t) {
472
472
  return e === "" || e.endsWith("/") ? `${e}${t}` : `${e}/${t}`;
473
473
  }
474
- function fe(t) {
475
- let i = t.apiUrl ?? Y, o = [], s = process.cwd(), c = "serve", l = "/", u, d = !1, p = null;
474
+ var Q = /* @__PURE__ */ new Map();
475
+ function pe(e, t, n) {
476
+ return JSON.stringify([
477
+ e,
478
+ t,
479
+ n
480
+ ]);
481
+ }
482
+ function me(t) {
483
+ let i = t.apiUrl ?? J, o = [], s = process.cwd(), c = "serve", l = "/", u, d, p = null;
476
484
  return {
477
485
  name: "picked",
478
486
  config: async (l, f) => {
479
- c = f.command, s = l.root === void 0 ? process.cwd() : n(process.cwd(), l.root), T.banner(), i !== Y && T.warn(`using custom API URL: ${i}`);
480
- let m = r("vite-plugin", ue());
487
+ c = f.command, s = l.root === void 0 ? process.cwd() : n(process.cwd(), l.root), w.banner(), i !== J && w.warn(`using custom API URL: ${i}`);
488
+ let m = r("vite-plugin", de());
481
489
  if (f.command === "build") {
482
- if (d) return;
483
- d = !0, T.info(`prefetching project config + content for "${t.projectId}"`);
484
- let n = F(s), r = e(n.pickedDir), a = performance.now(), c = await z({
485
- apiUrl: i,
486
- projectId: t.projectId,
487
- projectRoot: s,
488
- headers: m
489
- }), l = (performance.now() - a).toFixed(0);
490
- await O(s, r);
491
- let f = c.config;
492
- o = N(f.features), $(f, l), u = W({
493
- projectConfigPath: n.projectConfigPath,
494
- experienceContentPaths: c.experienceContentPaths,
495
- manifestMetadata: {
496
- mode: "build",
497
- fetchedAt: c.manifest.fetchedAt,
498
- projectVersionId: c.manifest.projectVersionId,
499
- workspaceId: c.manifest.workspaceId
500
- }
501
- });
502
- } else {
503
- T.info(`fetching project config for "${t.projectId}" (dev)`);
504
- let e = performance.now(), n = () => a(i, t.projectId, { headers: m }), r = j(i) ? await M(n, (e, t, n) => {
505
- T.info(`local API not ready, retrying in ${(n / 1e3).toString()}s (${e.toString()}/${t.toString()})`);
490
+ let n = pe(i, t.projectId, s);
491
+ u = n;
492
+ let r = Q.get(n);
493
+ r === void 0 && (r = (async () => {
494
+ w.info(`prefetching project config + content for "${t.projectId}"`);
495
+ let n = P(s), r = e(n.pickedDir), a = performance.now(), o = await R({
496
+ apiUrl: i,
497
+ projectId: t.projectId,
498
+ projectRoot: s,
499
+ headers: m
500
+ }), c = (performance.now() - a).toFixed(0);
501
+ await D(s, r);
502
+ let l = o.config;
503
+ return $(l, c), {
504
+ virtualSource: U({
505
+ projectConfigPath: n.projectConfigPath,
506
+ experienceContentPaths: o.experienceContentPaths,
507
+ manifestMetadata: {
508
+ mode: "build",
509
+ fetchedAt: o.manifest.fetchedAt,
510
+ projectVersionId: o.manifest.projectVersionId,
511
+ workspaceId: o.manifest.workspaceId
512
+ }
513
+ }),
514
+ features: M(l.features)
515
+ };
516
+ })(), r.catch(() => Q.delete(n)), Q.set(n, r));
517
+ let a = await r;
518
+ d = a.virtualSource, o = a.features;
519
+ } else if (f.mode === "production") w.debug("skipping the dev project-config fetch for a production serve resolution");
520
+ else {
521
+ w.info(`fetching project config for "${t.projectId}" (dev)`);
522
+ let e = performance.now(), n = () => a(i, t.projectId, { headers: m }), r = A(i) ? await j(n, (e, t, n) => {
523
+ w.info(`local API not ready, retrying in ${(n / 1e3).toString()}s (${e.toString()}/${t.toString()})`);
506
524
  }) : await n(), s = (performance.now() - e).toFixed(0);
507
- p = r, r ? (o = N(r.features), $(r, s)) : T.warn(`failed to fetch project config for "${t.projectId}" (${s}ms)`);
525
+ p = r, r ? (o = M(r.features), $(r, s)) : w.warn(`failed to fetch project config for "${t.projectId}" (${s}ms)`);
508
526
  }
509
527
  },
510
528
  configResolved(e) {
511
529
  l = e.base;
512
530
  },
531
+ closeBundle() {
532
+ u !== void 0 && Q.delete(u);
533
+ },
513
534
  transformIndexHtml: {
514
535
  order: "post",
515
536
  handler(e, t) {
516
537
  if (t.bundle === void 0) return;
517
- let n = Q(t.bundle);
538
+ let n = Z(t.bundle);
518
539
  if (n === void 0) return;
519
- let r = de(l, n);
540
+ let r = fe(l, n);
520
541
  if (!e.includes(`"${r}"`)) return [{
521
542
  tag: "link",
522
543
  attrs: {
@@ -529,10 +550,10 @@ function fe(t) {
529
550
  }
530
551
  },
531
552
  resolveId(e) {
532
- if (e === X) return Z;
553
+ if (e === Y) return X;
533
554
  },
534
555
  load(e) {
535
- if (e === Z) return c === "build" ? u : G({
556
+ if (e === X) return c === "build" ? d : W({
536
557
  apiUrl: i,
537
558
  projectId: t.projectId,
538
559
  projectConfig: p
@@ -540,7 +561,7 @@ function fe(t) {
540
561
  },
541
562
  configureServer(e) {
542
563
  if (t.disableLauncher) return;
543
- e.middlewares.use(E(() => f(o)));
564
+ e.middlewares.use(T(() => f(o)));
544
565
  let n = e.printUrls.bind(e);
545
566
  e.printUrls = () => {
546
567
  let t = e.resolvedUrls?.local[0];
@@ -556,7 +577,7 @@ function fe(t) {
556
577
  handler(e, n) {
557
578
  if (!t.disableLauncher) {
558
579
  if ("index.html" in n) {
559
- T.debug("index.html came from the build; skipping the launcher page");
580
+ w.debug("index.html came from the build; skipping the launcher page");
560
581
  return;
561
582
  }
562
583
  this.emitFile({
@@ -570,7 +591,7 @@ function fe(t) {
570
591
  };
571
592
  }
572
593
  function $(e, t) {
573
- let n = N(e.features), r = N(e.experiences), i = N(e.steps), a = N(e.fields), o = N(e.conditions), s = N(e.actions), c = JSON.stringify(e).length, l = [
594
+ let n = M(e.features), r = M(e.experiences), i = M(e.steps), a = M(e.fields), o = M(e.conditions), s = M(e.actions), c = JSON.stringify(e).length, l = [
574
595
  `${n.length.toString()} features`,
575
596
  `${r.length.toString()} experiences`,
576
597
  `${i.length.toString()} steps`,
@@ -578,7 +599,7 @@ function $(e, t) {
578
599
  `${o.length.toString()} conditions`,
579
600
  `${s.length.toString()} actions`
580
601
  ].join(", ");
581
- T.info(`fetched config in ${t}ms (${l})`), q("Features", n, ae), q("Experiences", r, oe), q("Steps", i, se), q("Fields", a, ce), q("Conditions", o, le), J("Actions", s), T.debug(`config size: ${c.toString()} bytes`);
602
+ w.info(`fetched config in ${t}ms (${l})`), K("Features", n, oe), K("Experiences", r, se), K("Steps", i, ce), K("Fields", a, le), K("Conditions", o, ue), q("Actions", s), w.debug(`config size: ${c.toString()} bytes`);
582
603
  }
583
604
  //#endregion
584
- export { fe as picked };
605
+ export { me as picked };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAqB,MAAM,EAAU,MAAM,MAAM,CAAA;AA4K7D,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAwM3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAqB,MAAM,EAAU,MAAM,MAAM,CAAA;AA4K7D,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AA+BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAmO3D"}