@picked/vite-plugin-picked 0.0.51-next.1 → 0.0.51-next.11

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,5 +857,5 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
857
857
  </body>
858
858
  </html>`]),o,r)}function i(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function a(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}var o=`picked`,s=`\x1B[0m`;function c(){let e=process.env.NO_COLOR;return e===`1`||e===`true`}function l(e){return t=>c()?t:`${e}${t}${s}`}var u=[`debug`,`info`,`warn`,`error`,`silent`],d={debug:{color:l(`\x1B[2m`),log:console.debug,enabled:!1},info:{color:l(`\x1B[36m`),log:console.log,enabled:!0},warn:{color:l(`\x1B[33m`),log:console.warn,enabled:!0},error:{color:l(`\x1B[31m`),log:console.error,enabled:!0},silent:{log:()=>{},enabled:!1}};function f(e,t){return`${new Date().toLocaleTimeString()} [${t?`${o}:${t}`:o}] ${e}`}function p(e,t,n,r){if(!e.enabled)return;let i=f(t,r);e.log(e.color?e.color(i):i),n!==void 0&&e.log(n)}function m(e){let t=d[e],n=new Set;return Object.assign((e,n,r)=>{p(t,e,n,r)},{once(e,r,i){!t.enabled||n.has(e)||(n.add(e),p(t,e,r,i))}})}function h(e){let t=u.indexOf(e);if(t===-1){p(d.error,`invalid log level: ${e}`);return}for(let[e,n]of u.entries())d[n].enabled=e>=t}var g=l(`\x1B[34m`),_=l(`\x1B[36m`);function v(){let e=[` ${g(`_`)} ${_(`_`)} _ _ _`,`${g(`(_)`)} ${_(`(_)`)} _ __(_)__| |_____ __| |`,` ${g(`_`)} ${g(`_`)} | '_ \\ / _| / / -_) _\` |`,`${g(`(_)`)} ${g(`(_)`)} | .__/_\\__|_\\_\\___\\__,_|`,` |_|
859
859
  `];console.log(e.join(`
860
- `))}var y={banner:v,debug:m(`debug`),info:m(`info`),warn:m(`warn`),error:m(`error`),setLevel:h};function b(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)}}function x(e){if(e.length===0)return;let t=Math.max(4,...e.map(e=>e.name.length)),n=Math.max(2,...e.map(e=>e.id.length)),r=` ${`Name`.padEnd(t)} ${`ID`.padEnd(n)} Status Weight Ver`,i=` ${`─`.repeat(t)} ${`─`.repeat(n)} ──────── ────── ───`,a=e.map(e=>{let r=e.enabled?`\x1B[32m enabled\x1B[0m`:`\x1B[2mdisabled\x1B[0m`,i=`${e.weight.toString()}%`.padStart(6),a=`v${e.version.toString()}`;return` ${e.name.padEnd(t)} ${e.id.padEnd(n)} ${r} ${i} ${a}`});console.log([``,` Features:`,``,r,i,...a,``].join(`
861
- `))}function S(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function C(e){return new Promise(t=>{setTimeout(t,e)})}async function w(t,n,r){let i=await(0,e.fetchProject)(t,n,{headers:r});if(i||!S(t))return i;for(let i=1;i<=O;i++){y.info(`local API not ready, retrying in ${(k/1e3).toString()}s (${i.toString()}/${O.toString()})`),await C(k);let a=await(0,e.fetchProject)(t,n,{headers:r});if(a)return a}return null}function T(){return`0.0.51-next.1`}var E=`https://api.picked.app`,D=`__PICKED_PROJECT_CONFIG__`,O=5,k=2e3;function A(t){let n=t.apiUrl??E,i=[];return{name:`picked`,config:async()=>{y.banner(),y.info(`fetching project config for "${t.projectId}"`),n!==E&&y.warn(`using custom API URL: ${n}`);let r=(0,e.createClientHeaders)(`vite-plugin`,T()),a=performance.now(),o=await w(n,t.projectId,r),s=(performance.now()-a).toFixed(0);if(!o){y.warn(`failed to fetch project config for "${t.projectId}" (${s}ms)`);return}i=o.features;let c=o.features.length,l=o.features.filter(e=>e.enabled).length,u=JSON.stringify(o).length;return y.info(`fetched ${c.toString()} features (${l.toString()} enabled) for "${t.projectId}" in ${s}ms`),x(o.features),y.debug(`config size: ${u.toString()} bytes`),{define:{[D]:JSON.stringify(o)}}},configureServer(e){if(t.disableLauncher)return;e.middlewares.use(b(()=>r(i)));let n=e.printUrls.bind(e);e.printUrls=()=>{let t=e.resolvedUrls?.local[0];if(t){let e=t.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`)}n()}},generateBundle(){t.disableLauncher||this.emitFile({type:`asset`,fileName:`index.html`,source:r(i)})}}}exports.picked=A;
860
+ `))}var y={banner:v,debug:m(`debug`),info:m(`info`),warn:m(`warn`),error:m(`error`),setLevel:h};function b(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 x=5;function S(e){return Array.isArray(e)?e:[]}function C(e,t,n){if(t.length===0)return;if(t.length>x){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(`
861
+ `))}function w(e,t){t.length!==0&&console.log(`\n ${e}: ${t.length.toString()} loaded\n`)}var T=[{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()}`}],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()}],D=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key},{header:`Fields`,value:e=>e.fieldIds.length.toString()}],O=[{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`}],k=[{header:`Name`,value:e=>e.name},{header:`Key`,value:e=>e.key}];function A(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function j(e){return new Promise(t=>{setTimeout(t,e)})}async function M(t,n,r){let i=await(0,e.fetchProject)(t,n,{headers:r});if(i||!A(t))return i;for(let i=1;i<=I;i++){y.info(`local API not ready, retrying in ${(L/1e3).toString()}s (${i.toString()}/${I.toString()})`),await j(L);let a=await(0,e.fetchProject)(t,n,{headers:r});if(a)return a}return null}function N(){return`0.0.51-next.11`}var P=`https://api.picked.app`,F=`__PICKED_PROJECT_CONFIG__`,I=5,L=2e3;function R(t){let n=t.apiUrl??P,i=[];return{name:`picked`,config:async()=>{y.banner(),y.info(`fetching project config for "${t.projectId}"`),n!==P&&y.warn(`using custom API URL: ${n}`);let r=(0,e.createClientHeaders)(`vite-plugin`,N()),a=performance.now(),o=await M(n,t.projectId,r),s=(performance.now()-a).toFixed(0);if(!o){y.warn(`failed to fetch project config for "${t.projectId}" (${s}ms)`);return}i=S(o.features);let c=S(o.experiences),l=S(o.steps),u=S(o.fields),d=S(o.conditions),f=S(o.actions),p=JSON.stringify(o).length,m=[`${i.length.toString()} features`,`${c.length.toString()} experiences`,`${l.length.toString()} steps`,`${u.length.toString()} fields`,`${d.length.toString()} conditions`,`${f.length.toString()} actions`].join(`, `);return y.info(`fetched config for "${t.projectId}" in ${s}ms (${m})`),C(`Features`,i,T),C(`Experiences`,c,E),C(`Steps`,l,D),C(`Fields`,u,O),C(`Conditions`,d,k),w(`Actions`,f),y.debug(`config size: ${p.toString()} bytes`),{define:{[F]:JSON.stringify(o)}}},configureServer(e){if(t.disableLauncher)return;e.middlewares.use(b(()=>r(i)));let n=e.printUrls.bind(e);e.printUrls=()=>{let t=e.resolvedUrls?.local[0];if(t){let e=t.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`)}n()}},generateBundle(){t.disableLauncher||this.emitFile({type:`asset`,fileName:`index.html`,source:r(i)})}}}exports.picked=R;
package/dist/esm/index.js CHANGED
@@ -139,23 +139,110 @@ function x(e) {
139
139
  }
140
140
  //#endregion
141
141
  //#region src/index.ts
142
- function S(e) {
143
- if (e.length === 0) return;
144
- let t = Math.max(4, ...e.map((e) => e.name.length)), n = Math.max(2, ...e.map((e) => e.id.length)), r = ` ${"Name".padEnd(t)} ${"ID".padEnd(n)} Status Weight Ver`, i = ` ${"─".repeat(t)} ${"─".repeat(n)} ──────── ────── ───`, a = e.map((e) => {
145
- let r = e.enabled ? "\x1B[32m enabled\x1B[0m" : "\x1B[2mdisabled\x1B[0m", i = `${e.weight.toString()}%`.padStart(6), a = `v${e.version.toString()}`;
146
- return ` ${e.name.padEnd(t)} ${e.id.padEnd(n)} ${r} ${i} ${a}`;
147
- });
142
+ var S = 5;
143
+ function C(e) {
144
+ return Array.isArray(e) ? e : [];
145
+ }
146
+ function w(e, t, n) {
147
+ if (t.length === 0) return;
148
+ if (t.length > S) {
149
+ console.log(`\n ${e}: ${t.length.toString()} loaded\n`);
150
+ return;
151
+ }
152
+ 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(" ")}`);
148
153
  console.log([
149
154
  "",
150
- " Features:",
155
+ ` ${e}:`,
151
156
  "",
152
- r,
153
- i,
154
- ...a,
157
+ a,
158
+ o,
159
+ ...s,
155
160
  ""
156
161
  ].join("\n"));
157
162
  }
158
- function C(e) {
163
+ function T(e, t) {
164
+ t.length !== 0 && console.log(`\n ${e}: ${t.length.toString()} loaded\n`);
165
+ }
166
+ var E = [
167
+ {
168
+ header: "Name",
169
+ value: (e) => e.name
170
+ },
171
+ {
172
+ header: "ID",
173
+ value: (e) => e.id
174
+ },
175
+ {
176
+ header: "Status",
177
+ value: (e) => e.enabled ? "\x1B[32m enabled\x1B[0m" : "\x1B[2mdisabled\x1B[0m"
178
+ },
179
+ {
180
+ header: "Weight",
181
+ value: (e) => `${e.weight.toString()}%`.padStart(6)
182
+ },
183
+ {
184
+ header: "Ver",
185
+ value: (e) => `v${e.version.toString()}`
186
+ }
187
+ ], D = [
188
+ {
189
+ header: "Name",
190
+ value: (e) => e.name
191
+ },
192
+ {
193
+ header: "Key",
194
+ value: (e) => e.key
195
+ },
196
+ {
197
+ header: "Component",
198
+ value: (e) => e.componentName
199
+ },
200
+ {
201
+ header: "Nodes",
202
+ value: (e) => e.nodes.length.toString()
203
+ },
204
+ {
205
+ header: "Targets",
206
+ value: (e) => e.targets.length.toString()
207
+ }
208
+ ], O = [
209
+ {
210
+ header: "Name",
211
+ value: (e) => e.name
212
+ },
213
+ {
214
+ header: "Key",
215
+ value: (e) => e.key
216
+ },
217
+ {
218
+ header: "Fields",
219
+ value: (e) => e.fieldIds.length.toString()
220
+ }
221
+ ], k = [
222
+ {
223
+ header: "Name",
224
+ value: (e) => e.name
225
+ },
226
+ {
227
+ header: "Key",
228
+ value: (e) => e.key
229
+ },
230
+ {
231
+ header: "Type",
232
+ value: (e) => e.type
233
+ },
234
+ {
235
+ header: "Required",
236
+ value: (e) => e.required ? "yes" : "no"
237
+ }
238
+ ], A = [{
239
+ header: "Name",
240
+ value: (e) => e.name
241
+ }, {
242
+ header: "Key",
243
+ value: (e) => e.key
244
+ }];
245
+ function j(e) {
159
246
  try {
160
247
  let t = new URL(e).hostname;
161
248
  return t === "localhost" || t === "127.0.0.1" || t === "::1";
@@ -163,39 +250,46 @@ function C(e) {
163
250
  return !1;
164
251
  }
165
252
  }
166
- function w(e) {
253
+ function M(e) {
167
254
  return new Promise((t) => {
168
255
  setTimeout(t, e);
169
256
  });
170
257
  }
171
- async function T(e, n, r) {
258
+ async function N(e, n, r) {
172
259
  let i = await t(e, n, { headers: r });
173
- if (i || !C(e)) return i;
174
- for (let i = 1; i <= k; i++) {
175
- b.info(`local API not ready, retrying in ${(A / 1e3).toString()}s (${i.toString()}/${k.toString()})`), await w(A);
260
+ if (i || !j(e)) return i;
261
+ for (let i = 1; i <= L; i++) {
262
+ b.info(`local API not ready, retrying in ${(R / 1e3).toString()}s (${i.toString()}/${L.toString()})`), await M(R);
176
263
  let a = await t(e, n, { headers: r });
177
264
  if (a) return a;
178
265
  }
179
266
  return null;
180
267
  }
181
- function E() {
182
- return "0.0.51-next.1";
268
+ function P() {
269
+ return "0.0.51-next.11";
183
270
  }
184
- var D = "https://api.picked.app", O = "__PICKED_PROJECT_CONFIG__", k = 5, A = 2e3;
185
- function j(t) {
186
- let n = t.apiUrl ?? D, r = [];
271
+ var F = "https://api.picked.app", I = "__PICKED_PROJECT_CONFIG__", L = 5, R = 2e3;
272
+ function z(t) {
273
+ let n = t.apiUrl ?? F, r = [];
187
274
  return {
188
275
  name: "picked",
189
276
  config: async () => {
190
- b.banner(), b.info(`fetching project config for "${t.projectId}"`), n !== D && b.warn(`using custom API URL: ${n}`);
191
- let i = e("vite-plugin", E()), a = performance.now(), o = await T(n, t.projectId, i), s = (performance.now() - a).toFixed(0);
277
+ b.banner(), b.info(`fetching project config for "${t.projectId}"`), n !== F && b.warn(`using custom API URL: ${n}`);
278
+ let i = e("vite-plugin", P()), a = performance.now(), o = await N(n, t.projectId, i), s = (performance.now() - a).toFixed(0);
192
279
  if (!o) {
193
280
  b.warn(`failed to fetch project config for "${t.projectId}" (${s}ms)`);
194
281
  return;
195
282
  }
196
- r = o.features;
197
- let c = o.features.length, l = o.features.filter((e) => e.enabled).length, u = JSON.stringify(o).length;
198
- return b.info(`fetched ${c.toString()} features (${l.toString()} enabled) for "${t.projectId}" in ${s}ms`), S(o.features), b.debug(`config size: ${u.toString()} bytes`), { define: { [O]: JSON.stringify(o) } };
283
+ r = C(o.features);
284
+ let c = C(o.experiences), l = C(o.steps), u = C(o.fields), d = C(o.conditions), f = C(o.actions), p = JSON.stringify(o).length, m = [
285
+ `${r.length.toString()} features`,
286
+ `${c.length.toString()} experiences`,
287
+ `${l.length.toString()} steps`,
288
+ `${u.length.toString()} fields`,
289
+ `${d.length.toString()} conditions`,
290
+ `${f.length.toString()} actions`
291
+ ].join(", ");
292
+ return b.info(`fetched config for "${t.projectId}" in ${s}ms (${m})`), w("Features", r, E), w("Experiences", c, D), w("Steps", l, O), w("Fields", u, k), w("Conditions", d, A), T("Actions", f), b.debug(`config size: ${p.toString()} bytes`), { define: { [I]: JSON.stringify(o) } };
199
293
  },
200
294
  configureServer(e) {
201
295
  if (t.disableLauncher) return;
@@ -220,4 +314,4 @@ function j(t) {
220
314
  };
221
315
  }
222
316
  //#endregion
223
- export { j as picked };
317
+ export { z as picked };
@@ -1,8 +1,8 @@
1
1
  import { Plugin } from 'vite';
2
2
  export interface PickedPluginOptions {
3
- /** The Picked project ID */
3
+ /** The Picked project ID. */
4
4
  projectId: string;
5
- /** Custom API URL (defaults to https://api.picked.app) */
5
+ /** Custom API URL (defaults to https://api.picked.app). */
6
6
  apiUrl?: string;
7
7
  /** Disable the launcher HTML page (dev server + build output). Defaults to false. */
8
8
  disableLauncher?: boolean;
@@ -14,6 +14,8 @@ export interface PickedPluginOptions {
14
14
  * When a preview token is present at runtime, the SDK will still
15
15
  * fetch fresh config from the API, ignoring the build-time value.
16
16
  *
17
+ * @param {PickedPluginOptions} options - Plugin configuration.
18
+ * @returns {Plugin} A Vite plugin instance.
17
19
  * @example
18
20
  * ```typescript
19
21
  * import { picked } from '@picked/vite-plugin-picked'
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AA+ElC,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyE3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAmNlC,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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAwF3D"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@picked/vite-plugin-picked",
3
3
  "description": "Vite plugin for build-time config injection",
4
- "version": "0.0.51-next.1",
4
+ "version": "0.0.51-next.11",
5
5
  "dependencies": {
6
- "@picked/client": "0.0.51-next.1"
6
+ "@picked/client": "0.0.51-next.11"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@repo/eslint-config": "workspace:*",
@@ -38,7 +38,8 @@
38
38
  "ignoreDependencies": [
39
39
  "@picked/client",
40
40
  "@repo/eslint-config",
41
- "@repo/typescript-config"
41
+ "@repo/typescript-config",
42
+ "@vitest/coverage-v8"
42
43
  ],
43
44
  "ignore": [
44
45
  "eslint.config.js"