@picked/client 0.0.7-next.3 → 0.0.7

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.
Files changed (29) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/plugins/create-experience/index.js +1 -1
  3. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  4. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  5. package/dist/cjs/server/index.js +1 -1
  6. package/dist/esm/index.js +291 -323
  7. package/dist/esm/plugins/create-experience/index.js +67 -75
  8. package/dist/esm/plugins/responses-browser-storage/index.js +15 -16
  9. package/dist/esm/plugins/responses-indexeddb/index.js +21 -24
  10. package/dist/esm/server/index.js +1 -1
  11. package/dist/{experience-instance-C1Ky25uw.js → experience-instance-DYZovD6a.js} +16 -17
  12. package/dist/{experience-instance-DNI5sbjx.cjs → experience-instance-DwO_yZK0.cjs} +1 -1
  13. package/dist/types/entities/experience-instance/experience-instance.d.ts +0 -3
  14. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  15. package/dist/types/entities/field/field.d.ts +19 -27
  16. package/dist/types/entities/field/field.d.ts.map +1 -1
  17. package/dist/types/entities/predicate/predicate.d.ts +1 -1
  18. package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
  19. package/dist/types/entities/response/response.d.ts +0 -8
  20. package/dist/types/entities/response/response.d.ts.map +1 -1
  21. package/dist/types/exports.d.ts +0 -2
  22. package/dist/types/exports.d.ts.map +1 -1
  23. package/dist/types/picked.d.ts +6 -12
  24. package/dist/types/picked.d.ts.map +1 -1
  25. package/dist/types/plugins/create-experience/create-experience.d.ts +6 -17
  26. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/types/utils/get-step-fields.d.ts +0 -4
  29. package/dist/types/utils/get-step-fields.d.ts.map +0 -1
package/dist/esm/index.js CHANGED
@@ -1,24 +1,24 @@
1
- var W = Object.defineProperty;
2
- var G = (t, e, s) => e in t ? W(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;
3
- var y = (t, e, s) => G(t, typeof e != "symbol" ? e + "" : e, s);
4
- import { createDomain as F, createApi as b, createEffect as D, attach as J, sample as P, combine as A, createEvent as C } from "effector";
5
- import { createFactory as k, invoke as x } from "@withease/factories";
6
- import { g as z, t as Y, c as Q, e as R, i as X, a as Z, b as ee, d as te } from "../experience-instance-C1Ky25uw.js";
7
- import { f as it } from "../experience-instance-C1Ky25uw.js";
8
- import { l as v } from "../logger-C9a75KZn.js";
9
- import { c as B, s as j, l as O } from "../storage-D87xFySf.js";
10
- import { a as ct } from "../storage-D87xFySf.js";
11
- import { g as re } from "../id-BW-g3y32.js";
12
- import { i as se } from "../object-JwZ58NOH.js";
13
- import { s as _, a as ne, b as oe } from "../supports-yKVnaaMQ.js";
14
- import { g as lt, d as dt, i as pt, e as gt, c as ft, f as mt, h as yt, j as ht } from "../supports-yKVnaaMQ.js";
15
- const U = F("experience"), ie = k(
1
+ var q = Object.defineProperty;
2
+ var W = (t, e, s) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;
3
+ var m = (t, e, s) => W(t, typeof e != "symbol" ? e + "" : e, s);
4
+ import { createDomain as x, createApi as b, createEffect as O, attach as G, sample as E, combine as R, createEvent as A } from "effector";
5
+ import { createFactory as v, invoke as k } from "@withease/factories";
6
+ import { g as z, t as J, c as Y, e as D, i as Q, a as X, b as Z, d as ee } from "../experience-instance-DYZovD6a.js";
7
+ import { f as st } from "../experience-instance-DYZovD6a.js";
8
+ import { l as w } from "../logger-C9a75KZn.js";
9
+ import { c as j, s as B, l as C } from "../storage-D87xFySf.js";
10
+ import { a as ot } from "../storage-D87xFySf.js";
11
+ import { g as te } from "../id-BW-g3y32.js";
12
+ import { i as re } from "../object-JwZ58NOH.js";
13
+ import { s as _, a as se, b as ne } from "../supports-yKVnaaMQ.js";
14
+ import { g as at, d as ct, i as ut, e as lt, c as dt, f as pt, h as gt, j as ft } from "../supports-yKVnaaMQ.js";
15
+ const U = x("experience"), oe = v(
16
16
  ({ client: t, experience: e }) => {
17
17
  const s = U.store(e), o = b(s, {
18
- merge(n, d) {
18
+ merge(n, g) {
19
19
  return {
20
20
  ...n,
21
- ...d.experience
21
+ ...g.experience
22
22
  };
23
23
  }
24
24
  }), i = s.map((n) => ({
@@ -26,8 +26,8 @@ const U = F("experience"), ie = k(
26
26
  name: n.name,
27
27
  decisionLogic: n.decide,
28
28
  targetSelectors: n.targets
29
- })), l = t.components.listStore.map(
30
- (n) => n.find((d) => d.name === `experience:${e.id}`) || n.find((d) => d.name === "experience"),
29
+ })), d = t.components.listStore.map(
30
+ (n) => n.find((g) => g.name === `experience:${e.id}`) || n.find((g) => g.name === "experience"),
31
31
  { skipVoid: !1 }
32
32
  ), r = s.map((n) => ({
33
33
  steps: n.steps,
@@ -39,15 +39,15 @@ const U = F("experience"), ie = k(
39
39
  id: e.id,
40
40
  configStore: i,
41
41
  treeStore: r,
42
- componentStore: l,
42
+ componentStore: d,
43
43
  merge: o.merge
44
44
  };
45
45
  }
46
46
  );
47
- function ae(t) {
48
- return x(ie, t);
47
+ function ie(t) {
48
+ return k(oe, t);
49
49
  }
50
- const ce = k(({ client: t }) => {
50
+ const ae = v(({ client: t }) => {
51
51
  const e = U.store({}), s = b(e, {
52
52
  register(r, n) {
53
53
  return {
@@ -62,47 +62,47 @@ const ce = k(({ client: t }) => {
62
62
  n.merge({ experience: r, strategy: "override" });
63
63
  return;
64
64
  }
65
- const d = ae({ client: t, experience: r });
66
- s.register(d);
65
+ const g = ie({ client: t, experience: r });
66
+ s.register(g);
67
67
  }
68
68
  const i = e.map((r) => Object.values(r));
69
- function l(r) {
69
+ function d(r) {
70
70
  return e.map((n) => n[r], { skipVoid: !1 });
71
71
  }
72
72
  return {
73
73
  register: o,
74
- getById: l,
74
+ getById: d,
75
75
  listStore: i
76
76
  };
77
77
  });
78
- function ue(t) {
79
- return x(ce, t);
78
+ function ce(t) {
79
+ return k(ae, t);
80
80
  }
81
- const le = (t, e) => {
81
+ const ue = (t, e) => {
82
82
  e.register(t);
83
83
  }, H = (t, e) => {
84
84
  const { targetSelectors: s } = e.configStore.getState(), o = z(s, e.id);
85
85
  o.forEach(
86
- ({ elements: l }) => l.forEach((r) => Y(r, e.id))
87
- ), Q(o, e.id).forEach((l) => {
88
- t.experienceInstances.spawn(e, l);
86
+ ({ elements: d }) => d.forEach((r) => J(r, e.id))
87
+ ), Y(o, e.id).forEach((d) => {
88
+ t.experienceInstances.spawn(e, d);
89
89
  });
90
- }, T = async (t) => {
90
+ }, V = async (t) => {
91
91
  await Promise.all(
92
92
  t.experiences.listStore.getState().map(async (e) => {
93
- await de(t, e) && H(t, e);
93
+ await le(t, e) && H(t, e);
94
94
  })
95
95
  );
96
- }, de = async (t, e) => {
96
+ }, le = async (t, e) => {
97
97
  const { type: s, decisionLogic: o, targetSelectors: i } = e.configStore.getState();
98
- return z(i, e.id).length < 1 ? !1 : s === "funnel" ? o ? await R(t, o) === !0 : !1 : i.length === 0 ? !1 : X(o) ? await R(t, o) === !0 : !0;
99
- }, pe = (t, e, s) => {
98
+ return z(i, e.id).length < 1 ? !1 : s === "funnel" ? o ? await D(t, o) === !0 : !1 : i.length === 0 ? !1 : Q(o) ? await D(t, o) === !0 : !0;
99
+ }, de = (t, e, s) => {
100
100
  const o = e.name, i = e.setup(t);
101
101
  if (i) {
102
- const l = s[o] ?? {};
103
- s[o] = Object.freeze({ ...l, ...i });
102
+ const d = s[o] ?? {};
103
+ s[o] = Object.freeze({ ...d, ...i });
104
104
  }
105
- }, ge = F("component"), fe = k(
105
+ }, pe = x("component"), ge = v(
106
106
  ({ client: t, component: e, name: s }) => {
107
107
  const o = t.frameworks.getByName(e.frameworkName);
108
108
  return {
@@ -112,11 +112,11 @@ const le = (t, e) => {
112
112
  };
113
113
  }
114
114
  );
115
- function me(t) {
116
- return x(fe, t);
115
+ function fe(t) {
116
+ return k(ge, t);
117
117
  }
118
- const ye = k(({ client: t }) => {
119
- const e = ge.store({}), s = b(e, {
118
+ const me = v(({ client: t }) => {
119
+ const e = pe.store({}), s = b(e, {
120
120
  register(r, n) {
121
121
  return {
122
122
  ...r,
@@ -125,30 +125,30 @@ const ye = k(({ client: t }) => {
125
125
  }
126
126
  });
127
127
  function o(r, n) {
128
- e.getState()[r] && v(
128
+ e.getState()[r] && w(
129
129
  "warn",
130
130
  `Component '${r}' already registered. Registering again will override the previous registration.`
131
131
  );
132
- const h = me({ client: t, name: r, component: n });
132
+ const h = fe({ client: t, name: r, component: n });
133
133
  s.register(h);
134
134
  }
135
135
  const i = e.map((r) => Object.values(r));
136
- function l(r) {
136
+ function d(r) {
137
137
  return e.map((n) => n[r], { skipVoid: !1 });
138
138
  }
139
139
  return {
140
140
  register: o,
141
- getByName: l,
141
+ getByName: d,
142
142
  listStore: i
143
143
  };
144
144
  });
145
- function he(t) {
146
- return x(ye, t);
145
+ function ye(t) {
146
+ return k(me, t);
147
147
  }
148
- const V = (t, e, s) => {
148
+ const M = (t, e, s) => {
149
149
  s.register(t, e);
150
- }, Se = F("framework"), we = k(({ client: t }) => {
151
- const e = Se.store({}), s = b(e, {
150
+ }, he = x("framework"), Se = v(({ client: t }) => {
151
+ const e = he.store({}), s = b(e, {
152
152
  register(r, n) {
153
153
  return {
154
154
  ...r,
@@ -157,49 +157,49 @@ const V = (t, e, s) => {
157
157
  }
158
158
  });
159
159
  function o(r, n) {
160
- e.getState()[r] && v(
160
+ e.getState()[r] && w(
161
161
  "warn",
162
162
  `Framework '${r}' already registered. Registering again will override the previous registration.`
163
163
  ), s.register({ name: r, framework: n });
164
164
  }
165
165
  const i = e.map((r) => Object.values(r));
166
- function l(r) {
166
+ function d(r) {
167
167
  return e.map((n) => n[r], { skipVoid: !1 });
168
168
  }
169
169
  return {
170
170
  register: o,
171
- getByName: l,
171
+ getByName: d,
172
172
  listStore: i
173
173
  };
174
174
  });
175
- function ve(t) {
176
- return x(we, t);
175
+ function we(t) {
176
+ return k(Se, t);
177
177
  }
178
- const ke = (t, e) => {
178
+ const ve = (t, e) => {
179
179
  e.register(t.name, t);
180
- }, xe = 6e3, M = B("last_ping", "global"), Fe = (t) => `${t}/api/v1/ping`, be = async (t) => {
180
+ }, ke = 6e3, N = j("last_ping", "global"), xe = (t) => `${t}/api/v1/ping`, be = async (t) => {
181
181
  try {
182
- const e = Date.now(), s = localStorage.getItem(M);
183
- if (s && e - parseInt(s) < xe)
182
+ const e = Date.now(), s = localStorage.getItem(N);
183
+ if (s && e - parseInt(s) < ke)
184
184
  return !0;
185
- const o = Fe(t.apiUrl), i = {
185
+ const o = xe(t.apiUrl), i = {
186
186
  projectId: t.projectId,
187
187
  path: window.location.pathname
188
- }, l = JSON.stringify(i), r = {
188
+ }, d = JSON.stringify(i), r = {
189
189
  "Content-Type": "application/json"
190
- }, n = document.getElementById("picked_script"), d = n == null ? void 0 : n.dataset.verceltoken;
191
- d && (r["x-vercel-protection-bypass"] = d);
192
- const c = (await fetch(o, {
190
+ }, n = document.getElementById("picked_script"), g = n == null ? void 0 : n.dataset.verceltoken;
191
+ g && (r["x-vercel-protection-bypass"] = g);
192
+ const u = (await fetch(o, {
193
193
  method: "POST",
194
194
  headers: r,
195
- body: l
195
+ body: d
196
196
  })).ok;
197
- return c && localStorage.setItem(M, e.toString()), c;
197
+ return u && localStorage.setItem(N, e.toString()), u;
198
198
  } catch (e) {
199
- return v("error", e), !1;
199
+ return w("error", e), !1;
200
200
  }
201
201
  };
202
- function Ie(t) {
202
+ function Fe(t) {
203
203
  const e = typeof window < "u", s = {
204
204
  client: t,
205
205
  responses: t.responses.listStore.getState(),
@@ -211,8 +211,8 @@ function Ie(t) {
211
211
  };
212
212
  return Object.freeze(s);
213
213
  }
214
- const Ee = F("predicate"), Pe = k(({ client: t }) => {
215
- const e = Ee.store({}), s = b(e, {
214
+ const Ie = x("predicate"), Ee = v(({ client: t }) => {
215
+ const e = Ie.store({}), s = b(e, {
216
216
  register(r, n) {
217
217
  return {
218
218
  ...r,
@@ -224,117 +224,117 @@ const Ee = F("predicate"), Pe = k(({ client: t }) => {
224
224
  }
225
225
  });
226
226
  function o(r, n) {
227
- e.getState()[r] && v(
227
+ e.getState()[r] && w(
228
228
  "warn",
229
229
  `Predicate '${r}' already registered. Registering again will override the previous registration.`
230
230
  ), s.register(Object.freeze({ name: r, predicate: n }));
231
231
  }
232
232
  const i = e.map((r) => Object.values(r));
233
- function l(r) {
233
+ function d(r) {
234
234
  return e.map((n) => n[r], { skipVoid: !1 });
235
235
  }
236
236
  return {
237
237
  register: o,
238
- getByName: l,
238
+ getByName: d,
239
239
  listStore: i
240
240
  };
241
241
  });
242
- function Re(t) {
243
- return x(Pe, t);
242
+ function Pe(t) {
243
+ return k(Ee, t);
244
244
  }
245
- const Be = (t, e, s) => {
245
+ const je = (t, e, s) => {
246
246
  s.register(t, e);
247
- }, N = F("feature"), je = k(() => {
248
- const t = N.store({}), e = N.store([]), s = b(t, {
249
- register(c, f) {
247
+ }, T = x("feature"), Be = v(() => {
248
+ const t = T.store({}), e = T.store([]), s = b(t, {
249
+ register(u, c) {
250
250
  return {
251
- ...c,
252
- [f.id]: f.feature
251
+ ...u,
252
+ [c.id]: c.feature
253
253
  };
254
254
  }
255
255
  });
256
- function o(c, f) {
257
- t.getState()[c] && v(
256
+ function o(u, c) {
257
+ t.getState()[u] && w(
258
258
  "warn",
259
- `Feature '${c}' already registered. Registering again will override the previous registration.`
259
+ `Feature '${u}' already registered. Registering again will override the previous registration.`
260
260
  );
261
261
  const p = {
262
- id: c,
262
+ id: u,
263
263
  feature: {
264
- ...f,
265
- id: c
264
+ ...c,
265
+ id: u
266
266
  }
267
267
  };
268
268
  s.register(
269
269
  Object.freeze({
270
- id: c,
270
+ id: u,
271
271
  feature: p
272
272
  })
273
273
  );
274
274
  }
275
- const i = D(
275
+ const i = O(
276
276
  async ({
277
- id: c,
278
- key: f,
277
+ id: u,
278
+ key: c,
279
279
  storage: a = "local"
280
280
  }) => {
281
- const p = B(`feature:${c}:${f}`, "global"), m = (a === "session" ? j : O).get(p).boolean();
282
- if (m !== null)
283
- return { id: c, bucket: m };
281
+ const p = j(`feature:${u}:${c}`, "global"), l = (a === "session" ? B : C).get(p).boolean();
282
+ if (l !== null)
283
+ return { id: u, bucket: l };
284
284
  }
285
- ), l = D((c) => {
286
- if (!c)
285
+ ), d = O((u) => {
286
+ if (!u)
287
287
  return null;
288
- const f = B(`feature:${c.id}:${c.key}`, "global");
289
- (c.storage === "session" ? j : O).set(f, c.bucket);
290
- }), r = /* @__PURE__ */ new Map(), n = J({
288
+ const c = j(`feature:${u.id}:${u.key}`, "global");
289
+ (u.storage === "session" ? B : C).set(c, u.bucket);
290
+ }), r = /* @__PURE__ */ new Map(), n = G({
291
291
  source: { allFeaturesStore: t, resolvedFeaturesStore: e },
292
- effect: async ({ allFeaturesStore: c, resolvedFeaturesStore: f }, { id: a, decide: p, key: g }) => {
293
- const m = f.find((I) => I.id === a);
294
- if (m)
295
- return m;
296
- const u = c[a];
297
- if (!u)
292
+ effect: async ({ allFeaturesStore: u, resolvedFeaturesStore: c }, { id: a, decide: p, key: f }) => {
293
+ const l = c.find(($) => $.id === a);
294
+ if (l)
295
+ return l;
296
+ const y = u[a];
297
+ if (!y)
298
298
  throw new Error(`Feature with id '${a}' not found`);
299
- const S = r.get(`${a}:${g}`);
299
+ const S = r.get(`${a}:${f}`);
300
300
  if (S) {
301
- const I = await S;
302
- return { id: u.id, bucket: I, storage: u.feature.storage };
301
+ const $ = await S;
302
+ return { id: y.id, bucket: $, storage: y.feature.storage };
303
303
  }
304
- const w = p();
305
- r.set(`${a}:${g}`, w);
306
- const $ = await w;
307
- return { id: u.id, bucket: $, storage: u.feature.storage };
304
+ const P = p();
305
+ r.set(`${a}:${f}`, P);
306
+ const F = await P;
307
+ return { id: y.id, bucket: F, storage: y.feature.storage };
308
308
  }
309
309
  });
310
- P({
310
+ E({
311
311
  clock: s.register,
312
- fn: (c) => {
313
- const { id: f, feature: a } = c;
314
- return { id: f, key: a.feature.key, storage: a.feature.storage };
312
+ fn: (u) => {
313
+ const { id: c, feature: a } = u;
314
+ return { id: c, key: a.feature.key, storage: a.feature.storage };
315
315
  },
316
316
  target: i
317
- }), P({
317
+ }), E({
318
318
  source: e,
319
319
  clock: [i.doneData, n.doneData],
320
- fn: (c, f) => !f || c.some((a) => a.id === f.id) ? c : [...c, f],
320
+ fn: (u, c) => !c || u.some((a) => a.id === c.id) ? u : [...u, c],
321
321
  target: e
322
- }), P({
322
+ }), E({
323
323
  source: t,
324
324
  clock: n.doneData,
325
- fn: (c, f) => {
326
- var u;
327
- const { id: a, bucket: p, storage: g } = f, m = (u = c[a]) == null ? void 0 : u.feature.key;
328
- return m ? { key: m, id: a, bucket: p, storage: g } : null;
325
+ fn: (u, c) => {
326
+ var y;
327
+ const { id: a, bucket: p, storage: f } = c, l = (y = u[a]) == null ? void 0 : y.feature.key;
328
+ return l ? { key: l, id: a, bucket: p, storage: f } : null;
329
329
  },
330
- target: l
330
+ target: d
331
331
  });
332
- const d = A({ allFeaturesStore: t, resolvedFeaturesStore: e }).map(
332
+ const g = R({ allFeaturesStore: t, resolvedFeaturesStore: e }).map(
333
333
  ({
334
- allFeaturesStore: c,
335
- resolvedFeaturesStore: f
336
- }) => Object.values(c).map((a) => {
337
- const p = f.find((g) => g.id === a.id);
334
+ allFeaturesStore: u,
335
+ resolvedFeaturesStore: c
336
+ }) => Object.values(u).map((a) => {
337
+ const p = c.find((f) => f.id === a.id);
338
338
  return p ? {
339
339
  id: a.id,
340
340
  name: a.feature.name,
@@ -350,32 +350,32 @@ const Be = (t, e, s) => {
350
350
  };
351
351
  })
352
352
  );
353
- function h(c) {
354
- return t.map((f) => f[c], { skipVoid: !1 });
353
+ function h(u) {
354
+ return t.map((c) => c[u], { skipVoid: !1 });
355
355
  }
356
356
  return {
357
357
  register: o,
358
358
  getByName: h,
359
- listStore: d
359
+ listStore: g
360
360
  };
361
361
  });
362
362
  function $e() {
363
- return x(je);
363
+ return k(Be);
364
364
  }
365
- const Ae = (t, e, s) => {
365
+ const Re = (t, e, s) => {
366
366
  s.register(t, e);
367
- }, E = F("history");
367
+ }, I = x("history");
368
368
  function L(t, e) {
369
369
  return {
370
370
  // eslint-disable-next-line sonarjs/pseudo-random
371
- id: re(`history-entry-${Date.now()}-${Math.random()}}`),
371
+ id: te(`history-entry-${Date.now()}-${Math.random()}}`),
372
372
  node: e,
373
373
  at: Date.now(),
374
374
  experienceId: t
375
375
  };
376
376
  }
377
- const Ce = k(() => {
378
- const t = E.store({ entries: [] }), e = E.event(), s = E.event(), o = E.event(), i = E.event();
377
+ const Ae = v(() => {
378
+ const t = I.store({ entries: [] }), e = I.event(), s = I.event(), o = I.event(), i = I.event();
379
379
  t.on(e, (r, n) => ({
380
380
  entries: [...r.entries, L(n.experienceId, n.node)]
381
381
  })), t.on(s, (r, n) => ({
@@ -384,22 +384,22 @@ const Ce = k(() => {
384
384
  L(n.experienceId, n.node)
385
385
  ]
386
386
  })), t.on(i, (r, n) => n);
387
- function l(r, n) {
388
- const d = { lastStepIndex: -1, secondLastStepIndex: -1 };
387
+ function d(r, n) {
388
+ const g = { lastStepIndex: -1, secondLastStepIndex: -1 };
389
389
  for (let h = r.length - 1; h >= 0; h--) {
390
- const c = r[h], f = c == null ? void 0 : c.node;
391
- if (!(!f || !Z(f)) && !(n && (c == null ? void 0 : c.experienceId) !== n))
392
- if (d.lastStepIndex === -1)
393
- d.lastStepIndex = h;
390
+ const u = r[h], c = u == null ? void 0 : u.node;
391
+ if (!(!c || !X(c)) && !(n && (u == null ? void 0 : u.experienceId) !== n))
392
+ if (g.lastStepIndex === -1)
393
+ g.lastStepIndex = h;
394
394
  else {
395
- d.secondLastStepIndex = h;
395
+ g.secondLastStepIndex = h;
396
396
  break;
397
397
  }
398
398
  }
399
- return d;
399
+ return g;
400
400
  }
401
401
  return t.on(o, (r, n) => {
402
- const { secondLastStepIndex: d } = l(r.entries, n.experienceId), h = d !== -1 ? r.entries.slice(0, d + 1) : r.entries;
402
+ const { secondLastStepIndex: g } = d(r.entries, n.experienceId), h = g !== -1 ? r.entries.slice(0, g + 1) : r.entries;
403
403
  return {
404
404
  ...r,
405
405
  entries: h
@@ -413,10 +413,10 @@ const Ce = k(() => {
413
413
  };
414
414
  });
415
415
  function De() {
416
- return x(Ce);
416
+ return k(Ae);
417
417
  }
418
- const Oe = () => C(), Te = F("field"), Ve = k(() => {
419
- const t = Te.store({}), e = b(t, {
418
+ const Oe = () => A(), Ce = x("field"), Ve = v(() => {
419
+ const t = Ce.store({}), e = b(t, {
420
420
  register(r, n) {
421
421
  return {
422
422
  ...r,
@@ -431,156 +431,147 @@ const Oe = () => C(), Te = F("field"), Ve = k(() => {
431
431
  function i(r) {
432
432
  return t.map((n) => n[r] || null);
433
433
  }
434
- function l(r) {
435
- return t.map((n) => Object.values(n).find((d) => d.name === r) || null);
434
+ function d(r) {
435
+ return t.map((n) => Object.values(n).find((g) => g.name === r) || null);
436
436
  }
437
437
  return {
438
438
  register: s,
439
439
  getById: i,
440
440
  listStore: o,
441
- getByName: l
441
+ getByName: d
442
442
  };
443
443
  });
444
444
  function Me() {
445
- return x(Ve);
445
+ return k(Ve);
446
446
  }
447
447
  const Ne = (t, e) => {
448
448
  e.register(t);
449
- }, Le = F("response"), ze = k(({ client: t }) => {
450
- const e = Le.store({}), s = C(), o = C(), i = b(e, {
451
- register(a, p) {
452
- return {
453
- ...a,
454
- [p.fieldId]: p.response
455
- };
456
- },
457
- registerBatch(a, p) {
449
+ }, Te = x("response"), Le = v(({ client: t }) => {
450
+ const e = Te.store({}), s = A(), o = A(), i = b(e, {
451
+ register(c, a) {
458
452
  return {
459
- ...a,
460
- ...p
453
+ ...c,
454
+ [a.fieldId]: a.response
461
455
  };
462
456
  },
463
- clear(a, p) {
464
- const { [p]: g, ...m } = a;
465
- return m;
457
+ clear(c, a) {
458
+ const { [a]: p, ...f } = c;
459
+ return f;
466
460
  },
467
461
  clearAll() {
468
462
  return {};
469
463
  }
470
464
  });
471
- function l(a, p) {
472
- i.register({ fieldId: a, response: p });
465
+ function d(c, a) {
466
+ i.register({ fieldId: c, response: a });
473
467
  }
474
- async function r(a) {
475
- const p = [];
468
+ async function r(c) {
469
+ const a = [];
476
470
  return await Promise.allSettled(
477
- Object.entries(a).map(async ([g, m]) => {
478
- let u = m;
479
- const S = t.fields.getById(g).getState();
480
- if (!S) {
481
- p.push({
482
- fieldId: g,
483
- userMessage: `Field '${g}' not found`,
484
- systemMessage: `No field with ID '${g}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
485
- value: u
471
+ Object.entries(c).map(async ([p, f]) => {
472
+ let l = f;
473
+ const y = t.fields.getById(p).getState();
474
+ if (!y) {
475
+ a.push({
476
+ fieldId: p,
477
+ userMessage: `Field '${p}' not found`,
478
+ systemMessage: `No field with ID '${p}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
479
+ value: l
486
480
  });
487
481
  return;
488
482
  }
489
- if (S.multiple && (typeof u == "string" || typeof u == "number" || typeof u == "boolean") && (u = [u]), S.validation && !se(S.validation)) {
490
- const w = await R(t, S.validation, {
491
- $input: u
483
+ if (y.multiple && (typeof l == "string" || typeof l == "number" || typeof l == "boolean") && (l = [l]), !re(y.validation)) {
484
+ const S = await D(t, y.validation, {
485
+ $input: l
492
486
  });
493
- if (typeof w == "string") {
494
- p.push({
495
- fieldId: g,
496
- userMessage: w,
497
- systemMessage: `Field validation resulted in an error: ${w}.`,
498
- value: u
487
+ if (typeof S == "string") {
488
+ a.push({
489
+ fieldId: p,
490
+ userMessage: S,
491
+ systemMessage: `Field validation resulted in an error: ${S}.`,
492
+ value: l
499
493
  });
500
494
  return;
501
495
  }
502
- if (w === !1) {
503
- p.push({
504
- fieldId: g,
496
+ if (S === !1) {
497
+ a.push({
498
+ fieldId: p,
505
499
  userMessage: "This field is invalid",
506
500
  systemMessage: "Field validation resulted in an unspecified error.",
507
- value: u
501
+ value: l
508
502
  });
509
503
  return;
510
504
  }
511
505
  }
512
- if (S.required && (typeof u > "u" || u === null || u === "" || Array.isArray(u) && !u.length)) {
513
- p.push({
514
- fieldId: g,
506
+ if (y.required && (typeof l > "u" || l === null || l === "" || Array.isArray(l) && !l.length)) {
507
+ a.push({
508
+ fieldId: p,
515
509
  userMessage: "This field is required",
516
510
  systemMessage: "Field is required.",
517
- value: u
511
+ value: l
518
512
  });
519
513
  return;
520
514
  }
521
- if (!S.multiple && Array.isArray(u) && u.length > 1) {
522
- p.push({
523
- fieldId: g,
515
+ if (!y.multiple && Array.isArray(l) && l.length > 1) {
516
+ a.push({
517
+ fieldId: p,
524
518
  userMessage: "This field expects a single response",
525
519
  systemMessage: "Field expects a single response.",
526
- value: u
520
+ value: l
527
521
  });
528
522
  return;
529
523
  }
530
- if (S.options) {
531
- const w = S.options.map((I) => I.value), $ = Array.isArray(u) ? u : [u];
532
- Array.isArray(u) && ($.every((I) => w.includes(I)) || p.push({
533
- fieldId: g,
524
+ if (y.options) {
525
+ const S = y.options.map((F) => F.value), P = Array.isArray(l) ? l : [l];
526
+ Array.isArray(l) && (P.every((F) => S.includes(F)) || a.push({
527
+ fieldId: p,
534
528
  userMessage: "This field expects a valid option",
535
- systemMessage: `Field expects a valid option. Valid options are: ${w.join(", ")}`,
536
- value: u
529
+ systemMessage: `Field expects a valid option. Valid options are: ${S.join(", ")}`,
530
+ value: l
537
531
  }));
538
532
  }
539
533
  })
540
- ), { responsesToCommit: a, validationErrors: p };
541
- }
542
- async function n(a) {
543
- const { responsesToCommit: p, validationErrors: g } = await r(a);
544
- return g.length ? { errors: g } : (i.registerBatch(p), { errors: [] });
534
+ ), a.length ? { errors: a } : (Object.entries(c).forEach(([p, f]) => {
535
+ d(p, f);
536
+ }), { errors: [] });
545
537
  }
546
- const d = e.map((a) => a), h = e.map((a) => Object.keys(a).map((g) => ({
547
- fieldId: g,
548
- value: a[g]
538
+ const n = e.map((c) => c), g = e.map((c) => Object.keys(c).map((p) => ({
539
+ fieldId: p,
540
+ value: c[p]
549
541
  })));
550
- function c(a) {
551
- const p = t.fields.getById(a), g = e.map((m) => m[a] || null);
552
- return A({ f: p, r: g }, ({ f: m, r: u }) => u || (m != null && m.defaultValue ? m.defaultValue : null));
553
- }
554
- function f(a) {
555
- const p = t.fields.getByName(a);
556
- return A({ f: p, s: e }, ({ f: g, s: m }) => {
557
- const u = g && m[g.id] || null;
558
- return u || (g != null && g.defaultValue ? g.defaultValue : null);
542
+ function h(c) {
543
+ const a = t.fields.getById(c), p = e.map((f) => f[c] || null);
544
+ return R({ f: a, r: p }, ({ f, r: l }) => l || (f != null && f.defaultValue ? f.defaultValue : null));
545
+ }
546
+ function u(c) {
547
+ const a = t.fields.getByName(c);
548
+ return R({ f: a, s: e }, ({ f: p, s: f }) => {
549
+ const l = p && f[p.id] || null;
550
+ return l || (p != null && p.defaultValue ? p.defaultValue : null);
559
551
  });
560
552
  }
561
- return P({
553
+ return E({
562
554
  clock: s,
563
555
  target: i.clearAll
564
- }), P({
556
+ }), E({
565
557
  clock: o,
566
558
  target: i.clear
567
559
  }), {
568
- register: l,
560
+ register: d,
569
561
  clearAll: s,
570
562
  clear: o,
571
- commit: n,
572
- getResponsesToCommit: r,
573
- listStore: h,
574
- getAllStore: d,
575
- getByFieldId: c,
576
- getByFieldName: f
563
+ commit: r,
564
+ listStore: g,
565
+ getAllStore: n,
566
+ getByFieldId: h,
567
+ getByFieldName: u
577
568
  };
578
569
  });
579
- function _e(t) {
580
- return x(ze, t);
570
+ function ze(t) {
571
+ return k(Le, t);
581
572
  }
582
- const Ue = () => "0.0.7-next.3";
583
- function He() {
573
+ const _e = () => "0.0.7";
574
+ function Ue() {
584
575
  if (_()) {
585
576
  const t = [
586
577
  document.currentScript,
@@ -595,21 +586,21 @@ function He() {
595
586
  }
596
587
  return "https://api.picked.app";
597
588
  }
598
- function Ke() {
599
- if (!ne())
589
+ function He() {
590
+ if (!se())
600
591
  return {};
601
592
  const t = new URLSearchParams(window.location.search), e = {}, s = /* @__PURE__ */ new Set();
602
593
  for (const [i] of t.entries())
603
594
  i.startsWith("picked-") && s.add(i);
604
595
  for (const i of s) {
605
- const l = i.replace("picked-", "");
606
- e[l] = t.getAll(i);
596
+ const d = i.replace("picked-", "");
597
+ e[d] = t.getAll(i);
607
598
  }
608
- const o = B("s");
599
+ const o = j("s");
609
600
  if (s.size > 0)
610
- j.set(o, e);
601
+ B.set(o, e);
611
602
  else {
612
- const i = j.get(o);
603
+ const i = B.get(o);
613
604
  if (i)
614
605
  return i.json() || {};
615
606
  }
@@ -617,59 +608,59 @@ function Ke() {
617
608
  }
618
609
  class K {
619
610
  constructor(e) {
620
- y(this, "options");
621
- y(this, "isReady", !1);
622
- y(this, "project");
623
- y(this, "plugins", {});
624
- y(this, "eventBus", Oe());
625
- y(this, "organizationId");
626
- y(this, "projectId");
627
- y(this, "apiUrl");
628
- y(this, "searchParams", Ke());
629
- y(this, "history", De());
630
- y(this, "components", he({ client: this }));
631
- y(this, "experienceInstances", ee({ client: this }));
632
- y(this, "experiences", ue({ client: this }));
633
- y(this, "frameworks", ve({ client: this }));
634
- y(this, "predicates", Re({ client: this }));
635
- y(this, "features", $e());
636
- y(this, "responses", _e({ client: this }));
637
- y(this, "fields", Me());
638
- v("info", "Picked client initializing."), this.organizationId = e.organizationId, this.projectId = e.projectId, this.options = Object.freeze(e), this.apiUrl = e.apiUrl || He(), this.setupPlugins(), this.setupFeatures(), this.setupPredicates(), this.eventBus({ type: "initialized", version: Ue() }), v("info", "Picked client initialized.");
611
+ m(this, "options");
612
+ m(this, "isReady", !1);
613
+ m(this, "project");
614
+ m(this, "plugins", {});
615
+ m(this, "eventBus", Oe());
616
+ m(this, "organizationId");
617
+ m(this, "projectId");
618
+ m(this, "apiUrl");
619
+ m(this, "searchParams", He());
620
+ m(this, "history", De());
621
+ m(this, "components", ye({ client: this }));
622
+ m(this, "experienceInstances", Z({ client: this }));
623
+ m(this, "experiences", ce({ client: this }));
624
+ m(this, "frameworks", we({ client: this }));
625
+ m(this, "predicates", Pe({ client: this }));
626
+ m(this, "features", $e());
627
+ m(this, "fields", Me());
628
+ m(this, "responses", ze({ client: this }));
629
+ w("info", "Picked client initializing."), this.organizationId = e.organizationId, this.projectId = e.projectId, this.options = Object.freeze(e), this.apiUrl = e.apiUrl || Ue(), this.setupPlugins(), this.setupFeatures(), this.setupPredicates(), this.eventBus({ type: "initialized", version: _e() }), w("info", "Picked client initialized.");
639
630
  }
640
631
  start() {
641
632
  be(this), (async () => {
642
- _() && (document.body && await T(this), await te(), await T(this), this.eventBus({ type: "ready" }), this.isReady = !0);
633
+ _() && (document.body && await V(this), await ee(), await V(this), this.eventBus({ type: "ready" }), this.isReady = !0);
643
634
  })();
644
635
  }
645
636
  registerFramework(e) {
646
- ke(e, this.frameworks);
637
+ ve(e, this.frameworks);
647
638
  }
648
639
  registerComponent(e, s) {
649
- V(e, s, this.components);
640
+ M(e, s, this.components);
650
641
  }
651
642
  registerPlugin(e) {
652
- pe(this, e, this.plugins);
643
+ de(this, e, this.plugins);
653
644
  }
654
645
  registerFeature(e, s) {
655
- Ae(e, s, this.features);
646
+ Re(e, s, this.features);
656
647
  }
657
648
  registerPredicate(e, s) {
658
- Be(e, s, this.predicates);
649
+ je(e, s, this.predicates);
659
650
  }
660
651
  registerField(e) {
661
652
  Ne(e, this.fields);
662
653
  }
663
654
  registerExperience(e) {
664
- e.component && V(`experience:${e.id}`, e.component, this.components), le(e, this.experiences);
655
+ e.component && M(`experience:${e.id}`, e.component, this.components), ue(e, this.experiences);
665
656
  }
666
657
  getStateSnapshot() {
667
- return Ie(this);
658
+ return Fe(this);
668
659
  }
669
660
  async launchExperienceById(e) {
670
661
  const s = this.experiences.getById(e).getState();
671
662
  if (!s) {
672
- v("warn", `Experience with id '${e}' not found.`);
663
+ w("warn", `Experience with id '${e}' not found.`);
673
664
  return;
674
665
  }
675
666
  H(this, s);
@@ -710,13 +701,13 @@ class K {
710
701
  const [o, i] = s.split(":");
711
702
  if (!o || !i)
712
703
  return;
713
- let l = i;
714
- l === "true" && (l = !0), l === "false" && (l = !1), this.registerFeature(o, {
715
- key: `${l}`,
704
+ let d = i;
705
+ d === "true" && (d = !0), d === "false" && (d = !1), this.registerFeature(o, {
706
+ key: `${d}`,
716
707
  // use the assigned bucket value as the key
717
708
  name: o,
718
709
  // eslint-disable-next-line sonarjs/function-return-type
719
- decide: () => l,
710
+ decide: () => d,
720
711
  storage: "session"
721
712
  });
722
713
  } catch {
@@ -727,7 +718,7 @@ class K {
727
718
  const e = this.options.predicates;
728
719
  e && Object.entries(e).forEach(([s, o]) => {
729
720
  if (typeof o != "function") {
730
- v("warn", `Predicate "${s}" is not a function.`);
721
+ w("warn", `Predicate "${s}" is not a function.`);
731
722
  return;
732
723
  }
733
724
  this.registerPredicate(s, o);
@@ -737,50 +728,27 @@ class K {
737
728
  return this.plugins[e] ?? {};
738
729
  }
739
730
  }
740
- y(K, "logger", v);
741
- function q(t) {
742
- var e;
743
- return ((e = t.options) == null ? void 0 : e.some((s) => "condition" in s)) ?? !1;
744
- }
745
- function qe(t) {
746
- return t.some((e) => e.condition || q(e));
747
- }
748
- async function rt(t, e) {
749
- return e.length === 0 || !qe(e) ? e : (await Promise.all(
750
- e.map(async (o) => {
751
- if (!(o.condition ? await R(t, o.condition) : !0))
752
- return null;
753
- if (!o.options || !q(o))
754
- return o;
755
- const r = (await Promise.all(
756
- o.options.map(async (d) => d.condition ? await R(t, d.condition) ? d : null : d)
757
- )).filter((d) => d !== null);
758
- return r.length === o.options.length ? o : r.length === 0 ? null : { ...o, options: r };
759
- })
760
- )).filter((o) => o !== null);
761
- }
762
- const st = (t) => {
731
+ m(K, "logger", w);
732
+ const et = (t) => {
763
733
  const e = new K(t);
764
- return oe(e), e;
734
+ return ne(e), e;
765
735
  };
766
736
  export {
767
737
  K as Picked,
768
- st as createClient,
769
- B as createStorageKey,
770
- R as evaluateRuleLogic,
771
- rt as getStepFields,
772
- it as isPickedRoot,
773
- O as localStore,
774
- j as sessionStore,
775
- ct as subscribe,
776
- lt as supportsCookies,
738
+ et as createClient,
739
+ j as createStorageKey,
740
+ st as isPickedRoot,
741
+ C as localStore,
742
+ B as sessionStore,
743
+ ot as subscribe,
744
+ at as supportsCookies,
777
745
  _ as supportsDocument,
778
- dt as supportsHistory,
779
- pt as supportsIntersectionObserver,
780
- gt as supportsLocalStorage,
781
- ft as supportsLocation,
782
- mt as supportsSessionStorage,
783
- yt as supportsShadowRoot,
784
- ht as supportsWebComponents,
785
- ne as supportsWindow
746
+ ct as supportsHistory,
747
+ ut as supportsIntersectionObserver,
748
+ lt as supportsLocalStorage,
749
+ dt as supportsLocation,
750
+ pt as supportsSessionStorage,
751
+ gt as supportsShadowRoot,
752
+ ft as supportsWebComponents,
753
+ se as supportsWindow
786
754
  };