@picked/client 0.0.1-dev.1777938796953 → 0.0.1-dev.1778136207545

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 (102) hide show
  1. package/README.md +0 -8
  2. package/dist/{api-Bn4z854o.js → api-Crj5wFbR.js} +1 -1
  3. package/dist/{api-GE6C0lxp.cjs → api-NcKXNrkY.cjs} +1 -1
  4. package/dist/cjs/form/index.js +1 -1
  5. package/dist/cjs/index.js +4 -4
  6. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  7. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
  8. package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
  9. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  10. package/dist/cjs/plugins/web-components/index.js +1 -1
  11. package/dist/cjs/server/index.js +1 -1
  12. package/dist/docs/actions.mdx +0 -1
  13. package/dist/docs/index.md +0 -2
  14. package/dist/docs/pickedql/dimensions.md +2 -0
  15. package/dist/docs/pickedql/virtual-functions.md +27 -0
  16. package/dist/docs/sdk/actions.md +0 -1
  17. package/dist/docs/sdk/features.md +0 -1
  18. package/dist/docs/sdk/index.md +0 -1
  19. package/dist/docs/sdk/plugins/create-experience.md +0 -1
  20. package/dist/docs/sdk/plugins/dynamic-experiences.md +0 -1
  21. package/dist/docs/sdk/plugins/window-object.md +0 -1
  22. package/dist/docs/sdk/predicates.md +0 -1
  23. package/dist/esm/form/index.js +1 -1
  24. package/dist/esm/index.js +1011 -533
  25. package/dist/esm/plugins/dynamic-experiences/index.js +127 -60
  26. package/dist/esm/plugins/experience-browser-storage/index.js +8 -5
  27. package/dist/esm/plugins/history-browser-storage/index.js +3 -3
  28. package/dist/esm/plugins/single-page-app/index.js +1 -1
  29. package/dist/esm/plugins/web-components/index.js +1 -1
  30. package/dist/esm/server/index.js +23 -13
  31. package/dist/{experience-instance-CWYRLfFM.js → experience-instance-BrLWgVAN.js} +135 -127
  32. package/dist/experience-instance-Ct3ogC7n.cjs +1 -0
  33. package/dist/rules-logic-D_CVBuv7.js +13 -0
  34. package/dist/rules-logic-H6P8xwHF.cjs +1 -0
  35. package/dist/types/client.d.ts +2 -2
  36. package/dist/types/entities/action/action.d.ts +6 -3
  37. package/dist/types/entities/action/action.d.ts.map +1 -1
  38. package/dist/types/entities/component/component.d.ts +39 -2
  39. package/dist/types/entities/component/component.d.ts.map +1 -1
  40. package/dist/types/entities/content/content.d.ts +37 -0
  41. package/dist/types/entities/content/content.d.ts.map +1 -0
  42. package/dist/types/entities/experience/experience.d.ts +69 -112
  43. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  44. package/dist/types/entities/experience-instance/experience-instance.d.ts +17 -2
  45. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  46. package/dist/types/entities/feature/feature.d.ts +26 -2
  47. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  48. package/dist/types/entities/field/field.d.ts.map +1 -1
  49. package/dist/types/entities/framework/framework.d.ts +24 -3
  50. package/dist/types/entities/framework/framework.d.ts.map +1 -1
  51. package/dist/types/entities/history/history.d.ts +15 -27
  52. package/dist/types/entities/history/history.d.ts.map +1 -1
  53. package/dist/types/entities/plugin/plugin.d.ts +32 -1
  54. package/dist/types/entities/plugin/plugin.d.ts.map +1 -1
  55. package/dist/types/entities/predicate/predicate.d.ts +24 -3
  56. package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
  57. package/dist/types/entities/session/session.d.ts +45 -0
  58. package/dist/types/entities/session/session.d.ts.map +1 -0
  59. package/dist/types/entities/step/step.d.ts +14 -0
  60. package/dist/types/entities/step/step.d.ts.map +1 -1
  61. package/dist/types/exports.d.ts +9 -3
  62. package/dist/types/exports.d.ts.map +1 -1
  63. package/dist/types/index.d.ts +3 -1
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/dist/types/lifecycle/lifecycle.d.ts +47 -0
  66. package/dist/types/lifecycle/lifecycle.d.ts.map +1 -0
  67. package/dist/types/lifecycle/rules-logic.d.ts +24 -0
  68. package/dist/types/lifecycle/rules-logic.d.ts.map +1 -0
  69. package/dist/types/lifecycle/state-snapshot.d.ts +37 -0
  70. package/dist/types/lifecycle/state-snapshot.d.ts.map +1 -0
  71. package/dist/types/logic-engine.d.ts +1 -1
  72. package/dist/types/logic-engine.d.ts.map +1 -1
  73. package/dist/types/picked.d.ts +149 -190
  74. package/dist/types/picked.d.ts.map +1 -1
  75. package/dist/types/plugins/dynamic-experiences/index.d.ts +2 -1
  76. package/dist/types/plugins/dynamic-experiences/index.d.ts.map +1 -1
  77. package/dist/types/plugins/dynamic-experiences/plugin.d.ts +18 -1
  78. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  79. package/dist/types/plugins/dynamic-experiences/types.d.ts +62 -1
  80. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  81. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  82. package/dist/types/plugins/history-browser-storage/plugin.d.ts +0 -14
  83. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  84. package/dist/types/plugins/web-components/plugin.d.ts.map +1 -1
  85. package/dist/types/server/index.d.ts +7 -0
  86. package/dist/types/server/index.d.ts.map +1 -1
  87. package/dist/types/utils/events.d.ts +1 -1
  88. package/dist/types/utils/events.d.ts.map +1 -1
  89. package/dist/types/utils/picked-config.d.ts +12 -4
  90. package/dist/types/utils/picked-config.d.ts.map +1 -1
  91. package/dist/types/utils/rules-logic.d.ts +4 -9
  92. package/dist/types/utils/rules-logic.d.ts.map +1 -1
  93. package/package.json +2 -2
  94. package/dist/experience-instance-BDTNGT8a.cjs +0 -1
  95. package/dist/rules-logic-BTIxfrJJ.js +0 -240
  96. package/dist/rules-logic-DNLOv90w.cjs +0 -1
  97. package/dist/types/utils/state-snaphot.d.ts +0 -26
  98. package/dist/types/utils/state-snaphot.d.ts.map +0 -1
  99. package/dist/types/utils/user-session.d.ts +0 -12
  100. package/dist/types/utils/user-session.d.ts.map +0 -1
  101. /package/dist/{object-C82v79xc.js → object-DvUDOytC.js} +0 -0
  102. /package/dist/{object-CUJOjanb.cjs → object-ThO1DEyl.cjs} +0 -0
@@ -1,5 +1,5 @@
1
- import { Store } from 'effector';
2
- import { StateSnapshot } from '../../utils/state-snaphot';
1
+ import { EventCallable, Store } from 'effector';
2
+ import { StateSnapshot } from '../../lifecycle/state-snapshot';
3
3
  import { Picked } from '../../picked';
4
4
  export type Predicate = (snapshot: StateSnapshot & {
5
5
  args: unknown[];
@@ -12,7 +12,10 @@ export interface PredicateIndexItem {
12
12
  declare const createPredicateIndexFactory: ({ client }: {
13
13
  client: Picked;
14
14
  }) => {
15
- register: (name: string, predicate: Predicate) => void;
15
+ register: EventCallable<{
16
+ name: string;
17
+ predicate: Predicate;
18
+ }>;
16
19
  getByName: (name: string) => Store<Predicate | undefined>;
17
20
  listStore: Store<{
18
21
  name: string;
@@ -20,7 +23,25 @@ declare const createPredicateIndexFactory: ({ client }: {
20
23
  }[]>;
21
24
  getEvokablePredicate: (predicateName: string) => Store<() => ReturnType<Predicate>>;
22
25
  };
26
+ /**
27
+ * Creates a predicate index with stores and registration logic.
28
+ *
29
+ * @template T - Factory parameter type.
30
+ * @param {T} params - Factory parameters including the client.
31
+ * @returns {ReturnType<typeof createPredicateIndexFactory>} The predicate index.
32
+ * @example
33
+ * const predicates = createPredicateIndex({ client })
34
+ */
23
35
  export declare function createPredicateIndex<T extends Parameters<typeof createPredicateIndexFactory>[0]>(params: T): ReturnType<typeof createPredicateIndexFactory>;
36
+ /**
37
+ * Convenience helper that dispatches `predicates.register` with object-payload shape.
38
+ *
39
+ * @param {string} name - Predicate name.
40
+ * @param {Predicate} predicate - The predicate function.
41
+ * @param {PredicatesStore} predicates - The predicates index.
42
+ * @example
43
+ * setupPredicate('isAdmin', ({ user }) => user.isAdmin === true, predicatesIndex)
44
+ */
24
45
  export declare const setupPredicate: (name: string, predicate: Predicate, predicates: PredicatesStore) => void;
25
46
  export {};
26
47
  //# sourceMappingURL=predicate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"predicate.d.ts","sourceRoot":"","sources":["../../../../src/entities/predicate/predicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAGjG,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG,CACtB,QAAQ,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,KAE3C,OAAO,GACP,OAAO,CAAC,OAAO,CAAC,GAChB,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,MAAM,EAAE,GACR,OAAO,CAAC,MAAM,EAAE,CAAC,GACjB,SAAS,CAAA;AAEb,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAErE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB;AAKD,QAAA,MAAM,2BAA2B,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;qBAoBvD,MAAM,aAAa,SAAS,KAAG,IAAI;sBAiBlC,MAAM;;cAlCrB,MAAM;mBACD,SAAS;;0CAqCqB,MAAM,KAAG,KAAK,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;CAuCxF,CAAA;AAEF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,EAC9F,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAEhD;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,WAAW,SAAS,EAAE,YAAY,eAAe,SAE7F,CAAA"}
1
+ {"version":3,"file":"predicate.d.ts","sourceRoot":"","sources":["../../../../src/entities/predicate/predicate.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG,CACtB,QAAQ,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,KAE3C,OAAO,GACP,OAAO,CAAC,OAAO,CAAC,GAChB,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,MAAM,EAAE,GACR,OAAO,CAAC,MAAM,EAAE,CAAC,GACjB,SAAS,CAAA;AAEb,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAErE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB;AAID,QAAA,MAAM,2BAA2B,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;;cAwBzC,MAAM;mBAAa,SAAS;;sBAiCzC,MAAM;;cAtDrB,MAAM;mBACD,SAAS;;0CAiEqB,MAAM,KAAG,KAAK,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;CA0CxF,CAAA;AAEF;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,EAC9F,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAEhD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,WAAW,SAAS,EAAE,YAAY,eAAe,SAE7F,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { EventCallable, Store } from 'effector';
2
+ /** Plain shape of a persisted session — id, optional isUser flag, optional identifiers map. */
3
+ export interface Session {
4
+ id: string;
5
+ isUser?: boolean;
6
+ identifiers?: Record<string, string>;
7
+ }
8
+ /**
9
+ * Session entity exposing the reactive `Session` store and mutator events. Field reads
10
+ * derive from the store via `.map`, which is reference-equality memoised so per-field
11
+ * subscribers only re-emit when their slice actually changes.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const session = createSession()
16
+ * session.store.map((s) => s.id).watch((id) => console.log('Session id:', id))
17
+ * session.setIsUser(true)
18
+ * session.setIdentifier({ key: 'fp_id', value: 'abc' })
19
+ * ```
20
+ */
21
+ export interface SessionEntity {
22
+ /** Reactive store of the full session. Hydrated synchronously from localStorage when available; otherwise minted fresh in memory. */
23
+ store: Store<Session>;
24
+ /** Event — sets the isUser flag. */
25
+ setIsUser: EventCallable<boolean>;
26
+ /** Event — adds or replaces an identifier in the identifiers map. */
27
+ setIdentifier: EventCallable<{
28
+ key: string;
29
+ value: string;
30
+ }>;
31
+ /** Event — removes an identifier from the identifiers map. */
32
+ removeIdentifier: EventCallable<string>;
33
+ }
34
+ /**
35
+ * Initialises a session entity. Always succeeds — persistence is gated internally on `supportsLocalStorage()`, so callers do not need to null-check the result.
36
+ *
37
+ * @returns {SessionEntity} A ready-to-use session entity.
38
+ * @example
39
+ * ```typescript
40
+ * const session = initialiseSession()
41
+ * console.log(session.store.getState().id)
42
+ * ```
43
+ */
44
+ export declare function initialiseSession(): SessionEntity;
45
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/entities/session/session.ts"],"names":[],"mappings":"AAAA,kMAAkM;AAClM,OAAO,EAAkC,KAAK,aAAa,EAAU,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAKjG,+FAA+F;AAC/F,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B,qIAAqI;IACrI,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAErB,oCAAoC;IACpC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IACjC,qEAAqE;IACrE,aAAa,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5D,8DAA8D;IAC9D,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACxC;AA+GD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD"}
@@ -1,4 +1,5 @@
1
1
  import { Store } from 'effector';
2
+ import { Content } from '../content/content';
2
3
  export type StepsStore = ReturnType<typeof createStepIndex>;
3
4
  export interface ExperienceStep {
4
5
  id: string;
@@ -6,6 +7,19 @@ export interface ExperienceStep {
6
7
  name: string;
7
8
  fieldKeys: string[];
8
9
  layoutName?: string | null;
10
+ /**
11
+ * Optional reference to a CMS Content record that supplies the step's layout data.
12
+ * The actual content is registered separately via `client.registerContent` and
13
+ * resolved at render time through `layoutContentStore` against the global content registry.
14
+ */
15
+ layoutContentId?: string | null;
16
+ /**
17
+ * Reactive store of the content record this step references. Composed at registration
18
+ * time against `client.contents.getById(layoutContentId)`. `null` when the step has no
19
+ * `layoutContentId`. Reads stay reactive — content registered after the step
20
+ * (or updated mid-session) flows through automatically.
21
+ */
22
+ layoutContentStore?: Store<Content | null> | null;
9
23
  }
10
24
  declare const createStepIndexFactory: () => {
11
25
  register: (step: ExperienceStep) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../../../src/entities/step/step.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAA2B,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAI3D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAGD,QAAA,MAAM,sBAAsB;qBAuBF,cAAc,KAAG,IAAI;kBAkBxB,cAAc,CAAC,IAAI,CAAC,KAAG,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;oBAcjD,cAAc,CAAC,KAAK,CAAC,KAAG,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;;;;;CAa3E,CAAA;AAEF;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAE3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAAI,CAE/F"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../../../src/entities/step/step.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAA2B,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAI3D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CAClD;AAGD,QAAA,MAAM,sBAAsB;qBAuBF,cAAc,KAAG,IAAI;kBAkBxB,cAAc,CAAC,IAAI,CAAC,KAAG,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;oBAcjD,cAAc,CAAC,KAAK,CAAC,KAAG,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;;;;;CAa3E,CAAA;AAEF;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAE3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAAI,CAE/F"}
@@ -7,11 +7,17 @@ export type * from './utils/storage';
7
7
  export { evaluateRuleLogic } from './utils/rules-logic';
8
8
  export { getPickedConfig } from './utils/picked-config';
9
9
  export { lazyComponent, isLazyLoader } from './entities/component/lazyComponent';
10
+ export { createPluginEffect } from './entities/plugin/plugin';
10
11
  /**
11
- * Create a new Picked client instance and bind it to the window
12
+ * Creates a new Picked client instance and binds it to the window object.
12
13
  *
13
- * @param options - The client context options including organizationId and projectId
14
- * @returns The initialized Picked client instance
14
+ * @param {CreateClientOptions} options - The client context options including `organizationId` and `projectId`.
15
+ * @returns {Picked} The initialised Picked client instance.
16
+ * @example
17
+ * ```typescript
18
+ * const client = createClient({ organizationId: 'org-1', projectId: 'proj-1' })
19
+ * client.start()
20
+ * ```
15
21
  */
16
22
  export declare const createClient: (options: CreateClientOptions) => Picked;
17
23
  export type { LaunchExperienceOptions, OpenExperienceOptions, } from './entities/experience/experience';
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,iBAAiB,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,mBAAmB,WAIxD,CAAA;AAED,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AAAA,8IAA8I;AAC9I,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,iBAAiB,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,mBAAmB,KAAG,MAI3D,CAAA;AAED,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kCAAkC,CAAA"}
@@ -1,7 +1,9 @@
1
+ /** @file Top-level public entry point — re-exports the client class, public utilities, and entity types. */
1
2
  export * from './exports';
2
3
  export type * from './client';
3
4
  export type * from './entities/action/action';
4
5
  export type * from './entities/condition/condition';
6
+ export type * from './entities/content/content';
5
7
  export type * from './entities/component/component';
6
8
  export type * from './entities/component/lazyComponent';
7
9
  export type * from './entities/experience-instance/experience-instance';
@@ -13,7 +15,7 @@ export type * from './entities/framework/framework';
13
15
  export type * from './entities/history/history';
14
16
  export type * from './entities/plugin/plugin';
15
17
  export type * from './entities/predicate/predicate';
16
- export type * from './utils/state-snaphot';
18
+ export type * from './lifecycle/state-snapshot';
17
19
  export type * from './utils/events';
18
20
  export type * from './utils/search-params';
19
21
  export type * from './entities/response/response';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,oCAAoC,CAAA;AACvD,mBAAmB,oDAAoD,CAAA;AACvE,mBAAmB,kCAAkC,CAAA;AACrD,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,8BAA8B,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,cAAc,WAAW,CAAA;AACzB,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,oCAAoC,CAAA;AACvD,mBAAmB,oDAAoD,CAAA;AACvE,mBAAmB,kCAAkC,CAAA;AACrD,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,8BAA8B,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { Effect, EventCallable, StoreWritable } from 'effector';
2
+ import { Picked } from '../picked';
3
+ import { LogicRule } from '../logic-engine';
4
+ /** Discrete stages of the SDK lifecycle. */
5
+ export type LifecycleStage = 'idle' | 'starting' | 'ready' | 'failed';
6
+ /** A logic-engine gate rule, a literal boolean override, or `undefined` to indicate no gate is configured. */
7
+ type GateConfig = LogicRule | boolean | undefined;
8
+ /** Public effector units exposed by the lifecycle module. */
9
+ interface Lifecycle {
10
+ /** Public trigger — fires the start chain. `await allSettled(start, { scope })` resolves once the chain has fully settled. */
11
+ start: EventCallable<void>;
12
+ /** Reactive store of the readiness flag. */
13
+ readyStore: StoreWritable<boolean>;
14
+ /** Reactive store of the precondition-gate result (`undefined` until `start` is fired). */
15
+ preconditionPassedStore: StoreWritable<boolean | undefined>;
16
+ /** Reactive store of the condition-gate result (`undefined` until `start` is fired). */
17
+ conditionPassedStore: StoreWritable<boolean | undefined>;
18
+ /** Reactive store of the current lifecycle stage. */
19
+ lifecycleStageStore: StoreWritable<LifecycleStage>;
20
+ /** Event — registers a plugin onStart hook effect. */
21
+ registerPluginStartHook: EventCallable<Effect<void, void, Error>>;
22
+ /** Event — sets the precondition gate rule (called once during construction). */
23
+ setPrecondition: EventCallable<GateConfig>;
24
+ /** Event — sets the condition gate rule (called once during construction). */
25
+ setCondition: EventCallable<GateConfig>;
26
+ }
27
+ /**
28
+ * Creates the lifecycle module for a Picked client. Owns the start chain as an effector
29
+ * event graph: `start` triggers a fan-out of effects (ping, plugin hooks, domInteractive)
30
+ * whose `.done` events drive the next phases via `sample`.
31
+ *
32
+ * @param {object} params - Factory params.
33
+ * @param {Picked} params.client - The Picked client instance.
34
+ * @returns {Lifecycle} The lifecycle module exposing public events and read-only reactive stores.
35
+ * @example
36
+ * ```typescript
37
+ * const lifecycle = createLifecycle({ client })
38
+ * lifecycle.setPrecondition(myRule)
39
+ * lifecycle.start()
40
+ * await allSettled(lifecycle.start, { scope })
41
+ * ```
42
+ */
43
+ export declare function createLifecycle(params: {
44
+ client: Picked;
45
+ }): Lifecycle;
46
+ export {};
47
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/lifecycle.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAOhD,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAErE,8GAA8G;AAC9G,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAEjD,6DAA6D;AAC7D,UAAU,SAAS;IACjB,8HAA8H;IAC9H,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;IAE1B,4CAA4C;IAC5C,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAClC,2FAA2F;IAC3F,uBAAuB,EAAE,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC3D,wFAAwF;IACxF,oBAAoB,EAAE,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACxD,qDAAqD;IACrD,mBAAmB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAElD,sDAAsD;IACtD,uBAAuB,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAEjE,iFAAiF;IACjF,eAAe,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IAC1C,8EAA8E;IAC9E,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CACxC;AAqOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAErE"}
@@ -0,0 +1,24 @@
1
+ import { Effect } from 'effector';
2
+ import { LogicObject, LogicRule } from '../logic-engine';
3
+ import { Picked } from '../picked';
4
+ /** Parameters for `evaluateRuleLogicFx` — the rule to evaluate and an optional context override. */
5
+ export interface EvaluateRuleLogicParams {
6
+ rule: LogicRule;
7
+ context?: LogicObject;
8
+ }
9
+ /**
10
+ * Creates an effector effect that evaluates a json-logic rule against the client's reactive state. The effect uses `attach({ source })` so all reads are scope-aware and reactive — no `.getState()` calls.
11
+ *
12
+ * @param {object} params - Factory params.
13
+ * @param {Picked} params.client - The Picked client instance whose stores back the evaluation context.
14
+ * @returns {Effect<EvaluateRuleLogicParams, unknown, Error>} An effect that evaluates a rule and resolves to the result.
15
+ * @example
16
+ * ```typescript
17
+ * const evaluateRuleLogicFx = createEvaluateRuleLogicFx({ client })
18
+ * const result = await evaluateRuleLogicFx({ rule: someRule, context: { extra: 'data' } })
19
+ * ```
20
+ */
21
+ export declare function createEvaluateRuleLogicFx(params: {
22
+ client: Picked;
23
+ }): Effect<EvaluateRuleLogicParams, unknown, Error>;
24
+ //# sourceMappingURL=rules-logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-logic.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/rules-logic.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAgB,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,oGAAoG;AACpG,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB;AAuED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,MAAM,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAElD"}
@@ -0,0 +1,37 @@
1
+ import { Store } from 'effector';
2
+ import { Picked } from '../picked';
3
+ import { Field, FieldValue } from '../entities/field/field';
4
+ /** Immutable snapshot of the current client state, suitable for passing to user-supplied predicates, actions, and rule evaluators. */
5
+ export interface StateSnapshot {
6
+ client: Picked;
7
+ location?: Window['location'];
8
+ document?: Window['document'];
9
+ sessionStorage?: Window['sessionStorage'];
10
+ localStorage?: Window['localStorage'];
11
+ responses: {
12
+ fieldKey: string;
13
+ value: FieldValue | undefined;
14
+ }[];
15
+ fields: Field[];
16
+ }
17
+ /**
18
+ * Creates a reactive store that always reflects the current client state — responses, fields, browser globals, and the client reference.
19
+ *
20
+ * Consumers reading the snapshot inside an effect should use `attach({ source: stateSnapshotStore })` rather than `.getState()` so reads remain scope-aware and reactive.
21
+ *
22
+ * @param {object} params - Factory params.
23
+ * @param {Picked} params.client - The Picked client instance to derive the snapshot from.
24
+ * @returns {Store<StateSnapshot>} A derived store of the current state snapshot.
25
+ * @example
26
+ * ```typescript
27
+ * const stateSnapshotStore = createStateSnapshotStore({ client })
28
+ * const evaluateFx = attach({
29
+ * source: stateSnapshotStore,
30
+ * effect: (snapshot, rule) => evaluate(snapshot, rule),
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function createStateSnapshotStore(params: {
35
+ client: Picked;
36
+ }): Store<StateSnapshot>;
37
+ //# sourceMappingURL=state-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-snapshot.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/state-snapshot.ts"],"names":[],"mappings":"AAAA,gIAAgI;AAChI,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEhE,sIAAsI;AACtI,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IACrC,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;KAC9B,EAAE,CAAA;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AA0BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAEzF"}
@@ -4,7 +4,7 @@
4
4
  * For the original implementation, see https://github.com/jwadhams/json-logic-js.
5
5
  */
6
6
  export type SyncLogicValue = string | number | boolean | null | undefined | LogicArray | LogicObject;
7
- export type LogicValue = SyncLogicValue | (() => LogicValue) | (() => Promise<SyncLogicValue>) | Promise<SyncLogicValue>;
7
+ export type LogicValue = SyncLogicValue | ((...args: unknown[]) => LogicValue) | ((...args: unknown[]) => Promise<SyncLogicValue>) | Promise<SyncLogicValue>;
8
8
  export interface LogicObject {
9
9
  [key: string]: LogicValue;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logic-engine.d.ts","sourceRoot":"","sources":["../../src/logic-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;AAEpG,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,CAAC,MAAM,UAAU,CAAC,GAClB,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAA;AAE3B,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B;AAED,KAAK,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,GACT,SAAS,EAAE,GACX,cAAc,EAAE,CAAA;AAEpB,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,EAAE,CAAA;CACjD;AAED,MAAM,MAAM,YAAY,GACpB;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B,GACD,UAAU,CAAA;AAwSd;;;;;;;GAOG;AAEH,wBAAsB,KAAK,CACzB,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,EAC3C,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,UAAU,CAAC,CAmJrB"}
1
+ {"version":3,"file":"logic-engine.d.ts","sourceRoot":"","sources":["../../src/logic-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;AAEpG,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAC,GACpC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GACjD,OAAO,CAAC,cAAc,CAAC,CAAA;AAE3B,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B;AAED,KAAK,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,GACT,SAAS,EAAE,GACX,cAAc,EAAE,CAAA;AAEpB,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,EAAE,CAAA;CACjD;AAED,MAAM,MAAM,YAAY,GACpB;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B,GACD,UAAU,CAAA;AAuSd;;;;;;;GAOG;AAEH,wBAAsB,KAAK,CACzB,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,EAC3C,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,UAAU,CAAC,CAmJrB"}