@picked/vite-plugin-picked 0.0.1-dev.1787537193674 → 0.0.1-dev.1787543060859

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,13 +1,12 @@
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;function l(e){let t=JSON.stringify(e),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="${d(e.id)}" checked>
5
- <span class="feature-name">${u(e.name)}</span>
6
- <span class="feature-id">${u(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="${d(e.id)}">
9
- <option value="true" selected>true</option>
10
- <option value="false">false</option>
8
+ <select data-value-for="${h(e.id)}">
9
+ ${f(e)}
11
10
  </select>
12
11
  </div>`).join(``):`<p class="text no-features">No features configured for this project.</p>`;return String.raw(c||=s([`<!DOCTYPE html>
13
12
  <html lang="en">
@@ -855,19 +854,19 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
855
854
  <\/script>
856
855
  </main>
857
856
  </body>
858
- </html>`]),n,t)}function u(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function d(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}var f=`picked`,p=`\x1B[0m`;function m(){let e=process.env.NO_COLOR;return e===`1`||e===`true`}function h(e){return t=>m()?t:`${e}${t}${p}`}var g=[`debug`,`info`,`warn`,`error`,`silent`],_={debug:{color:h(`\x1B[2m`),log:console.debug,enabled:!1},info:{color:h(`\x1B[36m`),log:console.log,enabled:!0},warn:{color:h(`\x1B[33m`),log:console.warn,enabled:!0},error:{color:h(`\x1B[31m`),log:console.error,enabled:!0},silent:{log:()=>{},enabled:!1}};function v(e,t){return`${new Date().toLocaleTimeString()} [${t?`${f}:${t}`:f}] ${e}`}function y(e,t,n,r){if(!e.enabled)return;let i=v(t,r);e.log(e.color?e.color(i):i),n!==void 0&&e.log(n)}function b(e){let t=_[e],n=new Set;return Object.assign((e,n,r)=>{y(t,e,n,r)},{once(e,r,i){!t.enabled||n.has(e)||(n.add(e),y(t,e,r,i))}})}function x(e){let t=g.indexOf(e);if(t===-1){y(_.error,`invalid log level: ${e}`);return}for(let[e,n]of g.entries())_[n].enabled=e>=t}var S=h(`\x1B[34m`),C=h(`\x1B[36m`);function w(){let e=[` ${S(`_`)} ${C(`_`)} _ _ _`,`${S(`(_)`)} ${C(`(_)`)} _ __(_)__| |_____ __| |`,` ${S(`_`)} ${S(`_`)} | '_ \\ / _| / / -_) _\` |`,`${S(`(_)`)} ${S(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
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 te(){let e=[` ${T(`_`)} ${E(`_`)} _ _ _`,`${T(`(_)`)} ${E(`(_)`)} _ __(_)__| |_____ __| |`,` ${T(`_`)} ${T(`_`)} | '_ \\ / _| / / -_) _\` |`,`${T(`(_)`)} ${T(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
859
858
  `];console.log(e.join(`
860
- `))}var T={banner:w,debug:b(`debug`),info:b(`info`),warn:b(`warn`),error:b(`error`),setLevel:x};function E(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 D=`.picked/`;async function ee(n,r){if(r)return;let i=(0,t.join)(n,`.gitignore`);if(!(0,e.existsSync)(i)){await(0,a.writeFile)(i,`${D}
861
- `);return}let o=await(0,a.readFile)(i,`utf8`);if(O(o))return;let s=`${o.length>0&&!o.endsWith(`
859
+ `))}var D={banner:te,debug:w(`debug`),info:w(`info`),warn:w(`warn`),error:w(`error`),setLevel:ee};function O(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
+ `);return}let o=await(0,a.readFile)(i,`utf8`);if(re(o))return;let s=`${o.length>0&&!o.endsWith(`
862
861
  `)?`
863
- `:``}${D}
864
- `;await(0,a.appendFile)(i,s)}function O(e){return e.split(/\r?\n/).map(e=>e.trim()).some(e=>e===D||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 te(e){return new Promise(t=>{setTimeout(t,e)})}async function M(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 te(a),r=null;try{n=await e()}catch(e){r=e}if(n!==null)return n}if(r!==null)throw r;return null}function N(e){return Array.isArray(e)?e:[]}var P=2;function F(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 ne(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,a.readFile)(t,`utf8`),n=JSON.parse(e);return re(n)?n:null}catch{return null}}function re(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 ie(e){let t=new Set;for(let n of N(e.steps))n.layoutContentId&&t.add(n.id);if(t.size===0)return[];let n=[];for(let r of N(e.experiences))N(r.nodes).some(e=>e.type===`step`&&t.has(e.stepId))&&n.push(r.id);return n}async function ae(n){let{apiUrl:r,projectId:i,projectRoot:o,headers:s,previewToken:c,reuseWhenUnchanged:l=!0}=n,u=F(o),d=await oe(r,i,s,c),f=ie(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 ne(u.manifestPath);if(t?.version===P&&t.projectVersionId===d.versionId&&t.workspaceId===d.workspaceId){let n=I(u,f);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:d,manifest:t,experienceContentPaths:n};T.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 se(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:P,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:I(u,f)}}function I(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function oe(e,t,r,i){let a=()=>(0,n.fetchProject)(e,t,{headers:r,previewToken:i}),o;try{o=j(e)?await M(a,(e,t,n)=>{T.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}: ${L(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 se(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}: ${L(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 L(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}var R=`https://production.otel.picked.app/v1/traces`,z=new Set([`resolveId`,`load`]);function B(e=(0,o.createTraceId)()){let t=(0,o.createSpanId)(),n=Date.now(),r=[],a=new Map;return{record:(n,i)=>{if(z.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)({endpoint:R,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 V(e){return typeof e==`object`&&!!e&&`then`in e}function H(e,t,n){return function(...r){let i=performance.now(),a=()=>{n.record(e,performance.now()-i)},o=t.apply(this,r);return V(o)?Promise.resolve(o).then(a,a):a(),o}}function U(e){return typeof e==`function`}function W(e,t){if(!e)return t;for(let[n,r]of Object.entries(t))if(n!==`name`){if(U(r)){Reflect.set(t,n,H(n,r,e));continue}typeof r==`object`&&r&&`handler`in r&&U(r.handler)&&Reflect.set(r,`handler`,H(n,r.handler,e))}return t}function G(){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,j=5e3;function M(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 ie(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=j*2**(i-1);t(i,A,a),await ie(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 ae(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 oe(t){if(!(0,e.existsSync)(t))return null;try{let e=await(0,a.readFile)(t,`utf8`),n=JSON.parse(e);return se(n)?n:null}catch{return null}}function se(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 ce(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 le(n){let{apiUrl:r,projectId:i,projectRoot:o,headers:s,previewToken:c,reuseWhenUnchanged:l=!0}=n,u=I(o),d=await R(r,i,s,c),f=ce(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 oe(u.manifestPath);if(t?.version===F&&t.projectVersionId===d.versionId&&t.workspaceId===d.workspaceId){let n=L(u,f);if(Object.values(n).every(t=>(0,e.existsSync)(t)))return{config:d,manifest:t,experienceContentPaths:n};D.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 z(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:L(u,f)}}function L(e,n){let r={};for(let i of n)r[i]=(0,t.join)(e.experiencesDir,`${i}.json`);return r}async function R(e,t,r,i){let a=()=>(0,n.fetchProject)(e,t,{headers:r,previewToken:i}),o;try{o=M(e)?await N(a,(e,t,n)=>{D.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}: ${B(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 z(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}: ${B(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 B(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}var V=`https://production.otel.picked.app/v1/traces`,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)({endpoint:V,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 ue(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 de(){return`export const manifestMetadata = {
865
864
  mode: 'api',
866
865
  fetchedAt: null,
867
866
  projectVersionId: null,
868
867
  workspaceId: null,
869
868
  }
870
- `}function K(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 fe(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(`
871
870
  `);return`import { registerPickedBundle } from '@picked/client/plugins/dynamic-experiences'
872
871
  import projectConfigJson from ${i(t)}
873
872
 
@@ -892,7 +891,7 @@ export async function experienceContent(experience, _options) {
892
891
  export const manifestMetadata = ${JSON.stringify(r)}
893
892
 
894
893
  registerPickedBundle({ projectConfig, experienceContent, manifestMetadata })
895
- `}function ce(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 pe(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?`
896
895
  registerPickedBundle({ projectConfig, experienceContent, manifestMetadata })
897
896
  `:``;return`${a}
898
897
 
@@ -914,5 +913,5 @@ export const manifestMetadata = {
914
913
  projectVersionId: projectConfig?.versionId ?? null,
915
914
  workspaceId: projectConfig?.workspaceId ?? null,
916
915
  }
917
- ${s}`}var le=5;function q(e,t,n){if(t.length===0)return;if(t.length>le){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(`
918
- `))}function ue(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var de=[{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()}`}],fe=[{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()}],pe=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],me=[{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`}],he=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function ge(){return`0.0.1-dev.1787537193674`}var _e=`https://api.picked.app`,J=`virtual:picked/data`,Y=`\0${J}`;function ve(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(Y))return t.fileName}function ye(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}async function be(e){try{let t=await(0,r.generate)({config:e,onWarn:e=>{T.warn(e)}});T.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 xe(e,t,n){return e&&(0,i.isTelemetryEnabled)(t,n)?e:null}async function Se(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;T.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 Ce(e,t){let n=await(0,i.loadPickedConfig)(e);n&&n.projectId!==t&&T.warn(`using project "${t}" (picked.config default: "${n.projectId}") — run 'picked status' to inspect`)}var Q=new Map;function we(e,t,n){return JSON.stringify([e,t,n])}function Te(r={}){let a=r.mode??`bundle`,o=r.generateTypes??!0,s=[],c=process.cwd(),u=`serve`,d=`/`,f=null,p=!1,m,h,g=null,_=(0,i.isTelemetryForcedOffByEnvironment)()?null:B();return W(_,{name:`picked`,config:async(l,d)=>{u=d.command,c=l.root===void 0?process.cwd():(0,t.resolve)(process.cwd(),l.root);let{projectId:v,apiUrl:y}=r,b=await(0,i.loadPickedConfig)(c);X(`projectId`,v,b?.projectId),X(`apiUrl`,y,b?.apiUrl),Z({projectId:v,apiUrl:y}),f=await Se(c,{projectId:v,apiUrl:y});let{projectId:x,apiUrl:S,previewToken:C}=f;_=xe(_,f,r.telemetry),T.banner(),o&&!p&&(p=!0,await be(f)),S!==_e&&T.warn(`using custom API URL: ${S}`),await Ce(c,x);let w=(0,n.createClientHeaders)(`vite-plugin`,ge());if(a===`api`)T.debug(`mode is 'api': skipping the project-config prefetch`);else if(d.command===`build`){let t=we(S,x,c);m=t;let n=Q.get(t);n===void 0&&(n=(async()=>{T.info(`prefetching project config + content for "${x}"`);let t=F(c),n=(0,e.existsSync)(t.pickedDir),r=performance.now(),i=await ae({apiUrl:S,projectId:x,projectRoot:c,headers:w,previewToken:C??void 0}),a=(performance.now()-r).toFixed(0);await ee(c,n);let o=i.config;return $(o,a),{virtualSource:K({projectConfigPath:t.projectConfigPath,experienceContentPaths:i.experienceContentPaths,manifestMetadata:{mode:`build`,fetchedAt:i.manifest.fetchedAt,projectVersionId:i.manifest.projectVersionId,workspaceId:i.manifest.workspaceId}}),features:N(o.features)}})(),n.catch(()=>Q.delete(t)),Q.set(t,n));let r=await n;h=r.virtualSource,s=r.features}else if(d.mode===`production`)T.debug(`skipping the dev project-config fetch for a production serve resolution`);else{T.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 M(t,(e,t,n)=>{T.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=N(r.features),$(r,i)):T.warn(`failed to fetch project config for "${x}" (${i}ms)`)}},configResolved(e){d=e.base},closeBundle(){m!==void 0&&Q.delete(m),_?.flush({"picked.vite.command":u,"picked.data.mode":a,"picked.source":f?.source??`unknown`})},transformIndexHtml:{order:`post`,handler(e,t){if(a===`api`||t.bundle===void 0)return;let n=ve(t.bundle);if(n===void 0)return;let r=ye(d,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 G();if(u===`build`)return h;if(!f)throw Error(`picked plugin config hook must run before virtual module load`);return ce({apiUrl:f.apiUrl,projectId:f.projectId,projectConfig:g,previewToken:f.previewToken??void 0})}},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(E(()=>l(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){T.debug(`index.html came from the build; skipping the launcher page`);return}this.emitFile({type:`asset`,fileName:`index.html`,source:l(s)})}}}})}function $(e,t){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=[`${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(`, `);T.info(`fetched config in ${t}ms (${l})`),q(`Features`,n,de),q(`Experiences`,r,fe),q(`Steps`,i,pe),q(`Fields`,a,me),q(`Conditions`,o,he),ue(`Actions`,s),T.debug(`config size: ${c.toString()} bytes`)}exports.picked=Te;
916
+ ${s}`}var me=5;function q(e,t,n){if(t.length===0)return;if(t.length>me){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 he(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var ge=[{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=>ae(e)},{header:`Ver`,value:e=>`v${e.version.toString()}`}],_e=[{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()}],ve=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>(e.fieldIds?.length??0).toString()}],ye=[{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`}],be=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function xe(){return`0.0.1-dev.1787543060859`}var Se=`https://api.picked.app`,J=`virtual:picked/data`,Y=`\0${J}`;function Ce(e){for(let t of Object.values(e))if(t.type===`chunk`&&t.moduleIds.includes(Y))return t.fileName}function X(e,t){return e===``||e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`}async function we(e){try{let t=await(0,r.generate)({config:e,onWarn:e=>{D.warn(e)}});D.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 Te(e,t,n){return e&&(0,i.isTelemetryEnabled)(t,n)?e:null}async function Ee(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 De(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;D.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 Oe(e,t){let n=await(0,i.loadPickedConfig)(e);n&&n.projectId!==t&&D.warn(`using project "${t}" (picked.config default: "${n.projectId}") — run 'picked status' to inspect`)}var Q=new Map;function ke(e,t,n){return JSON.stringify([e,t,n])}function Ae(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 ue(_,{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),De({projectId:v,apiUrl:y}),d=await Ee(c,{projectId:v,apiUrl:y});let{projectId:x,apiUrl:S,previewToken:C}=d;_=Te(_,d,r.telemetry),D.banner(),o&&!f&&(f=!0,await we(d)),S!==Se&&D.warn(`using custom API URL: ${S}`),await Oe(c,x);let w=(0,n.createClientHeaders)(`vite-plugin`,xe());if(a===`api`)D.debug(`mode is 'api': skipping the project-config prefetch`);else if(p.command===`build`){let t=ke(S,x,c);m=t;let n=Q.get(t);n===void 0&&(n=(async()=>{D.info(`prefetching project config + content for "${x}"`);let t=I(c),n=(0,e.existsSync)(t.pickedDir),r=performance.now(),i=await le({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:fe({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`)D.debug(`skipping the dev project-config fetch for a production serve resolution`);else{D.info(`fetching project config for "${x}" (dev)`);let e=performance.now(),t=()=>(0,n.fetchProject)(S,x,{headers:w,previewToken:C??void 0}),r=M(S)?await N(t,(e,t,n)=>{D.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)):D.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=Ce(t.bundle);if(n===void 0)return;let r=X(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 de();if(l===`build`)return h;if(!d)throw Error(`picked plugin config hook must run before virtual module load`);return pe({apiUrl:d.apiUrl,projectId:d.projectId,projectConfig:g,previewToken:d.previewToken??void 0})}},configureServer(e){if(r.disableLauncher)return;e.middlewares.use(O(()=>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){D.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(`, `);D.info(`fetched config in ${t}ms (${l})`),q(`Features`,n,ge),q(`Experiences`,r,_e),q(`Steps`,i,ve),q(`Fields`,a,ye),q(`Conditions`,o,be),he(`Actions`,s),D.debug(`config size: ${c.toString()} bytes`)}exports.picked=Ae;