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

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-BXhgvSc-.cjs → api-B1wdTDNv.cjs} +1 -1
  2. package/dist/{api-4pMvd_kR.js → api-BJ8EHkg5.js} +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 +2 -16
  9. package/dist/docs/sdk/actions.md +3 -21
  10. package/dist/{dom-BwmTHeT7.js → dom-CZyRgp2P.js} +17 -12
  11. package/dist/dom-CdxDV3e-.cjs +1 -0
  12. package/dist/esm/index.js +488 -384
  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 +33 -11
  16. package/dist/esm/server/index.js +2 -2
  17. package/dist/experience-instance-BbSXoRrr.cjs +1 -0
  18. package/dist/{experience-instance-pTMwxW1R.js → experience-instance-M2kR3nTp.js} +200 -207
  19. package/dist/{plugin-DfzEBtiA.js → plugin-B04iPuj_.js} +1 -1
  20. package/dist/{plugin-DDe5zJhy.cjs → plugin-D3z3IXOb.cjs} +1 -1
  21. package/dist/types/entities/action/action.d.ts +2 -7
  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 +23 -10
  26. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  27. package/dist/types/entities/history/history.d.ts +30 -16
  28. package/dist/types/entities/history/history.d.ts.map +1 -1
  29. package/dist/types/entities/response/response.d.ts +1 -0
  30. package/dist/types/entities/response/response.d.ts.map +1 -1
  31. package/dist/types/picked.d.ts +10 -14
  32. package/dist/types/picked.d.ts.map +1 -1
  33. package/dist/types/plugins/history-browser-storage/plugin.d.ts +17 -0
  34. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  35. package/dist/types/utils/dom.d.ts +94 -0
  36. package/dist/types/utils/dom.d.ts.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/dom-CDrHc_j9.cjs +0 -1
  39. package/dist/experience-instance-DunhI3b8.cjs +0 -1
  40. package/dist/types/utils/node-tree/get-next-node-from-action.d.ts +0 -24
  41. package/dist/types/utils/node-tree/get-next-node-from-action.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { n as e, t } from "./rules-logic-HesIUCu6.js";
2
2
  import "./logger-DMN6TxJJ.js";
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";
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";
5
6
  import { createFactory as f, invoke as p } from "@withease/factories";
6
7
  //#region src/utils/nodes.ts
7
8
  function m(e) {
@@ -21,7 +22,7 @@ function v(e) {
21
22
  }
22
23
  //#endregion
23
24
  //#region src/lifecycle/condition-selection.ts
24
- var y = "conditions.", b = s("condition-results");
25
+ var y = "conditions.", b = c("condition-results");
25
26
  function x(e) {
26
27
  return typeof e == "object" && !!e && !Array.isArray(e);
27
28
  }
@@ -39,7 +40,7 @@ function C(e) {
39
40
  return JSON.stringify(S(e));
40
41
  }
41
42
  var w = f(() => {
42
- let e = b.store({}), t = o(e, {
43
+ let e = b.store({}), t = s(e, {
43
44
  set(e, t) {
44
45
  return {
45
46
  ...e,
@@ -140,7 +141,7 @@ async function M(e, t, n) {
140
141
  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) => {
141
142
  let r = e.find((e) => e.id === n.destinationNodeId);
142
143
  return r ? N(e, t, r, !1, i) : [];
143
- })), ee = (e, t, n) => N(e, t, n, !0, /* @__PURE__ */ new Set()), P = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
144
+ })), te = (e, t, n) => N(e, t, n, !0, /* @__PURE__ */ new Set()), P = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
144
145
  if (i.has(n.id)) return [-1, -1];
145
146
  i.add(n.id);
146
147
  let a = t.filter((e) => e.sourceNodeId === n.id);
@@ -153,7 +154,7 @@ var N = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
153
154
  a !== -1 && (o = Math.min(o, a + 1), s = Math.max(s, c + 1));
154
155
  }
155
156
  return o === Infinity ? [-1, -1] : [o, s];
156
- }, te = (e, t, n) => P(e, t, n, !0, /* @__PURE__ */ new Set()), F = (e, t, n, r = /* @__PURE__ */ new Set()) => {
157
+ }, ne = (e, t, n) => P(e, t, n, !0, /* @__PURE__ */ new Set()), F = (e, t, n, r = /* @__PURE__ */ new Set()) => {
157
158
  if (r.has(n.id)) return [-1, -1];
158
159
  if (r.add(n.id), n.type === "origin") return [0, 0];
159
160
  let i = t.filter((e) => e.destinationNodeId === n.id);
@@ -166,90 +167,72 @@ var N = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
166
167
  s !== -1 && (a = Math.min(a, s + 1), o = Math.max(o, c + 1));
167
168
  }
168
169
  return a === Infinity ? [-1, -1] : [a, o];
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) => {
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) => {
170
171
  if (!e) return I(t);
171
172
  let r = n.find((t) => t.sourceNodeId === e.id);
172
173
  return r && t.find((e) => e.id === r.destinationNodeId) || null;
173
174
  };
174
175
  //#endregion
175
176
  //#region src/utils/node-tree/get-next-node-from-condition.ts
176
- async function re(e, t, n, r) {
177
+ async function ie(e, t, n, r) {
177
178
  let i = e ? "true" : "false", a = r.find((e) => e.sourceHandle === i && e.sourceNodeId === t);
178
179
  return n.find((e) => e.id === a?.destinationNodeId);
179
180
  }
180
181
  //#endregion
181
- //#region src/utils/node-tree/get-next-node-from-action.ts
182
+ //#region src/entities/experience-instance/experience-instance.ts
182
183
  function R(e, t, n, r) {
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);
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;
185
186
  }
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
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
199
192
  });
200
- let M = a(r.steps.listStore, k, (e, t) => {
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) => {
201
194
  let n = t.at(-2);
202
195
  if (!n || !h(n.node)) return null;
203
196
  let r = n.node;
204
197
  return e.find((e) => e.id === r.stepId) || null;
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, {
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, {
206
199
  open: () => !0,
207
200
  close: () => !1,
208
201
  toggle: (e) => !e,
209
202
  set: (e, t) => t
210
- }), H = c(async () => {
211
- r.history.back({ experienceId: s.id });
212
- }), ie = i({
213
- source: s.treeStore,
214
- effect: async (e, t) => {
203
+ }), ae = l(() => {
204
+ r.history.back({ instanceId: y });
205
+ }), oe = a({
206
+ source: c.treeStore,
207
+ effect: (e, t) => {
215
208
  let n = e.nodes.find((e) => h(e) && e.stepId === t);
216
209
  n && r.history.push({
217
- experienceId: s.id,
210
+ instanceId: y,
211
+ experienceId: c.id,
218
212
  node: n
219
213
  });
220
214
  }
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,
215
+ }), G = a({
216
+ source: N,
234
217
  effect: (e) => {}
235
- }), W = i({
236
- source: s.treeStore,
218
+ }), K = a({
219
+ source: c.treeStore,
237
220
  effect: async ({ nodes: e }) => I(e)
238
- }), G = i({
239
- source: s.treeStore,
221
+ }), q = a({
222
+ source: c.treeStore,
240
223
  effect: async ({ nodes: e, edges: t }, n) => {
241
224
  if (_(n)) return L(n, e, t);
242
225
  }
243
- }), K = i({
244
- source: s.treeStore,
226
+ }), J = a({
227
+ source: c.treeStore,
245
228
  effect: async ({ nodes: e, edges: n, conditions: i }, a) => {
246
229
  if (!m(a)) return;
247
230
  let o = i.find((e) => e.id === a.conditionId)?.logic;
248
- return o ? re(!!await t(r, o), a.id, e, n) : void 0;
231
+ return o ? ie(!!await t(r, o), a.id, e, n) : void 0;
249
232
  }
250
- }), q = i({
233
+ }), Y = a({
251
234
  source: {
252
- tree: s.treeStore,
235
+ tree: c.treeStore,
253
236
  actions: r.actions.listStore,
254
237
  snapshot: r.stateSnapshotStore
255
238
  },
@@ -262,52 +245,50 @@ var z = s("experience-instance"), B = f(({ client: r, experience: s, target: f,
262
245
  return;
263
246
  }
264
247
  let s = t.find((e) => e.key === o)?.action;
265
- if (typeof s != "function") return `${o}`, R(!1, r.id, i, a) ?? null;
266
- let c = !0;
248
+ if (!s || typeof s != "function") return `${o}`, R(r, a, i, "false");
267
249
  try {
268
- `${o}`, c = await s({
250
+ `${o}`, await s({
269
251
  ...n,
270
252
  args: []
271
- }, { experience: Q }) !== !1;
253
+ }, { experience: Q });
254
+ let e = R(r, a, i, "true");
255
+ return e ? (`${o}${e.id}`, e) : (`${r.id}`, null);
272
256
  } catch {
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;
257
+ `${o}`;
258
+ let e = R(r, a, i, "false");
259
+ return e ? (`${o}${e.id}`, e) : (`${r.id}`, null);
279
260
  }
280
- return `${o}${l.id}`, l;
281
261
  }
282
- }), oe = c((e) => {
262
+ }), se = l((e) => {
283
263
  g(e) && r.experiences.launch({ key: e.experienceKey });
284
- }), J = i({
285
- source: [A, s.treeStore],
264
+ }), X = a({
265
+ source: [N, c.treeStore],
286
266
  effect: async ([e, { nodes: t, edges: n }]) => L(e, t, n)
287
- }), Y = i({
288
- source: [A, s.treeStore],
267
+ }), Z = a({
268
+ source: [N, c.treeStore],
289
269
  effect: async ([e, { nodes: t, edges: n }]) => L(e, t, n)
290
- }), se = c((e) => {
270
+ }), ce = l((e) => {
291
271
  r.history.push({
292
- experienceId: s.id,
272
+ instanceId: y,
273
+ experienceId: c.id,
293
274
  node: e
294
275
  });
295
- }), X = i({
296
- source: s.configStore,
276
+ }), le = a({
277
+ source: c.configStore,
297
278
  effect: async ({ initializeOpenLogic: n }) => p?.initialiseOpen === void 0 ? e(n) ? !!await t(r, n) : n ?? !1 : p.initialiseOpen
298
- }), Z = a(E, r.frameworks.listStore, (e, t) => {
279
+ }), ue = o(O, r.frameworks.listStore, (e, t) => {
299
280
  if (!e) return null;
300
281
  let n = t.find((t) => t.name === e.component.frameworkName);
301
282
  return n ? {
302
283
  component: e,
303
284
  framework: n
304
285
  } : null;
305
- }, { skipVoid: !1 }), Q, ce = i({
306
- source: Z,
286
+ }, { skipVoid: !1 }), Q, de = a({
287
+ source: ue,
307
288
  effect: (e) => {
308
289
  if (!e) return;
309
290
  if (!f) {
310
- `${s.id}`;
291
+ `${c.id}`;
311
292
  return;
312
293
  }
313
294
  let t = n(f);
@@ -317,167 +298,179 @@ var z = s("experience-instance"), B = f(({ client: r, experience: s, target: f,
317
298
  }
318
299
  });
319
300
  Q = Object.freeze({
320
- id: Math.random().toString(36).substring(7),
321
- experienceKey: s.key,
322
- experienceId: s.id,
323
- experienceName: s.name,
324
- configStore: s.configStore,
301
+ id: y,
302
+ experienceKey: c.key,
303
+ experienceId: c.id,
304
+ experienceName: c.name,
305
+ configStore: c.configStore,
325
306
  target: f,
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
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
347
330
  });
348
- let $ = l(), le = l();
349
- return u({
350
- clock: A,
331
+ let $ = u(), fe = u();
332
+ d({
333
+ clock: N,
351
334
  target: $
352
- }), u({
335
+ }), d({
353
336
  clock: $,
354
337
  filter: (e) => e === null,
355
- target: W
356
- }), u({
338
+ target: K
339
+ }), d({
357
340
  clock: $,
358
341
  filter: (e) => e !== null,
359
- target: le
360
- }), d({
361
- source: le,
342
+ target: fe
343
+ }), ee({
344
+ source: fe,
362
345
  match: (e) => m(e) ? "condition" : h(e) ? "step" : g(e) ? "launchExperience" : _(e) ? "origin" : v(e) ? "action" : "other",
363
346
  cases: {
364
- origin: G,
365
- condition: K,
366
- step: U,
367
- launchExperience: oe,
368
- action: q,
369
- __: l()
347
+ origin: q,
348
+ condition: J,
349
+ step: G,
350
+ launchExperience: se,
351
+ action: Y,
352
+ __: u()
370
353
  }
371
- }), u({
354
+ }), d({
372
355
  clock: [
373
- K.doneData,
374
- G.doneData,
375
- W.doneData,
376
- Y.doneData,
377
356
  J.doneData,
378
- q.doneData
357
+ q.doneData,
358
+ K.doneData,
359
+ Z.doneData,
360
+ X.doneData,
361
+ Y.doneData
379
362
  ],
380
363
  filter: Boolean,
381
- target: se
382
- }), u({
383
- clock: b,
384
- target: Y
385
- }), u({
386
- clock: b,
387
- source: j,
364
+ target: ce
365
+ }), d({
366
+ clock: x,
367
+ target: Z
368
+ }), d({
369
+ clock: x,
370
+ source: P,
388
371
  filter: Boolean,
389
372
  target: r.eventBus.prepend((e) => ({
390
373
  type: "step_submit",
391
374
  step: e,
392
375
  experience: Q
393
376
  }))
394
- }), u({
395
- clock: Y.done,
396
- source: j,
377
+ }), d({
378
+ clock: Z.done,
379
+ source: P,
397
380
  filter: Boolean,
398
381
  target: r.eventBus.prepend((e) => ({
399
382
  type: "step_submit_success",
400
383
  step: e,
401
384
  experience: Q
402
385
  }))
403
- }), u({
404
- clock: Y.fail,
405
- source: j,
386
+ }), d({
387
+ clock: Z.fail,
388
+ source: P,
406
389
  filter: Boolean,
407
390
  target: r.eventBus.prepend((e) => ({
408
391
  type: "step_submit_error",
409
392
  step: e,
410
393
  experience: Q
411
394
  }))
412
- }), u({
413
- clock: x,
414
- target: H
415
- }), u({
395
+ }), d({
416
396
  clock: S,
417
- target: ie
418
- }), u({
419
- clock: C,
420
397
  target: ae
421
- }), u({
422
- source: a([
423
- K.pending,
424
- G.pending,
425
- W.pending,
426
- Y.pending,
398
+ }), d({
399
+ 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([
427
418
  J.pending,
428
- q.pending
419
+ q.pending,
420
+ K.pending,
421
+ Z.pending
429
422
  ]),
430
423
  fn: (e) => e.some(Boolean) ? "transitioning" : "ready",
431
- target: D
432
- }), u({
433
- clock: U.doneData,
434
- source: j,
424
+ target: k
425
+ }), d({
426
+ clock: G.doneData,
427
+ source: P,
435
428
  filter: Boolean,
436
429
  target: r.eventBus.prepend((e) => ({
437
430
  type: "step_enter",
438
431
  step: e,
439
432
  experience: Q
440
433
  }))
441
- }), u({
442
- clock: T,
443
- target: X
444
- }), u({
445
- source: X.doneData,
434
+ }), d({
435
+ clock: D,
436
+ target: le
437
+ }), d({
438
+ source: le.doneData,
446
439
  fn: Boolean,
447
- target: B
448
- }), u({
449
- source: A,
450
- clock: y,
440
+ target: U
441
+ }), d({
442
+ source: N,
443
+ clock: b,
451
444
  filter: (e) => e ? _(e) : !0,
452
- target: J
453
- }), u({
454
- source: B,
445
+ target: X
446
+ }), d({
447
+ source: U,
455
448
  filter: Boolean,
456
- target: y
457
- }), u({
458
- source: B,
449
+ target: b
450
+ }), d({
451
+ source: U,
459
452
  filter: Boolean,
460
453
  target: r.eventBus.prepend(() => ({
461
454
  type: "experience_open",
462
455
  experience: Q
463
456
  }))
464
- }), u({
465
- source: B,
457
+ }), d({
458
+ source: U,
466
459
  filter: (e) => !e,
467
460
  target: r.eventBus.prepend(() => ({
468
461
  type: "experience_close",
469
462
  experience: Q
470
463
  }))
471
- }), u({
472
- clock: w,
473
- target: [T]
474
- }), w(), Q;
464
+ }), d({
465
+ clock: E,
466
+ target: [D]
467
+ }), E(), Q;
475
468
  });
476
469
  function V(e) {
477
470
  return p(B, e);
478
471
  }
479
472
  var H = f(({ client: e }) => {
480
- let t = z.store({}), n = l(), i = l(), a = l(), s = o(t, {
473
+ let t = z.store({}), n = u(), i = u(), a = u(), o = s(t, {
481
474
  register(e, t) {
482
475
  let n = [...e[t.experienceId] ?? []];
483
476
  return n.push(t), {
@@ -492,68 +485,68 @@ var H = f(({ client: e }) => {
492
485
  [n]: r ?? []
493
486
  };
494
487
  }
495
- }), d = c(({ experience: t, target: n, options: r }) => V({
488
+ }), c = l(({ experience: t, target: n, options: r }) => V({
496
489
  client: e,
497
490
  experience: t,
498
491
  target: n,
499
492
  options: r
500
- })), f = c((e) => {
501
- s.register(e);
502
- }), p = c((e) => {
493
+ })), ee = l((e) => {
494
+ o.register(e);
495
+ }), f = l((e) => {
503
496
  e.target && r(e.target, () => {
504
497
  a(e);
505
498
  });
506
- }), m = c((e) => {
507
- s.unregister(e);
508
- }), h = c(async (e) => {
499
+ }), p = l((e) => {
500
+ o.unregister(e);
501
+ }), m = l(async (e) => {
509
502
  await e.mountFx();
510
503
  });
511
- u({
504
+ d({
512
505
  clock: n,
513
- target: d
514
- }), u({
506
+ target: c
507
+ }), d({
515
508
  clock: a,
516
- target: m
517
- }), u({
518
- clock: d.doneData,
509
+ target: p
510
+ }), d({
511
+ clock: c.doneData,
519
512
  target: [
513
+ ee,
520
514
  f,
521
- p,
522
515
  i
523
516
  ]
524
- }), u({
525
- clock: d.doneData,
517
+ }), d({
518
+ clock: c.doneData,
526
519
  target: e.eventBus.prepend((e) => ({
527
520
  type: "experience_initialize",
528
521
  experience: e
529
522
  }))
530
- }), u({
523
+ }), d({
531
524
  clock: i,
532
- target: h
525
+ target: m
533
526
  });
534
- function g(e, t, r) {
527
+ function h(e, t, r) {
535
528
  n({
536
529
  experience: e,
537
530
  target: t,
538
531
  options: r
539
532
  });
540
533
  }
541
- let _ = t.map((e) => Object.values(e).flat());
542
- function v(e) {
543
- return _.map((t) => t.filter((t) => t.experienceKey === e), { skipVoid: !1 });
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 });
544
537
  }
545
- function y(e) {
538
+ function v(e) {
546
539
  return t.map((t) => t[e] || [], { skipVoid: !1 });
547
540
  }
548
541
  return {
549
- spawn: g,
550
- getByExperienceKey: v,
551
- getByExperienceId: y,
552
- listStore: _
542
+ spawn: h,
543
+ getByExperienceKey: _,
544
+ getByExperienceId: v,
545
+ listStore: g
553
546
  };
554
547
  });
555
- function ie(e) {
548
+ function U(e) {
556
549
  return p(H, e);
557
550
  }
558
551
  //#endregion
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 };
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 };
@@ -1,5 +1,5 @@
1
1
  import "./logger-DMN6TxJJ.js";
2
- import { t as e } from "./api-4pMvd_kR.js";
2
+ import { t as e } from "./api-BJ8EHkg5.js";
3
3
  import { attach as t } from "effector";
4
4
  //#region src/plugins/dynamic-experiences/hash.ts
5
5
  function n(e) {
@@ -1 +1 @@
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
+ require("./logger-CSTvAyyB.cjs");const e=require("./api-B1wdTDNv.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}});
@@ -21,18 +21,13 @@ 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`, `goToStepByKey`) or open-state events (`open`, `close`,
24
+ * `goToPreviousStep`, `goToStepById`) 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
- * 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.
30
+ * Returns a value (boolean, string, string[]) or runs a side effect (void).
36
31
  */
37
32
  export type Action = (snapshot: StateSnapshot & {
38
33
  args: unknown[];