@picked/vite-plugin-picked 0.0.1-dev.1775016219245 → 0.0.1-dev.1775623922816
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 +2 -2
- package/dist/esm/index.js +122 -28
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -4
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(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`)}function a(e){return e.replaceAll(`&`,`&`).replaceAll(`"`,`"`).replaceAll(`<`,`<`).replaceAll(`>`,`>`)}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
|
|
861
|
-
`))}function
|
|
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.1-dev.1775623922816`}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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createClientHeaders as e, fetchProject as t } from "@picked/client/plugins/dynamic-experiences";
|
|
2
|
-
//#region \0@oxc-project+runtime@0.
|
|
2
|
+
//#region \0@oxc-project+runtime@0.123.0/helpers/taggedTemplateLiteral.js
|
|
3
3
|
function n(e, t) {
|
|
4
4
|
return t ||= e.slice(0), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } }));
|
|
5
5
|
}
|
|
@@ -139,23 +139,110 @@ function x(e) {
|
|
|
139
139
|
}
|
|
140
140
|
//#endregion
|
|
141
141
|
//#region src/index.ts
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
155
|
+
` ${e}:`,
|
|
151
156
|
"",
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
...
|
|
157
|
+
a,
|
|
158
|
+
o,
|
|
159
|
+
...s,
|
|
155
160
|
""
|
|
156
161
|
].join("\n"));
|
|
157
162
|
}
|
|
158
|
-
function
|
|
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
|
|
253
|
+
function M(e) {
|
|
167
254
|
return new Promise((t) => {
|
|
168
255
|
setTimeout(t, e);
|
|
169
256
|
});
|
|
170
257
|
}
|
|
171
|
-
async function
|
|
258
|
+
async function N(e, n, r) {
|
|
172
259
|
let i = await t(e, n, { headers: r });
|
|
173
|
-
if (i || !
|
|
174
|
-
for (let i = 1; i <=
|
|
175
|
-
b.info(`local API not ready, retrying in ${(
|
|
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
|
|
182
|
-
return "0.0.1-dev.
|
|
268
|
+
function P() {
|
|
269
|
+
return "0.0.1-dev.1775623922816";
|
|
183
270
|
}
|
|
184
|
-
var
|
|
185
|
-
function
|
|
186
|
-
let n = t.apiUrl ??
|
|
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 !==
|
|
191
|
-
let i = e("vite-plugin",
|
|
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.
|
|
198
|
-
|
|
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 {
|
|
317
|
+
export { z as picked };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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;
|
|
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.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.1775623922816",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@picked/client": "0.0.1-dev.
|
|
6
|
+
"@picked/client": "0.0.1-dev.1775623922816"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@repo/eslint-config": "workspace:*",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@types/node": "^22",
|
|
13
13
|
"@vitest/coverage-v8": "^4.1.0",
|
|
14
14
|
"tsx": "^4.20.3",
|
|
15
|
-
"vite": "^8.0.
|
|
15
|
+
"vite": "^8.0.7",
|
|
16
16
|
"vite-plugin-dts": "^4.5.4",
|
|
17
17
|
"vitest": "^4.1.0"
|
|
18
18
|
},
|
|
@@ -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"
|