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