@picked/client 0.0.50 → 0.0.51-next.10

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 (130) hide show
  1. package/dist/api-CHy9HcU7.cjs +1 -0
  2. package/dist/{api-DWBcrf98.js → api-mlYS-lDj.js} +1 -1
  3. package/dist/cjs/form/index.js +1 -0
  4. package/dist/cjs/index.js +2 -2
  5. package/dist/cjs/plugins/create-experience/index.js +1 -1
  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/responses-browser-storage/index.js +1 -1
  10. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  11. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  12. package/dist/cjs/server/index.js +1 -1
  13. package/dist/esm/form/index.js +472 -0
  14. package/dist/esm/index.js +473 -383
  15. package/dist/esm/plugins/create-experience/index.js +198 -165
  16. package/dist/esm/plugins/dynamic-experiences/index.js +52 -30
  17. package/dist/esm/plugins/experience-browser-storage/index.js +1 -1
  18. package/dist/esm/plugins/history-browser-storage/index.js +1 -1
  19. package/dist/esm/plugins/responses-browser-storage/index.js +7 -9
  20. package/dist/esm/plugins/responses-indexeddb/index.js +11 -11
  21. package/dist/esm/plugins/single-page-app/index.js +4 -4
  22. package/dist/esm/server/index.js +1 -1
  23. package/dist/experience-instance-DOcd8XI1.cjs +1 -0
  24. package/dist/experience-instance-NHU1moID.js +486 -0
  25. package/dist/{object-Clj5zVr1.js → object-C82v79xc.js} +2 -1
  26. package/dist/object-CUJOjanb.cjs +1 -0
  27. package/dist/rules-logic-CnVktz2l.js +240 -0
  28. package/dist/rules-logic-nMHNVLn7.cjs +1 -0
  29. package/dist/{storage-DyxpJ0pg.js → storage-6Xk0uAxB.js} +3 -1
  30. package/dist/storage-B6lQtc4-.cjs +1 -0
  31. package/dist/types/client.d.ts +47 -43
  32. package/dist/types/client.d.ts.map +1 -1
  33. package/dist/types/entities/action/action.d.ts +37 -5
  34. package/dist/types/entities/action/action.d.ts.map +1 -1
  35. package/dist/types/entities/condition/condition.d.ts +20 -0
  36. package/dist/types/entities/condition/condition.d.ts.map +1 -0
  37. package/dist/types/entities/experience/experience.d.ts +67 -51
  38. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  39. package/dist/types/entities/experience-instance/experience-instance.d.ts +22 -2
  40. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  41. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  42. package/dist/types/entities/field/field.d.ts +24 -10
  43. package/dist/types/entities/field/field.d.ts.map +1 -1
  44. package/dist/types/entities/history/history.d.ts.map +1 -1
  45. package/dist/types/entities/response/response-validation.d.ts +74 -0
  46. package/dist/types/entities/response/response-validation.d.ts.map +1 -0
  47. package/dist/types/entities/response/response.d.ts +24 -20
  48. package/dist/types/entities/response/response.d.ts.map +1 -1
  49. package/dist/types/entities/step/step.d.ts +42 -0
  50. package/dist/types/entities/step/step.d.ts.map +1 -0
  51. package/dist/types/exports.d.ts +0 -1
  52. package/dist/types/exports.d.ts.map +1 -1
  53. package/dist/types/form/build-responses.d.ts +17 -0
  54. package/dist/types/form/build-responses.d.ts.map +1 -0
  55. package/dist/types/form/create-field-evaluator.d.ts +27 -0
  56. package/dist/types/form/create-field-evaluator.d.ts.map +1 -0
  57. package/dist/types/form/create-field-validation.d.ts +59 -0
  58. package/dist/types/form/create-field-validation.d.ts.map +1 -0
  59. package/dist/types/form/create-form.d.ts +97 -0
  60. package/dist/types/form/create-form.d.ts.map +1 -0
  61. package/dist/types/form/create-submit-pipeline.d.ts +70 -0
  62. package/dist/types/form/create-submit-pipeline.d.ts.map +1 -0
  63. package/dist/types/form/get-step-fields.d.ts +18 -0
  64. package/dist/types/form/get-step-fields.d.ts.map +1 -0
  65. package/dist/types/form/index.d.ts +10 -0
  66. package/dist/types/form/index.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +3 -1
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/logic-engine.d.ts +12 -10
  70. package/dist/types/logic-engine.d.ts.map +1 -1
  71. package/dist/types/picked.d.ts +99 -33
  72. package/dist/types/picked.d.ts.map +1 -1
  73. package/dist/types/plugins/create-experience/create-experience.d.ts +53 -31
  74. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  75. package/dist/types/plugins/create-experience/index.d.ts +2 -2
  76. package/dist/types/plugins/create-experience/index.d.ts.map +1 -1
  77. package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
  78. package/dist/types/plugins/dynamic-experiences/plugin.d.ts +21 -4
  79. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  80. package/dist/types/plugins/dynamic-experiences/types.d.ts +45 -0
  81. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  82. package/dist/types/plugins/experience-browser-storage/plugin.d.ts +2 -1
  83. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  84. package/dist/types/plugins/history-browser-storage/plugin.d.ts +1 -0
  85. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  86. package/dist/types/plugins/responses-browser-storage/plugin.d.ts +2 -1
  87. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
  88. package/dist/types/plugins/responses-indexeddb/plugin.d.ts.map +1 -1
  89. package/dist/types/plugins/single-page-app/plugin.d.ts +1 -1
  90. package/dist/types/plugins/single-page-app/plugin.d.ts.map +1 -1
  91. package/dist/types/utils/dom.d.ts +0 -3
  92. package/dist/types/utils/dom.d.ts.map +1 -1
  93. package/dist/types/utils/events.d.ts +2 -2
  94. package/dist/types/utils/events.d.ts.map +1 -1
  95. package/dist/types/utils/global-obj.d.ts +0 -1
  96. package/dist/types/utils/global-obj.d.ts.map +1 -1
  97. package/dist/types/utils/indexed-db.d.ts +2 -1
  98. package/dist/types/utils/indexed-db.d.ts.map +1 -1
  99. package/dist/types/utils/logger.d.ts.map +1 -1
  100. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +16 -0
  101. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts.map +1 -0
  102. package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts.map +1 -1
  103. package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts.map +1 -1
  104. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
  105. package/dist/types/utils/nodes.d.ts +2 -2
  106. package/dist/types/utils/nodes.d.ts.map +1 -1
  107. package/dist/types/utils/object.d.ts +0 -8
  108. package/dist/types/utils/object.d.ts.map +1 -1
  109. package/dist/types/utils/picked-config.d.ts +1 -1
  110. package/dist/types/utils/picked-config.d.ts.map +1 -1
  111. package/dist/types/utils/rules-logic.d.ts +31 -0
  112. package/dist/types/utils/rules-logic.d.ts.map +1 -1
  113. package/dist/types/utils/search-params.d.ts.map +1 -1
  114. package/dist/types/utils/state-snaphot.d.ts +11 -1
  115. package/dist/types/utils/state-snaphot.d.ts.map +1 -1
  116. package/dist/types/utils/storage.d.ts.map +1 -1
  117. package/package.json +43 -7
  118. package/dist/api-BwTaomem.cjs +0 -1
  119. package/dist/experience-instance-BRpI9I4s.js +0 -710
  120. package/dist/experience-instance-BUTnwbSJ.cjs +0 -1
  121. package/dist/object-BReQiaSS.cjs +0 -1
  122. package/dist/storage-BFjb8azI.cjs +0 -1
  123. package/dist/types/entities/project/project.d.ts +0 -9
  124. package/dist/types/entities/project/project.d.ts.map +0 -1
  125. package/dist/types/utils/get-step-fields.d.ts +0 -4
  126. package/dist/types/utils/get-step-fields.d.ts.map +0 -1
  127. package/dist/types/utils/node-tree/get-next-node-from-conditional.d.ts +0 -3
  128. package/dist/types/utils/node-tree/get-next-node-from-conditional.d.ts.map +0 -1
  129. /package/dist/{id-CIbS4P60.cjs → id-Bv44ilEo.cjs} +0 -0
  130. /package/dist/{id-BniPxOdF.js → id-CRqy981z.js} +0 -0
@@ -0,0 +1,42 @@
1
+ import { Store } from 'effector';
2
+ export type StepsStore = ReturnType<typeof createStepIndex>;
3
+ export interface ExperienceStep {
4
+ id: string;
5
+ key: string;
6
+ name: string;
7
+ /** @deprecated Use `name` instead. Populated for backwards compatibility. */
8
+ label?: string;
9
+ fieldIds: string[];
10
+ layoutName?: string | null;
11
+ }
12
+ declare const createStepIndexFactory: () => {
13
+ register: (step: ExperienceStep) => void;
14
+ getById: (id: ExperienceStep["id"]) => Store<ExperienceStep | null>;
15
+ getByKey: (key: ExperienceStep["key"]) => Store<ExperienceStep | null>;
16
+ listStore: Store<ExperienceStep[]>;
17
+ indexStore: import('effector').StoreWritable<{
18
+ [id: string]: ExperienceStep;
19
+ }>;
20
+ };
21
+ /**
22
+ * Creates an Effector-based index for registering and retrieving steps.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const steps = createStepIndex()
27
+ * ```
28
+ */
29
+ export declare function createStepIndex(): ReturnType<typeof createStepIndexFactory>;
30
+ /**
31
+ * Registers a step with the given index via the helper function.
32
+ *
33
+ * @param step - The step definition to register.
34
+ * @param index - The step index to register the step with.
35
+ * @example
36
+ * ```typescript
37
+ * setupStep(step, index)
38
+ * ```
39
+ */
40
+ export declare function setupStep(step: ExperienceStep, index: ReturnType<typeof createStepIndex>): void;
41
+ export {};
42
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +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,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,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"}
@@ -5,7 +5,6 @@ export * from './utils/supports';
5
5
  export * from './utils/storage';
6
6
  export type * from './utils/storage';
7
7
  export { evaluateRuleLogic } from './utils/rules-logic';
8
- export { getStepFields } from './utils/get-step-fields';
9
8
  export { getPickedConfig } from './utils/picked-config';
10
9
  export { lazyComponent, isLazyLoader } from './entities/component/lazyComponent';
11
10
  /**
@@ -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,aAAa,EAAE,MAAM,yBAAyB,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,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"}
@@ -0,0 +1,17 @@
1
+ import { FieldBase, FieldValue } from '../entities/field/field';
2
+ /**
3
+ * Parses a FormData snapshot into a typed record of field responses keyed by field key. Fields
4
+ * absent from FormData are mapped to `null`. Empty string values are mapped to `null`. Repeated
5
+ * entries for the same field (such as multi-select checkboxes) are merged into a typed array
6
+ * matching the field's declared element type. Values are coerced to the field's declared type.
7
+ *
8
+ * @param fields - The field definitions to parse against.
9
+ * @param formData - The FormData snapshot to parse.
10
+ * @returns A record of field keys to their parsed values.
11
+ * @example
12
+ * ```typescript
13
+ * buildResponsesFromFormData([field], new FormData(formElement))
14
+ * ```
15
+ */
16
+ export declare function buildResponsesFromFormData(fields: FieldBase[], formData: FormData): Record<string, FieldValue>;
17
+ //# sourceMappingURL=build-responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-responses.d.ts","sourceRoot":"","sources":["../../../src/form/build-responses.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAwCpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAsC5B"}
@@ -0,0 +1,27 @@
1
+ import { Store, StoreWritable } from 'effector';
2
+ import { Field, FieldValue } from '../entities/field/field';
3
+ import { Picked } from '../picked';
4
+ /**
5
+ * Creates a reactive store of evaluated fields for a given set of field IDs.
6
+ *
7
+ * Fields are re-evaluated whenever:
8
+ * - The available field IDs change (e.g. A step is entered)
9
+ * - Any response is committed (options may depend on prior answers)
10
+ * - The global field registry changes (fields registered after init)
11
+ * - Staged values change (field visibility conditions may reference responses.*).
12
+ *
13
+ * Evaluation runs `getStepFields` with effective responses (committed + staged) as context,
14
+ * so visibility conditions see live in-session values rather than only committed responses.
15
+ *
16
+ * @param client - The Picked client instance.
17
+ * @param fieldIds - Store of field IDs to evaluate.
18
+ * @param stagedValuesStore - Store of in-progress field values not yet committed.
19
+ * @example
20
+ * ```typescript
21
+ * const { fieldsStore } = createFieldEvaluator(client, fieldIdsStore, stagedStore)
22
+ * ```
23
+ */
24
+ export declare function createFieldEvaluator(client: Picked, fieldIds: Store<string[]>, stagedValuesStore: StoreWritable<Record<string, FieldValue>>): {
25
+ fieldsStore: Store<Field[]>;
26
+ };
27
+ //# sourceMappingURL=create-field-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-field-evaluator.d.ts","sourceRoot":"","sources":["../../../src/form/create-field-evaluator.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,OAAO,EAA6C,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACpG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EACzB,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC3D;IAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAwCjC"}
@@ -0,0 +1,59 @@
1
+ import { EventCallable, Store, StoreWritable } from 'effector';
2
+ import { Field, FieldValue } from '../entities/field/field';
3
+ import { ValidationError } from '../entities/response/response';
4
+ import { Picked } from '../picked';
5
+ export interface FieldValidation {
6
+ /** Dispatch on keyboard input — updates staged values and runs validation if the field has been touched. */
7
+ fieldInputEvent: EventCallable<{
8
+ fieldKey: string;
9
+ value: FieldValue;
10
+ }>;
11
+ /** Dispatch when a field value is committed (onchange) — updates staged values and runs validation if the field has been touched. */
12
+ fieldChangeEvent: EventCallable<{
13
+ fieldKey: string;
14
+ value: FieldValue;
15
+ }>;
16
+ /** Dispatch when a field loses focus — always runs full validation including required check. */
17
+ fieldBlurEvent: EventCallable<{
18
+ fieldKey: string;
19
+ value: FieldValue;
20
+ }>;
21
+ /** Which fields have been interacted with — used by formFieldsStore to show/hide errors. */
22
+ touchedStore: StoreWritable<Partial<Record<string, boolean>>>;
23
+ /**
24
+ * Per-field validation errors — written by client-side validation and overwritten
25
+ * by server errors on commit failure. Exposed as writable so the submit pipeline
26
+ * can populate server errors and reset state on new submit attempts.
27
+ */
28
+ fieldErrorsStore: StoreWritable<Partial<Record<string, ValidationError>>>;
29
+ /** Flat list of all current validation errors — derived from fieldErrorsStore. */
30
+ formErrorsStore: Store<ValidationError[]>;
31
+ /**
32
+ * Current in-session field values — updated on every onChange/onBlur before commit.
33
+ * Used as the responses context for condition evaluation so conditions react to
34
+ * live input without writing to client.responses prematurely.
35
+ */
36
+ stagedValuesStore: StoreWritable<Record<string, FieldValue>>;
37
+ }
38
+ /**
39
+ * Creates the client-side validation slice for a form.
40
+ *
41
+ * Responsibilities:
42
+ * - Tracks which fields have been touched (first blur = touched).
43
+ * - Validates on blur (full: includes required check) and on change (if already touched).
44
+ * - Uses the same json-logic evaluator the server uses, so client and server results match.
45
+ * - Maintains stagedValuesStore: current in-session values used as responses context for
46
+ * condition evaluation, avoiding premature writes to client.responses.
47
+ *
48
+ * @param {Picked} client - The Picked client instance providing responses and field registry.
49
+ * @param {Store<Field[]>} fieldsStore - Reactive store of the current field definitions.
50
+ * @param {StoreWritable<Record<string, FieldValue>>} stagedValuesStore - Writable store of in-session field values.
51
+ * @returns {FieldValidation} The validation slice containing events, stores, and wiring.
52
+ * @example
53
+ * ```ts
54
+ * const validation = createFieldValidation(client, fieldsStore, stagedValuesStore)
55
+ * validation.fieldInputEvent({ fieldKey: 'email', value: 'hi' })
56
+ * ```
57
+ */
58
+ export declare function createFieldValidation(client: Picked, fieldsStore: Store<Field[]>, stagedValuesStore: StoreWritable<Record<string, FieldValue>>): FieldValidation;
59
+ //# sourceMappingURL=create-field-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-field-validation.d.ts","sourceRoot":"","sources":["../../../src/form/create-field-validation.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,aAAa,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAkBvC,MAAM,WAAW,eAAe;IAC9B,4GAA4G;IAC5G,eAAe,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;IACvE,qIAAqI;IACrI,gBAAgB,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;IACxE,gGAAgG;IAChG,cAAc,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;IACtE,4FAA4F;IAC5F,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7D;;;;OAIG;IACH,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACzE,kFAAkF;IAClF,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;IACzC;;;;OAIG;IACH,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;CAC7D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAC3B,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC3D,eAAe,CA2KjB"}
@@ -0,0 +1,97 @@
1
+ import { EventCallable, Store } from 'effector';
2
+ import { Field, FieldValue } from '../entities/field/field';
3
+ import { ExperienceInstance } from '../entities/experience-instance/experience-instance';
4
+ import { ValidationError } from '../entities/response/response';
5
+ import { Picked } from '../picked';
6
+ import { ErrorCallback, SubmitCallback, SubmitEventWithCurrentTarget, SuccessCallback } from './create-submit-pipeline';
7
+ export type FormField = Field & {
8
+ value: FieldValue | undefined;
9
+ /** Validation error for this field, or undefined if valid. */
10
+ error: ValidationError | undefined;
11
+ touched: boolean;
12
+ /** HTML-safe attributes to spread onto an input element. */
13
+ props: {
14
+ id: string;
15
+ name: string;
16
+ key: string;
17
+ value: FieldValue | undefined;
18
+ type: 'text' | 'number' | 'checkbox';
19
+ required: boolean;
20
+ placeholder: string | undefined;
21
+ oninput: (e: Event) => void;
22
+ onchange: (e: Event) => void;
23
+ onblur: (e: Event) => void;
24
+ };
25
+ };
26
+ /**
27
+ * Dependencies that framework wrappers inject into createForm.
28
+ * Replaces Svelte's getPicked()/getExperience() context calls.
29
+ */
30
+ export interface CreateFormDeps {
31
+ client: Picked;
32
+ experienceInstance: ExperienceInstance;
33
+ }
34
+ /**
35
+ * Return type for createForm().
36
+ * Provides form handlers, reactive stores, and callback registration.
37
+ */
38
+ export interface FormInstance<TFieldIds extends string = string> {
39
+ /** Form element props (bind to a form element). */
40
+ form: {
41
+ /** HTML-safe attributes to spread onto a form element. */
42
+ props: {
43
+ onsubmit: EventCallable<SubmitEventWithCurrentTarget>;
44
+ };
45
+ /** Flat list of all current validation errors — derived from fieldErrors. */
46
+ errors: Store<ValidationError[]>;
47
+ /** Reactive store indicating if form is currently submitting. */
48
+ submitting: Store<boolean>;
49
+ /** Register callbacks to transform/validate data before submission. Returns unsubscribe. */
50
+ onBeforeSubmit: (callback: SubmitCallback<TFieldIds>) => () => void;
51
+ /** Register callbacks to run on successful form submission. Returns unsubscribe. */
52
+ onSuccess: (callback: SuccessCallback<TFieldIds>) => () => void;
53
+ /** Register callbacks to run on form validation errors. Returns unsubscribe. */
54
+ onError: (callback: ErrorCallback) => () => void;
55
+ };
56
+ /** Reactive store of fields with current values, errors, touched state, and event handlers. */
57
+ fields: Store<FormField[]>;
58
+ }
59
+ /**
60
+ * Extracts the current value from a form input event.
61
+ *
62
+ * @param {Event} e - The DOM event from an input, select, or textarea element.
63
+ * @returns {FieldValue | undefined} The field value, or undefined if the event target is not a recognised form element.
64
+ * @example
65
+ * ```ts
66
+ * input.addEventListener('input', (e) => {
67
+ * const value = getEventValue(e)
68
+ * })
69
+ * ```
70
+ */
71
+ export declare function getEventValue(e: Event): FieldValue | undefined;
72
+ /**
73
+ * Creates a form instance tied to a set of field IDs.
74
+ * Handles field evaluation, form submission, data transformation,
75
+ * validation, event bus tracking, and step navigation.
76
+ *
77
+ * Framework-agnostic — framework wrappers (Svelte, React) inject
78
+ * client and experienceInstance via the deps parameter and handle
79
+ * callback cleanup lifecycle.
80
+ *
81
+ * @param {CreateFormDeps} deps - Client and experience instance injected by the framework wrapper.
82
+ * @param {string} formId - Unique identifier for this form instance.
83
+ * @param {Store<string>} title - Reactive store holding the form/step title.
84
+ * @param {Store<string[]>} fieldIds - Reactive store of field IDs that belong to this form.
85
+ * @returns {FormInstance} A form instance with reactive field stores, submission handlers, and callback registration.
86
+ * @example
87
+ * ```ts
88
+ * const form = createForm(
89
+ * { client, experienceInstance },
90
+ * 'lead-capture',
91
+ * $title,
92
+ * $fieldIds,
93
+ * )
94
+ * ```
95
+ */
96
+ export declare function createForm(deps: CreateFormDeps, formId: string, title: Store<string>, fieldIds: Store<string[]>): FormInstance;
97
+ //# sourceMappingURL=create-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form.d.ts","sourceRoot":"","sources":["../../../src/form/create-form.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,KAAK,EAEX,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG;IAC9B,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;IAC7B,8DAA8D;IAC9D,KAAK,EAAE,eAAe,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,4DAA4D;IAC5D,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;QAC7B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;QACpC,QAAQ,EAAE,OAAO,CAAA;QACjB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;QAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;QAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;QAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,kBAAkB,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAC7D,mDAAmD;IACnD,IAAI,EAAE;QACJ,0DAA0D;QAC1D,KAAK,EAAE;YACL,QAAQ,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAA;SACtD,CAAA;QACD,6EAA6E;QAC7E,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;QAChC,iEAAiE;QACjE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1B,4FAA4F;QAC5F,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAA;QACnE,oFAAoF;QACpF,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAA;QAC/D,gFAAgF;QAChF,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,MAAM,IAAI,CAAA;KACjD,CAAA;IACD,+FAA+F;IAC/F,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;CAC3B;AAED;;;;;;;;;;;GAWG;AAEH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAW9D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,GACxB,YAAY,CAoLd"}
@@ -0,0 +1,70 @@
1
+ import { Event, EventCallable, Store } from 'effector';
2
+ import { ExperienceInstance } from '../entities/experience-instance/experience-instance';
3
+ import { ExperienceStep } from '../entities/step/step';
4
+ import { Field, FieldValue } from '../entities/field/field';
5
+ import { ValidationError } from '../entities/response/response';
6
+ import { Picked } from '../picked';
7
+ export type SubmitEventWithCurrentTarget = SubmitEvent & {
8
+ currentTarget: EventTarget & HTMLFormElement;
9
+ };
10
+ export type SuccessCallback<TFieldIds extends string = string> = (options: {
11
+ data: Record<TFieldIds, FieldValue>;
12
+ stopNavigation: EventCallable<void>;
13
+ }) => void | Promise<void>;
14
+ export type ErrorCallback = (errors: ValidationError[]) => void | Promise<void>;
15
+ export type SubmitCallback<TFieldIds extends string = string> = (data: Record<TFieldIds, FieldValue>) => Record<TFieldIds, FieldValue> | void | Promise<Record<TFieldIds, FieldValue> | void>;
16
+ export interface SubmitPipelineConfig {
17
+ client: Picked;
18
+ experienceInstance: ExperienceInstance;
19
+ formId: string;
20
+ title: Store<string>;
21
+ stepStore: Store<ExperienceStep | null>;
22
+ fieldsStore: Store<Field[]>;
23
+ goToNextStep: EventCallable<void>;
24
+ }
25
+ export interface SubmitPipeline {
26
+ submitEvent: EventCallable<SubmitEventWithCurrentTarget>;
27
+ isFormSubmitting: Store<boolean>;
28
+ onBeforeSubmit: (callback: SubmitCallback) => () => void;
29
+ onSuccess: (callback: SuccessCallback) => () => void;
30
+ onError: (callback: ErrorCallback) => () => void;
31
+ /**
32
+ * Fired when a submit attempt starts — callers use this to clear validation state.
33
+ * Separating this from `submitEvent` keeps the pipeline decoupled from the
34
+ * validation module's internal stores.
35
+ */
36
+ submitStarted: Event<void>;
37
+ /**
38
+ * Fired when commit returns validation errors — callers write these to
39
+ * `fieldErrorsStore` in the validation module.
40
+ */
41
+ validationErrorsReceived: Event<ValidationError[]>;
42
+ }
43
+ /**
44
+ * Creates the submit pipeline for a form instance.
45
+ *
46
+ * Manages the full lifecycle of a form submission, including emitting event bus
47
+ * calls, running data-transform callbacks, committing responses, running
48
+ * success/error callbacks, and navigating to the next step.
49
+ *
50
+ * Returns coordination events (`submitStarted`, `validationErrorsReceived`) that the
51
+ * caller wires to the validation module to keep validation state in sync without
52
+ * the pipeline needing direct access to validation stores.
53
+ *
54
+ * @param config - The submit pipeline configuration.
55
+ * @param config.client - The Picked client instance.
56
+ * @param config.experienceInstance - The experience instance.
57
+ * @param config.formId - The form identifier.
58
+ * @param config.title - Store containing the form title.
59
+ * @param config.stepStore - Store containing the current step.
60
+ * @param config.fieldsStore - Store containing the form fields.
61
+ * @param config.goToNextStep - Event to trigger navigation to the next step.
62
+ * @returns The submit pipeline with events, stores, and callback registration.
63
+ * @example
64
+ * ```ts
65
+ * const pipeline = createSubmitPipeline(config)
66
+ * pipeline.onSuccess(({ data }) => console.log(data))
67
+ * ```
68
+ */
69
+ export declare function createSubmitPipeline({ client, experienceInstance, formId, title, stepStore, fieldsStore, goToNextStep, }: SubmitPipelineConfig): SubmitPipeline;
70
+ //# sourceMappingURL=create-submit-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-submit-pipeline.d.ts","sourceRoot":"","sources":["../../../src/form/create-submit-pipeline.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAOL,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,MAAM,MAAM,4BAA4B,GAAG,WAAW,GAAG;IACvD,aAAa,EAAE,WAAW,GAAG,eAAe,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;IACzE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACnC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CACpC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1B,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/E,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CAC9D,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,KAChC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;AAOzF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpB,SAAS,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACvC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3B,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAA;IACxD,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAChC,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,MAAM,IAAI,CAAA;IACxD,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IACpD,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,MAAM,IAAI,CAAA;IAChD;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B;;;OAGG;IACH,wBAAwB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;CACnD;AA2CD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,kBAAkB,EAClB,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,EACX,YAAY,GACb,EAAE,oBAAoB,GAAG,cAAc,CAiMvC"}
@@ -0,0 +1,18 @@
1
+ import { Field } from '../entities/field/field';
2
+ import { Picked } from '../picked';
3
+ import { evaluateRuleLogic } from '../utils/rules-logic';
4
+ /**
5
+ * Evaluates field and option conditions, returning only the fields that should be visible.
6
+ *
7
+ * @template T
8
+ * @param {Picked} client - The Picked client instance for condition evaluation.
9
+ * @param {T[]} fields - The fields to filter by their conditions.
10
+ * @param {Parameters<typeof evaluateRuleLogic>[2]} [context] - Optional context object passed to the rule evaluator.
11
+ * @returns {Promise<T[]>} The filtered array of visible fields with conditional options resolved.
12
+ * @example
13
+ * ```typescript
14
+ * const visibleFields = await getStepFields(client, step.fields, { cartTotal: 50 })
15
+ * ```
16
+ */
17
+ export declare function getStepFields<T extends Field>(client: Picked, fields: T[], context?: Parameters<typeof evaluateRuleLogic>[2]): Promise<T[]>;
18
+ //# sourceMappingURL=get-step-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-step-fields.d.ts","sourceRoot":"","sources":["../../../src/form/get-step-fields.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AA8CxD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,KAAK,EACjD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAChD,OAAO,CAAC,CAAC,EAAE,CAAC,CAoDd"}
@@ -0,0 +1,10 @@
1
+ export { buildResponsesFromFormData } from './build-responses';
2
+ export { getStepFields } from './get-step-fields';
3
+ export { createFieldEvaluator } from './create-field-evaluator';
4
+ export { createFieldValidation } from './create-field-validation';
5
+ export type { FieldValidation } from './create-field-validation';
6
+ export { createSubmitPipeline } from './create-submit-pipeline';
7
+ export type { SubmitPipelineConfig, SubmitPipeline, SubmitEventWithCurrentTarget, SuccessCallback, ErrorCallback, SubmitCallback, } from './create-submit-pipeline';
8
+ export { createForm, getEventValue } from './create-form';
9
+ export type { CreateFormDeps, FormField, FormInstance } from './create-form';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,4BAA4B,EAC5B,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
@@ -1,19 +1,21 @@
1
1
  export * from './exports';
2
2
  export type * from './client';
3
3
  export type * from './entities/action/action';
4
+ export type * from './entities/condition/condition';
4
5
  export type * from './entities/component/component';
5
6
  export type * from './entities/component/lazyComponent';
6
7
  export type * from './entities/experience-instance/experience-instance';
7
8
  export type * from './entities/experience/experience';
9
+ export type * from './entities/step/step';
8
10
  export type * from './entities/feature/feature';
9
11
  export type * from './entities/field/field';
10
12
  export type * from './entities/framework/framework';
11
13
  export type * from './entities/history/history';
12
14
  export type * from './entities/plugin/plugin';
13
15
  export type * from './entities/predicate/predicate';
14
- export type * from './entities/project/project';
15
16
  export type * from './utils/state-snaphot';
16
17
  export type * from './utils/events';
18
+ export type * from './utils/search-params';
17
19
  export type * from './entities/response/response';
18
20
  export { Picked } from './picked';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -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,oCAAoC,CAAA;AACvD,mBAAmB,oDAAoD,CAAA;AACvE,mBAAmB,kCAAkC,CAAA;AACrD,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,uBAAuB,CAAA;AAC1C,mBAAmB,gBAAgB,CAAA;AACnC,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,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,27 +1,29 @@
1
1
  /**
2
- * This is an implementation of `json-logic-js` with support for async operations.
2
+ * @file Async implementation of json-logic-js.
3
3
  *
4
- * For the original implementation, see https://github.com/jwadhams/json-logic-js
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
7
  export type LogicValue = SyncLogicValue | (() => LogicValue) | (() => Promise<SyncLogicValue>) | Promise<SyncLogicValue>;
8
8
  export interface LogicObject {
9
9
  [key: string]: LogicValue;
10
10
  }
11
- export type LogicArray = Array<LogicValue>;
11
+ type LogicArray = Array<LogicValue>;
12
12
  export type LogicRuleValue = string | number | boolean | null | undefined | LogicRule | LogicRule[] | LogicRuleValue[];
13
13
  export interface LogicRule {
14
14
  [key: string]: LogicRuleValue | LogicRuleValue[];
15
15
  }
16
- export type ComparisonOperation = (a: LogicValue, b: LogicValue) => boolean;
17
- export type NumericOperation = (a: number, b: number, c?: number) => boolean | number;
18
- export type UnaryOperation = (a: LogicValue) => LogicValue;
19
- export type StringOperation = (source: LogicValue, start: number, end?: number) => string;
20
- export type ArrayOperation = (...args: LogicValue[]) => LogicValue[];
21
- export type MathOperation = (...args: number[]) => number;
22
16
  export type LogicContext = {
23
17
  [key: string]: LogicValue;
24
18
  } | LogicValue;
25
- export type Operation = (this: LogicContext, ...args: LogicValue[]) => LogicValue | Promise<SyncLogicValue>;
19
+ /**
20
+ * Evaluates a JSON Logic expression against a data context.
21
+ *
22
+ * @param {LogicObject | LogicValue | undefined} logic - The JSON Logic expression to evaluate.
23
+ * @param {LogicContext} [data] - The data context for variable resolution.
24
+ * @returns {Promise<LogicValue>} The result of evaluating the expression.
25
+ * @example apply({ '==': [{ var: 'x' }, 1] }, { x: 1 }) // true
26
+ */
26
27
  export declare function apply(logic: LogicObject | LogicValue | undefined, data?: LogicContext): Promise<LogicValue>;
28
+ export {};
27
29
  //# sourceMappingURL=logic-engine.d.ts.map
@@ -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,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;AAE1C,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,mBAAmB,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,CAAA;AAC3E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAA;AACrF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,CAAA;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AACzF,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAA;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;AAEzD,MAAM,MAAM,YAAY,GACpB;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B,GACD,UAAU,CAAA;AAqCd,MAAM,MAAM,SAAS,GAAG,CACtB,IAAI,EAAE,YAAY,EAClB,GAAG,IAAI,EAAE,UAAU,EAAE,KAClB,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAuMzC,wBAAsB,KAAK,CACzB,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,EAC3C,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,UAAU,CAAC,CAoJrB"}
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"}