@picked/client 0.0.1-dev.1783575114714 → 0.0.1-dev.1783642866820

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 (41) hide show
  1. package/dist/{api-C8oFjhpj.js → api-4pMvd_kR.js} +1 -1
  2. package/dist/{api-Dr44uSJA.cjs → api-BXhgvSc-.cjs} +1 -1
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/plugins/dom-observer/index.js +1 -1
  5. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  6. package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
  7. package/dist/cjs/server/index.js +1 -1
  8. package/dist/docs/actions.mdx +16 -2
  9. package/dist/docs/sdk/actions.md +21 -3
  10. package/dist/{dom-CZyRgp2P.js → dom-BwmTHeT7.js} +12 -17
  11. package/dist/dom-CDrHc_j9.cjs +1 -0
  12. package/dist/esm/index.js +384 -488
  13. package/dist/esm/plugins/dom-observer/index.js +1 -1
  14. package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
  15. package/dist/esm/plugins/history-browser-storage/index.js +11 -33
  16. package/dist/esm/server/index.js +2 -2
  17. package/dist/experience-instance-DunhI3b8.cjs +1 -0
  18. package/dist/{experience-instance-M2kR3nTp.js → experience-instance-pTMwxW1R.js} +207 -200
  19. package/dist/{plugin-8aSF9x8V.cjs → plugin-DDe5zJhy.cjs} +1 -1
  20. package/dist/{plugin-DiVy3Ubv.js → plugin-DfzEBtiA.js} +1 -1
  21. package/dist/types/entities/action/action.d.ts +7 -2
  22. package/dist/types/entities/action/action.d.ts.map +1 -1
  23. package/dist/types/entities/experience/experience.d.ts +2 -2
  24. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  25. package/dist/types/entities/experience-instance/experience-instance.d.ts +10 -23
  26. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  27. package/dist/types/entities/history/history.d.ts +16 -30
  28. package/dist/types/entities/history/history.d.ts.map +1 -1
  29. package/dist/types/entities/response/response.d.ts +0 -1
  30. package/dist/types/entities/response/response.d.ts.map +1 -1
  31. package/dist/types/picked.d.ts +14 -10
  32. package/dist/types/picked.d.ts.map +1 -1
  33. package/dist/types/plugins/history-browser-storage/plugin.d.ts +0 -17
  34. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  35. package/dist/types/utils/dom.d.ts +0 -94
  36. package/dist/types/utils/dom.d.ts.map +1 -1
  37. package/dist/types/utils/node-tree/get-next-node-from-action.d.ts +24 -0
  38. package/dist/types/utils/node-tree/get-next-node-from-action.d.ts.map +1 -0
  39. package/package.json +2 -2
  40. package/dist/dom-CdxDV3e-.cjs +0 -1
  41. package/dist/experience-instance-BbSXoRrr.cjs +0 -1
@@ -1,8 +1,7 @@
1
1
  import { n as e, t } from "./rules-logic-HesIUCu6.js";
2
2
  import "./logger-DMN6TxJJ.js";
3
- import { n, s as r } from "./dom-CZyRgp2P.js";
4
- import { t as i } from "./id-Bo4RBeOs.js";
5
- import { attach as a, combine as o, createApi as s, createDomain as c, createEffect as l, createEvent as u, sample as d, split as ee } from "effector";
3
+ import { n, o as r } from "./dom-BwmTHeT7.js";
4
+ import { attach as i, combine as a, createApi as o, createDomain as s, createEffect as c, createEvent as l, sample as u, split as d } from "effector";
6
5
  import { createFactory as f, invoke as p } from "@withease/factories";
7
6
  //#region src/utils/nodes.ts
8
7
  function m(e) {
@@ -22,7 +21,7 @@ function v(e) {
22
21
  }
23
22
  //#endregion
24
23
  //#region src/lifecycle/condition-selection.ts
25
- var y = "conditions.", b = c("condition-results");
24
+ var y = "conditions.", b = s("condition-results");
26
25
  function x(e) {
27
26
  return typeof e == "object" && !!e && !Array.isArray(e);
28
27
  }
@@ -40,7 +39,7 @@ function C(e) {
40
39
  return JSON.stringify(S(e));
41
40
  }
42
41
  var w = f(() => {
43
- let e = b.store({}), t = s(e, {
42
+ let e = b.store({}), t = o(e, {
44
43
  set(e, t) {
45
44
  return {
46
45
  ...e,
@@ -141,7 +140,7 @@ async function M(e, t, n) {
141
140
  var N = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add(n.id), h(n) && !r ? [n] : t.filter((e) => e.sourceNodeId === n.id).flatMap((n) => {
142
141
  let r = e.find((e) => e.id === n.destinationNodeId);
143
142
  return r ? N(e, t, r, !1, i) : [];
144
- })), te = (e, t, n) => N(e, t, n, !0, /* @__PURE__ */ new Set()), P = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
143
+ })), ee = (e, t, n) => N(e, t, n, !0, /* @__PURE__ */ new Set()), P = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
145
144
  if (i.has(n.id)) return [-1, -1];
146
145
  i.add(n.id);
147
146
  let a = t.filter((e) => e.sourceNodeId === n.id);
@@ -154,7 +153,7 @@ var N = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
154
153
  a !== -1 && (o = Math.min(o, a + 1), s = Math.max(s, c + 1));
155
154
  }
156
155
  return o === Infinity ? [-1, -1] : [o, s];
157
- }, ne = (e, t, n) => P(e, t, n, !0, /* @__PURE__ */ new Set()), F = (e, t, n, r = /* @__PURE__ */ new Set()) => {
156
+ }, te = (e, t, n) => P(e, t, n, !0, /* @__PURE__ */ new Set()), F = (e, t, n, r = /* @__PURE__ */ new Set()) => {
158
157
  if (r.has(n.id)) return [-1, -1];
159
158
  if (r.add(n.id), n.type === "origin") return [0, 0];
160
159
  let i = t.filter((e) => e.destinationNodeId === n.id);
@@ -167,72 +166,90 @@ var N = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
167
166
  s !== -1 && (a = Math.min(a, s + 1), o = Math.max(o, c + 1));
168
167
  }
169
168
  return a === Infinity ? [-1, -1] : [a, o];
170
- }, re = (e, t, n) => F(e, t, n, /* @__PURE__ */ new Set()), I = (e) => e.find((e) => e.type === "origin") || null, L = (e, t, n) => {
169
+ }, ne = (e, t, n) => F(e, t, n, /* @__PURE__ */ new Set()), I = (e) => e.find((e) => e.type === "origin") || null, L = (e, t, n) => {
171
170
  if (!e) return I(t);
172
171
  let r = n.find((t) => t.sourceNodeId === e.id);
173
172
  return r && t.find((e) => e.id === r.destinationNodeId) || null;
174
173
  };
175
174
  //#endregion
176
175
  //#region src/utils/node-tree/get-next-node-from-condition.ts
177
- async function ie(e, t, n, r) {
176
+ async function re(e, t, n, r) {
178
177
  let i = e ? "true" : "false", a = r.find((e) => e.sourceHandle === i && e.sourceNodeId === t);
179
178
  return n.find((e) => e.id === a?.destinationNodeId);
180
179
  }
181
180
  //#endregion
182
- //#region src/entities/experience-instance/experience-instance.ts
181
+ //#region src/utils/node-tree/get-next-node-from-action.ts
183
182
  function R(e, t, n, r) {
184
- let i = t.find((t) => t.sourceNodeId === e.id && t.sourceHandle === r);
185
- return i ? n.find((e) => e.id === i.destinationNodeId) ?? null : null;
183
+ let i = r.filter((e) => e.sourceNodeId === t), a = e ? "true" : "false", o = i.find((e) => e.sourceHandle === a) ?? i.find((e) => e.sourceHandle == null);
184
+ return n.find((e) => e.id === o?.destinationNodeId);
186
185
  }
187
- var z = c("experience-instance"), B = f(({ client: r, experience: c, target: f, options: p }) => {
188
- let y = i("exp-instance");
189
- r.history.seedInstanceFromSnapshot({
190
- instanceId: y,
191
- experienceId: c.id
186
+ //#endregion
187
+ //#region src/entities/experience-instance/experience-instance.ts
188
+ var z = s("experience-instance"), B = f(({ client: r, experience: s, target: f, options: p }) => {
189
+ let y = l(), b = l(), x = l(), S = l(), C = l(), w = l(), T = l(), E = s.componentStore, D = z.store("transitioning"), O = r.history.entriesStore.map((e) => e.filter((e) => e.experienceId === s.id)), k = O.map((e) => e.filter((e) => h(e.node))), A = O.map((e) => e.at(-1)?.node || null), j = z.store(null);
190
+ u({
191
+ clock: [A, r.steps.listStore],
192
+ source: {
193
+ steps: r.steps.listStore,
194
+ node: A
195
+ },
196
+ filter: ({ node: e }) => e !== null && h(e),
197
+ fn: ({ steps: e, node: t }) => t && h(t) ? e.find((e) => e.id === t.stepId) ?? null : null,
198
+ target: j
192
199
  });
193
- let b = u(), x = u(), S = u(), C = u(), w = u(), T = u(), E = u(), D = u(), O = c.componentStore, k = z.store("transitioning"), A = r.history.entriesStore.map((e) => e.filter((e) => e.instanceId === y)), j = A.map((e) => e.filter((e) => h(e.node))), M = j.map((e) => e.length >= 2), N = A.map((e) => e.at(-1)?.node || null), P = o(r.steps.listStore, N, (e, t) => e.find((e) => t && h(t) && e.id === t.stepId) || null), F = o(r.steps.listStore, j, (e, t) => {
200
+ let M = a(r.steps.listStore, k, (e, t) => {
194
201
  let n = t.at(-2);
195
202
  if (!n || !h(n.node)) return null;
196
203
  let r = n.node;
197
204
  return e.find((e) => e.id === r.stepId) || null;
198
- }), B = o(c.treeStore, N, ({ nodes: e, edges: t }, n) => n ? te(e, t, n) : []), V = o(c.treeStore, N, ({ nodes: e, edges: t }, n) => n ? re(e, t, n) : [-1, -1]), H = o(c.treeStore, N, ({ nodes: e, edges: t }, n) => n ? ne(e, t, n) : [-1, -1]), U = z.store(!1), W = s(U, {
205
+ }), N = a(s.treeStore, A, ({ nodes: e, edges: t }, n) => n ? ee(e, t, n) : []), P = a(s.treeStore, A, ({ nodes: e, edges: t }, n) => n ? ne(e, t, n) : [-1, -1]), F = a(s.treeStore, A, ({ nodes: e, edges: t }, n) => n ? te(e, t, n) : [-1, -1]), B = z.store(!1), V = o(B, {
199
206
  open: () => !0,
200
207
  close: () => !1,
201
208
  toggle: (e) => !e,
202
209
  set: (e, t) => t
203
- }), ae = l(() => {
204
- r.history.back({ instanceId: y });
205
- }), oe = a({
206
- source: c.treeStore,
207
- effect: (e, t) => {
210
+ }), H = c(async () => {
211
+ r.history.back({ experienceId: s.id });
212
+ }), ie = i({
213
+ source: s.treeStore,
214
+ effect: async (e, t) => {
208
215
  let n = e.nodes.find((e) => h(e) && e.stepId === t);
209
216
  n && r.history.push({
210
- instanceId: y,
211
- experienceId: c.id,
217
+ experienceId: s.id,
212
218
  node: n
213
219
  });
214
220
  }
215
- }), G = a({
216
- source: N,
221
+ }), ae = i({
222
+ source: s.treeStore,
223
+ effect: async (e, t) => {
224
+ let n = e.steps.find((e) => e.key === t);
225
+ if (!n) return;
226
+ let i = e.nodes.find((e) => h(e) && e.stepId === n.id);
227
+ i && r.history.push({
228
+ experienceId: s.id,
229
+ node: i
230
+ });
231
+ }
232
+ }), U = i({
233
+ source: A,
217
234
  effect: (e) => {}
218
- }), K = a({
219
- source: c.treeStore,
235
+ }), W = i({
236
+ source: s.treeStore,
220
237
  effect: async ({ nodes: e }) => I(e)
221
- }), q = a({
222
- source: c.treeStore,
238
+ }), G = i({
239
+ source: s.treeStore,
223
240
  effect: async ({ nodes: e, edges: t }, n) => {
224
241
  if (_(n)) return L(n, e, t);
225
242
  }
226
- }), J = a({
227
- source: c.treeStore,
243
+ }), K = i({
244
+ source: s.treeStore,
228
245
  effect: async ({ nodes: e, edges: n, conditions: i }, a) => {
229
246
  if (!m(a)) return;
230
247
  let o = i.find((e) => e.id === a.conditionId)?.logic;
231
- return o ? ie(!!await t(r, o), a.id, e, n) : void 0;
248
+ return o ? re(!!await t(r, o), a.id, e, n) : void 0;
232
249
  }
233
- }), Y = a({
250
+ }), q = i({
234
251
  source: {
235
- tree: c.treeStore,
252
+ tree: s.treeStore,
236
253
  actions: r.actions.listStore,
237
254
  snapshot: r.stateSnapshotStore
238
255
  },
@@ -245,50 +262,52 @@ var z = c("experience-instance"), B = f(({ client: r, experience: c, target: f,
245
262
  return;
246
263
  }
247
264
  let s = t.find((e) => e.key === o)?.action;
248
- if (!s || typeof s != "function") return `${o}`, R(r, a, i, "false");
265
+ if (typeof s != "function") return `${o}`, R(!1, r.id, i, a) ?? null;
266
+ let c = !0;
249
267
  try {
250
- `${o}`, await s({
268
+ `${o}`, c = await s({
251
269
  ...n,
252
270
  args: []
253
- }, { experience: Q });
254
- let e = R(r, a, i, "true");
255
- return e ? (`${o}${e.id}`, e) : (`${r.id}`, null);
271
+ }, { experience: Q }) !== !1;
256
272
  } catch {
257
- `${o}`;
258
- let e = R(r, a, i, "false");
259
- return e ? (`${o}${e.id}`, e) : (`${r.id}`, null);
273
+ `${o}`, c = !1;
274
+ }
275
+ let l = R(c, r.id, i, a);
276
+ if (!l) {
277
+ let e = a.some((e) => e.sourceNodeId === r.id) ? "no edge for its outcome" : "no outgoing edge";
278
+ return `${r.id}${e}`, null;
260
279
  }
280
+ return `${o}${l.id}`, l;
261
281
  }
262
- }), se = l((e) => {
282
+ }), oe = c((e) => {
263
283
  g(e) && r.experiences.launch({ key: e.experienceKey });
264
- }), X = a({
265
- source: [N, c.treeStore],
284
+ }), J = i({
285
+ source: [A, s.treeStore],
266
286
  effect: async ([e, { nodes: t, edges: n }]) => L(e, t, n)
267
- }), Z = a({
268
- source: [N, c.treeStore],
287
+ }), Y = i({
288
+ source: [A, s.treeStore],
269
289
  effect: async ([e, { nodes: t, edges: n }]) => L(e, t, n)
270
- }), ce = l((e) => {
290
+ }), se = c((e) => {
271
291
  r.history.push({
272
- instanceId: y,
273
- experienceId: c.id,
292
+ experienceId: s.id,
274
293
  node: e
275
294
  });
276
- }), le = a({
277
- source: c.configStore,
295
+ }), X = i({
296
+ source: s.configStore,
278
297
  effect: async ({ initializeOpenLogic: n }) => p?.initialiseOpen === void 0 ? e(n) ? !!await t(r, n) : n ?? !1 : p.initialiseOpen
279
- }), ue = o(O, r.frameworks.listStore, (e, t) => {
298
+ }), Z = a(E, r.frameworks.listStore, (e, t) => {
280
299
  if (!e) return null;
281
300
  let n = t.find((t) => t.name === e.component.frameworkName);
282
301
  return n ? {
283
302
  component: e,
284
303
  framework: n
285
304
  } : null;
286
- }, { skipVoid: !1 }), Q, de = a({
287
- source: ue,
305
+ }, { skipVoid: !1 }), Q, ce = i({
306
+ source: Z,
288
307
  effect: (e) => {
289
308
  if (!e) return;
290
309
  if (!f) {
291
- `${c.id}`;
310
+ `${s.id}`;
292
311
  return;
293
312
  }
294
313
  let t = n(f);
@@ -298,179 +317,167 @@ var z = c("experience-instance"), B = f(({ client: r, experience: c, target: f,
298
317
  }
299
318
  });
300
319
  Q = Object.freeze({
301
- id: y,
302
- experienceKey: c.key,
303
- experienceId: c.id,
304
- experienceName: c.name,
305
- configStore: c.configStore,
320
+ id: Math.random().toString(36).substring(7),
321
+ experienceKey: s.key,
322
+ experienceId: s.id,
323
+ experienceName: s.name,
324
+ configStore: s.configStore,
306
325
  target: f,
307
- componentStore: O,
308
- componentAndFrameworkStore: ue,
309
- stateStore: k,
310
- isOpenStore: U,
311
- open: W.open,
312
- close: W.close,
313
- toggleOpen: W.toggle,
314
- setOpen: W.set,
315
- treeStore: c.treeStore,
316
- currentNodeStore: N,
317
- currentStepStore: P,
318
- previousStepStore: F,
319
- nextReachableStepNodesStore: B,
320
- stepsToOriginStore: V,
321
- stepsToLeafStore: H,
322
- goToNextStep: x,
323
- goToPreviousStep: S,
324
- goToStepById: C,
325
- reset: w,
326
- stepsHistoryStore: j,
327
- isResumableStore: M,
328
- restart: T,
329
- mountFx: de
326
+ componentStore: E,
327
+ componentAndFrameworkStore: Z,
328
+ stateStore: D,
329
+ isOpenStore: B,
330
+ open: V.open,
331
+ close: V.close,
332
+ toggleOpen: V.toggle,
333
+ setOpen: V.set,
334
+ treeStore: s.treeStore,
335
+ currentNodeStore: A,
336
+ currentStepStore: j,
337
+ previousStepStore: M,
338
+ nextReachableStepNodesStore: N,
339
+ stepsToOriginStore: P,
340
+ stepsToLeafStore: F,
341
+ goToNextStep: b,
342
+ goToPreviousStep: x,
343
+ goToStepById: S,
344
+ goToStepByKey: C,
345
+ stepsHistoryStore: k,
346
+ mountFx: ce
330
347
  });
331
- let $ = u(), fe = u();
332
- d({
333
- clock: N,
348
+ let $ = l(), le = l();
349
+ return u({
350
+ clock: A,
334
351
  target: $
335
- }), d({
352
+ }), u({
336
353
  clock: $,
337
354
  filter: (e) => e === null,
338
- target: K
339
- }), d({
355
+ target: W
356
+ }), u({
340
357
  clock: $,
341
358
  filter: (e) => e !== null,
342
- target: fe
343
- }), ee({
344
- source: fe,
359
+ target: le
360
+ }), d({
361
+ source: le,
345
362
  match: (e) => m(e) ? "condition" : h(e) ? "step" : g(e) ? "launchExperience" : _(e) ? "origin" : v(e) ? "action" : "other",
346
363
  cases: {
347
- origin: q,
348
- condition: J,
349
- step: G,
350
- launchExperience: se,
351
- action: Y,
352
- __: u()
364
+ origin: G,
365
+ condition: K,
366
+ step: U,
367
+ launchExperience: oe,
368
+ action: q,
369
+ __: l()
353
370
  }
354
- }), d({
371
+ }), u({
355
372
  clock: [
356
- J.doneData,
357
- q.doneData,
358
373
  K.doneData,
359
- Z.doneData,
360
- X.doneData,
361
- Y.doneData
374
+ G.doneData,
375
+ W.doneData,
376
+ Y.doneData,
377
+ J.doneData,
378
+ q.doneData
362
379
  ],
363
380
  filter: Boolean,
364
- target: ce
365
- }), d({
366
- clock: x,
367
- target: Z
368
- }), d({
369
- clock: x,
370
- source: P,
381
+ target: se
382
+ }), u({
383
+ clock: b,
384
+ target: Y
385
+ }), u({
386
+ clock: b,
387
+ source: j,
371
388
  filter: Boolean,
372
389
  target: r.eventBus.prepend((e) => ({
373
390
  type: "step_submit",
374
391
  step: e,
375
392
  experience: Q
376
393
  }))
377
- }), d({
378
- clock: Z.done,
379
- source: P,
394
+ }), u({
395
+ clock: Y.done,
396
+ source: j,
380
397
  filter: Boolean,
381
398
  target: r.eventBus.prepend((e) => ({
382
399
  type: "step_submit_success",
383
400
  step: e,
384
401
  experience: Q
385
402
  }))
386
- }), d({
387
- clock: Z.fail,
388
- source: P,
403
+ }), u({
404
+ clock: Y.fail,
405
+ source: j,
389
406
  filter: Boolean,
390
407
  target: r.eventBus.prepend((e) => ({
391
408
  type: "step_submit_error",
392
409
  step: e,
393
410
  experience: Q
394
411
  }))
395
- }), d({
412
+ }), u({
413
+ clock: x,
414
+ target: H
415
+ }), u({
396
416
  clock: S,
397
- target: ae
398
- }), d({
417
+ target: ie
418
+ }), u({
399
419
  clock: C,
400
- target: oe
401
- }), d({
402
- clock: w,
403
- fn: () => ({ instanceId: y }),
404
- target: r.history.clearForInstance
405
- });
406
- let pe = l(() => {
407
- r.responses.clearByExperience(c.id);
408
- });
409
- return d({
410
- clock: T,
411
- fn: () => ({ instanceId: y }),
412
- target: r.history.clearForInstance
413
- }), d({
414
- clock: T,
415
- target: pe
416
- }), d({
417
- source: o([
418
- J.pending,
419
- q.pending,
420
+ target: ae
421
+ }), u({
422
+ source: a([
420
423
  K.pending,
421
- Z.pending
424
+ G.pending,
425
+ W.pending,
426
+ Y.pending,
427
+ J.pending,
428
+ q.pending
422
429
  ]),
423
430
  fn: (e) => e.some(Boolean) ? "transitioning" : "ready",
424
- target: k
425
- }), d({
426
- clock: G.doneData,
427
- source: P,
431
+ target: D
432
+ }), u({
433
+ clock: U.doneData,
434
+ source: j,
428
435
  filter: Boolean,
429
436
  target: r.eventBus.prepend((e) => ({
430
437
  type: "step_enter",
431
438
  step: e,
432
439
  experience: Q
433
440
  }))
434
- }), d({
435
- clock: D,
436
- target: le
437
- }), d({
438
- source: le.doneData,
441
+ }), u({
442
+ clock: T,
443
+ target: X
444
+ }), u({
445
+ source: X.doneData,
439
446
  fn: Boolean,
440
- target: U
441
- }), d({
442
- source: N,
443
- clock: b,
447
+ target: B
448
+ }), u({
449
+ source: A,
450
+ clock: y,
444
451
  filter: (e) => e ? _(e) : !0,
445
- target: X
446
- }), d({
447
- source: U,
452
+ target: J
453
+ }), u({
454
+ source: B,
448
455
  filter: Boolean,
449
- target: b
450
- }), d({
451
- source: U,
456
+ target: y
457
+ }), u({
458
+ source: B,
452
459
  filter: Boolean,
453
460
  target: r.eventBus.prepend(() => ({
454
461
  type: "experience_open",
455
462
  experience: Q
456
463
  }))
457
- }), d({
458
- source: U,
464
+ }), u({
465
+ source: B,
459
466
  filter: (e) => !e,
460
467
  target: r.eventBus.prepend(() => ({
461
468
  type: "experience_close",
462
469
  experience: Q
463
470
  }))
464
- }), d({
465
- clock: E,
466
- target: [D]
467
- }), E(), Q;
471
+ }), u({
472
+ clock: w,
473
+ target: [T]
474
+ }), w(), Q;
468
475
  });
469
476
  function V(e) {
470
477
  return p(B, e);
471
478
  }
472
479
  var H = f(({ client: e }) => {
473
- let t = z.store({}), n = u(), i = u(), a = u(), o = s(t, {
480
+ let t = z.store({}), n = l(), i = l(), a = l(), s = o(t, {
474
481
  register(e, t) {
475
482
  let n = [...e[t.experienceId] ?? []];
476
483
  return n.push(t), {
@@ -485,68 +492,68 @@ var H = f(({ client: e }) => {
485
492
  [n]: r ?? []
486
493
  };
487
494
  }
488
- }), c = l(({ experience: t, target: n, options: r }) => V({
495
+ }), d = c(({ experience: t, target: n, options: r }) => V({
489
496
  client: e,
490
497
  experience: t,
491
498
  target: n,
492
499
  options: r
493
- })), ee = l((e) => {
494
- o.register(e);
495
- }), f = l((e) => {
500
+ })), f = c((e) => {
501
+ s.register(e);
502
+ }), p = c((e) => {
496
503
  e.target && r(e.target, () => {
497
504
  a(e);
498
505
  });
499
- }), p = l((e) => {
500
- o.unregister(e);
501
- }), m = l(async (e) => {
506
+ }), m = c((e) => {
507
+ s.unregister(e);
508
+ }), h = c(async (e) => {
502
509
  await e.mountFx();
503
510
  });
504
- d({
511
+ u({
505
512
  clock: n,
506
- target: c
507
- }), d({
513
+ target: d
514
+ }), u({
508
515
  clock: a,
509
- target: p
510
- }), d({
511
- clock: c.doneData,
516
+ target: m
517
+ }), u({
518
+ clock: d.doneData,
512
519
  target: [
513
- ee,
514
520
  f,
521
+ p,
515
522
  i
516
523
  ]
517
- }), d({
518
- clock: c.doneData,
524
+ }), u({
525
+ clock: d.doneData,
519
526
  target: e.eventBus.prepend((e) => ({
520
527
  type: "experience_initialize",
521
528
  experience: e
522
529
  }))
523
- }), d({
530
+ }), u({
524
531
  clock: i,
525
- target: m
532
+ target: h
526
533
  });
527
- function h(e, t, r) {
534
+ function g(e, t, r) {
528
535
  n({
529
536
  experience: e,
530
537
  target: t,
531
538
  options: r
532
539
  });
533
540
  }
534
- let g = t.map((e) => Object.values(e).flat());
535
- function _(e) {
536
- return g.map((t) => t.filter((t) => t.experienceKey === e), { skipVoid: !1 });
537
- }
541
+ let _ = t.map((e) => Object.values(e).flat());
538
542
  function v(e) {
543
+ return _.map((t) => t.filter((t) => t.experienceKey === e), { skipVoid: !1 });
544
+ }
545
+ function y(e) {
539
546
  return t.map((t) => t[e] || [], { skipVoid: !1 });
540
547
  }
541
548
  return {
542
- spawn: h,
543
- getByExperienceKey: _,
544
- getByExperienceId: v,
545
- listStore: g
549
+ spawn: g,
550
+ getByExperienceKey: v,
551
+ getByExperienceId: y,
552
+ listStore: _
546
553
  };
547
554
  });
548
- function U(e) {
555
+ function ie(e) {
549
556
  return p(H, e);
550
557
  }
551
558
  //#endregion
552
- export { C as a, A as c, j as i, m as l, U as n, M as o, T as r, O as s, V as t, h as u };
559
+ export { C as a, A as c, j as i, m as l, ie as n, M as o, T as r, O as s, V as t, h as u };
@@ -1 +1 @@
1
- require("./logger-CSTvAyyB.cjs");const e=require("./api-Dr44uSJA.cjs");let t=require("effector");function n(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function r(e){return n(e)%100}function i(e,t){return t<=0?!1:t>=100?!0:e<t}function a(e){return typeof e==`object`&&!!e&&`features`in e&&Array.isArray(e.features)}function o(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function s(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function c(e,t){if(Array.isArray(t.fields))for(let n of t.fields)e.registerField(n)}function l(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function u(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)s(e,n)}function d(e,t,n){m(e,t,n.isPreview,n.sessionId),o(e,t),c(e,t),l(e,t),u(e,t)}function f(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function p(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function m(e,t,n,i){let a=p(e),o=r(i);for(let r of t.features)a.has(r.id)||h(e,r,n,o)}function h(e,t,n,r){e.registerFeature(t.id,{key:`v${t.version}`,name:t.name,storage:n?`session`:`local`,decide:()=>t.enabled?i(r,t.weight):!1})}function g(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function _(e){if(typeof e!=`object`||!e||!(`cause`in e))return!1;let{cause:t}=e;return typeof t!=`object`||!t||!(`code`in t)?!1:t.code===`ECONNREFUSED`}async function v(t,n,r){let i=r?.previewToken?`projects/${n}?preview_token=${encodeURIComponent(r.previewToken)}`:`projects/${n}`,o;try{o=await e.t(t,i,r?.headers)}catch(e){return g(t)&&_(e),null}if(!o.ok)return`${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return null}return a(s)?s:null}function y(e){return typeof e!=`object`||!e||!(`experienceId`in e)||!(`content`in e)?!1:Array.isArray(e.content)}async function b(t,n,r,i){let a=i?.previewToken?`projects/${n}/experiences/${r}/content?preview_token=${encodeURIComponent(i.previewToken)}`:`projects/${n}/experiences/${r}/content`,o;try{o=await e.t(t,a,i?.headers,i?.signal)}catch(e){return g(t)&&_(e)||`${r}`,null}if(!o.ok)return`${r}${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return`${r}`,null}return y(s)?s:(`${r}`,null)}function x(e,t){for(let n of t.content)e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function S(e){if(typeof e!=`object`||!e||!(`projectConfig`in e)||!(`experienceContent`in e)||!(`manifestMetadata`in e))return!1;let{experienceContent:t}=e;return typeof t==`function`}async function C(){try{let e=await import(`virtual:picked/data`);return S(e)?e:null}catch{return null}}function w(e,t,n){return r=>b(e,t,r.id,n?{previewToken:n}:void 0)}function T(e,t){return n=>e(n,t?{previewToken:t}:void 0)}function E(e){return(t,n)=>e.experienceContent(t,n)}function D(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&x(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function O(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}async function k(e){let{client:t,apiUrl:n,options:r}=e,i=f(t),a=!!i,o=r?.projectConfig??null,s=r?.getContent?T(r.getContent,i):null,c=null;if(i)return o??=await v(n,t.projectId,{previewToken:i}),s??=w(n,t.projectId,i),{config:o,contentLoader:s,dataSource:c,isPreview:a};if(o&&s)return{config:o,contentLoader:s,dataSource:c,isPreview:a};let l=await C();return l?(o??=l.projectConfig,s??=E(l),c=l.manifestMetadata,{config:o,contentLoader:s,dataSource:c,isPreview:a}):(o??=await v(n,t.projectId),s??=w(n,t.projectId),{config:o,contentLoader:s,dataSource:c,isPreview:a})}function A(e){return{name:`dynamic-experiences`,setup:n=>{let r=e?.apiUrl??n.apiUrl;return{onStart:(0,t.attach)({source:n.session.store.map(e=>e.id),effect:async t=>{let{config:i,contentLoader:a,dataSource:o,isPreview:s}=await k({client:n,apiUrl:r,options:e});a&&(n.contentLoader=D(n,O(a,i))),n.dataSource=o,i&&d(n,i,{isPreview:s,sessionId:t})}})}}}}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return A}});
1
+ require("./logger-CSTvAyyB.cjs");const e=require("./api-BXhgvSc-.cjs");let t=require("effector");function n(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function r(e){return n(e)%100}function i(e,t){return t<=0?!1:t>=100?!0:e<t}function a(e){return typeof e==`object`&&!!e&&`features`in e&&Array.isArray(e.features)}function o(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function s(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function c(e,t){if(Array.isArray(t.fields))for(let n of t.fields)e.registerField(n)}function l(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function u(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)s(e,n)}function d(e,t,n){m(e,t,n.isPreview,n.sessionId),o(e,t),c(e,t),l(e,t),u(e,t)}function f(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function p(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function m(e,t,n,i){let a=p(e),o=r(i);for(let r of t.features)a.has(r.id)||h(e,r,n,o)}function h(e,t,n,r){e.registerFeature(t.id,{key:`v${t.version}`,name:t.name,storage:n?`session`:`local`,decide:()=>t.enabled?i(r,t.weight):!1})}function g(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function _(e){if(typeof e!=`object`||!e||!(`cause`in e))return!1;let{cause:t}=e;return typeof t!=`object`||!t||!(`code`in t)?!1:t.code===`ECONNREFUSED`}async function v(t,n,r){let i=r?.previewToken?`projects/${n}?preview_token=${encodeURIComponent(r.previewToken)}`:`projects/${n}`,o;try{o=await e.t(t,i,r?.headers)}catch(e){return g(t)&&_(e),null}if(!o.ok)return`${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return null}return a(s)?s:null}function y(e){return typeof e!=`object`||!e||!(`experienceId`in e)||!(`content`in e)?!1:Array.isArray(e.content)}async function b(t,n,r,i){let a=i?.previewToken?`projects/${n}/experiences/${r}/content?preview_token=${encodeURIComponent(i.previewToken)}`:`projects/${n}/experiences/${r}/content`,o;try{o=await e.t(t,a,i?.headers,i?.signal)}catch(e){return g(t)&&_(e)||`${r}`,null}if(!o.ok)return`${r}${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return`${r}`,null}return y(s)?s:(`${r}`,null)}function x(e,t){for(let n of t.content)e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function S(e){if(typeof e!=`object`||!e||!(`projectConfig`in e)||!(`experienceContent`in e)||!(`manifestMetadata`in e))return!1;let{experienceContent:t}=e;return typeof t==`function`}async function C(){try{let e=await import(`virtual:picked/data`);return S(e)?e:null}catch{return null}}function w(e,t,n){return r=>b(e,t,r.id,n?{previewToken:n}:void 0)}function T(e,t){return n=>e(n,t?{previewToken:t}:void 0)}function E(e){return(t,n)=>e.experienceContent(t,n)}function D(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&x(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function O(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}async function k(e){let{client:t,apiUrl:n,options:r}=e,i=f(t),a=!!i,o=r?.projectConfig??null,s=r?.getContent?T(r.getContent,i):null,c=null;if(i)return o??=await v(n,t.projectId,{previewToken:i}),s??=w(n,t.projectId,i),{config:o,contentLoader:s,dataSource:c,isPreview:a};if(o&&s)return{config:o,contentLoader:s,dataSource:c,isPreview:a};let l=await C();return l?(o??=l.projectConfig,s??=E(l),c=l.manifestMetadata,{config:o,contentLoader:s,dataSource:c,isPreview:a}):(o??=await v(n,t.projectId),s??=w(n,t.projectId),{config:o,contentLoader:s,dataSource:c,isPreview:a})}function A(e){return{name:`dynamic-experiences`,setup:n=>{let r=e?.apiUrl??n.apiUrl;return{onStart:(0,t.attach)({source:n.session.store.map(e=>e.id),effect:async t=>{let{config:i,contentLoader:a,dataSource:o,isPreview:s}=await k({client:n,apiUrl:r,options:e});a&&(n.contentLoader=D(n,O(a,i))),n.dataSource=o,i&&d(n,i,{isPreview:s,sessionId:t})}})}}}}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return A}});
@@ -1,5 +1,5 @@
1
1
  import "./logger-DMN6TxJJ.js";
2
- import { t as e } from "./api-C8oFjhpj.js";
2
+ import { t as e } from "./api-4pMvd_kR.js";
3
3
  import { attach as t } from "effector";
4
4
  //#region src/plugins/dynamic-experiences/hash.ts
5
5
  function n(e) {
@@ -21,13 +21,18 @@ export interface ActionContext {
21
21
  * only and have no triggering instance.
22
22
  *
23
23
  * Re-entrancy: do not synchronously call navigation events (`goToNextStep`,
24
- * `goToPreviousStep`, `goToStepById`) or open-state events (`open`, `close`,
24
+ * `goToPreviousStep`, `goToStepById`, `goToStepByKey`) or open-state events (`open`, `close`,
25
25
  * `toggleOpen`, `setOpen`) on `context.experience` before the handler's returned
26
26
  * promise resolves. Those writes race the flow runtime's post-action history
27
27
  * push and produce non-deterministic ordering. Perform control flow after your
28
28
  * side effect resolves.
29
29
  *
30
- * Returns a value (boolean, string, string[]) or runs a side effect (void).
30
+ * When executed as an ActionNode, the return value selects the flow's branch: a
31
+ * strict `false` (or a thrown error) routes to the `onFail` edge, while any other
32
+ * resolved value — `void`, `true`, or a string/string[] — routes to `onSuccess`. An
33
+ * action that calls an API can therefore drive the branch from the response without
34
+ * throwing, e.g. `return response.ok`. Outside a flow (manual invocation, rule logic)
35
+ * the return value is used directly and this branching does not apply.
31
36
  */
32
37
  export type Action = (snapshot: StateSnapshot & {
33
38
  args: unknown[];