@picked/client 0.0.1-dev.1770181472896 → 0.0.1-dev.1770759602712
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/cjs/plugins/create-experience/index.js +1 -1
- package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
- package/dist/esm/index.js +680 -593
- package/dist/esm/plugins/create-experience/index.js +378 -297
- package/dist/esm/plugins/experience-browser-storage/index.js +12 -13
- package/dist/types/entities/experience-instance/experience-instance.d.ts +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/entities/field/field.d.ts +121 -19
- package/dist/types/entities/field/field.d.ts.map +1 -1
- package/dist/types/entities/response/response.d.ts +9 -5
- package/dist/types/entities/response/response.d.ts.map +1 -1
- package/dist/types/picked.d.ts +16 -13
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/create-experience.d.ts +40 -6
- package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
- package/dist/types/utils/get-step-fields.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,200 +1,200 @@
|
|
|
1
|
-
import { createDomain as
|
|
2
|
-
import { createFactory as w, invoke as
|
|
3
|
-
import { g as q, t as
|
|
4
|
-
import { f as
|
|
1
|
+
import { createDomain as x, createApi as j, createStore as H, createEffect as $, sample as F, attach as Z, combine as V, createEvent as D } from "effector";
|
|
2
|
+
import { createFactory as w, invoke as b } from "@withease/factories";
|
|
3
|
+
import { g as q, t as ee, c as te, i as re, e as E, a as se, b as ne, d as ie } from "../experience-instance-D0bQ9DzM.js";
|
|
4
|
+
import { f as Pt } from "../experience-instance-D0bQ9DzM.js";
|
|
5
5
|
import { l as k } from "../logger-C9a75KZn.js";
|
|
6
|
-
import { c as
|
|
7
|
-
import { a as
|
|
8
|
-
import { g as
|
|
9
|
-
import { i as
|
|
10
|
-
import { s as
|
|
11
|
-
import { e as
|
|
12
|
-
const K =
|
|
6
|
+
import { c as P, l as z, s as C } from "../storage-Co_LbKr_.js";
|
|
7
|
+
import { a as Rt } from "../storage-Co_LbKr_.js";
|
|
8
|
+
import { g as oe } from "../id-BW-g3y32.js";
|
|
9
|
+
import { i as ae } from "../object-JwZ58NOH.js";
|
|
10
|
+
import { s as N, a as T, b as ce, c as ue, d as de } from "../supports-8YT4QKI7.js";
|
|
11
|
+
import { e as Ot, f as zt, g as Ct, h as Mt, i as Vt, j as Dt, k as Nt } from "../supports-8YT4QKI7.js";
|
|
12
|
+
const K = x("experience"), le = w(
|
|
13
13
|
({ client: t, experience: e }) => {
|
|
14
|
-
const r = K.store(e),
|
|
15
|
-
merge(
|
|
14
|
+
const r = K.store(e), s = j(r, {
|
|
15
|
+
merge(l, h) {
|
|
16
16
|
return {
|
|
17
|
-
...
|
|
17
|
+
...l,
|
|
18
18
|
...h.experience
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
}),
|
|
22
|
-
name:
|
|
23
|
-
decisionLogic:
|
|
24
|
-
targetSelectors:
|
|
21
|
+
}), n = r.map((l) => ({
|
|
22
|
+
name: l.name,
|
|
23
|
+
decisionLogic: l.condition ?? l.decide,
|
|
24
|
+
targetSelectors: l.targets,
|
|
25
25
|
initializeOpenLogic: e.initializeOpen
|
|
26
|
-
})),
|
|
27
|
-
(
|
|
26
|
+
})), d = t.components.listStore.map(
|
|
27
|
+
(l) => l.find((h) => h.name === `experience:${e.id}`) || l.find((h) => h.name === "experience"),
|
|
28
28
|
{ skipVoid: !1 }
|
|
29
|
-
),
|
|
30
|
-
steps:
|
|
31
|
-
nodes:
|
|
32
|
-
edges:
|
|
33
|
-
conditionals:
|
|
34
|
-
})),
|
|
29
|
+
), a = r.map((l) => ({
|
|
30
|
+
steps: l.steps,
|
|
31
|
+
nodes: l.nodes,
|
|
32
|
+
edges: l.edges,
|
|
33
|
+
conditionals: l.conditionals
|
|
34
|
+
})), i = r.map((l) => l.fields), p = e.actions ?? [];
|
|
35
35
|
return {
|
|
36
36
|
id: e.id,
|
|
37
|
-
configStore:
|
|
38
|
-
treeStore:
|
|
39
|
-
fieldsStore:
|
|
40
|
-
componentStore:
|
|
41
|
-
actions:
|
|
42
|
-
merge:
|
|
37
|
+
configStore: n,
|
|
38
|
+
treeStore: a,
|
|
39
|
+
fieldsStore: i,
|
|
40
|
+
componentStore: d,
|
|
41
|
+
actions: p,
|
|
42
|
+
merge: s.merge
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
);
|
|
46
|
-
function
|
|
47
|
-
return
|
|
46
|
+
function pe(t) {
|
|
47
|
+
return b(le, t);
|
|
48
48
|
}
|
|
49
|
-
const
|
|
50
|
-
const e = K.store({}), r =
|
|
51
|
-
register(
|
|
49
|
+
const fe = w(({ client: t }) => {
|
|
50
|
+
const e = K.store({}), r = j(e, {
|
|
51
|
+
register(a, i) {
|
|
52
52
|
return {
|
|
53
|
-
...
|
|
54
|
-
[
|
|
53
|
+
...a,
|
|
54
|
+
[i.id]: i
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
|
-
function
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
61
|
-
|
|
58
|
+
function s(a) {
|
|
59
|
+
const i = e.getState()[a.id];
|
|
60
|
+
if (i) {
|
|
61
|
+
i.merge({ experience: a, strategy: "override" });
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
|
-
const
|
|
65
|
-
r.register(
|
|
64
|
+
const p = pe({ client: t, experience: a });
|
|
65
|
+
r.register(p);
|
|
66
66
|
}
|
|
67
|
-
const
|
|
68
|
-
function
|
|
69
|
-
return e.map((
|
|
67
|
+
const n = e.map((a) => Object.values(a));
|
|
68
|
+
function d(a) {
|
|
69
|
+
return e.map((i) => i[a], { skipVoid: !1 });
|
|
70
70
|
}
|
|
71
71
|
return {
|
|
72
|
-
register:
|
|
73
|
-
getById:
|
|
74
|
-
listStore:
|
|
72
|
+
register: s,
|
|
73
|
+
getById: d,
|
|
74
|
+
listStore: n
|
|
75
75
|
};
|
|
76
76
|
});
|
|
77
|
-
function
|
|
78
|
-
return
|
|
77
|
+
function ge(t) {
|
|
78
|
+
return b(fe, t);
|
|
79
79
|
}
|
|
80
|
-
const
|
|
80
|
+
const me = (t, e) => {
|
|
81
81
|
e.register(t);
|
|
82
82
|
}, W = (t, e) => {
|
|
83
|
-
const { targetSelectors: r } = e.configStore.getState(),
|
|
84
|
-
|
|
85
|
-
({ elements:
|
|
86
|
-
),
|
|
87
|
-
t.experienceInstances.spawn(e,
|
|
83
|
+
const { targetSelectors: r } = e.configStore.getState(), s = q(r, e.id);
|
|
84
|
+
s.forEach(
|
|
85
|
+
({ elements: d }) => d.forEach((a) => ee(a, e.id))
|
|
86
|
+
), te(s, e.id).forEach((d) => {
|
|
87
|
+
t.experienceInstances.spawn(e, d);
|
|
88
88
|
});
|
|
89
|
-
},
|
|
89
|
+
}, U = async (t) => {
|
|
90
90
|
await Promise.all(
|
|
91
91
|
t.experiences.listStore.getState().map(async (e) => {
|
|
92
|
-
await
|
|
92
|
+
await he(t, e) && W(t, e);
|
|
93
93
|
})
|
|
94
94
|
);
|
|
95
|
-
},
|
|
96
|
-
const { decisionLogic: r, targetSelectors:
|
|
97
|
-
return q(
|
|
98
|
-
},
|
|
99
|
-
const
|
|
100
|
-
if (
|
|
101
|
-
const
|
|
102
|
-
r[
|
|
95
|
+
}, he = async (t, e) => {
|
|
96
|
+
const { decisionLogic: r, targetSelectors: s } = e.configStore.getState();
|
|
97
|
+
return q(s, e.id).length < 1 || s.length === 0 ? !1 : r && re(r) ? await E(t, r) === !0 : !0;
|
|
98
|
+
}, ye = (t, e, r) => {
|
|
99
|
+
const s = e.name, n = e.setup(t);
|
|
100
|
+
if (n) {
|
|
101
|
+
const d = r[s] ?? {};
|
|
102
|
+
r[s] = Object.freeze({ ...d, ...n });
|
|
103
103
|
}
|
|
104
|
-
},
|
|
104
|
+
}, Se = x("component"), ve = w(
|
|
105
105
|
({ client: t, component: e, name: r }) => {
|
|
106
|
-
const
|
|
106
|
+
const s = t.frameworks.getByName(e.frameworkName);
|
|
107
107
|
return {
|
|
108
108
|
name: r,
|
|
109
109
|
component: e,
|
|
110
|
-
frameworkStore:
|
|
110
|
+
frameworkStore: s
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
);
|
|
114
114
|
function ke(t) {
|
|
115
|
-
return
|
|
115
|
+
return b(ve, t);
|
|
116
116
|
}
|
|
117
117
|
const we = w(({ client: t }) => {
|
|
118
|
-
const e =
|
|
119
|
-
register(
|
|
118
|
+
const e = Se.store({}), r = j(e, {
|
|
119
|
+
register(a, i) {
|
|
120
120
|
return {
|
|
121
|
-
...
|
|
122
|
-
[
|
|
121
|
+
...a,
|
|
122
|
+
[i.name]: i
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
|
-
function
|
|
127
|
-
e.getState()[
|
|
126
|
+
function s(a, i) {
|
|
127
|
+
e.getState()[a] && k(
|
|
128
128
|
"warn",
|
|
129
|
-
`Component '${
|
|
129
|
+
`Component '${a}' already registered. Registering again will override the previous registration.`
|
|
130
130
|
);
|
|
131
|
-
const
|
|
132
|
-
r.register(
|
|
131
|
+
const l = ke({ client: t, name: a, component: i });
|
|
132
|
+
r.register(l);
|
|
133
133
|
}
|
|
134
|
-
const
|
|
135
|
-
function
|
|
136
|
-
return e.map((
|
|
134
|
+
const n = e.map((a) => Object.values(a));
|
|
135
|
+
function d(a) {
|
|
136
|
+
return e.map((i) => i[a], { skipVoid: !1 });
|
|
137
137
|
}
|
|
138
138
|
return {
|
|
139
|
-
register:
|
|
140
|
-
getByName:
|
|
141
|
-
listStore:
|
|
139
|
+
register: s,
|
|
140
|
+
getByName: d,
|
|
141
|
+
listStore: n
|
|
142
142
|
};
|
|
143
143
|
});
|
|
144
|
-
function
|
|
145
|
-
return
|
|
144
|
+
function be(t) {
|
|
145
|
+
return b(we, t);
|
|
146
146
|
}
|
|
147
|
-
const
|
|
147
|
+
const _ = (t, e, r) => {
|
|
148
148
|
r.register(t, e);
|
|
149
|
-
}, Ie =
|
|
150
|
-
const e = Ie.store({}), r =
|
|
151
|
-
register(
|
|
149
|
+
}, Ie = x("framework"), Fe = w(({ client: t }) => {
|
|
150
|
+
const e = Ie.store({}), r = j(e, {
|
|
151
|
+
register(a, i) {
|
|
152
152
|
return {
|
|
153
|
-
...
|
|
154
|
-
[
|
|
153
|
+
...a,
|
|
154
|
+
[i.name]: i.framework
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
157
|
});
|
|
158
|
-
function
|
|
159
|
-
e.getState()[
|
|
158
|
+
function s(a, i) {
|
|
159
|
+
e.getState()[a] && k(
|
|
160
160
|
"warn",
|
|
161
|
-
`Framework '${
|
|
162
|
-
), r.register({ name:
|
|
161
|
+
`Framework '${a}' already registered. Registering again will override the previous registration.`
|
|
162
|
+
), r.register({ name: a, framework: i });
|
|
163
163
|
}
|
|
164
|
-
const
|
|
165
|
-
function
|
|
166
|
-
return e.map((
|
|
164
|
+
const n = e.map((a) => Object.values(a));
|
|
165
|
+
function d(a) {
|
|
166
|
+
return e.map((i) => i[a], { skipVoid: !1 });
|
|
167
167
|
}
|
|
168
168
|
return {
|
|
169
|
-
register:
|
|
170
|
-
getByName:
|
|
171
|
-
listStore:
|
|
169
|
+
register: s,
|
|
170
|
+
getByName: d,
|
|
171
|
+
listStore: n
|
|
172
172
|
};
|
|
173
173
|
});
|
|
174
|
-
function
|
|
175
|
-
return
|
|
174
|
+
function xe(t) {
|
|
175
|
+
return b(Fe, t);
|
|
176
176
|
}
|
|
177
|
-
const
|
|
177
|
+
const je = (t, e) => {
|
|
178
178
|
e.register(t.name, t);
|
|
179
|
-
},
|
|
179
|
+
}, Ee = 6e3, Ae = P("last_ping", "global"), Pe = (t) => `${t}/api/v1/ping`, Be = async (t) => {
|
|
180
180
|
try {
|
|
181
|
-
const e = Date.now(), r =
|
|
182
|
-
let
|
|
183
|
-
if (r.isSet() && (
|
|
181
|
+
const e = Date.now(), r = z.get(Ae);
|
|
182
|
+
let s = 0;
|
|
183
|
+
if (r.isSet() && (s = r.json() ?? 0), s && e - s < Ee)
|
|
184
184
|
return !0;
|
|
185
|
-
const
|
|
185
|
+
const n = Pe(t.apiUrl), d = {
|
|
186
186
|
projectId: t.projectId,
|
|
187
187
|
path: window.location.pathname
|
|
188
|
-
},
|
|
188
|
+
}, a = JSON.stringify(d), i = {
|
|
189
189
|
"Content-Type": "application/json"
|
|
190
|
-
},
|
|
191
|
-
|
|
192
|
-
const
|
|
190
|
+
}, l = document.getElementById("picked_script")?.dataset.verceltoken;
|
|
191
|
+
l && (i["x-vercel-protection-bypass"] = l);
|
|
192
|
+
const v = (await fetch(n, {
|
|
193
193
|
method: "POST",
|
|
194
|
-
headers:
|
|
195
|
-
body:
|
|
194
|
+
headers: i,
|
|
195
|
+
body: a
|
|
196
196
|
})).ok;
|
|
197
|
-
return
|
|
197
|
+
return v && r.set(e), v;
|
|
198
198
|
} catch (e) {
|
|
199
199
|
return k("error", e), !1;
|
|
200
200
|
}
|
|
@@ -211,498 +211,579 @@ function Y(t) {
|
|
|
211
211
|
};
|
|
212
212
|
return Object.freeze(r);
|
|
213
213
|
}
|
|
214
|
-
const
|
|
215
|
-
const e =
|
|
216
|
-
register(
|
|
214
|
+
const Re = x("predicate"), $e = w(({ client: t }) => {
|
|
215
|
+
const e = Re.store({}), r = j(e, {
|
|
216
|
+
register(i, p) {
|
|
217
217
|
return {
|
|
218
|
-
...
|
|
219
|
-
[
|
|
220
|
-
name:
|
|
221
|
-
predicate:
|
|
218
|
+
...i,
|
|
219
|
+
[p.name]: {
|
|
220
|
+
name: p.name,
|
|
221
|
+
predicate: p.predicate
|
|
222
222
|
}
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
});
|
|
226
|
-
function
|
|
227
|
-
e.getState()[
|
|
226
|
+
function s(i, p) {
|
|
227
|
+
e.getState()[i] && k(
|
|
228
228
|
"warn",
|
|
229
|
-
`Predicate '${
|
|
230
|
-
), r.register(Object.freeze({ name:
|
|
229
|
+
`Predicate '${i}' already registered. Registering again will override the previous registration.`
|
|
230
|
+
), r.register(Object.freeze({ name: i, predicate: p }));
|
|
231
231
|
}
|
|
232
|
-
const
|
|
233
|
-
function
|
|
234
|
-
return e.map((
|
|
232
|
+
const n = e.map((i) => Object.values(i));
|
|
233
|
+
function d(i) {
|
|
234
|
+
return e.map((p) => p[i]?.predicate, { skipVoid: !1 });
|
|
235
235
|
}
|
|
236
|
-
function
|
|
237
|
-
const
|
|
236
|
+
function a(i) {
|
|
237
|
+
const p = H(() => {
|
|
238
238
|
}, {
|
|
239
239
|
skipVoid: !1
|
|
240
|
-
}),
|
|
241
|
-
const h =
|
|
240
|
+
}), l = $(async () => {
|
|
241
|
+
const h = d(i).getState();
|
|
242
242
|
if (!h)
|
|
243
243
|
return;
|
|
244
|
-
const
|
|
245
|
-
return (...
|
|
244
|
+
const v = Y(t);
|
|
245
|
+
return (...m) => h({ ...v, args: m });
|
|
246
246
|
});
|
|
247
|
-
return
|
|
247
|
+
return F({
|
|
248
248
|
source: { responses: t.responses.listStore, fields: t.fields.listStore },
|
|
249
|
-
target:
|
|
250
|
-
}),
|
|
251
|
-
clock:
|
|
249
|
+
target: l
|
|
250
|
+
}), F({
|
|
251
|
+
clock: l.doneData,
|
|
252
252
|
filter: (h) => h !== void 0,
|
|
253
|
-
target:
|
|
254
|
-
}),
|
|
253
|
+
target: p
|
|
254
|
+
}), l(), p;
|
|
255
255
|
}
|
|
256
256
|
return {
|
|
257
|
-
register:
|
|
258
|
-
getByName:
|
|
259
|
-
listStore:
|
|
260
|
-
getEvokablePredicate:
|
|
257
|
+
register: s,
|
|
258
|
+
getByName: d,
|
|
259
|
+
listStore: n,
|
|
260
|
+
getEvokablePredicate: a
|
|
261
261
|
};
|
|
262
262
|
});
|
|
263
|
-
function
|
|
264
|
-
return
|
|
263
|
+
function Oe(t) {
|
|
264
|
+
return b($e, t);
|
|
265
265
|
}
|
|
266
|
-
const
|
|
266
|
+
const ze = (t, e, r) => {
|
|
267
267
|
r.register(t, e);
|
|
268
|
-
},
|
|
269
|
-
const e =
|
|
270
|
-
register(
|
|
268
|
+
}, L = x("feature"), Ce = w(({ client: t }) => {
|
|
269
|
+
const e = L.store({}), r = L.store([]), s = j(e, {
|
|
270
|
+
register(o, c) {
|
|
271
271
|
return {
|
|
272
|
-
...
|
|
273
|
-
[
|
|
272
|
+
...o,
|
|
273
|
+
[c.id]: c.feature
|
|
274
274
|
};
|
|
275
275
|
}
|
|
276
276
|
});
|
|
277
|
-
function
|
|
278
|
-
e.getState()[
|
|
277
|
+
function n(o, c) {
|
|
278
|
+
e.getState()[o] && k(
|
|
279
279
|
"warn",
|
|
280
|
-
`Feature '${
|
|
280
|
+
`Feature '${o}' already registered. Registering again will override the previous registration.`
|
|
281
281
|
);
|
|
282
|
-
const
|
|
283
|
-
id:
|
|
282
|
+
const u = {
|
|
283
|
+
id: o,
|
|
284
284
|
feature: {
|
|
285
|
-
...
|
|
286
|
-
id:
|
|
285
|
+
...c,
|
|
286
|
+
id: o
|
|
287
287
|
}
|
|
288
288
|
};
|
|
289
|
-
|
|
289
|
+
s.register(
|
|
290
290
|
Object.freeze({
|
|
291
|
-
id:
|
|
292
|
-
feature:
|
|
291
|
+
id: o,
|
|
292
|
+
feature: u
|
|
293
293
|
})
|
|
294
294
|
);
|
|
295
295
|
}
|
|
296
|
-
const
|
|
296
|
+
const d = $(
|
|
297
297
|
async ({
|
|
298
|
-
id:
|
|
299
|
-
key:
|
|
298
|
+
id: o,
|
|
299
|
+
key: c,
|
|
300
300
|
storage: f = "local"
|
|
301
301
|
}) => {
|
|
302
|
-
const
|
|
303
|
-
return y === null ? null : { id:
|
|
302
|
+
const u = P(`feature:${o}:${c}`, "global"), y = (f === "session" ? C : z).get(u).boolean();
|
|
303
|
+
return y === null ? null : { id: o, key: c, bucket: y, storage: f };
|
|
304
304
|
}
|
|
305
|
-
),
|
|
306
|
-
if (!
|
|
305
|
+
), a = $((o) => {
|
|
306
|
+
if (!o)
|
|
307
307
|
return null;
|
|
308
|
-
const
|
|
309
|
-
(
|
|
310
|
-
}),
|
|
308
|
+
const c = P(`feature:${o.id}:${o.key}`, "global");
|
|
309
|
+
(o.storage === "session" ? C : z).set(c, o.bucket);
|
|
310
|
+
}), i = /* @__PURE__ */ new Map(), p = Z({
|
|
311
311
|
source: { allFeaturesStore: e, resolvedFeaturesStore: r },
|
|
312
|
-
effect: async ({ allFeaturesStore:
|
|
313
|
-
const y =
|
|
314
|
-
(
|
|
312
|
+
effect: async ({ allFeaturesStore: o, resolvedFeaturesStore: c }, { id: f, decide: u, key: g }) => {
|
|
313
|
+
const y = c.find(
|
|
314
|
+
(R) => R.id === f && R.key === g
|
|
315
315
|
);
|
|
316
316
|
if (y)
|
|
317
317
|
return y;
|
|
318
|
-
const
|
|
319
|
-
if (!
|
|
318
|
+
const I = o[f];
|
|
319
|
+
if (!I)
|
|
320
320
|
throw new Error(`Feature with id '${f}' not found`);
|
|
321
|
-
const
|
|
322
|
-
if (
|
|
323
|
-
const
|
|
324
|
-
return { id:
|
|
321
|
+
const B = i.get(`${f}:${g}`);
|
|
322
|
+
if (B !== void 0) {
|
|
323
|
+
const R = await B;
|
|
324
|
+
return { id: I.id, bucket: R, key: g, storage: I.feature.storage };
|
|
325
325
|
}
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
const
|
|
329
|
-
return { id:
|
|
326
|
+
const S = u();
|
|
327
|
+
i.set(`${f}:${g}`, S);
|
|
328
|
+
const X = await S;
|
|
329
|
+
return { id: I.id, bucket: X, key: g, storage: I.feature.storage };
|
|
330
330
|
}
|
|
331
331
|
});
|
|
332
|
-
|
|
333
|
-
clock:
|
|
334
|
-
fn: (
|
|
335
|
-
const { id:
|
|
336
|
-
return { id:
|
|
332
|
+
F({
|
|
333
|
+
clock: s.register,
|
|
334
|
+
fn: (o) => {
|
|
335
|
+
const { id: c, feature: f } = o;
|
|
336
|
+
return { id: c, key: f.feature.key, storage: f.feature.storage };
|
|
337
337
|
},
|
|
338
|
-
target:
|
|
339
|
-
}),
|
|
338
|
+
target: d
|
|
339
|
+
}), F({
|
|
340
340
|
source: e,
|
|
341
|
-
clock:
|
|
342
|
-
fn: (
|
|
343
|
-
const { id: f, bucket:
|
|
344
|
-
return y ? { key: y, id: f, bucket:
|
|
341
|
+
clock: p.doneData,
|
|
342
|
+
fn: (o, c) => {
|
|
343
|
+
const { id: f, bucket: u, storage: g } = c, y = o[f]?.feature.key;
|
|
344
|
+
return y ? { key: y, id: f, bucket: u, storage: g } : null;
|
|
345
345
|
},
|
|
346
|
-
target:
|
|
346
|
+
target: a
|
|
347
347
|
});
|
|
348
|
-
const
|
|
348
|
+
const l = V({ allFeaturesStore: e, resolvedFeaturesStore: r }).map(
|
|
349
349
|
({
|
|
350
|
-
allFeaturesStore:
|
|
351
|
-
resolvedFeaturesStore:
|
|
352
|
-
}) => Object.values(
|
|
353
|
-
const
|
|
354
|
-
(
|
|
350
|
+
allFeaturesStore: o,
|
|
351
|
+
resolvedFeaturesStore: c
|
|
352
|
+
}) => Object.values(o).map((f) => {
|
|
353
|
+
const u = c.find(
|
|
354
|
+
(g) => g.id === f.id && g.key === f.feature.key
|
|
355
355
|
);
|
|
356
|
-
return
|
|
356
|
+
return u ? {
|
|
357
357
|
id: f.id,
|
|
358
358
|
name: f.feature.name,
|
|
359
359
|
key: f.feature.key,
|
|
360
|
-
getBucket: () => ({ id: f.id, bucket:
|
|
360
|
+
getBucket: () => ({ id: f.id, bucket: u.bucket }),
|
|
361
361
|
isResolved: !0
|
|
362
362
|
} : {
|
|
363
363
|
id: f.id,
|
|
364
364
|
name: f.feature.name,
|
|
365
365
|
key: f.feature.key,
|
|
366
|
-
getBucket: async () => await
|
|
366
|
+
getBucket: async () => await p(f.feature),
|
|
367
367
|
isResolved: !1
|
|
368
368
|
};
|
|
369
369
|
})
|
|
370
370
|
);
|
|
371
|
-
|
|
372
|
-
clock:
|
|
371
|
+
F({
|
|
372
|
+
clock: p.doneData,
|
|
373
373
|
source: { resolvedFeatures: r },
|
|
374
|
-
filter: ({ resolvedFeatures:
|
|
375
|
-
(
|
|
374
|
+
filter: ({ resolvedFeatures: o }, { id: c, key: f }) => !o.some(
|
|
375
|
+
(g) => g.id === c && g.key === f
|
|
376
376
|
),
|
|
377
|
-
fn: (
|
|
378
|
-
target: t.eventBus.prepend((
|
|
377
|
+
fn: (o, c) => c,
|
|
378
|
+
target: t.eventBus.prepend((o) => ({
|
|
379
379
|
type: "feature_decide",
|
|
380
|
-
feature:
|
|
380
|
+
feature: o
|
|
381
381
|
}))
|
|
382
|
-
}),
|
|
383
|
-
clock: [
|
|
382
|
+
}), F({
|
|
383
|
+
clock: [d.doneData, p.doneData],
|
|
384
384
|
source: r,
|
|
385
|
-
fn: (
|
|
386
|
-
(
|
|
387
|
-
) ?
|
|
385
|
+
fn: (o, c) => !c || o.some(
|
|
386
|
+
(u) => u.id === c.id && u.key === c.key
|
|
387
|
+
) ? o : [...o, c],
|
|
388
388
|
target: r
|
|
389
389
|
});
|
|
390
|
-
function h(
|
|
391
|
-
return
|
|
390
|
+
function h(o) {
|
|
391
|
+
return l.map((c) => c.find((f) => f.id === o));
|
|
392
392
|
}
|
|
393
|
-
function
|
|
394
|
-
return e.map((
|
|
393
|
+
function v(o) {
|
|
394
|
+
return e.map((c) => c[o], { skipVoid: !1 });
|
|
395
395
|
}
|
|
396
|
-
function
|
|
397
|
-
const
|
|
396
|
+
function m(o) {
|
|
397
|
+
const c = H(
|
|
398
398
|
async () => {
|
|
399
399
|
},
|
|
400
400
|
{ skipVoid: !1 }
|
|
401
|
-
), f =
|
|
402
|
-
const
|
|
403
|
-
if (
|
|
404
|
-
return async () => (await
|
|
401
|
+
), f = $(async () => {
|
|
402
|
+
const u = h(o).getState();
|
|
403
|
+
if (u)
|
|
404
|
+
return async () => (await u.getBucket()).bucket;
|
|
405
405
|
});
|
|
406
|
-
return
|
|
406
|
+
return F({
|
|
407
407
|
source: r,
|
|
408
|
-
filter: (
|
|
408
|
+
filter: (u) => u.some((g) => g.id === o),
|
|
409
409
|
target: f
|
|
410
|
-
}),
|
|
410
|
+
}), F({
|
|
411
411
|
clock: f.doneData,
|
|
412
|
-
filter: (
|
|
413
|
-
target:
|
|
414
|
-
}), f(),
|
|
412
|
+
filter: (u) => u !== void 0,
|
|
413
|
+
target: c
|
|
414
|
+
}), f(), c;
|
|
415
415
|
}
|
|
416
416
|
return {
|
|
417
|
-
register:
|
|
417
|
+
register: n,
|
|
418
418
|
getById: h,
|
|
419
|
-
getByName:
|
|
420
|
-
listStore:
|
|
421
|
-
getEvokableFeature:
|
|
419
|
+
getByName: v,
|
|
420
|
+
listStore: l,
|
|
421
|
+
getEvokableFeature: m
|
|
422
422
|
};
|
|
423
423
|
});
|
|
424
|
-
function
|
|
425
|
-
return
|
|
424
|
+
function Me(t) {
|
|
425
|
+
return b(Ce, t);
|
|
426
426
|
}
|
|
427
|
-
const
|
|
427
|
+
const Ve = (t, e, r) => {
|
|
428
428
|
r.register(t, e);
|
|
429
|
-
},
|
|
430
|
-
function
|
|
429
|
+
}, A = x("history");
|
|
430
|
+
function J(t, e) {
|
|
431
431
|
return {
|
|
432
432
|
// eslint-disable-next-line sonarjs/pseudo-random
|
|
433
|
-
id:
|
|
433
|
+
id: oe(`history-entry-${Date.now()}-${Math.random()}}`),
|
|
434
434
|
node: e,
|
|
435
435
|
at: Date.now(),
|
|
436
436
|
experienceId: t
|
|
437
437
|
};
|
|
438
438
|
}
|
|
439
|
-
const
|
|
440
|
-
const t =
|
|
441
|
-
t.on(e, (
|
|
442
|
-
entries: [...
|
|
443
|
-
})), t.on(r, (
|
|
439
|
+
const De = w(() => {
|
|
440
|
+
const t = A.store({ entries: [] }), e = A.event(), r = A.event(), s = A.event(), n = A.event();
|
|
441
|
+
t.on(e, (a, i) => ({
|
|
442
|
+
entries: [...a.entries, J(i.experienceId, i.node)]
|
|
443
|
+
})), t.on(r, (a, i) => ({
|
|
444
444
|
entries: [
|
|
445
|
-
...
|
|
446
|
-
|
|
445
|
+
...a.entries.slice(0, -1),
|
|
446
|
+
J(i.experienceId, i.node)
|
|
447
447
|
]
|
|
448
|
-
})), t.on(
|
|
449
|
-
function
|
|
450
|
-
const
|
|
451
|
-
for (let
|
|
452
|
-
const h =
|
|
453
|
-
if (!(!
|
|
454
|
-
if (
|
|
455
|
-
|
|
448
|
+
})), t.on(n, (a, i) => i);
|
|
449
|
+
function d(a, i) {
|
|
450
|
+
const p = { lastStepIndex: -1, secondLastStepIndex: -1 };
|
|
451
|
+
for (let l = a.length - 1; l >= 0; l--) {
|
|
452
|
+
const h = a[l], v = h?.node;
|
|
453
|
+
if (!(!v || !se(v)) && !(i && h?.experienceId !== i))
|
|
454
|
+
if (p.lastStepIndex === -1)
|
|
455
|
+
p.lastStepIndex = l;
|
|
456
456
|
else {
|
|
457
|
-
|
|
457
|
+
p.secondLastStepIndex = l;
|
|
458
458
|
break;
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
|
-
return
|
|
461
|
+
return p;
|
|
462
462
|
}
|
|
463
|
-
return t.on(
|
|
464
|
-
const { secondLastStepIndex:
|
|
463
|
+
return t.on(s, (a, i) => {
|
|
464
|
+
const { secondLastStepIndex: p } = d(a.entries, i.experienceId), l = p !== -1 ? a.entries.slice(0, p + 1) : a.entries;
|
|
465
465
|
return {
|
|
466
|
-
...
|
|
467
|
-
entries:
|
|
466
|
+
...a,
|
|
467
|
+
entries: l
|
|
468
468
|
};
|
|
469
469
|
}), {
|
|
470
470
|
push: e,
|
|
471
471
|
replace: r,
|
|
472
|
-
back:
|
|
473
|
-
restore:
|
|
474
|
-
entriesStore: t.map((
|
|
472
|
+
back: s,
|
|
473
|
+
restore: n,
|
|
474
|
+
entriesStore: t.map((a) => a.entries)
|
|
475
475
|
};
|
|
476
476
|
});
|
|
477
|
-
function
|
|
478
|
-
return
|
|
477
|
+
function Ne() {
|
|
478
|
+
return b(De);
|
|
479
479
|
}
|
|
480
|
-
const
|
|
481
|
-
const t =
|
|
482
|
-
register(
|
|
480
|
+
const Te = () => D(), Ue = x("field"), _e = w(() => {
|
|
481
|
+
const t = Ue.store({}), e = j(t, {
|
|
482
|
+
register(i, p) {
|
|
483
483
|
return {
|
|
484
|
-
...
|
|
485
|
-
[
|
|
484
|
+
...i,
|
|
485
|
+
[p.field.id]: p.field
|
|
486
486
|
};
|
|
487
487
|
}
|
|
488
488
|
});
|
|
489
|
-
function r(
|
|
490
|
-
e.register({ field:
|
|
489
|
+
function r(i) {
|
|
490
|
+
e.register({ field: i });
|
|
491
491
|
}
|
|
492
|
-
function
|
|
493
|
-
const
|
|
494
|
-
if (!
|
|
492
|
+
function s(i, p) {
|
|
493
|
+
const l = d(i).getState();
|
|
494
|
+
if (!l)
|
|
495
495
|
return;
|
|
496
|
-
const h = Object.assign({},
|
|
497
|
-
...
|
|
496
|
+
const h = Object.assign({}, l, {
|
|
497
|
+
...p
|
|
498
498
|
});
|
|
499
499
|
e.register({ field: { ...h } });
|
|
500
500
|
}
|
|
501
|
-
const
|
|
502
|
-
function
|
|
503
|
-
return t.map((
|
|
501
|
+
const n = t.map((i) => Object.values(i));
|
|
502
|
+
function d(i) {
|
|
503
|
+
return t.map((p) => p[i] || null);
|
|
504
504
|
}
|
|
505
|
-
function
|
|
506
|
-
return t.map((
|
|
505
|
+
function a(i) {
|
|
506
|
+
return t.map((p) => Object.values(p).find((l) => l.name === i) || null);
|
|
507
507
|
}
|
|
508
508
|
return {
|
|
509
509
|
register: r,
|
|
510
|
-
update:
|
|
511
|
-
getById:
|
|
512
|
-
listStore:
|
|
513
|
-
getByName:
|
|
510
|
+
update: s,
|
|
511
|
+
getById: d,
|
|
512
|
+
listStore: n,
|
|
513
|
+
getByName: a
|
|
514
514
|
};
|
|
515
515
|
});
|
|
516
|
-
function
|
|
517
|
-
return
|
|
516
|
+
function Le() {
|
|
517
|
+
return b(_e);
|
|
518
518
|
}
|
|
519
|
-
const
|
|
519
|
+
const Je = (t, e) => {
|
|
520
520
|
e.register(t);
|
|
521
|
-
}, Ge =
|
|
522
|
-
const t = Ge.store({}), e =
|
|
523
|
-
register(
|
|
521
|
+
}, Ge = x("action"), He = w(() => {
|
|
522
|
+
const t = Ge.store({}), e = j(t, {
|
|
523
|
+
register(a, i) {
|
|
524
524
|
return {
|
|
525
|
-
...
|
|
526
|
-
[
|
|
527
|
-
name:
|
|
528
|
-
action:
|
|
525
|
+
...a,
|
|
526
|
+
[i.name]: {
|
|
527
|
+
name: i.name,
|
|
528
|
+
action: i.action
|
|
529
529
|
}
|
|
530
530
|
};
|
|
531
531
|
}
|
|
532
532
|
});
|
|
533
|
-
function r(
|
|
534
|
-
e.register({ name:
|
|
533
|
+
function r(a, i) {
|
|
534
|
+
e.register({ name: a, action: i });
|
|
535
535
|
}
|
|
536
|
-
const
|
|
537
|
-
function
|
|
538
|
-
return t.map((
|
|
536
|
+
const s = t.map((a) => Object.values(a));
|
|
537
|
+
function n(a) {
|
|
538
|
+
return t.map((i) => i[a], { skipVoid: !1 });
|
|
539
539
|
}
|
|
540
|
-
function
|
|
540
|
+
function d(a) {
|
|
541
541
|
return t.map(
|
|
542
|
-
(
|
|
543
|
-
const
|
|
544
|
-
return
|
|
542
|
+
(i) => {
|
|
543
|
+
const p = i[a];
|
|
544
|
+
return p ? p.action : void 0;
|
|
545
545
|
},
|
|
546
546
|
{ skipVoid: !1 }
|
|
547
547
|
);
|
|
548
548
|
}
|
|
549
549
|
return {
|
|
550
550
|
register: r,
|
|
551
|
-
getByName:
|
|
552
|
-
listStore:
|
|
553
|
-
getEvokableAction:
|
|
551
|
+
getByName: n,
|
|
552
|
+
listStore: s,
|
|
553
|
+
getEvokableAction: d
|
|
554
554
|
};
|
|
555
555
|
});
|
|
556
556
|
function qe() {
|
|
557
|
-
return
|
|
557
|
+
return b(He);
|
|
558
558
|
}
|
|
559
559
|
const Ke = (t, e, r) => {
|
|
560
560
|
r.register(t, e);
|
|
561
561
|
};
|
|
562
|
-
function
|
|
562
|
+
function M(t) {
|
|
563
563
|
return typeof t > "u" || t === null || t === "" || Array.isArray(t) && !t.length;
|
|
564
564
|
}
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
565
|
+
function We(t) {
|
|
566
|
+
return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || t === null;
|
|
567
|
+
}
|
|
568
|
+
function G(t) {
|
|
569
|
+
try {
|
|
570
|
+
return JSON.stringify(t), !0;
|
|
571
|
+
} catch {
|
|
572
|
+
return !1;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
const Ye = x("response"), Qe = w(({ client: t }) => {
|
|
576
|
+
const e = Ye.store({}), r = D(), s = D(), n = j(e, {
|
|
577
|
+
register(m, o) {
|
|
568
578
|
return {
|
|
569
|
-
...
|
|
570
|
-
[
|
|
579
|
+
...m,
|
|
580
|
+
[o.fieldId]: o.response
|
|
571
581
|
};
|
|
572
582
|
},
|
|
573
|
-
registerBatch(
|
|
583
|
+
registerBatch(m, o) {
|
|
574
584
|
return {
|
|
575
|
-
...
|
|
576
|
-
...
|
|
585
|
+
...m,
|
|
586
|
+
...o
|
|
577
587
|
};
|
|
578
588
|
},
|
|
579
|
-
clear(
|
|
580
|
-
const { [
|
|
589
|
+
clear(m, o) {
|
|
590
|
+
const { [o]: c, ...f } = m;
|
|
581
591
|
return f;
|
|
582
592
|
},
|
|
583
593
|
clearAll() {
|
|
584
594
|
return {};
|
|
585
595
|
}
|
|
586
596
|
});
|
|
587
|
-
function
|
|
588
|
-
if (typeof
|
|
589
|
-
if (
|
|
597
|
+
function d(m, o) {
|
|
598
|
+
if (typeof m == "string") {
|
|
599
|
+
if (o === void 0)
|
|
590
600
|
throw new Error("Response is required when registering a single field");
|
|
591
|
-
|
|
601
|
+
n.register({ fieldId: m, response: o });
|
|
592
602
|
} else
|
|
593
|
-
|
|
603
|
+
n.registerBatch(m);
|
|
594
604
|
}
|
|
595
|
-
async function
|
|
596
|
-
const
|
|
605
|
+
async function a(m) {
|
|
606
|
+
const o = [];
|
|
597
607
|
return await Promise.allSettled(
|
|
598
|
-
Object.entries(
|
|
599
|
-
let
|
|
600
|
-
const
|
|
601
|
-
if (!
|
|
602
|
-
|
|
603
|
-
fieldId:
|
|
604
|
-
userMessage: `Field '${
|
|
605
|
-
systemMessage: `No field with ID '${
|
|
606
|
-
value:
|
|
608
|
+
Object.entries(m).map(async ([c, f]) => {
|
|
609
|
+
let u = f;
|
|
610
|
+
const g = t.fields.getById(c).getState();
|
|
611
|
+
if (!g) {
|
|
612
|
+
o.push({
|
|
613
|
+
fieldId: c,
|
|
614
|
+
userMessage: `Field '${c}' not found`,
|
|
615
|
+
systemMessage: `No field with ID '${c}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
|
|
616
|
+
value: u
|
|
607
617
|
});
|
|
608
618
|
return;
|
|
609
619
|
}
|
|
610
|
-
if (
|
|
611
|
-
const y = await
|
|
612
|
-
$input:
|
|
620
|
+
if (g.multiple && (typeof u == "string" || typeof u == "number" || typeof u == "boolean") && (u = [u]), g.validation && !ae(g.validation) && !M(u)) {
|
|
621
|
+
const y = await E(t, g.validation, {
|
|
622
|
+
$input: u
|
|
613
623
|
});
|
|
614
624
|
if (typeof y == "string") {
|
|
615
|
-
|
|
616
|
-
fieldId:
|
|
625
|
+
o.push({
|
|
626
|
+
fieldId: c,
|
|
617
627
|
userMessage: y,
|
|
618
628
|
systemMessage: `Field validation resulted in an error: ${y}.`,
|
|
619
|
-
value:
|
|
629
|
+
value: u
|
|
620
630
|
});
|
|
621
631
|
return;
|
|
622
632
|
}
|
|
623
633
|
if (y === !1) {
|
|
624
|
-
|
|
625
|
-
fieldId:
|
|
634
|
+
o.push({
|
|
635
|
+
fieldId: c,
|
|
626
636
|
userMessage: "This field is invalid",
|
|
627
637
|
systemMessage: "Field validation resulted in an unspecified error.",
|
|
628
|
-
value:
|
|
638
|
+
value: u
|
|
629
639
|
});
|
|
630
640
|
return;
|
|
631
641
|
}
|
|
632
642
|
}
|
|
633
|
-
if (
|
|
634
|
-
|
|
635
|
-
fieldId:
|
|
643
|
+
if (g.required && M(u)) {
|
|
644
|
+
o.push({
|
|
645
|
+
fieldId: c,
|
|
636
646
|
userMessage: "This field is required",
|
|
637
647
|
systemMessage: "Field is required.",
|
|
638
|
-
value:
|
|
648
|
+
value: u
|
|
639
649
|
});
|
|
640
650
|
return;
|
|
641
651
|
}
|
|
642
|
-
if (!
|
|
643
|
-
|
|
644
|
-
fieldId:
|
|
652
|
+
if (!g.multiple && Array.isArray(u) && u.length > 1) {
|
|
653
|
+
o.push({
|
|
654
|
+
fieldId: c,
|
|
645
655
|
userMessage: "This field expects a single response",
|
|
646
656
|
systemMessage: "Field expects a single response.",
|
|
647
|
-
value:
|
|
657
|
+
value: u
|
|
648
658
|
});
|
|
649
659
|
return;
|
|
650
660
|
}
|
|
651
|
-
if (
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
661
|
+
if (g.type === "object" && !M(u))
|
|
662
|
+
if (g.multiple) {
|
|
663
|
+
if (!Array.isArray(u)) {
|
|
664
|
+
o.push({
|
|
665
|
+
fieldId: c,
|
|
666
|
+
userMessage: "This field expects multiple values",
|
|
667
|
+
systemMessage: "Field expects an array of objects.",
|
|
668
|
+
value: u
|
|
669
|
+
});
|
|
670
|
+
return;
|
|
671
|
+
}
|
|
672
|
+
for (const y of u) {
|
|
673
|
+
if (typeof y != "object" || y === null) {
|
|
674
|
+
o.push({
|
|
675
|
+
fieldId: c,
|
|
676
|
+
userMessage: "This field expects object values",
|
|
677
|
+
systemMessage: "Field expects an array of objects, but received non-object value.",
|
|
678
|
+
value: u
|
|
679
|
+
});
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
if (!G(y)) {
|
|
683
|
+
o.push({
|
|
684
|
+
fieldId: c,
|
|
685
|
+
userMessage: "This field contains non-serializable data",
|
|
686
|
+
systemMessage: "Field value contains non-JSON-serializable data (functions, circular references, etc.).",
|
|
687
|
+
value: u
|
|
688
|
+
});
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
} else {
|
|
693
|
+
if (Array.isArray(u)) {
|
|
694
|
+
o.push({
|
|
695
|
+
fieldId: c,
|
|
696
|
+
userMessage: "This field expects a single value",
|
|
697
|
+
systemMessage: "Field expects a single object, not an array.",
|
|
698
|
+
value: u
|
|
699
|
+
});
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
702
|
+
if (typeof u != "object" || u === null) {
|
|
703
|
+
o.push({
|
|
704
|
+
fieldId: c,
|
|
705
|
+
userMessage: "This field expects an object value",
|
|
706
|
+
systemMessage: "Field expects an object value.",
|
|
707
|
+
value: u
|
|
708
|
+
});
|
|
709
|
+
return;
|
|
710
|
+
}
|
|
711
|
+
if (!G(u)) {
|
|
712
|
+
o.push({
|
|
713
|
+
fieldId: c,
|
|
714
|
+
userMessage: "This field contains non-serializable data",
|
|
715
|
+
systemMessage: "Field value contains non-JSON-serializable data (functions, circular references, etc.).",
|
|
716
|
+
value: u
|
|
717
|
+
});
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
if (g.options && typeof g.options != "function") {
|
|
722
|
+
const y = Array.isArray(u) ? u : [u];
|
|
723
|
+
if (g.type === "object") {
|
|
724
|
+
const I = g.options.map((S) => JSON.stringify(S.value));
|
|
725
|
+
y.every((S) => I.includes(JSON.stringify(S))) || o.push({
|
|
726
|
+
fieldId: c,
|
|
727
|
+
userMessage: "This field expects a valid option",
|
|
728
|
+
systemMessage: "Field expects a valid option from the defined choices.",
|
|
729
|
+
value: u
|
|
730
|
+
});
|
|
731
|
+
} else {
|
|
732
|
+
const I = g.options.map((S) => S.value);
|
|
733
|
+
y.every((S) => !We(S) || S === null ? !1 : I.includes(S)) || o.push({
|
|
734
|
+
fieldId: c,
|
|
735
|
+
userMessage: "This field expects a valid option",
|
|
736
|
+
systemMessage: `Field expects a valid option. Valid options are: ${I.join(", ")}`,
|
|
737
|
+
value: u
|
|
738
|
+
});
|
|
739
|
+
}
|
|
659
740
|
}
|
|
660
741
|
})
|
|
661
|
-
), { responsesToCommit:
|
|
742
|
+
), { responsesToCommit: m, validationErrors: o };
|
|
662
743
|
}
|
|
663
|
-
async function
|
|
664
|
-
const { responsesToCommit:
|
|
665
|
-
return
|
|
744
|
+
async function i(m) {
|
|
745
|
+
const { responsesToCommit: o, validationErrors: c } = await a(m);
|
|
746
|
+
return c.length ? { errors: c } : (n.registerBatch(o), { errors: [] });
|
|
666
747
|
}
|
|
667
|
-
const
|
|
668
|
-
fieldId:
|
|
669
|
-
value:
|
|
748
|
+
const p = e.map((m) => m), l = e.map((m) => Object.keys(m).map((c) => ({
|
|
749
|
+
fieldId: c,
|
|
750
|
+
value: m[c]
|
|
670
751
|
})));
|
|
671
|
-
function h(
|
|
672
|
-
const
|
|
673
|
-
return
|
|
752
|
+
function h(m) {
|
|
753
|
+
const o = t.fields.getById(m), c = e.map((f) => f[m] || null);
|
|
754
|
+
return V({ f: o, r: c }, ({ f, r: u }) => u || (f?.defaultValue ? f.defaultValue : null));
|
|
674
755
|
}
|
|
675
|
-
function
|
|
676
|
-
const
|
|
677
|
-
return
|
|
678
|
-
const
|
|
679
|
-
return
|
|
756
|
+
function v(m) {
|
|
757
|
+
const o = t.fields.getByName(m);
|
|
758
|
+
return V({ f: o, s: e }, ({ f: c, s: f }) => {
|
|
759
|
+
const u = c && f[c.id] || null;
|
|
760
|
+
return u || (c?.defaultValue ? c.defaultValue : null);
|
|
680
761
|
});
|
|
681
762
|
}
|
|
682
|
-
return
|
|
763
|
+
return F({
|
|
683
764
|
clock: r,
|
|
684
|
-
target:
|
|
685
|
-
}),
|
|
686
|
-
clock:
|
|
687
|
-
target:
|
|
765
|
+
target: n.clearAll
|
|
766
|
+
}), F({
|
|
767
|
+
clock: s,
|
|
768
|
+
target: n.clear
|
|
688
769
|
}), {
|
|
689
|
-
register:
|
|
770
|
+
register: d,
|
|
690
771
|
clearAll: r,
|
|
691
|
-
clear:
|
|
692
|
-
commit:
|
|
693
|
-
getResponsesToCommit:
|
|
694
|
-
listStore:
|
|
695
|
-
getAllStore:
|
|
772
|
+
clear: s,
|
|
773
|
+
commit: i,
|
|
774
|
+
getResponsesToCommit: a,
|
|
775
|
+
listStore: l,
|
|
776
|
+
getAllStore: p,
|
|
696
777
|
getByFieldId: h,
|
|
697
|
-
getByFieldName:
|
|
778
|
+
getByFieldName: v
|
|
698
779
|
};
|
|
699
780
|
});
|
|
700
|
-
function
|
|
701
|
-
return
|
|
781
|
+
function Xe(t) {
|
|
782
|
+
return b(Qe, t);
|
|
702
783
|
}
|
|
703
|
-
const
|
|
704
|
-
function
|
|
705
|
-
if (
|
|
784
|
+
const Ze = () => "0.0.1-dev.1770759602712";
|
|
785
|
+
function et() {
|
|
786
|
+
if (N()) {
|
|
706
787
|
const t = [
|
|
707
788
|
document.currentScript,
|
|
708
789
|
document.getElementById("picked_script"),
|
|
@@ -716,70 +797,70 @@ function Xe() {
|
|
|
716
797
|
}
|
|
717
798
|
return "https://api.picked.app";
|
|
718
799
|
}
|
|
719
|
-
function
|
|
720
|
-
if (!
|
|
800
|
+
function tt() {
|
|
801
|
+
if (!T())
|
|
721
802
|
return {};
|
|
722
803
|
const t = new URLSearchParams(window.location.search), e = {}, r = /* @__PURE__ */ new Set();
|
|
723
|
-
for (const [
|
|
724
|
-
|
|
725
|
-
for (const
|
|
726
|
-
const
|
|
727
|
-
e[
|
|
804
|
+
for (const [n] of t.entries())
|
|
805
|
+
n.startsWith("picked-") && r.add(n);
|
|
806
|
+
for (const n of r) {
|
|
807
|
+
const d = n.replace("picked-", "");
|
|
808
|
+
e[d] = t.getAll(n);
|
|
728
809
|
}
|
|
729
|
-
const
|
|
810
|
+
const s = P("s");
|
|
730
811
|
if (r.size > 0)
|
|
731
|
-
|
|
812
|
+
C.set(s, e);
|
|
732
813
|
else {
|
|
733
|
-
const
|
|
734
|
-
if (
|
|
735
|
-
return
|
|
814
|
+
const n = C.get(s);
|
|
815
|
+
if (n)
|
|
816
|
+
return n.json() || {};
|
|
736
817
|
}
|
|
737
818
|
return e;
|
|
738
819
|
}
|
|
739
|
-
function
|
|
740
|
-
if (
|
|
820
|
+
function rt() {
|
|
821
|
+
if (ue())
|
|
741
822
|
return crypto.randomUUID();
|
|
742
|
-
const t = Date.now().toString(36), e = Math.random().toString(36).substring(2, 15), r = Math.random().toString(36).substring(2, 15),
|
|
743
|
-
return `${t}-${e}-${r}-${
|
|
823
|
+
const t = Date.now().toString(36), e = Math.random().toString(36).substring(2, 15), r = Math.random().toString(36).substring(2, 15), s = Math.random().toString(36).substring(2, 15);
|
|
824
|
+
return `${t}-${e}-${r}-${s}`;
|
|
744
825
|
}
|
|
745
|
-
const
|
|
746
|
-
const t =
|
|
826
|
+
const st = P("session", "global"), nt = () => {
|
|
827
|
+
const t = z.get(st);
|
|
747
828
|
let e;
|
|
748
829
|
t.isSet() && (e = t.json());
|
|
749
|
-
const r = (
|
|
750
|
-
id:
|
|
751
|
-
isUser:
|
|
752
|
-
identifiers:
|
|
753
|
-
}),
|
|
754
|
-
id: e?.id ??
|
|
830
|
+
const r = (n) => t.set({
|
|
831
|
+
id: n.id,
|
|
832
|
+
isUser: n.isUser,
|
|
833
|
+
identifiers: n.identifiers
|
|
834
|
+
}), s = {
|
|
835
|
+
id: e?.id ?? rt(),
|
|
755
836
|
isUser: e?.isUser ?? void 0,
|
|
756
837
|
identifiers: e?.identifiers ?? void 0,
|
|
757
|
-
setIsUser(
|
|
758
|
-
this.isUser =
|
|
838
|
+
setIsUser(n) {
|
|
839
|
+
this.isUser = n, r(this);
|
|
759
840
|
},
|
|
760
|
-
setIdentifier(
|
|
761
|
-
this.identifiers = { ...this.identifiers, [
|
|
841
|
+
setIdentifier(n, d) {
|
|
842
|
+
this.identifiers = { ...this.identifiers, [n]: d }, r(this);
|
|
762
843
|
},
|
|
763
|
-
removeIdentifier(
|
|
844
|
+
removeIdentifier(n) {
|
|
764
845
|
this.identifiers && (this.identifiers = Object.fromEntries(
|
|
765
|
-
Object.entries(this.identifiers).filter(([
|
|
846
|
+
Object.entries(this.identifiers).filter(([d]) => d !== n)
|
|
766
847
|
), this.identifiers = Object.keys(this.identifiers).length ? this.identifiers : void 0, r(this));
|
|
767
848
|
}
|
|
768
849
|
};
|
|
769
|
-
return r(
|
|
770
|
-
},
|
|
771
|
-
function
|
|
772
|
-
if (
|
|
850
|
+
return r(s), s;
|
|
851
|
+
}, it = () => ce() ? nt() : null;
|
|
852
|
+
function ot() {
|
|
853
|
+
if (T())
|
|
773
854
|
return globalThis.window.pickedConfig;
|
|
774
855
|
}
|
|
775
|
-
function
|
|
776
|
-
if (!
|
|
856
|
+
function at() {
|
|
857
|
+
if (!T())
|
|
777
858
|
return;
|
|
778
|
-
const t =
|
|
859
|
+
const t = ot(), e = t?.organizationId, r = t?.projectId;
|
|
779
860
|
return e && r ? { organizationId: e, projectId: r } : void 0;
|
|
780
861
|
}
|
|
781
|
-
function
|
|
782
|
-
if (!
|
|
862
|
+
function ct() {
|
|
863
|
+
if (!N())
|
|
783
864
|
return;
|
|
784
865
|
const t = document.getElementById("picked_script") || document.querySelector("script#picked") || // legacy support for 'cvly' script tag
|
|
785
866
|
document.getElementById("cvly");
|
|
@@ -788,16 +869,16 @@ function ot() {
|
|
|
788
869
|
const e = t.dataset.organizationid || t.getAttribute("organization-id"), r = t.dataset.projectid || t.getAttribute("project-id");
|
|
789
870
|
return e && r ? { organizationId: e, projectId: r } : void 0;
|
|
790
871
|
}
|
|
791
|
-
function
|
|
872
|
+
function ut(t) {
|
|
792
873
|
const { organizationId: e, projectId: r } = t;
|
|
793
874
|
if (e && r)
|
|
794
875
|
return { organizationId: e, projectId: r };
|
|
795
|
-
const
|
|
876
|
+
const s = at();
|
|
877
|
+
if (s)
|
|
878
|
+
return s;
|
|
879
|
+
const n = ct();
|
|
796
880
|
if (n)
|
|
797
881
|
return n;
|
|
798
|
-
const i = ot();
|
|
799
|
-
if (i)
|
|
800
|
-
return i;
|
|
801
882
|
throw new Error(
|
|
802
883
|
`organizationId and projectId are required. You can provide them via one of:
|
|
803
884
|
(1) createClient({ organizationId, projectId }) options;
|
|
@@ -805,13 +886,13 @@ function at(t) {
|
|
|
805
886
|
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`
|
|
806
887
|
);
|
|
807
888
|
}
|
|
808
|
-
function
|
|
889
|
+
function O(t) {
|
|
809
890
|
return t == null || t === "" || Number.isNaN(t);
|
|
810
891
|
}
|
|
811
|
-
const
|
|
812
|
-
default: (t, e) =>
|
|
813
|
-
append: (t, e) => e &&
|
|
814
|
-
prepend: (t, e) => e &&
|
|
892
|
+
const dt = {
|
|
893
|
+
default: (t, e) => O(t) ? String(e ?? "") : String(t),
|
|
894
|
+
append: (t, e) => e && !O(t) ? `${t} ${e}` : t,
|
|
895
|
+
prepend: (t, e) => e && !O(t) ? `${e} ${t}` : t,
|
|
815
896
|
upper: (t) => typeof t == "string" ? t.toUpperCase() : t,
|
|
816
897
|
lower: (t) => typeof t == "string" ? t.toLowerCase() : t,
|
|
817
898
|
capitalize: (t) => typeof t == "string" ? t.charAt(0).toUpperCase() + t.slice(1) : t,
|
|
@@ -822,131 +903,129 @@ const ct = {
|
|
|
822
903
|
if (Array.isArray(t))
|
|
823
904
|
return e.format(t.map(String));
|
|
824
905
|
if (t instanceof Map) {
|
|
825
|
-
const r = Array.from(t.entries()).map(([
|
|
906
|
+
const r = Array.from(t.entries()).map(([s, n]) => `${s}: ${n}`);
|
|
826
907
|
return e.format(r);
|
|
827
908
|
}
|
|
828
909
|
return t instanceof Set ? e.format(Array.from(t).map(String)) : t;
|
|
829
910
|
}
|
|
830
911
|
};
|
|
831
|
-
function
|
|
912
|
+
function lt(t) {
|
|
832
913
|
return typeof t == "object" && t !== null;
|
|
833
914
|
}
|
|
834
|
-
function
|
|
915
|
+
function pt(t, e) {
|
|
835
916
|
let r = e;
|
|
836
|
-
for (const
|
|
837
|
-
if (
|
|
838
|
-
r = r[
|
|
917
|
+
for (const s of t.split("."))
|
|
918
|
+
if (lt(r) && s in r)
|
|
919
|
+
r = r[s];
|
|
839
920
|
else
|
|
840
921
|
return;
|
|
841
922
|
return typeof r == "function" ? r() : r;
|
|
842
923
|
}
|
|
843
|
-
function
|
|
844
|
-
const r = t.split("|").map((
|
|
845
|
-
let
|
|
846
|
-
for (const
|
|
847
|
-
const [
|
|
848
|
-
h && (
|
|
924
|
+
function ft(t, e) {
|
|
925
|
+
const r = t.split("|").map((d) => d.trim()), s = r.shift() ?? "";
|
|
926
|
+
let n = pt(s, e);
|
|
927
|
+
for (const d of r) {
|
|
928
|
+
const [a, ...i] = d.split(":"), p = a?.trim() ?? "", l = i.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g, ""), h = dt[p];
|
|
929
|
+
h && (n = h(n, l));
|
|
849
930
|
}
|
|
850
|
-
return
|
|
931
|
+
return O(n) ? "" : typeof n == "object" ? JSON.stringify(n) : String(n);
|
|
851
932
|
}
|
|
852
|
-
function
|
|
853
|
-
let r = "",
|
|
854
|
-
for (;
|
|
855
|
-
if (t[
|
|
856
|
-
|
|
857
|
-
let
|
|
858
|
-
for (;
|
|
859
|
-
if (t[
|
|
860
|
-
|
|
933
|
+
function gt(t, e) {
|
|
934
|
+
let r = "", s = 0;
|
|
935
|
+
for (; s < t.length; )
|
|
936
|
+
if (t[s] === "{" && t[s + 1] === "{") {
|
|
937
|
+
s += 2;
|
|
938
|
+
let n = "";
|
|
939
|
+
for (; s < t.length; ) {
|
|
940
|
+
if (t[s] === "}" && t[s + 1] === "}") {
|
|
941
|
+
s += 2;
|
|
861
942
|
break;
|
|
862
943
|
}
|
|
863
|
-
|
|
944
|
+
n += t[s++];
|
|
864
945
|
}
|
|
865
|
-
r +=
|
|
946
|
+
r += ft(n.trim(), e);
|
|
866
947
|
} else
|
|
867
|
-
r += t[
|
|
948
|
+
r += t[s++];
|
|
868
949
|
return r;
|
|
869
950
|
}
|
|
870
|
-
class
|
|
951
|
+
class mt {
|
|
871
952
|
static logger = k;
|
|
872
953
|
options;
|
|
873
954
|
isReady = !1;
|
|
874
955
|
project;
|
|
875
956
|
plugins = {};
|
|
876
|
-
eventBus =
|
|
957
|
+
eventBus = Te();
|
|
877
958
|
organizationId;
|
|
878
959
|
projectId;
|
|
879
960
|
apiUrl;
|
|
880
961
|
session;
|
|
881
962
|
precondition;
|
|
882
963
|
condition;
|
|
883
|
-
searchParams =
|
|
884
|
-
history =
|
|
885
|
-
components =
|
|
964
|
+
searchParams = tt();
|
|
965
|
+
history = Ne();
|
|
966
|
+
components = be({ client: this });
|
|
886
967
|
experienceInstances = ne({ client: this });
|
|
887
|
-
experiences =
|
|
888
|
-
frameworks =
|
|
889
|
-
predicates =
|
|
890
|
-
features =
|
|
891
|
-
responses =
|
|
892
|
-
fields =
|
|
968
|
+
experiences = ge({ client: this });
|
|
969
|
+
frameworks = xe({ client: this });
|
|
970
|
+
predicates = Oe({ client: this });
|
|
971
|
+
features = Me({ client: this });
|
|
972
|
+
responses = Xe({ client: this });
|
|
973
|
+
fields = Le();
|
|
893
974
|
actions = qe();
|
|
894
975
|
constructor(e) {
|
|
895
976
|
k("info", "Picked client initializing.");
|
|
896
|
-
const { organizationId: r, projectId:
|
|
897
|
-
this.organizationId = r, this.projectId =
|
|
977
|
+
const { organizationId: r, projectId: s } = ut(e);
|
|
978
|
+
this.organizationId = r, this.projectId = s, this.options = Object.freeze(e), this.apiUrl = e.apiUrl || et(), this.session = it(), this.setupPlugins(), this.setupFeatures(), this.setupPredicates(), this.setupActions(), this.precondition = e.precondition, this.condition = e.condition, this.eventBus({ type: "load", version: Ze() }), k("info", "Picked client initialized.");
|
|
898
979
|
}
|
|
899
|
-
start() {
|
|
900
|
-
|
|
901
|
-
if (!
|
|
980
|
+
start = () => {
|
|
981
|
+
Be(this), (async () => {
|
|
982
|
+
if (!N())
|
|
902
983
|
return;
|
|
903
984
|
let r;
|
|
904
|
-
typeof this.precondition > "u" ? r = !0 : typeof this.precondition == "boolean" ? r = this.precondition : r = await
|
|
905
|
-
let
|
|
906
|
-
r && (this.condition === void 0 ?
|
|
907
|
-
const
|
|
908
|
-
if (typeof
|
|
909
|
-
const
|
|
910
|
-
this.session.setIsUser(
|
|
985
|
+
typeof this.precondition > "u" ? r = !0 : typeof this.precondition == "boolean" ? r = this.precondition : r = await E(this, this.precondition) === !0;
|
|
986
|
+
let s;
|
|
987
|
+
r && (this.condition === void 0 ? s = !0 : typeof this.condition == "boolean" ? s = this.condition : s = await E(this, this.condition) === !0);
|
|
988
|
+
const n = r && s === !0;
|
|
989
|
+
if (typeof s == "boolean" && this.session) {
|
|
990
|
+
const d = s;
|
|
991
|
+
this.session.setIsUser(d), this.eventBus({ type: "user_decide", value: d });
|
|
911
992
|
}
|
|
912
|
-
this.eventBus({ type: "initialize" }), document.body &&
|
|
993
|
+
this.eventBus({ type: "initialize" }), document.body && n && U(this), await ie(), n && U(this), this.eventBus({ type: "ready" }), this.isReady = !0, this.session && this.eventBus({ type: "session", ...this.session });
|
|
913
994
|
})();
|
|
914
|
-
}
|
|
915
|
-
registerFramework(e) {
|
|
916
|
-
|
|
917
|
-
}
|
|
918
|
-
registerComponent(e, r) {
|
|
919
|
-
|
|
920
|
-
}
|
|
921
|
-
registerPlugin(e) {
|
|
922
|
-
|
|
923
|
-
}
|
|
924
|
-
registerFeature(e, r) {
|
|
925
|
-
|
|
926
|
-
}
|
|
927
|
-
registerPredicate(e, r) {
|
|
928
|
-
|
|
929
|
-
}
|
|
930
|
-
registerField(e) {
|
|
931
|
-
|
|
932
|
-
}
|
|
933
|
-
registerAction(e, r) {
|
|
995
|
+
};
|
|
996
|
+
registerFramework = (e) => {
|
|
997
|
+
je(e, this.frameworks);
|
|
998
|
+
};
|
|
999
|
+
registerComponent = (e, r) => {
|
|
1000
|
+
_(e, r, this.components);
|
|
1001
|
+
};
|
|
1002
|
+
registerPlugin = (e) => {
|
|
1003
|
+
ye(this, e, this.plugins);
|
|
1004
|
+
};
|
|
1005
|
+
registerFeature = (e, r) => {
|
|
1006
|
+
Ve(e, r, this.features);
|
|
1007
|
+
};
|
|
1008
|
+
registerPredicate = (e, r) => {
|
|
1009
|
+
ze(e, r, this.predicates);
|
|
1010
|
+
};
|
|
1011
|
+
registerField = (e) => {
|
|
1012
|
+
Je(e, this.fields);
|
|
1013
|
+
};
|
|
1014
|
+
registerAction = (e, r) => {
|
|
934
1015
|
Ke(e, r, this.actions);
|
|
935
|
-
}
|
|
936
|
-
registerExperience(e) {
|
|
937
|
-
e.component &&
|
|
938
|
-
}
|
|
939
|
-
getStateSnapshot()
|
|
940
|
-
|
|
941
|
-
}
|
|
942
|
-
async launchExperienceById(e) {
|
|
1016
|
+
};
|
|
1017
|
+
registerExperience = (e) => {
|
|
1018
|
+
e.component && _(`experience:${e.id}`, e.component, this.components), me(e, this.experiences);
|
|
1019
|
+
};
|
|
1020
|
+
getStateSnapshot = () => Y(this);
|
|
1021
|
+
launchExperienceById = async (e) => {
|
|
943
1022
|
const r = this.experiences.getById(e).getState();
|
|
944
1023
|
if (!r) {
|
|
945
1024
|
k("warn", `Experience with id '${e}' not found.`);
|
|
946
1025
|
return;
|
|
947
1026
|
}
|
|
948
1027
|
W(this, r);
|
|
949
|
-
}
|
|
1028
|
+
};
|
|
950
1029
|
// private async fetchProject() {
|
|
951
1030
|
// if (this.project) {
|
|
952
1031
|
// return
|
|
@@ -959,14 +1038,14 @@ class ft {
|
|
|
959
1038
|
setupPlugins() {
|
|
960
1039
|
this.options.plugins?.forEach((e) => {
|
|
961
1040
|
if (Array.isArray(e)) {
|
|
962
|
-
e.forEach((
|
|
963
|
-
this.registerPlugin(
|
|
1041
|
+
e.forEach((s) => {
|
|
1042
|
+
this.registerPlugin(s);
|
|
964
1043
|
});
|
|
965
1044
|
return;
|
|
966
1045
|
}
|
|
967
1046
|
const r = typeof e == "function" ? e() : e;
|
|
968
1047
|
if (Array.isArray(r)) {
|
|
969
|
-
r.forEach((
|
|
1048
|
+
r.forEach((s) => this.registerPlugin(s));
|
|
970
1049
|
return;
|
|
971
1050
|
}
|
|
972
1051
|
this.registerPlugin(r);
|
|
@@ -974,21 +1053,21 @@ class ft {
|
|
|
974
1053
|
}
|
|
975
1054
|
setupFeatures() {
|
|
976
1055
|
const e = this.options.features;
|
|
977
|
-
e && (Object.entries(e).forEach(([r,
|
|
978
|
-
const
|
|
979
|
-
this.registerFeature(r,
|
|
1056
|
+
e && (Object.entries(e).forEach(([r, s]) => {
|
|
1057
|
+
const n = typeof s == "function" ? s() : s;
|
|
1058
|
+
this.registerFeature(r, n);
|
|
980
1059
|
}), this.searchParams.feature && this.searchParams.feature.forEach((r) => {
|
|
981
1060
|
try {
|
|
982
|
-
const [
|
|
983
|
-
if (!
|
|
1061
|
+
const [s, n] = r.split(":");
|
|
1062
|
+
if (!s || !n)
|
|
984
1063
|
return;
|
|
985
|
-
let
|
|
986
|
-
|
|
987
|
-
key: `${
|
|
1064
|
+
let d = n;
|
|
1065
|
+
d === "true" && (d = !0), d === "false" && (d = !1), this.registerFeature(s, {
|
|
1066
|
+
key: `${d}`,
|
|
988
1067
|
// use the assigned bucket value as the key
|
|
989
|
-
name:
|
|
1068
|
+
name: s,
|
|
990
1069
|
// eslint-disable-next-line sonarjs/function-return-type
|
|
991
|
-
decide: () =>
|
|
1070
|
+
decide: () => d,
|
|
992
1071
|
storage: "session"
|
|
993
1072
|
});
|
|
994
1073
|
} catch {
|
|
@@ -997,27 +1076,25 @@ class ft {
|
|
|
997
1076
|
}
|
|
998
1077
|
setupPredicates() {
|
|
999
1078
|
const e = this.options.predicates;
|
|
1000
|
-
e && Object.entries(e).forEach(([r,
|
|
1001
|
-
if (typeof
|
|
1079
|
+
e && Object.entries(e).forEach(([r, s]) => {
|
|
1080
|
+
if (typeof s != "function") {
|
|
1002
1081
|
k("warn", `Predicate "${r}" is not a function.`);
|
|
1003
1082
|
return;
|
|
1004
1083
|
}
|
|
1005
|
-
this.registerPredicate(r,
|
|
1084
|
+
this.registerPredicate(r, s);
|
|
1006
1085
|
});
|
|
1007
1086
|
}
|
|
1008
1087
|
setupActions() {
|
|
1009
1088
|
const e = this.options.actions;
|
|
1010
|
-
e && Object.entries(e).forEach(([r,
|
|
1011
|
-
if (typeof
|
|
1089
|
+
e && Object.entries(e).forEach(([r, s]) => {
|
|
1090
|
+
if (typeof s != "function") {
|
|
1012
1091
|
k("warn", `Action "${r}" is not a function.`);
|
|
1013
1092
|
return;
|
|
1014
1093
|
}
|
|
1015
|
-
this.registerAction(r,
|
|
1094
|
+
this.registerAction(r, s);
|
|
1016
1095
|
});
|
|
1017
1096
|
}
|
|
1018
|
-
getPluginConfig(e) {
|
|
1019
|
-
return this.plugins[e] ?? {};
|
|
1020
|
-
}
|
|
1097
|
+
getPluginConfig = (e) => this.plugins[e] ?? {};
|
|
1021
1098
|
/**
|
|
1022
1099
|
* Interpolates a template string using values from the client's response store and/or a provided context.
|
|
1023
1100
|
* Supports dot-notation, modifiers, and executing functions found in the context.
|
|
@@ -1061,57 +1138,67 @@ class ft {
|
|
|
1061
1138
|
* // => "Fruits: apple, banana, and cherry"
|
|
1062
1139
|
*/
|
|
1063
1140
|
renderString = (e, r) => {
|
|
1064
|
-
const
|
|
1065
|
-
return
|
|
1141
|
+
const s = this.responses.listStore.getState().reduce((n, d) => (n[d.fieldId] = d.value, n), {});
|
|
1142
|
+
return gt(e, {
|
|
1066
1143
|
...r,
|
|
1067
|
-
responses:
|
|
1144
|
+
responses: s
|
|
1068
1145
|
});
|
|
1069
1146
|
};
|
|
1070
1147
|
}
|
|
1071
|
-
function
|
|
1072
|
-
return t.options
|
|
1148
|
+
function Q(t) {
|
|
1149
|
+
return Array.isArray(t.options) && t.options.some((e) => "condition" in e);
|
|
1073
1150
|
}
|
|
1074
|
-
function
|
|
1075
|
-
return t.some((e) => e.condition ||
|
|
1151
|
+
function ht(t) {
|
|
1152
|
+
return t.some((e) => e.condition || Q(e));
|
|
1076
1153
|
}
|
|
1077
|
-
async function
|
|
1078
|
-
return e.length === 0
|
|
1079
|
-
e.map(async (
|
|
1080
|
-
|
|
1154
|
+
async function xt(t, e) {
|
|
1155
|
+
return e.length === 0 ? e : (await Promise.all(
|
|
1156
|
+
e.map(async (s) => {
|
|
1157
|
+
let n = s;
|
|
1158
|
+
if (s.options && typeof s.options == "function")
|
|
1159
|
+
try {
|
|
1160
|
+
const l = s.options, h = await Promise.resolve(l());
|
|
1161
|
+
n = { ...s, options: h };
|
|
1162
|
+
} catch {
|
|
1163
|
+
n = { ...s, options: null };
|
|
1164
|
+
}
|
|
1165
|
+
if (!ht([n]))
|
|
1166
|
+
return n;
|
|
1167
|
+
if (!(n.condition ? await E(t, n.condition) : !0))
|
|
1081
1168
|
return null;
|
|
1082
|
-
if (!n.options || !
|
|
1169
|
+
if (!n.options || !Q(n) || !Array.isArray(n.options))
|
|
1083
1170
|
return n;
|
|
1084
|
-
const
|
|
1085
|
-
n.options.map(async (
|
|
1086
|
-
)).filter((
|
|
1087
|
-
return
|
|
1171
|
+
const i = (await Promise.all(
|
|
1172
|
+
n.options.map(async (l) => l.condition ? await E(t, l.condition) ? l : null : l)
|
|
1173
|
+
)).filter((l) => l !== null);
|
|
1174
|
+
return i.length === n.options.length ? n : i.length === 0 ? null : { ...n, options: i };
|
|
1088
1175
|
})
|
|
1089
|
-
)).filter((
|
|
1176
|
+
)).filter((s) => s !== null);
|
|
1090
1177
|
}
|
|
1091
|
-
const
|
|
1092
|
-
const e = new
|
|
1093
|
-
return
|
|
1178
|
+
const jt = (t) => {
|
|
1179
|
+
const e = new mt(t);
|
|
1180
|
+
return de(e), e;
|
|
1094
1181
|
};
|
|
1095
1182
|
export {
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1183
|
+
mt as Picked,
|
|
1184
|
+
jt as createClient,
|
|
1185
|
+
P as createStorageKey,
|
|
1186
|
+
E as evaluateRuleLogic,
|
|
1187
|
+
ot as getPickedConfig,
|
|
1188
|
+
xt as getStepFields,
|
|
1189
|
+
Pt as isPickedRoot,
|
|
1190
|
+
z as localStore,
|
|
1191
|
+
C as sessionStore,
|
|
1192
|
+
Rt as subscribe,
|
|
1193
|
+
Ot as supportsCookies,
|
|
1194
|
+
ue as supportsCryptoRandomUUID,
|
|
1195
|
+
N as supportsDocument,
|
|
1196
|
+
zt as supportsHistory,
|
|
1110
1197
|
Ct as supportsIntersectionObserver,
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1198
|
+
ce as supportsLocalStorage,
|
|
1199
|
+
Mt as supportsLocation,
|
|
1200
|
+
Vt as supportsSessionStorage,
|
|
1114
1201
|
Dt as supportsShadowRoot,
|
|
1115
|
-
|
|
1116
|
-
|
|
1202
|
+
Nt as supportsWebComponents,
|
|
1203
|
+
T as supportsWindow
|
|
1117
1204
|
};
|