@picked/vite-plugin-picked 0.0.78-next.2 → 0.0.78-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,14 +1,14 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("node:fs"),t=require("node:path"),n=require("@picked/delivery-api-client"),r=require("@picked/typegen"),i=require("@picked/config"),a=require("node:fs/promises");function o(e,t){return t||=e.slice(0),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var s,c=[`true`,`false`],l=`false`;function u(e){let t=e.variants;return!t||t.length===0?c:t.map(e=>String(e.value))}function d(e){let t=u(e),n=Math.max(0,t.findIndex(e=>e!==l));return t.map((e,t)=>`<option value="${m(e)}"${t===n?` selected`:``}>${p(e)}</option>`).join(``)}function f(e){let t=JSON.stringify(e).replaceAll(`<`,String.raw`\u003c`),n=e.length>0?e.map(e=>`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("node:fs"),t=require("node:path"),n=require("@picked/delivery-api-client"),r=require("@picked/typegen"),i=require("@picked/config"),a=require("node:fs/promises"),o=require("@picked/telemetry");function s(e,t){return t||=e.slice(0),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var c,l=[`true`,`false`],u=`false`;function d(e){let t=e.variants;return!t||t.length===0?l:t.map(e=>String(e.value))}function f(e){let t=d(e),n=Math.max(0,t.findIndex(e=>e!==u));return t.map((e,t)=>`<option value="${h(e)}"${t===n?` selected`:``}>${m(e)}</option>`).join(``)}function p(e){let t=JSON.stringify(e).replaceAll(`<`,String.raw`\u003c`),n=e.length>0?e.map(e=>`
2
2
  <div class="feature-row">
3
3
  <label>
4
- <input type="checkbox" data-feature-id="${m(e.id)}" checked>
5
- <span class="feature-name">${p(e.name)}</span>
6
- <span class="feature-id">${p(e.id)}</span>
4
+ <input type="checkbox" data-feature-id="${h(e.id)}" checked>
5
+ <span class="feature-name">${m(e.name)}</span>
6
+ <span class="feature-id">${m(e.id)}</span>
7
7
  </label>
8
- <select data-value-for="${m(e.id)}">
9
- ${d(e)}
8
+ <select data-value-for="${h(e.id)}">
9
+ ${f(e)}
10
10
  </select>
11
- </div>`).join(``):`<p class="text no-features">No features configured for this project.</p>`;return String.raw(s||=o([`<!DOCTYPE html>
11
+ </div>`).join(``):`<p class="text no-features">No features configured for this project.</p>`;return String.raw(c||=s([`<!DOCTYPE html>
12
12
  <html lang="en">
13
13
  <head>
14
14
  <meta charset="UTF-8">
@@ -854,19 +854,19 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
854
854
  <\/script>
855
855
  </main>
856
856
  </body>
857
- </html>`]),n,t)}function p(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function m(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}var h=`picked`,g=`\x1B[0m`;function _(){let e=process.env.NO_COLOR;return e===`1`||e===`true`}function v(e){return t=>_()?t:`${e}${t}${g}`}var y=[`debug`,`info`,`warn`,`error`,`silent`],b={debug:{color:v(`\x1B[2m`),log:console.debug,enabled:!1},info:{color:v(`\x1B[36m`),log:console.log,enabled:!0},warn:{color:v(`\x1B[33m`),log:console.warn,enabled:!0},error:{color:v(`\x1B[31m`),log:console.error,enabled:!0},silent:{log:()=>{},enabled:!1}};function x(e,t){return`${new Date().toLocaleTimeString()} [${t?`${h}:${t}`:h}] ${e}`}function S(e,t,n,r){if(!e.enabled)return;let i=x(t,r);e.log(e.color?e.color(i):i),n!==void 0&&e.log(n)}function C(e){let t=b[e],n=new Set;return Object.assign((e,n,r)=>{S(t,e,n,r)},{once(e,r,i){!t.enabled||n.has(e)||(n.add(e),S(t,e,r,i))}})}function ee(e){let t=y.indexOf(e);if(t===-1){S(b.error,`invalid log level: ${e}`);return}for(let[e,n]of y.entries())b[n].enabled=e>=t}var w=v(`\x1B[34m`),T=v(`\x1B[36m`);function te(){let e=[` ${w(`_`)} ${T(`_`)} _ _ _`,`${w(`(_)`)} ${T(`(_)`)} _ __(_)__| |_____ __| |`,` ${w(`_`)} ${w(`_`)} | '_ \\ / _| / / -_) _\` |`,`${w(`(_)`)} ${w(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
857
+ </html>`]),n,t)}function m(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function h(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}var g=`picked`,_=`\x1B[0m`;function v(){let e=process.env.NO_COLOR;return e===`1`||e===`true`}function y(e){return t=>v()?t:`${e}${t}${_}`}var b=[`debug`,`info`,`warn`,`error`,`silent`],x={debug:{color:y(`\x1B[2m`),log:console.debug,enabled:!1},info:{color:y(`\x1B[36m`),log:console.log,enabled:!0},warn:{color:y(`\x1B[33m`),log:console.warn,enabled:!0},error:{color:y(`\x1B[31m`),log:console.error,enabled:!0},silent:{log:()=>{},enabled:!1}};function S(e,t){return`${new Date().toLocaleTimeString()} [${t?`${g}:${t}`:g}] ${e}`}function C(e,t,n,r){if(!e.enabled)return;let i=S(t,r);e.log(e.color?e.color(i):i),n!==void 0&&e.log(n)}function w(e){let t=x[e],n=new Set;return Object.assign((e,n,r)=>{C(t,e,n,r)},{once(e,r,i){!t.enabled||n.has(e)||(n.add(e),C(t,e,r,i))}})}function ee(e){let t=b.indexOf(e);if(t===-1){C(x.error,`invalid log level: ${e}`);return}for(let[e,n]of b.entries())x[n].enabled=e>=t}var T=y(`\x1B[34m`),E=y(`\x1B[36m`);function D(){let e=[` ${T(`_`)} ${E(`_`)} _ _ _`,`${T(`(_)`)} ${E(`(_)`)} _ __(_)__| |_____ __| |`,` ${T(`_`)} ${T(`_`)} | '_ \\ / _| / / -_) _\` |`,`${T(`(_)`)} ${T(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
858
858
  `];console.log(e.join(`
859
- `))}var E={banner:te,debug:C(`debug`),info:C(`info`),warn:C(`warn`),error:C(`error`),setLevel:ee};function D(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 O=`.picked/`;async function ne(n,r){if(r)return;let i=(0,t.join)(n,`.gitignore`);if(!(0,e.existsSync)(i)){await(0,a.writeFile)(i,`${O}
859
+ `))}var O={banner:D,debug:w(`debug`),info:w(`info`),warn:w(`warn`),error:w(`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 k=`.picked/`;async function ne(n,r){if(r)return;let i=(0,t.join)(n,`.gitignore`);if(!(0,e.existsSync)(i)){await(0,a.writeFile)(i,`${k}
860
860
  `);return}let o=await(0,a.readFile)(i,`utf8`);if(re(o))return;let s=`${o.length>0&&!o.endsWith(`
861
861
  `)?`
862
- `:``}${O}
863
- `;await(0,a.appendFile)(i,s)}function re(e){return e.split(/\r?\n/).map(e=>e.trim()).some(e=>e===O||e===`.picked`)}var k=6,A=5e3;function j(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 M(e){return new Promise(t=>{setTimeout(t,e)})}async function N(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<=k;i++){let a=A*2**(i-1);t(i,k,a),await M(a),r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n}if(r!==null)throw r;return null}function P(e){return Array.isArray(e)?e:[]}function ie(e){let t=e.variants,n=(t??[]).reduce((e,t)=>e+t.weight,0);return!t||t.length===0||n===0?`${e.weight.toString()}%`:t.map(e=>{let t=Math.round(100*e.weight/n);return`${String(e.value)} ${t.toString()}%`}).join(`, `)}var F=2;function I(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 ae(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,a.readFile)(t,`utf8`),n=JSON.parse(e);return oe(n)?n:null}catch{return null}}function oe(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 L(e){let t=new Set;for(let n of P(e.steps))n.layoutContentId&&t.add(n.id);if(t.size===0)return[];let n=[];for(let r of P(e.experiences))P(r.nodes).some(e=>e.type===`step`&&t.has(e.stepId))&&n.push(r.id);return n}async function R(n){let{apiUrl:r,projectId:i,projectRoot:o,headers:s,previewToken:c,reuseWhenUnchanged:l=!0}=n,u=I(o),d=await B(r,i,s,c),f=L(d);if(await(0,a.mkdir)(u.experiencesDir,{recursive:!0}),await(0,a.writeFile)(u.projectConfigPath,JSON.stringify(d,null,2)),l){let t=await ae(u.manifestPath);if(t?.version===F&&t.projectVersionId===d.versionId&&t.workspaceId===d.workspaceId){let n=z(u,f);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:d,manifest:t,experienceContentPaths:n};E.info(`a manifest-referenced content file is missing; refetching every experience`)}}let p=new Date().toISOString(),m=[];for(let e of f){let n=await V(r,i,e,s,c),o=(0,t.join)(u.experiencesDir,`${e}.json`);await(0,a.writeFile)(o,JSON.stringify(n,null,2)),m.push({id:e,fetchedAt:p})}let h={version:F,fetchedAt:p,projectVersionId:d.versionId,workspaceId:d.workspaceId,projectId:d.id,experiences:m};return await(0,a.writeFile)(u.manifestPath,JSON.stringify(h,null,2)),{config:d,manifest:h,experienceContentPaths:z(u,f)}}function z(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function B(e,t,r,i){let a=()=>(0,n.fetchProject)(e,t,{headers:r,previewToken:i}),o;try{o=j(e)?await N(a,(e,t,n)=>{E.info(`project config not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await a()}catch(n){throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${H(n)}`)}if(!o)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 o}async function V(e,t,r,i,a){let o;try{o=await(0,n.fetchExperienceContent)(e,t,r,{headers:i,previewToken:a})}catch(t){throw Error(`[picked] Build-time fetch of content for experience "${r}" failed at ${e}: ${H(t)}`)}if(!o)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 o}function H(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}function U(){return`export const manifestMetadata = {
862
+ `:``}${k}
863
+ `;await(0,a.appendFile)(i,s)}function re(e){return e.split(/\r?\n/).map(e=>e.trim()).some(e=>e===k||e===`.picked`)}var A=6,ie=5e3;function j(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 M(e){return new Promise(t=>{setTimeout(t,e)})}async function N(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<=A;i++){let a=ie*2**(i-1);t(i,A,a),await M(a),r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n}if(r!==null)throw r;return null}function P(e){return Array.isArray(e)?e:[]}function F(e){let t=e.variants,n=(t??[]).reduce((e,t)=>e+t.weight,0);return!t||t.length===0||n===0?`${e.weight.toString()}%`:t.map(e=>{let t=Math.round(100*e.weight/n);return`${String(e.value)} ${t.toString()}%`}).join(`, `)}var I=2;function L(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 ae(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,a.readFile)(t,`utf8`),n=JSON.parse(e);return oe(n)?n:null}catch{return null}}function oe(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 se(e){let t=new Set;for(let n of P(e.steps))n.layoutContentId&&t.add(n.id);if(t.size===0)return[];let n=[];for(let r of P(e.experiences))P(r.nodes).some(e=>e.type===`step`&&t.has(e.stepId))&&n.push(r.id);return n}async function ce(n){let{apiUrl:r,projectId:i,projectRoot:o,headers:s,previewToken:c,reuseWhenUnchanged:l=!0}=n,u=L(o),d=await z(r,i,s,c),f=se(d);if(await(0,a.mkdir)(u.experiencesDir,{recursive:!0}),await(0,a.writeFile)(u.projectConfigPath,JSON.stringify(d,null,2)),l){let t=await ae(u.manifestPath);if(t?.version===I&&t.projectVersionId===d.versionId&&t.workspaceId===d.workspaceId){let n=R(u,f);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:d,manifest:t,experienceContentPaths:n};O.info(`a manifest-referenced content file is missing; refetching every experience`)}}let p=new Date().toISOString(),m=[];for(let e of f){let n=await B(r,i,e,s,c),o=(0,t.join)(u.experiencesDir,`${e}.json`);await(0,a.writeFile)(o,JSON.stringify(n,null,2)),m.push({id:e,fetchedAt:p})}let h={version:I,fetchedAt:p,projectVersionId:d.versionId,workspaceId:d.workspaceId,projectId:d.id,experiences:m};return await(0,a.writeFile)(u.manifestPath,JSON.stringify(h,null,2)),{config:d,manifest:h,experienceContentPaths:R(u,f)}}function R(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function z(e,t,r,i){let a=()=>(0,n.fetchProject)(e,t,{headers:r,previewToken:i}),o;try{o=j(e)?await N(a,(e,t,n)=>{O.info(`project config not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await a()}catch(n){throw Error(`[picked] Build-time fetch of project config failed for "${t}" at ${e}: ${V(n)}`)}if(!o)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 o}async function B(e,t,r,i,a){let o;try{o=await(0,n.fetchExperienceContent)(e,t,r,{headers:i,previewToken:a})}catch(t){throw Error(`[picked] Build-time fetch of content for experience "${r}" failed at ${e}: ${V(t)}`)}if(!o)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 o}function V(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}var H=new Set([`resolveId`,`load`]);function U(e=(0,o.createTraceId)()){let t=(0,o.createSpanId)(),n=Date.now(),r=[],a=new Map;return{record:(n,i)=>{if(H.has(n)){let e=a.get(n)??{calls:0,totalMs:0};a.set(n,{calls:e.calls+1,totalMs:e.totalMs+i});return}let s=Date.now();r.push({name:`picked.vite.${n}`,traceId:e,spanId:(0,o.createSpanId)(),parentSpanId:t,startTimeUnixNano:(0,o.toUnixNano)(s-i),endTimeUnixNano:(0,o.toUnixNano)(s),attributes:{"picked.vite.hook":n},status:`ok`})},flush:async s=>{let c={};for(let[e,t]of a)c[`picked.vite.${e}.calls`]=t.calls,c[`picked.vite.${e}.total_ms`]=Math.round(t.totalMs);let l=(0,i.detectHostEnvironment)();r.push({name:`picked.vite.build`,traceId:e,spanId:t,startTimeUnixNano:(0,o.toUnixNano)(n),endTimeUnixNano:(0,o.toUnixNano)(Date.now()),attributes:{"picked.env.provider":l.provider,"picked.env.ci":l.ci,...s,...c},status:`ok`});try{let e=(0,o.createTelemetryEmitter)({resource:{"service.name":`picked-vite-plugin`},headers:{"Picked-Telemetry":`vite-plugin`},maxBatchSize:r.length});for(let t of r)e.record(t);await e.flush()}catch{}}}}function W(e){return typeof e==`object`&&!!e&&`then`in e}function G(e,t,n){return function(...r){let i=performance.now(),a=()=>{n.record(e,performance.now()-i)},o=t.apply(this,r);return W(o)?Promise.resolve(o).then(a,a):a(),o}}function K(e){return typeof e==`function`}function le(e,t){if(!e)return t;for(let[n,r]of Object.entries(t))if(n!==`name`){if(K(r)){Reflect.set(t,n,G(n,r,e));continue}typeof r==`object`&&r&&`handler`in r&&K(r.handler)&&Reflect.set(r,`handler`,G(n,r.handler,e))}return t}function q(){return`export const manifestMetadata = {
864
864
  mode: 'api',
865
865
  fetchedAt: null,
866
866
  projectVersionId: null,
867
867
  workspaceId: null,
868
868
  }
869
- `}function W(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(`
869
+ `}function ue(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(`
870
870
  `);return`import { registerPickedBundle } from '@picked/client/plugins/dynamic-experiences'
871
871
  import projectConfigJson from ${i(t)}
872
872
 
@@ -891,7 +891,7 @@ export async function experienceContent(experience, _options) {
891
891
  export const manifestMetadata = ${JSON.stringify(r)}
892
892
 
893
893
  registerPickedBundle({ projectConfig, experienceContent, manifestMetadata })
894
- `}function G(e){let{apiUrl:t,projectId:n,projectConfig:r,previewToken:i}=e,a=r?`import { fetchExperienceContent, registerPickedBundle } from '@picked/client/plugins/dynamic-experiences'`:`import { fetchProject, fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`,o=r?`export const projectConfig = ${JSON.stringify(r)}`:`export const projectConfig = await fetchProject(apiUrl, projectId, { previewToken: previewToken ?? undefined })`,s=r?`
894
+ `}function de(e){let{apiUrl:t,projectId:n,projectConfig:r,previewToken:i}=e,a=r?`import { fetchExperienceContent, registerPickedBundle } from '@picked/client/plugins/dynamic-experiences'`:`import { fetchProject, fetchExperienceContent } from '@picked/client/plugins/dynamic-experiences'`,o=r?`export const projectConfig = ${JSON.stringify(r)}`:`export const projectConfig = await fetchProject(apiUrl, projectId, { previewToken: previewToken ?? undefined })`,s=r?`
895
895
  registerPickedBundle({ projectConfig, experienceContent, manifestMetadata })
896
896
  `:``;return`${a}
897
897
 
@@ -913,5 +913,5 @@ export const manifestMetadata = {
913
913
  projectVersionId: projectConfig?.versionId ?? null,
914
914
  workspaceId: projectConfig?.workspaceId ?? null,
915
915
  }
916
- ${s}`}var K=5;function q(e,t,n){if(t.length===0)return;if(t.length>K){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(`
917
- `))}function se(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var ce=[{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:`Split`,value:e=>ie(e)},{header:`Ver`,value:e=>`v${e.version.toString()}`}],le=[{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()}],ue=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],de=[{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`}],fe=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function pe(){return`0.0.78-next.2`}var me=`https://api.picked.app`,J=`virtual:picked/data`,Y=`\0${J}`;function he(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(Y))return t.fileName}function ge(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}async function _e(e){try{let t=await(0,r.generate)({config:e,onWarn:e=>{E.warn(e)}});E.info(`generated types at ${t.typesOutput}`)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`type generation failed: ${t}. Fix the schema source, or set \`generateTypes: false\` on the picked plugin to skip it.`)}}async function ve(e,t){let n=await(0,i.loadResolvedPickedConfig)(e,t);if(!n)throw Error(`picked.config.{ts,js,json} is required. Add a picked.config.ts with projectId and apiUrl.`);return n}function X(e,t,n){if(t!==void 0&&n!==void 0&&t!==n)throw Error(`picked plugin option \`${e}\` is "${t}", and picked.config says "${n}". Remove the plugin option; picked.config is the one place this belongs.`)}function Z(e){let t=[];if(e.projectId!==void 0&&t.push("`projectId`"),e.apiUrl!==void 0&&t.push("`apiUrl`"),t.length===0)return;let n=t.length>1;E.warn(`picked plugin option${n?`s`:``} ${t.join(` and `)} ${n?`are`:`is`} deprecated, and a future release drops ${n?`them`:`it`}. Move ${n?`them`:`it`} to picked.config, which the CLI and the type generator read from too.`)}async function ye(e,t){let n=await(0,i.loadPickedConfig)(e);n&&n.projectId!==t&&E.warn(`using project "${t}" (picked.config default: "${n.projectId}") — run 'picked status' to inspect`)}var Q=new Map;function be(e,t,n){return JSON.stringify([e,t,n])}function xe(r={}){let a=r.mode??`bundle`,o=r.generateTypes??!0,s=[],c=process.cwd(),l=`serve`,u=`/`,d=null,p=!1,m,h,g=null;return{name:`picked`,config:async(u,f)=>{l=f.command,c=u.root===void 0?process.cwd():(0,t.resolve)(process.cwd(),u.root);let{projectId:_,apiUrl:v}=r,y=await(0,i.loadPickedConfig)(c);X(`projectId`,_,y?.projectId),X(`apiUrl`,v,y?.apiUrl),Z({projectId:_,apiUrl:v}),d=await ve(c,{projectId:_,apiUrl:v});let{projectId:b,apiUrl:x,previewToken:S}=d;E.banner(),o&&!p&&(p=!0,await _e(d)),x!==me&&E.warn(`using custom API URL: ${x}`),await ye(c,b);let C=(0,n.createClientHeaders)(`vite-plugin`,pe());if(a===`api`)E.debug(`mode is 'api': skipping the project-config prefetch`);else if(f.command===`build`){let t=be(x,b,c);m=t;let n=Q.get(t);n===void 0&&(n=(async()=>{E.info(`prefetching project config + content for "${b}"`);let t=I(c),n=(0,e.existsSync)(t.pickedDir),r=performance.now(),i=await R({apiUrl:x,projectId:b,projectRoot:c,headers:C,previewToken:S??void 0}),a=(performance.now()-r).toFixed(0);await ne(c,n);let o=i.config;return $(o,a),{virtualSource:W({projectConfigPath:t.projectConfigPath,experienceContentPaths:i.experienceContentPaths,manifestMetadata:{mode:`build`,fetchedAt:i.manifest.fetchedAt,projectVersionId:i.manifest.projectVersionId,workspaceId:i.manifest.workspaceId}}),features:P(o.features)}})(),n.catch(()=>Q.delete(t)),Q.set(t,n));let r=await n;h=r.virtualSource,s=r.features}else if(f.mode===`production`)E.debug(`skipping the dev project-config fetch for a production serve resolution`);else{E.info(`fetching project config for "${b}" (dev)`);let e=performance.now(),t=()=>(0,n.fetchProject)(x,b,{headers:C,previewToken:S??void 0}),r=j(x)?await N(t,(e,t,n)=>{E.info(`local API not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await t(),i=(performance.now()-e).toFixed(0);g=r,r?(s=P(r.features),$(r,i)):E.warn(`failed to fetch project config for "${b}" (${i}ms)`)}},configResolved(e){u=e.base},closeBundle(){m!==void 0&&Q.delete(m)},transformIndexHtml:{order:`post`,handler(e,t){if(a===`api`||t.bundle===void 0)return;let n=he(t.bundle);if(n===void 0)return;let r=ge(u,n);if(!e.includes(`"${r}"`))return[{tag:`link`,attrs:{rel:`modulepreload`,crossorigin:!0,href:r},injectTo:`head`}]}},resolveId(e){if(e===J)return Y},load(e){if(e===Y){if(a===`api`)return U();if(l===`build`)return h;if(!d)throw Error(`picked plugin config hook must run before virtual module load`);return G({apiUrl:d.apiUrl,projectId:d.projectId,projectConfig:g,previewToken:d.previewToken??void 0})}},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(D(()=>f(s)));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){E.debug(`index.html came from the build; skipping the launcher page`);return}this.emitFile({type:`asset`,fileName:`index.html`,source:f(s)})}}}}}function $(e,t){let n=P(e.features),r=P(e.experiences),i=P(e.steps),a=P(e.fields),o=P(e.conditions),s=P(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(`, `);E.info(`fetched config in ${t}ms (${l})`),q(`Features`,n,ce),q(`Experiences`,r,le),q(`Steps`,i,ue),q(`Fields`,a,de),q(`Conditions`,o,fe),se(`Actions`,s),E.debug(`config size: ${c.toString()} bytes`)}exports.picked=xe;
916
+ ${s}`}var fe=5;function J(e,t,n){if(t.length===0)return;if(t.length>fe){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(`
917
+ `))}function pe(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var me=[{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:`Split`,value:e=>F(e)},{header:`Ver`,value:e=>`v${e.version.toString()}`}],he=[{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()}],ge=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],_e=[{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`}],ve=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function ye(){return`0.0.78-next.3`}var be=`https://api.picked.app`,Y=`virtual:picked/data`,X=`\0${Y}`;function xe(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(X))return t.fileName}function Se(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}async function Ce(e){try{let t=await(0,r.generate)({config:e,onWarn:e=>{O.warn(e)}});O.info(`generated types at ${t.typesOutput}`)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`type generation failed: ${t}. Fix the schema source, or set \`generateTypes: false\` on the picked plugin to skip it.`)}}function we(e,t,n){return e&&(0,i.isTelemetryEnabled)(t,n)?e:null}async function Te(e,t){let n=await(0,i.loadResolvedPickedConfig)(e,t);if(!n)throw Error(`picked.config.{ts,js,json} is required. Add a picked.config.ts with projectId and apiUrl.`);return n}function Z(e,t,n){if(t!==void 0&&n!==void 0&&t!==n)throw Error(`picked plugin option \`${e}\` is "${t}", and picked.config says "${n}". Remove the plugin option; picked.config is the one place this belongs.`)}function Ee(e){let t=[];if(e.projectId!==void 0&&t.push("`projectId`"),e.apiUrl!==void 0&&t.push("`apiUrl`"),t.length===0)return;let n=t.length>1;O.warn(`picked plugin option${n?`s`:``} ${t.join(` and `)} ${n?`are`:`is`} deprecated, and a future release drops ${n?`them`:`it`}. Move ${n?`them`:`it`} to picked.config, which the CLI and the type generator read from too.`)}async function De(e,t){let n=await(0,i.loadPickedConfig)(e);n&&n.projectId!==t&&O.warn(`using project "${t}" (picked.config default: "${n.projectId}") — run 'picked status' to inspect`)}var Q=new Map;function Oe(e,t,n){return JSON.stringify([e,t,n])}function ke(r={}){let a=r.mode??`bundle`,o=r.generateTypes??!0,s=[],c=process.cwd(),l=`serve`,u=`/`,d=null,f=!1,m,h,g=null,_=(0,i.isTelemetryForcedOffByEnvironment)()?null:U();return le(_,{name:`picked`,config:async(u,p)=>{l=p.command,c=u.root===void 0?process.cwd():(0,t.resolve)(process.cwd(),u.root);let{projectId:v,apiUrl:y}=r,b=await(0,i.loadPickedConfig)(c);Z(`projectId`,v,b?.projectId),Z(`apiUrl`,y,b?.apiUrl),Ee({projectId:v,apiUrl:y}),d=await Te(c,{projectId:v,apiUrl:y});let{projectId:x,apiUrl:S,previewToken:C}=d;_=we(_,d,r.telemetry),O.banner(),o&&!f&&(f=!0,await Ce(d)),S!==be&&O.warn(`using custom API URL: ${S}`),await De(c,x);let w=(0,n.createClientHeaders)(`vite-plugin`,ye());if(a===`api`)O.debug(`mode is 'api': skipping the project-config prefetch`);else if(p.command===`build`){let t=Oe(S,x,c);m=t;let n=Q.get(t);n===void 0&&(n=(async()=>{O.info(`prefetching project config + content for "${x}"`);let t=L(c),n=(0,e.existsSync)(t.pickedDir),r=performance.now(),i=await ce({apiUrl:S,projectId:x,projectRoot:c,headers:w,previewToken:C??void 0}),a=(performance.now()-r).toFixed(0);await ne(c,n);let o=i.config;return $(o,a),{virtualSource:ue({projectConfigPath:t.projectConfigPath,experienceContentPaths:i.experienceContentPaths,manifestMetadata:{mode:`build`,fetchedAt:i.manifest.fetchedAt,projectVersionId:i.manifest.projectVersionId,workspaceId:i.manifest.workspaceId}}),features:P(o.features)}})(),n.catch(()=>Q.delete(t)),Q.set(t,n));let r=await n;h=r.virtualSource,s=r.features}else if(p.mode===`production`)O.debug(`skipping the dev project-config fetch for a production serve resolution`);else{O.info(`fetching project config for "${x}" (dev)`);let e=performance.now(),t=()=>(0,n.fetchProject)(S,x,{headers:w,previewToken:C??void 0}),r=j(S)?await N(t,(e,t,n)=>{O.info(`local API not ready, retrying in ${(n/1e3).toString()}s (${e.toString()}/${t.toString()})`)}):await t(),i=(performance.now()-e).toFixed(0);g=r,r?(s=P(r.features),$(r,i)):O.warn(`failed to fetch project config for "${x}" (${i}ms)`)}},configResolved(e){u=e.base},closeBundle(){m!==void 0&&Q.delete(m),_?.flush({"picked.vite.command":l,"picked.data.mode":a,"picked.source":d?.source??`unknown`})},transformIndexHtml:{order:`post`,handler(e,t){if(a===`api`||t.bundle===void 0)return;let n=xe(t.bundle);if(n===void 0)return;let r=Se(u,n);if(!e.includes(`"${r}"`))return[{tag:`link`,attrs:{rel:`modulepreload`,crossorigin:!0,href:r},injectTo:`head`}]}},resolveId(e){if(e===Y)return X},load(e){if(e===X){if(a===`api`)return q();if(l===`build`)return h;if(!d)throw Error(`picked plugin config hook must run before virtual module load`);return de({apiUrl:d.apiUrl,projectId:d.projectId,projectConfig:g,previewToken:d.previewToken??void 0})}},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(te(()=>p(s)));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){O.debug(`index.html came from the build; skipping the launcher page`);return}this.emitFile({type:`asset`,fileName:`index.html`,source:p(s)})}}}})}function $(e,t){let n=P(e.features),r=P(e.experiences),i=P(e.steps),a=P(e.fields),o=P(e.conditions),s=P(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(`, `);O.info(`fetched config in ${t}ms (${l})`),J(`Features`,n,me),J(`Experiences`,r,he),J(`Steps`,i,ge),J(`Fields`,a,_e),J(`Conditions`,o,ve),pe(`Actions`,s),O.debug(`config size: ${c.toString()} bytes`)}exports.picked=ke;