@jfdevelops/multi-step-form-core 1.0.0-alpha.12 → 1.0.0-alpha.13

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 (178) hide show
  1. package/dist/_internals.cjs +13 -9
  2. package/dist/_internals.d.cts +4 -0
  3. package/dist/_internals.d.mts +4 -0
  4. package/dist/_internals.mjs +5 -7
  5. package/dist/index.cjs +45 -669
  6. package/dist/index.d.cts +14 -0
  7. package/dist/index.d.mts +14 -0
  8. package/dist/index.mjs +16 -668
  9. package/dist/internals/step-schema.cjs +309 -0
  10. package/dist/internals/step-schema.cjs.map +1 -0
  11. package/dist/internals/step-schema.d.cts +39 -0
  12. package/dist/internals/step-schema.d.cts.map +1 -0
  13. package/dist/internals/step-schema.d.mts +39 -0
  14. package/dist/internals/step-schema.d.mts.map +1 -0
  15. package/dist/internals/step-schema.mjs +309 -0
  16. package/dist/internals/step-schema.mjs.map +1 -0
  17. package/dist/internals/utils.cjs +94 -0
  18. package/dist/internals/utils.cjs.map +1 -0
  19. package/dist/internals/utils.d.cts +27 -0
  20. package/dist/internals/utils.d.cts.map +1 -0
  21. package/dist/internals/utils.d.mts +27 -0
  22. package/dist/internals/utils.d.mts.map +1 -0
  23. package/dist/internals/utils.mjs +91 -0
  24. package/dist/internals/utils.mjs.map +1 -0
  25. package/dist/observable.cjs +44 -0
  26. package/dist/observable.cjs.map +1 -0
  27. package/dist/observable.d.cts +26 -0
  28. package/dist/observable.d.cts.map +1 -0
  29. package/dist/observable.d.mts +26 -0
  30. package/dist/observable.d.mts.map +1 -0
  31. package/dist/observable.mjs +44 -0
  32. package/dist/observable.mjs.map +1 -0
  33. package/dist/schema.cjs +68 -0
  34. package/dist/schema.cjs.map +1 -0
  35. package/dist/schema.d.cts +28 -0
  36. package/dist/schema.d.cts.map +1 -0
  37. package/dist/schema.d.mts +28 -0
  38. package/dist/schema.d.mts.map +1 -0
  39. package/dist/schema.mjs +67 -0
  40. package/dist/schema.mjs.map +1 -0
  41. package/dist/steps/fields.cjs +23 -0
  42. package/dist/steps/fields.cjs.map +1 -0
  43. package/dist/steps/fields.d.cts +18 -0
  44. package/dist/steps/fields.d.cts.map +1 -0
  45. package/dist/steps/fields.d.mts +18 -0
  46. package/dist/steps/fields.d.mts.map +1 -0
  47. package/dist/steps/fields.mjs +18 -0
  48. package/dist/steps/fields.mjs.map +1 -0
  49. package/dist/steps/index.cjs +4 -0
  50. package/dist/steps/index.mjs +6 -0
  51. package/dist/steps/schema.cjs +194 -0
  52. package/dist/steps/schema.cjs.map +1 -0
  53. package/dist/steps/schema.d.cts +124 -0
  54. package/dist/steps/schema.d.cts.map +1 -0
  55. package/dist/steps/schema.d.mts +124 -0
  56. package/dist/steps/schema.d.mts.map +1 -0
  57. package/dist/steps/schema.mjs +194 -0
  58. package/dist/steps/schema.mjs.map +1 -0
  59. package/dist/steps/types.cjs +33 -0
  60. package/dist/steps/types.cjs.map +1 -0
  61. package/dist/steps/types.d.cts +268 -0
  62. package/dist/steps/types.d.cts.map +1 -0
  63. package/dist/steps/types.d.mts +268 -0
  64. package/dist/steps/types.d.mts.map +1 -0
  65. package/dist/steps/types.mjs +27 -0
  66. package/dist/steps/types.mjs.map +1 -0
  67. package/dist/steps/utils.cjs +96 -0
  68. package/dist/steps/utils.cjs.map +1 -0
  69. package/dist/steps/utils.d.cts +10 -0
  70. package/dist/steps/utils.d.cts.map +1 -0
  71. package/dist/steps/utils.d.mts +10 -0
  72. package/dist/steps/utils.d.mts.map +1 -0
  73. package/dist/steps/utils.mjs +94 -0
  74. package/dist/steps/utils.mjs.map +1 -0
  75. package/dist/storage.cjs +72 -0
  76. package/dist/storage.cjs.map +1 -0
  77. package/dist/storage.d.cts +33 -0
  78. package/dist/storage.d.cts.map +1 -0
  79. package/dist/storage.d.mts +33 -0
  80. package/dist/storage.d.mts.map +1 -0
  81. package/dist/storage.mjs +71 -0
  82. package/dist/storage.mjs.map +1 -0
  83. package/dist/subscribable.cjs +25 -0
  84. package/dist/subscribable.cjs.map +1 -0
  85. package/dist/subscribable.d.cts +14 -0
  86. package/dist/subscribable.d.cts.map +1 -0
  87. package/dist/subscribable.d.mts +14 -0
  88. package/dist/subscribable.d.mts.map +1 -0
  89. package/dist/subscribable.mjs +24 -0
  90. package/dist/subscribable.mjs.map +1 -0
  91. package/dist/utils/casing.cjs +63 -0
  92. package/dist/utils/casing.cjs.map +1 -0
  93. package/dist/utils/casing.d.cts +40 -0
  94. package/dist/utils/casing.d.cts.map +1 -0
  95. package/dist/utils/casing.d.mts +40 -0
  96. package/dist/utils/casing.d.mts.map +1 -0
  97. package/dist/utils/casing.mjs +57 -0
  98. package/dist/utils/casing.mjs.map +1 -0
  99. package/dist/utils/field-types.cjs +23 -0
  100. package/dist/utils/field-types.cjs.map +1 -0
  101. package/dist/utils/field-types.d.cts +11 -0
  102. package/dist/utils/field-types.d.cts.map +1 -0
  103. package/dist/utils/field-types.d.mts +11 -0
  104. package/dist/utils/field-types.d.mts.map +1 -0
  105. package/dist/utils/field-types.mjs +20 -0
  106. package/dist/utils/field-types.mjs.map +1 -0
  107. package/dist/utils/helpers.cjs +30 -0
  108. package/dist/utils/helpers.cjs.map +1 -0
  109. package/dist/utils/helpers.mjs +27 -0
  110. package/dist/utils/helpers.mjs.map +1 -0
  111. package/dist/utils/invariant.cjs +18 -0
  112. package/dist/utils/invariant.cjs.map +1 -0
  113. package/dist/utils/invariant.d.cts +5 -0
  114. package/dist/utils/invariant.d.cts.map +1 -0
  115. package/dist/utils/invariant.d.mts +5 -0
  116. package/dist/utils/invariant.d.mts.map +1 -0
  117. package/dist/utils/invariant.mjs +17 -0
  118. package/dist/utils/invariant.mjs.map +1 -0
  119. package/dist/utils/logger.cjs +58 -0
  120. package/dist/utils/logger.cjs.map +1 -0
  121. package/dist/utils/logger.d.cts +53 -0
  122. package/dist/utils/logger.d.cts.map +1 -0
  123. package/dist/utils/logger.d.mts +53 -0
  124. package/dist/utils/logger.d.mts.map +1 -0
  125. package/dist/utils/logger.mjs +56 -0
  126. package/dist/utils/logger.mjs.map +1 -0
  127. package/dist/utils/path.cjs +272 -0
  128. package/dist/utils/path.cjs.map +1 -0
  129. package/dist/utils/path.d.cts +131 -0
  130. package/dist/utils/path.d.cts.map +1 -0
  131. package/dist/utils/path.d.mts +131 -0
  132. package/dist/utils/path.d.mts.map +1 -0
  133. package/dist/utils/path.mjs +266 -0
  134. package/dist/utils/path.mjs.map +1 -0
  135. package/dist/utils/types.d.cts +23 -0
  136. package/dist/utils/types.d.cts.map +1 -0
  137. package/dist/utils/types.d.mts +23 -0
  138. package/dist/utils/types.d.mts.map +1 -0
  139. package/dist/utils/validator.cjs +12 -0
  140. package/dist/utils/validator.cjs.map +1 -0
  141. package/dist/utils/validator.d.cts +77 -0
  142. package/dist/utils/validator.d.cts.map +1 -0
  143. package/dist/utils/validator.d.mts +77 -0
  144. package/dist/utils/validator.d.mts.map +1 -0
  145. package/dist/utils/validator.mjs +11 -0
  146. package/dist/utils/validator.mjs.map +1 -0
  147. package/package.json +12 -12
  148. package/dist/_internals.cjs.map +0 -1
  149. package/dist/_internals.mjs.map +0 -1
  150. package/dist/errors/invalid-key.d.ts +0 -18
  151. package/dist/index.cjs.map +0 -1
  152. package/dist/index.d.ts +0 -5
  153. package/dist/index.mjs.map +0 -1
  154. package/dist/internals/index.d.ts +0 -2
  155. package/dist/internals/step-schema.d.ts +0 -28
  156. package/dist/observable.d.ts +0 -21
  157. package/dist/schema.d.ts +0 -22
  158. package/dist/steps/fields.d.ts +0 -20
  159. package/dist/steps/index.d.ts +0 -4
  160. package/dist/steps/schema.d.ts +0 -138
  161. package/dist/steps/types.d.ts +0 -295
  162. package/dist/steps/utils.d.ts +0 -21
  163. package/dist/storage.d.ts +0 -28
  164. package/dist/subscribable.d.ts +0 -10
  165. package/dist/types-C4Mgnku6.cjs +0 -949
  166. package/dist/types-C4Mgnku6.cjs.map +0 -1
  167. package/dist/types-CYf1_lBe.js +0 -953
  168. package/dist/types-CYf1_lBe.js.map +0 -1
  169. package/dist/utils/casing.d.ts +0 -38
  170. package/dist/utils/field-types.d.ts +0 -6
  171. package/dist/utils/helper-fns.d.ts +0 -8
  172. package/dist/utils/helpers.d.ts +0 -8
  173. package/dist/utils/index.d.ts +0 -5
  174. package/dist/utils/invariant.d.ts +0 -1
  175. package/dist/utils/logger.d.ts +0 -50
  176. package/dist/utils/path.d.ts +0 -141
  177. package/dist/utils/types.d.ts +0 -34
  178. package/dist/utils/validator.d.ts +0 -74
@@ -0,0 +1,268 @@
1
+ import { StorageConfig } from "../storage.mjs";
2
+ import { Constrain, DeepKeys, Expand, objectHelpers } from "../utils/types.mjs";
3
+ import { CasingType, DefaultCasing } from "../utils/casing.mjs";
4
+ import { DefaultFieldType, FieldType } from "../utils/field-types.mjs";
5
+ import { path } from "../utils/path.mjs";
6
+ import { AnyValidator, DefaultValidator, ResolveValidatorOutput } from "../utils/validator.mjs";
7
+
8
+ //#region src/steps/types.d.ts
9
+ interface NameTransformCasingOptions<TCasing extends CasingType> {
10
+ /**
11
+ * How the `name` should be transformed for the `label`.
12
+ *
13
+ * If omitted, the default will be whatever is set during {@linkcode MultiStepFormSchema} initialization.
14
+ */
15
+ nameTransformCasing?: Constrain<TCasing, CasingType>;
16
+ }
17
+ interface StepFieldOptions<Type extends FieldType, Casing extends CasingType, DefaultValue> extends NameTransformCasingOptions<Casing> {
18
+ defaultValue: DefaultValue;
19
+ /**
20
+ * The type of the field.
21
+ *
22
+ * @default 'string'
23
+ */
24
+ type?: Type;
25
+ /**
26
+ * The text for the label.
27
+ *
28
+ * If omitted, it will default to the specified casing.
29
+ *
30
+ * If `false`, `label` will be `undefined`, meaning there won't
31
+ * be a label for this field.
32
+ */
33
+ label?: string | false;
34
+ }
35
+ type AnyStepFieldOption = StepFieldOptions<FieldType, CasingType, unknown>;
36
+ type AnyStepField = Record<string, AnyStepFieldOption>;
37
+ interface StepOptions<Casing extends CasingType = CasingType, TStepField extends AnyStepField = AnyStepField, FieldValidator = unknown> extends NameTransformCasingOptions<Casing> {
38
+ title: string;
39
+ description?: string;
40
+ fields: TStepField;
41
+ /**
42
+ * Validator for the fields.
43
+ */
44
+ validateFields?: Constrain<FieldValidator, AnyValidator, DefaultValidator>;
45
+ }
46
+ type Step<TCasing extends CasingType = CasingType, step$1 extends number = number, options$1 extends StepOptions<TCasing, AnyStepField, unknown> = StepOptions<TCasing, AnyStepField, unknown>> = Record<ValidStepKey<step$1>, options$1>;
47
+ type AnyStep = Step<any, any, any>;
48
+ type GetFieldsForStep<Steps extends InferStepOptions<any>, Key extends keyof Steps> = Steps[Key] extends {
49
+ fields: infer fields extends AnyStepField;
50
+ } ? fields : never;
51
+ type GetDefaultCasingTransformation<Step$1 extends InferStepOptions<any>, Key extends keyof Step$1, TDefault extends CasingType = DefaultCasing> = Step$1[Key] extends {
52
+ nameTransformCasing: infer casing extends CasingType;
53
+ } ? casing : TDefault;
54
+ type SetDefault<T, Defaults> = { [K in keyof T]-?: K extends keyof Defaults ? undefined extends T[K] ? Exclude<T[K], undefined> | Defaults[K] : T[K] : T[K] } & { [K in Exclude<keyof Defaults, keyof T>]-?: Defaults[K] };
55
+ type ResolvedFields<TInferredSteps extends InferStepOptions<any>, TKey extends keyof TInferredSteps, TFields extends GetFieldsForStep<TInferredSteps, TKey> = GetFieldsForStep<TInferredSteps, TKey>> = { [name in keyof TFields]: Expand<SetDefault<TFields[name], {
56
+ type: DefaultFieldType;
57
+ nameTransformCasing: GetDefaultCasingTransformation<TInferredSteps, TKey>;
58
+ label: string;
59
+ }>> };
60
+ type ResolvedStepBuilder<TStep extends Step, TDefaultCasing extends CasingType = DefaultCasing, TInferredSteps extends InferStepOptions<TStep> = InferStepOptions<TStep>> = Expand<{ [stepKey in keyof TInferredSteps]: Expand<SetDefault<Omit<TInferredSteps[stepKey], 'fields' | 'validateFields'>, {
61
+ type: DefaultFieldType;
62
+ nameTransformCasing: GetDefaultCasingTransformation<TInferredSteps, stepKey, TDefaultCasing>;
63
+ }> & {
64
+ fields: Expand<ResolvedFields<TInferredSteps, stepKey>>;
65
+ }> }>;
66
+ type Updater<TInput, TOutput = TInput> = TOutput | ((input: TInput) => TOutput);
67
+ declare namespace UpdateFn {
68
+ export type resolvedStep<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = Expand<StrippedResolvedStep<TResolvedStep[TTargetStep], true>>;
69
+ type resolveAllPropertyPath<TCurrentStep extends AnyResolvedStep, TField extends chosenFields<TCurrentStep>> = TField extends HelperFnChosenSteps.defaultStringOption ? Relaxed<TCurrentStep> : never;
70
+ type resolveTuplePropertyPath<TCurrentStep extends AnyResolvedStep, TField extends chosenFields<TCurrentStep>, TDeepKeys extends DeepKeys<TCurrentStep> = DeepKeys<TCurrentStep>> = TField extends HelperFnChosenSteps.tupleNotation<TDeepKeys> ? TField[number] extends DeepKeys<Relaxed<TCurrentStep>> ? path.pickBy<Relaxed<TCurrentStep>, TField[number]> : never : never;
71
+ type resolveObjectPropertyPath<TCurrentStep extends AnyResolvedStep, TField extends chosenFields<TCurrentStep>, TDeepKeys extends DeepKeys<TCurrentStep> = DeepKeys<TCurrentStep>> = TField extends path.generateObjectConfig<TField> ? path.objectToPath<TField> extends TDeepKeys ? path.objectToPath<TField> extends DeepKeys<Relaxed<TCurrentStep>> ? path.pickBy<Relaxed<TCurrentStep>, path.objectToPath<TField>> : never : never : never;
72
+ type resolvePathType<TCurrentStep extends AnyResolvedStep, TField extends chosenFields<TCurrentStep>> = TField extends HelperFnChosenSteps.defaultStringOption ? 'all' : TField extends Array<infer _> ? 'tuple' : objectHelpers.isObject<TField> extends true ? 'object' : never;
73
+ type resolvePathMap<TCurrentStep extends AnyResolvedStep, TField extends chosenFields<TCurrentStep>> = {
74
+ all: resolveAllPropertyPath<TCurrentStep, TField>;
75
+ tuple: resolveTuplePropertyPath<TCurrentStep, TField>;
76
+ object: resolveObjectPropertyPath<TCurrentStep, TField>;
77
+ };
78
+ export type resolvedFieldValue<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>, TType extends resolvePathType<TCurrentStep, TField> = resolvePathType<TCurrentStep, TField>> = resolvePathMap<TCurrentStep, TField>[TType];
79
+ export type chosenFields<TCurrentStep extends AnyResolvedStep> = HelperFnChosenSteps.defaultStringOption | HelperFnChosenSteps.tupleNotation<DeepKeys<TCurrentStep>> | path.generateObjectConfig<TCurrentStep>;
80
+ export interface SharedOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TAdditionalCtx extends Record<string, unknown>, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> {
81
+ /**
82
+ * The step to update.
83
+ */
84
+ targetStep: TTargetStep;
85
+ /**
86
+ * The specific fields to update.
87
+ *
88
+ * Optionally provide a value to narrow the results of the `ctx` in the
89
+ * updater `fn`.
90
+ */
91
+ fields?: TField;
92
+ /**
93
+ * Enables verbose debug logging for this update operation.
94
+ * Set to `true` to output helpful information for troubleshooting.
95
+ */
96
+ debug?: boolean;
97
+ }
98
+ export interface UpdateOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TAdditionalCtx extends Record<string, unknown>, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> extends SharedOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, TAdditionalCtx, TCurrentStep>, CtxDataSelector<TResolvedStep, TStepNumbers, [TTargetStep], TAdditionalCtx> {
99
+ updater: Updater<Expand<HelperFnInputBase<TResolvedStep, TStepNumbers, [TTargetStep], never, TAdditionalCtx>>, resolvedFieldValue<TResolvedStep, TStepNumbers, TTargetStep, TField, TCurrentStep>>;
100
+ }
101
+ export type options<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TAdditionalCtx extends Record<string, unknown>, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> = UpdateOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, TAdditionalCtx, TCurrentStep>;
102
+ export type availableFields<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = HelperFnChosenSteps.build<DeepKeys<resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>>>;
103
+ export type general<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = <targetStep extends ValidStepKey<TStepNumbers>, field extends chosenFields<resolvedStep<TResolvedStep, TStepNumbers, targetStep>> = 'all', additionalCtx extends Record<string, unknown> = {}>(options: options<TResolvedStep, TStepNumbers, targetStep, field, additionalCtx>) => void;
104
+ export type stepSpecific<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = <field extends chosenFields<resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> = 'all', additionalCtx extends Record<string, unknown> = {}>(options: Omit<options<TResolvedStep, TStepNumbers, TTargetStep, field, additionalCtx>, 'targetStep'>) => void;
105
+ export {};
106
+ }
107
+ declare namespace ResetFn {
108
+ interface Options<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends UpdateFn.chosenFields<TCurrentStep>, TCurrentStep extends UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> extends UpdateFn.SharedOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, {}, TCurrentStep> {
109
+ /**
110
+ * The fields to reset.
111
+ */
112
+ fields: TField;
113
+ }
114
+ type stepSpecific<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = <field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> = 'all'>(options?: Omit<Options<TResolvedStep, TStepNumbers, TTargetStep, field>, 'targetStep'>) => void;
115
+ }
116
+ type StepSpecificHelperFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends TStepNumbers> = {
117
+ /**
118
+ * Create a helper function with validated input.
119
+ */
120
+ <validator, additionalCtx extends Record<string, unknown>, response>(options: Omit<CreateHelperFunctionOptionsWithValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], validator, additionalCtx>, 'stepData'>, fn: HelperFnWithValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], validator, additionalCtx, response>): CreatedHelperFnWithInput<validator, response>;
121
+ /**
122
+ * Create a helper function without input.
123
+ */
124
+ <additionalCtx extends Record<string, unknown>, response>(fn: HelperFnWithoutValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], additionalCtx, response>): CreatedHelperFnWithoutInput<response>;
125
+ /**
126
+ * Create a helper function without input.
127
+ */
128
+ <response>(fn: HelperFnWithoutValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], {}, response>): CreatedHelperFnWithoutInput<response>;
129
+ };
130
+ type GeneralHelperFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = {
131
+ /**
132
+ * Create a helper function with validated input.
133
+ */
134
+ <const chosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, validator, additionalCtx extends Record<string, unknown>, response>(options: CreateHelperFunctionOptionsWithValidator<TResolvedStep, TStepNumbers, chosenSteps, validator, additionalCtx>, fn: HelperFnWithValidator<TResolvedStep, TStepNumbers, chosenSteps, validator, additionalCtx, response>): CreatedHelperFnWithInput<validator, response>;
135
+ /**
136
+ * Create a helper function without input.
137
+ */
138
+ <const chosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, additionalCtx extends Record<string, unknown>, response>(options: CreateHelperFunctionOptionsWithoutValidator<TResolvedStep, TStepNumbers, chosenSteps> & CreateHelperFunctionOptionsWithCustomCtxOptions<TResolvedStep, TStepNumbers, chosenSteps, additionalCtx>, fn: HelperFnWithoutValidator<TResolvedStep, TStepNumbers, chosenSteps, additionalCtx, response>): CreatedHelperFnWithoutInput<response>;
139
+ };
140
+ type CreateStepHelperFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends TStepNumbers = TStepNumbers, TForSpecificStep extends boolean = false> = TForSpecificStep extends true ? StepSpecificHelperFn<TResolvedStep, TStepNumbers, TTargetStep> : GeneralHelperFn<TResolvedStep, TStepNumbers>;
141
+ type StepSpecificHelperFns<TResolvedStep extends AnyResolvedStep, TKey extends keyof TResolvedStep> = {
142
+ /**
143
+ * A helper function to create a reusable function for the current step.
144
+ */
145
+ createHelperFn: CreateStepHelperFn<TResolvedStep, StepNumbers<TResolvedStep>, ExtractStepFromKey<Constrain<TKey, string>>, true>;
146
+ } & (TKey extends ValidStepKey<StepNumbers<TResolvedStep>> ? {
147
+ /**
148
+ * A helper function to updated the current step's data.
149
+ */
150
+ update: UpdateFn.stepSpecific<TResolvedStep, StepNumbers<TResolvedStep>, TKey>;
151
+ /**
152
+ * A helper function to reset the current step's data.
153
+ *
154
+ * If no config is provided, **all** fields for the current step
155
+ * will be reset. If you need to reset a specific field, specify
156
+ * that field in the config.
157
+ */
158
+ reset: ResetFn.stepSpecific<TResolvedStep, StepNumbers<TResolvedStep>, TKey>;
159
+ } : {});
160
+ type ResolvedStep<TStep extends Step<TDefaultCasing>, TDefaultCasing extends CasingType = DefaultCasing, TResolvedStep extends ResolvedStepBuilder<TStep, TDefaultCasing> = ResolvedStepBuilder<TStep, TDefaultCasing>, TAdditionalStepProps extends object = {}> = TAdditionalStepProps & { [stepKey in keyof TResolvedStep]: TResolvedStep[stepKey] & StepSpecificHelperFns<TResolvedStep, stepKey> };
161
+ type StrippedResolvedStep<T extends AnyResolvedStep, TStringUpdate extends boolean = false> = { [_ in keyof T as T[_] extends Function ? _ extends 'update' ? TStringUpdate extends true ? never : _ : never : _]: T[_] };
162
+ type AnyResolvedStep = ResolvedStep<any, any, any>;
163
+ type ValidStepKey<N extends number = number> = `step${N}`;
164
+ type ExtractStepFromKey<T> = T extends string ? T extends ValidStepKey<infer N> ? N : never : never;
165
+ type InferStepOptions<T> = T extends { [K in keyof T extends ValidStepKey ? keyof T : never]: StepOptions<infer _casing extends CasingType, infer _stepField extends AnyStepField, infer _fieldValidator> } ? T : Exclude<keyof T, ValidStepKey>;
166
+ type Range = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
167
+ type ClampTo0to10<N extends number> = N extends Range ? N : number extends N ? never : `${N}` extends `-${string}` ? 0 : 10;
168
+ type Tuple<N extends number, R extends any[] = []> = R['length'] extends N ? R : Tuple<N, [...R, any]>;
169
+ type GreaterThan<A$1 extends Range, B extends Range> = Tuple<A$1> extends [...Tuple<B>, ...infer _] ? Tuple<B> extends [...Tuple<A$1>, ...infer _] ? false : true : false;
170
+ type Max<T extends number[]> = T extends [infer A extends number, ...infer Rest extends number[]] ? Rest['length'] extends 0 ? ClampTo0to10<A> : Max<Rest> extends infer M extends Range ? GreaterThan<ClampTo0to10<A>, M> extends true ? ClampTo0to10<A> : M : never : never;
171
+ type Min<T extends number[]> = T extends [infer A extends number, ...infer Rest extends number[]] ? Rest['length'] extends 0 ? ClampTo0to10<A> : Min<Rest> extends infer M extends Range ? GreaterThan<ClampTo0to10<A>, M> extends true ? M : ClampTo0to10<A> : never : never;
172
+ type UnionToTuple<T> = ((T extends any ? (t: T) => T : never) extends infer U ? (U extends any ? (u: U) => any : never) extends ((v: infer V) => any) ? V : never : never) extends ((_: any) => infer W) ? [...UnionToTuple<Exclude<T, W>>, W] : [];
173
+ type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = { [K in Keys]-?: Required<Pick<T, K>> & Partial<Omit<T, K>> }[Keys];
174
+ type LastStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey ? Max<Constrain<UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>, number[]>> : never;
175
+ type FirstStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey ? Min<Constrain<UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>, number[]>> : never;
176
+ type GetCurrentStep<T extends AnyResolvedStep, S extends ExtractStepFromKey<Constrain<keyof T, string>>> = ValidStepKey<S> extends Constrain<keyof T, string> ? T[ValidStepKey<S>] : never;
177
+ type StepData<T extends AnyResolvedStep, Step$1 extends ExtractStepFromKey<Constrain<keyof T, string>>> = {
178
+ /**
179
+ * The step number.
180
+ */
181
+ step: Step$1;
182
+ /**
183
+ * The step data.
184
+ */
185
+ data: GetCurrentStep<T, Step$1>;
186
+ };
187
+ type StepNumbers<TResolvedStep extends AnyResolvedStep> = ExtractStepFromKey<Constrain<keyof TResolvedStep, string>>;
188
+ type WidenSpecial<T> = T extends CasingType ? CasingType : T extends FieldType ? FieldType : T;
189
+ type Relaxed<T> = T extends (infer U)[] ? Relaxed<U>[] : T extends ((...args: any[]) => any) ? T : T extends object ? { [K in keyof T]: Relaxed<T[K]> } : WidenSpecial<T>;
190
+ declare namespace HelperFnChosenSteps {
191
+ type defaultStringOption = 'all';
192
+ type stringOption<T extends string> = defaultStringOption | T;
193
+ type tupleNotation<T extends string> = [T, ...T[]];
194
+ type objectNotation<T extends string> = RequireAtLeastOne<{ [_ in T]: true }>;
195
+ type build<TValue extends string, TStringOptions = defaultStringOption> = TStringOptions | tupleNotation<TValue> | objectNotation<TValue>;
196
+ type main<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>> = build<ValidStepKey<TSteps>>;
197
+ type extractStepNumber<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps> = HelperFnChosenSteps<TResolvedStep, TSteps>> = TChosenSteps extends tupleNotation<ValidStepKey<TSteps>> ? keyof { [step in TChosenSteps[number] as ExtractStepFromKey<step>]: step } : TChosenSteps extends objectNotation<ValidStepKey<TSteps>> ? ExtractStepFromKey<keyof TChosenSteps> : TSteps;
198
+ type resolve<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends main<TResolvedStep, TSteps>> = TChosenSteps extends 'all' ? keyof TResolvedStep : TChosenSteps extends tupleNotation<ValidStepKey<TSteps>> ? TChosenSteps[number] extends keyof TResolvedStep ? TChosenSteps[number] : never : TChosenSteps extends objectNotation<ValidStepKey<TSteps>> ? keyof TChosenSteps extends keyof TResolvedStep ? keyof TChosenSteps : never : never;
199
+ const CATCH_ALL_MESSAGE = "The chosen steps must either be set to on of the following: \"all\", an array of steps ([\"step1\", \"step2\", ...]), or an object containing the steps to chose ({ step1: true, step2: true, ...})";
200
+ function isAll(value: unknown): value is defaultStringOption;
201
+ function isTuple<T extends number>(value: unknown, validValues?: Array<unknown>): value is tupleNotation<ValidStepKey<T>>;
202
+ function isObject<T extends number>(value: unknown, validKeys?: Array<unknown>): value is objectNotation<ValidStepKey<T>>;
203
+ }
204
+ type HelperFnChosenSteps<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>> = HelperFnChosenSteps.main<TResolvedStep, TSteps>;
205
+ type CreateHelperFunctionOptionsBase<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>> = {
206
+ /**
207
+ * The step data to use for the function. It can either be an array with the **available**
208
+ * step numbers or `'all'`.
209
+ *
210
+ * - If set to `'all'`, data from **all** the steps will be available.
211
+ * - If an array of the **available** step numbers is provided, only data from those steps will be available.
212
+ */
213
+ stepData: TChosenSteps;
214
+ };
215
+ type CreateHelperFunctionOptionsWithoutValidator<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps>;
216
+ interface CtxDataSelector<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, TAdditionalCtx extends Record<string, unknown>> {
217
+ /**
218
+ * A function to select the data that will be available in the `fn`'s ctx.
219
+ * @param input The available input to create the context with.
220
+ * @returns The created ctx.
221
+ */
222
+ ctxData?: (input: Pick<HelperFnInputBase<TResolvedStep, TStepNumbers, 'all', HelperFnChosenSteps.resolve<TResolvedStep, TStepNumbers, TChosenSteps>>, 'ctx'>) => TAdditionalCtx;
223
+ }
224
+ type CreateHelperFunctionOptionsWithCustomCtxOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, TAdditionalCtx extends Record<string, unknown>> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps> & CtxDataSelector<TResolvedStep, TStepNumbers, TChosenSteps, TAdditionalCtx>;
225
+ type CreateHelperFunctionOptionsWithValidator<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, TValidator, TAdditionalCtx extends Record<string, unknown>> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps> & CreateHelperFunctionOptionsWithCustomCtxOptions<TResolvedStep, TStepNumbers, TChosenSteps, TAdditionalCtx> & {
226
+ /**
227
+ * A validator used to validate the params.
228
+ */
229
+ validator: Constrain<TValidator, AnyValidator, DefaultValidator>;
230
+ };
231
+ type CreatedHelperFnInput<T> = {
232
+ data: Expand<ResolveValidatorOutput<T>>;
233
+ };
234
+ type CreatedHelperFnWithInput<TValidator, TResponse> = (input: CreatedHelperFnInput<TValidator>) => TResponse;
235
+ type CreatedHelperFnWithoutInput<TResponse> = () => TResponse;
236
+ type isString<T> = T extends string ? T : never;
237
+ type HelperFnCtx<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TOmitSteps extends HelperFnChosenSteps.resolve<TResolvedStep, TSteps, TChosenSteps> = never> = TChosenSteps extends 'all' ? Expand<Omit<{ [key in TSteps as `step${key}`]: StrippedResolvedStep<GetCurrentStep<TResolvedStep, key>> }, isString<TOmitSteps>>> : TChosenSteps extends object ? keyof TChosenSteps extends ValidStepKey<TSteps> ? Expand<Omit<{ -readonly [key in keyof TChosenSteps]: StrippedResolvedStep<GetCurrentStep<TResolvedStep, ExtractStepFromKey<key>>> }, isString<TOmitSteps>>> : TChosenSteps extends ValidStepKey<TSteps>[] ? Expand<Omit<{ [key in TChosenSteps[number]]: StrippedResolvedStep<GetCurrentStep<TResolvedStep, ExtractStepFromKey<key>>> }, isString<TOmitSteps>>> : never : never;
238
+ type helperFnUpdateFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TSteps extends ValidStepKey<TStepNumbers>> = { [step in TSteps]: UpdateFn.stepSpecific<TResolvedStep, TStepNumbers, step> };
239
+ type HelperFnUpdateFn<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>> = UpdateFn.general<TResolvedStep, TSteps> & (TChosenSteps extends HelperFnChosenSteps.defaultStringOption ? helperFnUpdateFn<TResolvedStep, TSteps, ValidStepKey<TSteps>> : TChosenSteps extends HelperFnChosenSteps.tupleNotation<ValidStepKey<TSteps>> ? helperFnUpdateFn<TResolvedStep, TSteps, TChosenSteps[number]> : TChosenSteps extends HelperFnChosenSteps.objectNotation<ValidStepKey<TSteps>> ? { [step in keyof TChosenSteps]: step extends ValidStepKey<TSteps> ? helperFnUpdateFn<TResolvedStep, TSteps, step>[step] : {} } : {});
240
+ interface HelperFnInputBase<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TOmitSteps extends HelperFnChosenSteps.resolve<TResolvedStep, TSteps, TChosenSteps> = never, TAdditionalCtx extends Record<string, unknown> = {}> {
241
+ /**
242
+ * The multi-step form step context.
243
+ */
244
+ ctx: Expand<HelperFnCtx<TResolvedStep, TSteps, TChosenSteps, TOmitSteps> & TAdditionalCtx>;
245
+ /**
246
+ * A function to update parts of the multi-step form schema.
247
+ */
248
+ update: HelperFnUpdateFn<TResolvedStep, TSteps, TChosenSteps>;
249
+ }
250
+ type HelperFnInputWithValidator<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TValidator, TAdditionalCtx extends Record<string, unknown>> = HelperFnInputBase<TResolvedStep, TSteps, TChosenSteps, never, TAdditionalCtx> & {
251
+ data: ResolveValidatorOutput<TValidator>;
252
+ };
253
+ type HelperFnInputWithoutValidator<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TAdditionalCtx extends Record<string, unknown>> = HelperFnInputBase<TResolvedStep, TSteps, TChosenSteps, never, TAdditionalCtx>;
254
+ type HelperFnWithValidator<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TValidator, TAdditionalCtx extends Record<string, unknown>, Response> = (input: HelperFnInputWithValidator<TResolvedStep, TSteps, TChosenSteps, TValidator, TAdditionalCtx>) => Response;
255
+ type HelperFnWithoutValidator<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TAdditionalCtx extends Record<string, unknown>, Response> = (input: HelperFnInputWithoutValidator<TResolvedStep, TSteps, TChosenSteps, TAdditionalCtx>) => Response;
256
+ interface MultiStepFormSchemaStepConfig<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> extends NameTransformCasingOptions<TCasing> {
257
+ /**
258
+ * The steps that this multi step form will include.
259
+ */
260
+ steps: InferStepOptions<TStep>;
261
+ /**
262
+ * The options for the storage module.
263
+ */
264
+ storage?: Omit<StorageConfig<any, TStorageKey>, 'data'>;
265
+ }
266
+ //#endregion
267
+ export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, LastStep, Max, Min, MultiStepFormSchemaStepConfig, NameTransformCasingOptions, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StrippedResolvedStep, Tuple, UnionToTuple, UpdateFn, Updater, ValidStepKey, helperFnUpdateFn };
268
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/steps/types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ //#region src/steps/types.ts
2
+ let HelperFnChosenSteps;
3
+ (function(_HelperFnChosenSteps) {
4
+ _HelperFnChosenSteps.CATCH_ALL_MESSAGE = "The chosen steps must either be set to on of the following: \"all\", an array of steps ([\"step1\", \"step2\", ...]), or an object containing the steps to chose ({ step1: true, step2: true, ...})";
5
+ function isAll(value) {
6
+ return Boolean(value && typeof value === "string" && value === "all");
7
+ }
8
+ _HelperFnChosenSteps.isAll = isAll;
9
+ function isTuple(value, validValues) {
10
+ if (!Array.isArray(value)) return false;
11
+ if (validValues) return value.every((key) => validValues.includes(key));
12
+ return true;
13
+ }
14
+ _HelperFnChosenSteps.isTuple = isTuple;
15
+ function isObject(value, validKeys) {
16
+ if (!value) return false;
17
+ const keys = Object.keys(value);
18
+ if (keys.length === 0) return false;
19
+ if (validKeys && !keys.every((key) => validKeys.includes(key))) return false;
20
+ return Object.entries(value).every(([_, v]) => v === true);
21
+ }
22
+ _HelperFnChosenSteps.isObject = isObject;
23
+ })(HelperFnChosenSteps || (HelperFnChosenSteps = {}));
24
+
25
+ //#endregion
26
+ export { HelperFnChosenSteps };
27
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../src/steps/types.ts"],"sourcesContent":["import type { StorageConfig } from '@/storage';\nimport {\n type CasingType,\n type Constrain,\n type DeepKeys,\n type DefaultCasing,\n type DefaultFieldType,\n type Expand,\n type FieldType,\n type objectHelpers,\n} from '@/utils';\nimport type { path } from '@/utils/path';\nimport type {\n AnyValidator,\n DefaultValidator,\n ResolveValidatorOutput,\n} from '@/utils/validator';\n\nexport interface NameTransformCasingOptions<TCasing extends CasingType> {\n /**\n * How the `name` should be transformed for the `label`.\n *\n * If omitted, the default will be whatever is set during {@linkcode MultiStepFormSchema} initialization.\n */\n nameTransformCasing?: Constrain<TCasing, CasingType>;\n}\nexport interface StepFieldOptions<\n Type extends FieldType,\n Casing extends CasingType,\n DefaultValue\n> extends NameTransformCasingOptions<Casing> {\n defaultValue: DefaultValue;\n /**\n * The type of the field.\n *\n * @default 'string'\n */\n type?: Type;\n /**\n * The text for the label.\n *\n * If omitted, it will default to the specified casing.\n *\n * If `false`, `label` will be `undefined`, meaning there won't\n * be a label for this field.\n */\n label?: string | false;\n}\nexport type AnyStepFieldOption = StepFieldOptions<\n FieldType,\n CasingType,\n unknown\n>;\nexport type AnyStepField = Record<string, AnyStepFieldOption>;\nexport interface StepOptions<\n Casing extends CasingType = CasingType,\n TStepField extends AnyStepField = AnyStepField,\n FieldValidator = unknown\n> extends NameTransformCasingOptions<Casing> {\n title: string;\n description?: string;\n fields: TStepField;\n /**\n * Validator for the fields.\n */\n validateFields?: Constrain<FieldValidator, AnyValidator, DefaultValidator>;\n}\nexport type Step<\n TCasing extends CasingType = CasingType,\n step extends number = number,\n options extends StepOptions<TCasing, AnyStepField, unknown> = StepOptions<\n TCasing,\n AnyStepField,\n unknown\n >\n> = Record<ValidStepKey<step>, options>;\nexport type AnyStep = Step<any, any, any>;\n\nexport type GetFieldsForStep<\n Steps extends InferStepOptions<any>,\n Key extends keyof Steps\n> = Steps[Key] extends {\n fields: infer fields extends AnyStepField;\n}\n ? fields\n : never;\nexport type GetDefaultCasingTransformation<\n Step extends InferStepOptions<any>,\n Key extends keyof Step,\n TDefault extends CasingType = DefaultCasing\n> = Step[Key] extends { nameTransformCasing: infer casing extends CasingType }\n ? casing\n : TDefault;\nexport type SetDefault<T, Defaults> = {\n // All the keys from T\n [K in keyof T]-?: K extends keyof Defaults\n ? undefined extends T[K]\n ? Exclude<T[K], undefined> | Defaults[K] // optional -> upgraded with default\n : T[K] // already required, don't touch\n : T[K];\n} & {\n // Any defaults not in T get added\n [K in Exclude<keyof Defaults, keyof T>]-?: Defaults[K];\n};\nexport type ResolvedFields<\n TInferredSteps extends InferStepOptions<any>,\n TKey extends keyof TInferredSteps,\n TFields extends GetFieldsForStep<TInferredSteps, TKey> = GetFieldsForStep<\n TInferredSteps,\n TKey\n >\n> = {\n [name in keyof TFields]: Expand<\n // current field information for the `name`\n SetDefault<\n TFields[name],\n {\n type: DefaultFieldType;\n nameTransformCasing: GetDefaultCasingTransformation<\n TInferredSteps,\n TKey\n >;\n label: string;\n }\n >\n >;\n};\nexport type ResolvedStepBuilder<\n TStep extends Step,\n TDefaultCasing extends CasingType = DefaultCasing,\n TInferredSteps extends InferStepOptions<TStep> = InferStepOptions<TStep>\n> = Expand<{\n [stepKey in keyof TInferredSteps]: Expand<\n SetDefault<\n Omit<TInferredSteps[stepKey], 'fields' | 'validateFields'>,\n {\n type: DefaultFieldType;\n nameTransformCasing: GetDefaultCasingTransformation<\n TInferredSteps,\n stepKey,\n TDefaultCasing\n >;\n }\n > & {\n fields: Expand<ResolvedFields<TInferredSteps, stepKey>>;\n }\n >;\n}>;\nexport type Updater<TInput, TOutput = TInput> =\n | TOutput\n | ((input: TInput) => TOutput);\n\nexport namespace UpdateFn {\n export type resolvedStep<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>\n > = Expand<StrippedResolvedStep<TResolvedStep[TTargetStep], true>>;\n\n type resolveAllPropertyPath<\n TCurrentStep extends AnyResolvedStep,\n TField extends chosenFields<TCurrentStep>\n > = TField extends HelperFnChosenSteps.defaultStringOption\n ? Relaxed<TCurrentStep>\n : never;\n type resolveTuplePropertyPath<\n TCurrentStep extends AnyResolvedStep,\n TField extends chosenFields<TCurrentStep>,\n TDeepKeys extends DeepKeys<TCurrentStep> = DeepKeys<TCurrentStep>\n > = TField extends HelperFnChosenSteps.tupleNotation<TDeepKeys>\n ? TField[number] extends DeepKeys<Relaxed<TCurrentStep>>\n ? path.pickBy<Relaxed<TCurrentStep>, TField[number]>\n : never\n : never;\n type resolveObjectPropertyPath<\n TCurrentStep extends AnyResolvedStep,\n TField extends chosenFields<TCurrentStep>,\n TDeepKeys extends DeepKeys<TCurrentStep> = DeepKeys<TCurrentStep>\n > = TField extends path.generateObjectConfig<TField>\n ? path.objectToPath<TField> extends TDeepKeys\n ? path.objectToPath<TField> extends DeepKeys<Relaxed<TCurrentStep>>\n ? path.pickBy<Relaxed<TCurrentStep>, path.objectToPath<TField>>\n : never\n : never\n : never;\n type resolvePathType<\n TCurrentStep extends AnyResolvedStep,\n TField extends chosenFields<TCurrentStep>\n > = TField extends HelperFnChosenSteps.defaultStringOption\n ? 'all'\n : TField extends Array<infer _>\n ? 'tuple'\n : objectHelpers.isObject<TField> extends true\n ? 'object'\n : never;\n type resolvePathMap<\n TCurrentStep extends AnyResolvedStep,\n TField extends chosenFields<TCurrentStep>\n > = {\n all: resolveAllPropertyPath<TCurrentStep, TField>;\n tuple: resolveTuplePropertyPath<TCurrentStep, TField>;\n object: resolveObjectPropertyPath<TCurrentStep, TField>;\n };\n export type resolvedFieldValue<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>,\n TField extends chosenFields<TCurrentStep>,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>,\n TType extends resolvePathType<TCurrentStep, TField> = resolvePathType<\n TCurrentStep,\n TField\n >\n > = resolvePathMap<TCurrentStep, TField>[TType];\n export type chosenFields<TCurrentStep extends AnyResolvedStep> =\n | HelperFnChosenSteps.defaultStringOption\n | HelperFnChosenSteps.tupleNotation<DeepKeys<TCurrentStep>>\n | path.generateObjectConfig<TCurrentStep>;\n\n export interface SharedOptions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>,\n TField extends chosenFields<TCurrentStep>,\n TAdditionalCtx extends Record<string, unknown>,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > {\n /**\n * The step to update.\n */\n targetStep: TTargetStep;\n /**\n * The specific fields to update.\n *\n * Optionally provide a value to narrow the results of the `ctx` in the\n * updater `fn`.\n */\n fields?: TField;\n /**\n * Enables verbose debug logging for this update operation.\n * Set to `true` to output helpful information for troubleshooting.\n */\n debug?: boolean;\n }\n\n export interface UpdateOptions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>,\n TField extends chosenFields<TCurrentStep>,\n TAdditionalCtx extends Record<string, unknown>,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > extends SharedOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TAdditionalCtx,\n TCurrentStep\n >,\n CtxDataSelector<\n TResolvedStep,\n TStepNumbers,\n [TTargetStep],\n TAdditionalCtx\n > {\n updater: Updater<\n Expand<\n HelperFnInputBase<\n TResolvedStep,\n TStepNumbers,\n [TTargetStep],\n never,\n TAdditionalCtx\n >\n >,\n resolvedFieldValue<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TCurrentStep\n >\n >;\n }\n\n export type options<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>,\n TField extends chosenFields<TCurrentStep>,\n TAdditionalCtx extends Record<string, unknown>,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > = UpdateOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TAdditionalCtx,\n TCurrentStep\n >;\n export type availableFields<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>\n > = HelperFnChosenSteps.build<\n DeepKeys<resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>>\n >;\n\n export type general<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>\n > = <\n targetStep extends ValidStepKey<TStepNumbers>,\n field extends chosenFields<\n resolvedStep<TResolvedStep, TStepNumbers, targetStep>\n > = 'all',\n additionalCtx extends Record<string, unknown> = {}\n >(\n options: options<\n TResolvedStep,\n TStepNumbers,\n targetStep,\n field,\n additionalCtx\n >\n ) => void;\n\n export type stepSpecific<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>\n > = <\n field extends chosenFields<\n resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > = 'all',\n additionalCtx extends Record<string, unknown> = {}\n >(\n options: Omit<\n options<TResolvedStep, TStepNumbers, TTargetStep, field, additionalCtx>,\n 'targetStep'\n >\n ) => void;\n}\n\nexport namespace ResetFn {\n export interface Options<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>,\n TField extends UpdateFn.chosenFields<TCurrentStep>,\n TCurrentStep extends UpdateFn.resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > extends UpdateFn.SharedOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n {},\n TCurrentStep\n > {\n /**\n * The fields to reset.\n */\n fields: TField;\n }\n\n export type stepSpecific<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends ValidStepKey<TStepNumbers>\n > = <\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > = 'all'\n >(\n options?: Omit<\n Options<TResolvedStep, TStepNumbers, TTargetStep, field>,\n 'targetStep'\n >\n ) => void;\n}\n\nexport type StepSpecificHelperFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends TStepNumbers\n> = {\n /**\n * Create a helper function with validated input.\n */\n <validator, additionalCtx extends Record<string, unknown>, response>(\n options: Omit<\n CreateHelperFunctionOptionsWithValidator<\n TResolvedStep,\n TStepNumbers,\n [ValidStepKey<TTargetStep>],\n validator,\n additionalCtx\n >,\n 'stepData'\n >,\n fn: HelperFnWithValidator<\n TResolvedStep,\n TStepNumbers,\n [ValidStepKey<TTargetStep>],\n validator,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithInput<validator, response>;\n /**\n * Create a helper function without input.\n */\n <additionalCtx extends Record<string, unknown>, response>(\n fn: HelperFnWithoutValidator<\n TResolvedStep,\n TStepNumbers,\n [ValidStepKey<TTargetStep>],\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithoutInput<response>;\n /**\n * Create a helper function without input.\n */\n <response>(\n fn: HelperFnWithoutValidator<\n TResolvedStep,\n TStepNumbers,\n [ValidStepKey<TTargetStep>],\n {},\n response\n >\n ): CreatedHelperFnWithoutInput<response>;\n};\nexport type GeneralHelperFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>\n> = {\n /**\n * Create a helper function with validated input.\n */\n <\n const chosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>,\n validator,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithValidator<\n TResolvedStep,\n TStepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >,\n fn: HelperFnWithValidator<\n TResolvedStep,\n TStepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithInput<validator, response>;\n /**\n * Create a helper function without input.\n */\n <\n const chosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithoutValidator<\n TResolvedStep,\n TStepNumbers,\n chosenSteps\n > &\n CreateHelperFunctionOptionsWithCustomCtxOptions<\n TResolvedStep,\n TStepNumbers,\n chosenSteps,\n additionalCtx\n >,\n fn: HelperFnWithoutValidator<\n TResolvedStep,\n TStepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithoutInput<response>;\n};\nexport type CreateStepHelperFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TTargetStep extends TStepNumbers = TStepNumbers,\n TForSpecificStep extends boolean = false\n> = TForSpecificStep extends true\n ? StepSpecificHelperFn<TResolvedStep, TStepNumbers, TTargetStep>\n : GeneralHelperFn<TResolvedStep, TStepNumbers>;\nexport type StepSpecificHelperFns<\n TResolvedStep extends AnyResolvedStep,\n TKey extends keyof TResolvedStep\n> = {\n /**\n * A helper function to create a reusable function for the current step.\n */\n createHelperFn: CreateStepHelperFn<\n TResolvedStep,\n StepNumbers<TResolvedStep>,\n ExtractStepFromKey<Constrain<TKey, string>>,\n true\n >;\n} & (TKey extends ValidStepKey<StepNumbers<TResolvedStep>>\n ? {\n /**\n * A helper function to updated the current step's data.\n */\n update: UpdateFn.stepSpecific<\n TResolvedStep,\n StepNumbers<TResolvedStep>,\n TKey\n >;\n /**\n * A helper function to reset the current step's data.\n *\n * If no config is provided, **all** fields for the current step\n * will be reset. If you need to reset a specific field, specify\n * that field in the config.\n */\n reset: ResetFn.stepSpecific<\n TResolvedStep,\n StepNumbers<TResolvedStep>,\n TKey\n >;\n }\n : {});\nexport type ResolvedStep<\n TStep extends Step<TDefaultCasing>,\n TDefaultCasing extends CasingType = DefaultCasing,\n TResolvedStep extends ResolvedStepBuilder<\n TStep,\n TDefaultCasing\n > = ResolvedStepBuilder<TStep, TDefaultCasing>,\n TAdditionalStepProps extends object = {}\n> = TAdditionalStepProps & {\n [stepKey in keyof TResolvedStep]: TResolvedStep[stepKey] &\n StepSpecificHelperFns<TResolvedStep, stepKey>;\n};\nexport type StrippedResolvedStep<\n T extends AnyResolvedStep,\n TStringUpdate extends boolean = false\n> = {\n [_ in keyof T as T[_] extends Function\n ? _ extends 'update'\n ? TStringUpdate extends true\n ? never\n : _\n : never\n : _]: T[_];\n};\nexport type AnyResolvedStep = ResolvedStep<any, any, any>;\n\nexport type ValidStepKey<N extends number = number> = `step${N}`;\nexport type ExtractStepFromKey<T> = T extends string\n ? T extends ValidStepKey<infer N>\n ? N\n : never\n : never;\nexport type InferStepOptions<T> = T extends {\n [K in keyof T extends ValidStepKey ? keyof T : never]: StepOptions<\n infer _casing extends CasingType,\n infer _stepField extends AnyStepField,\n infer _fieldValidator\n >;\n}\n ? T\n : Exclude<keyof T, ValidStepKey>;\nexport type Range = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\nexport type ClampTo0to10<N extends number> = N extends Range\n ? N\n : // if higher than 10 → 10, if lower than 0 → 0\n number extends N\n ? never // catches the `number` type, not a literal\n : `${N}` extends `-${string}`\n ? 0\n : 10;\nexport type Tuple<\n N extends number,\n R extends any[] = []\n> = R['length'] extends N ? R : Tuple<N, [...R, any]>;\n\nexport type GreaterThan<A extends Range, B extends Range> = Tuple<A> extends [\n ...Tuple<B>,\n ...infer _\n]\n ? Tuple<B> extends [...Tuple<A>, ...infer _]\n ? false\n : true\n : false;\nexport type Max<T extends number[]> = T extends [\n infer A extends number,\n ...infer Rest extends number[]\n]\n ? Rest['length'] extends 0\n ? ClampTo0to10<A>\n : Max<Rest> extends infer M extends Range\n ? GreaterThan<ClampTo0to10<A>, M> extends true\n ? ClampTo0to10<A>\n : M\n : never\n : never;\n\nexport type Min<T extends number[]> = T extends [\n infer A extends number,\n ...infer Rest extends number[]\n]\n ? Rest['length'] extends 0\n ? ClampTo0to10<A>\n : Min<Rest> extends infer M extends Range\n ? GreaterThan<ClampTo0to10<A>, M> extends true\n ? M\n : ClampTo0to10<A>\n : never\n : never;\nexport type UnionToTuple<T> = (\n (T extends any ? (t: T) => T : never) extends infer U\n ? (U extends any ? (u: U) => any : never) extends (v: infer V) => any\n ? V\n : never\n : never\n) extends (_: any) => infer W\n ? [...UnionToTuple<Exclude<T, W>>, W]\n : [];\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = {\n // For each key K in the desired set of keys...\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Omit<T, K>>;\n // ...create a union of all those possible objects.\n}[Keys];\nexport type LastStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey\n ? Max<\n Constrain<\n UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>,\n number[]\n >\n >\n : never;\nexport type FirstStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey\n ? Min<\n Constrain<\n UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>,\n number[]\n >\n >\n : never;\nexport type GetCurrentStep<\n T extends AnyResolvedStep,\n S extends ExtractStepFromKey<Constrain<keyof T, string>>\n> = ValidStepKey<S> extends Constrain<keyof T, string>\n ? T[ValidStepKey<S>]\n : never;\nexport type StepData<\n T extends AnyResolvedStep,\n Step extends ExtractStepFromKey<Constrain<keyof T, string>>\n> = {\n /**\n * The step number.\n */\n step: Step;\n /**\n * The step data.\n */\n data: GetCurrentStep<T, Step>;\n};\nexport type StepNumbers<TResolvedStep extends AnyResolvedStep> =\n ExtractStepFromKey<Constrain<keyof TResolvedStep, string>>;\ntype WidenSpecial<T> = T extends CasingType\n ? CasingType // e.g. \"title\" → \"camel\" | \"snake\" | \"title\"\n : T extends FieldType\n ? FieldType\n : T;\nexport type Relaxed<T> =\n // If it's an array, recurse into elements\n T extends (infer U)[]\n ? Relaxed<U>[]\n : // If it's a function, leave alone\n T extends (...args: any[]) => any\n ? T\n : // If it's an object (record), recurse into props\n T extends object\n ? { [K in keyof T]: Relaxed<T[K]> }\n : // Otherwise widen scalars\n WidenSpecial<T>;\n\nexport namespace HelperFnChosenSteps {\n export type defaultStringOption = 'all';\n export type stringOption<T extends string> = defaultStringOption | T;\n export type tupleNotation<T extends string> = [T, ...T[]];\n export type objectNotation<T extends string> = RequireAtLeastOne<{\n [_ in T]: true;\n }>;\n export type build<\n TValue extends string,\n TStringOptions = defaultStringOption\n > = TStringOptions | tupleNotation<TValue> | objectNotation<TValue>;\n export type main<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>\n > = build<ValidStepKey<TSteps>>;\n export type extractStepNumber<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<\n TResolvedStep,\n TSteps\n > = HelperFnChosenSteps<TResolvedStep, TSteps>\n > = TChosenSteps extends tupleNotation<ValidStepKey<TSteps>>\n ? keyof { [step in TChosenSteps[number] as ExtractStepFromKey<step>]: step }\n : TChosenSteps extends objectNotation<ValidStepKey<TSteps>>\n ? ExtractStepFromKey<keyof TChosenSteps>\n : TSteps;\n export type resolve<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends main<TResolvedStep, TSteps>\n > = TChosenSteps extends 'all'\n ? keyof TResolvedStep\n : TChosenSteps extends tupleNotation<ValidStepKey<TSteps>>\n ? TChosenSteps[number] extends keyof TResolvedStep\n ? TChosenSteps[number]\n : never\n : TChosenSteps extends objectNotation<ValidStepKey<TSteps>>\n ? keyof TChosenSteps extends keyof TResolvedStep\n ? keyof TChosenSteps\n : never\n : never;\n\n export const CATCH_ALL_MESSAGE =\n 'The chosen steps must either be set to on of the following: \"all\", an array of steps ([\"step1\", \"step2\", ...]), or an object containing the steps to chose ({ step1: true, step2: true, ...})';\n\n export function isAll(value: unknown): value is defaultStringOption {\n return Boolean(value && typeof value === 'string' && value === 'all');\n }\n\n export function isTuple<T extends number>(\n value: unknown,\n validValues?: Array<unknown>\n ): value is tupleNotation<ValidStepKey<T>> {\n if (!Array.isArray(value)) {\n return false;\n }\n\n if (validValues) {\n return value.every((key) => validValues.includes(key));\n }\n\n return true;\n }\n\n export function isObject<T extends number>(\n value: unknown,\n validKeys?: Array<unknown>\n ): value is objectNotation<ValidStepKey<T>> {\n if (!value) {\n return false;\n }\n\n const keys = Object.keys(value);\n\n if (keys.length === 0) {\n return false;\n }\n\n if (validKeys && !keys.every((key) => validKeys.includes(key))) {\n return false;\n }\n\n return Object.entries(value).every(([_, v]) => v === true);\n }\n}\n\nexport type HelperFnChosenSteps<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>\n> = HelperFnChosenSteps.main<TResolvedStep, TSteps>;\n\nexport type CreateHelperFunctionOptionsBase<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>\n> = {\n /**\n * The step data to use for the function. It can either be an array with the **available**\n * step numbers or `'all'`.\n *\n * - If set to `'all'`, data from **all** the steps will be available.\n * - If an array of the **available** step numbers is provided, only data from those steps will be available.\n */\n stepData: TChosenSteps;\n};\nexport type CreateHelperFunctionOptionsWithoutValidator<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>\n> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps>;\nexport interface CtxDataSelector<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>,\n TAdditionalCtx extends Record<string, unknown>\n> {\n /**\n * A function to select the data that will be available in the `fn`'s ctx.\n * @param input The available input to create the context with.\n * @returns The created ctx.\n */\n ctxData?: (\n input: Pick<\n HelperFnInputBase<\n TResolvedStep,\n TStepNumbers,\n 'all',\n HelperFnChosenSteps.resolve<TResolvedStep, TStepNumbers, TChosenSteps>\n >,\n 'ctx'\n >\n ) => TAdditionalCtx;\n}\nexport type CreateHelperFunctionOptionsWithCustomCtxOptions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>,\n TAdditionalCtx extends Record<string, unknown>\n> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps> &\n CtxDataSelector<TResolvedStep, TStepNumbers, TChosenSteps, TAdditionalCtx>;\nexport type CreateHelperFunctionOptionsWithValidator<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>,\n TValidator,\n TAdditionalCtx extends Record<string, unknown>\n> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps> &\n CreateHelperFunctionOptionsWithCustomCtxOptions<\n TResolvedStep,\n TStepNumbers,\n TChosenSteps,\n TAdditionalCtx\n > & {\n /**\n * A validator used to validate the params.\n */\n validator: Constrain<TValidator, AnyValidator, DefaultValidator>;\n };\n// TODO figure out way to make data optional in specific cases\n// example 1: if validateFields === { optionalValue?: string }, then `data` should be\n// optional since there is only one optional field\n// In words: if `validatedFields` only contains optional properties, then `data` should be optional\n// Approach: different interfaces (maybe)\nexport type CreatedHelperFnInput<T> = {\n data: Expand<ResolveValidatorOutput<T>>;\n};\nexport type CreatedHelperFnWithInput<TValidator, TResponse> = (\n input: CreatedHelperFnInput<TValidator>\n) => TResponse;\nexport type CreatedHelperFnWithoutInput<TResponse> = () => TResponse;\ntype isString<T> = T extends string ? T : never;\nexport type HelperFnCtx<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TOmitSteps extends HelperFnChosenSteps.resolve<\n TResolvedStep,\n TSteps,\n TChosenSteps\n > = never\n> = TChosenSteps extends 'all'\n ? Expand<\n Omit<\n {\n [key in TSteps as `step${key}`]: StrippedResolvedStep<\n GetCurrentStep<TResolvedStep, key>\n >;\n },\n isString<TOmitSteps>\n >\n >\n : TChosenSteps extends object\n ? keyof TChosenSteps extends ValidStepKey<TSteps>\n ? Expand<\n Omit<\n {\n -readonly [key in keyof TChosenSteps]: StrippedResolvedStep<\n GetCurrentStep<\n TResolvedStep,\n // @ts-ignore\n ExtractStepFromKey<key>\n >\n >;\n },\n isString<TOmitSteps>\n >\n >\n : TChosenSteps extends ValidStepKey<TSteps>[]\n ? Expand<\n Omit<\n {\n [key in TChosenSteps[number]]: StrippedResolvedStep<\n GetCurrentStep<\n TResolvedStep,\n // @ts-ignore\n ExtractStepFromKey<key>\n >\n >;\n },\n isString<TOmitSteps>\n >\n >\n : never\n : never;\n\nexport type helperFnUpdateFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TSteps extends ValidStepKey<TStepNumbers>\n> = {\n [step in TSteps]: UpdateFn.stepSpecific<TResolvedStep, TStepNumbers, step>;\n};\nexport type HelperFnUpdateFn<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>\n> = UpdateFn.general<TResolvedStep, TSteps> &\n (TChosenSteps extends HelperFnChosenSteps.defaultStringOption\n ? helperFnUpdateFn<TResolvedStep, TSteps, ValidStepKey<TSteps>>\n : TChosenSteps extends HelperFnChosenSteps.tupleNotation<\n ValidStepKey<TSteps>\n >\n ? helperFnUpdateFn<TResolvedStep, TSteps, TChosenSteps[number]>\n : TChosenSteps extends HelperFnChosenSteps.objectNotation<\n ValidStepKey<TSteps>\n >\n ? {\n [step in keyof TChosenSteps]: step extends ValidStepKey<TSteps>\n ? helperFnUpdateFn<TResolvedStep, TSteps, step>[step]\n : {};\n }\n : {});\n\nexport interface HelperFnInputBase<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TOmitSteps extends HelperFnChosenSteps.resolve<\n TResolvedStep,\n TSteps,\n TChosenSteps\n > = never,\n TAdditionalCtx extends Record<string, unknown> = {}\n> {\n /**\n * The multi-step form step context.\n */\n // TODO determine if this should be renamed to `steps` since it only has the step data\n ctx: Expand<\n HelperFnCtx<TResolvedStep, TSteps, TChosenSteps, TOmitSteps> &\n TAdditionalCtx\n >;\n /**\n * A function to update parts of the multi-step form schema.\n */\n update: HelperFnUpdateFn<TResolvedStep, TSteps, TChosenSteps>;\n}\nexport type HelperFnInputWithValidator<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TValidator,\n TAdditionalCtx extends Record<string, unknown>\n> = HelperFnInputBase<\n TResolvedStep,\n TSteps,\n TChosenSteps,\n never,\n TAdditionalCtx\n> & {\n data: ResolveValidatorOutput<TValidator>;\n};\nexport type HelperFnInputWithoutValidator<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TAdditionalCtx extends Record<string, unknown>\n> = HelperFnInputBase<\n TResolvedStep,\n TSteps,\n TChosenSteps,\n never,\n TAdditionalCtx\n>;\n\nexport type HelperFnWithValidator<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TValidator,\n TAdditionalCtx extends Record<string, unknown>,\n Response\n> = (\n input: HelperFnInputWithValidator<\n TResolvedStep,\n TSteps,\n TChosenSteps,\n TValidator,\n TAdditionalCtx\n >\n) => Response;\nexport type HelperFnWithoutValidator<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>,\n TAdditionalCtx extends Record<string, unknown>,\n Response\n> = (\n input: HelperFnInputWithoutValidator<\n TResolvedStep,\n TSteps,\n TChosenSteps,\n TAdditionalCtx\n >\n) => Response;\nexport interface MultiStepFormSchemaStepConfig<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TStorageKey extends string\n> extends NameTransformCasingOptions<TCasing> {\n /**\n * The steps that this multi step form will include.\n */\n steps: InferStepOptions<TStep>;\n /**\n * The options for the storage module.\n */\n storage?: Omit<StorageConfig<any, TStorageKey>, 'data'>;\n}\n"],"mappings":";;;0CAsvBI;CAEK,SAAS,MAAM,OAA8C;AAClE,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,UAAU,MAAM;;;CAGhE,SAAS,QACd,OACA,aACyC;AACzC,MAAI,CAAC,MAAM,QAAQ,MAAM,CACvB,QAAO;AAGT,MAAI,YACF,QAAO,MAAM,OAAO,QAAQ,YAAY,SAAS,IAAI,CAAC;AAGxD,SAAO;;;CAGF,SAAS,SACd,OACA,WAC0C;AAC1C,MAAI,CAAC,MACH,QAAO;EAGT,MAAM,OAAO,OAAO,KAAK,MAAM;AAE/B,MAAI,KAAK,WAAW,EAClB,QAAO;AAGT,MAAI,aAAa,CAAC,KAAK,OAAO,QAAQ,UAAU,SAAS,IAAI,CAAC,CAC5D,QAAO;AAGT,SAAO,OAAO,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,MAAM,KAAK"}
@@ -0,0 +1,96 @@
1
+ const require_helpers = require('../utils/helpers.cjs');
2
+ const require_invariant = require('../utils/invariant.cjs');
3
+
4
+ //#region src/steps/utils.ts
5
+ /**
6
+ * Gets the step number from an input string.
7
+ * @param input The input to extract the step number from.
8
+ * @returns The extracted step number.
9
+ */
10
+ function extractNumber(input) {
11
+ require_invariant.invariant(input.includes("step"), "Can't extract a valid step number since");
12
+ const extracted = input.replace("step", "");
13
+ require_invariant.invariant(/^\d+$/.test(extracted), `Invalid step format: "${input}"`);
14
+ return Number.parseInt(extracted, 10);
15
+ }
16
+ /**
17
+ * A factory function to get the data of a specific step.
18
+ * @param resolvedStepValues The resolved step values.
19
+ * @returns A function to get specific step data from a target step.
20
+ */
21
+ function getStep(resolvedStepValues) {
22
+ /**
23
+ * Gets the step data associated with the target step number.
24
+ *
25
+ * @example
26
+ * const result = getStep(resolvedStepValues)({ step: 1 });
27
+ * // result: { step: 1, data: ... }
28
+ *
29
+ * @returns An object containing the `step` number and the associated step data.
30
+ */
31
+ return function(options) {
32
+ const { step } = options;
33
+ return {
34
+ step,
35
+ data: resolvedStepValues[`step${step}`]
36
+ };
37
+ };
38
+ }
39
+ function createCtxHelper(values, data) {
40
+ return data.reduce((acc, curr) => {
41
+ const stepNumber = extractNumber(curr);
42
+ const { data: data$1 } = getStep(values)({ step: stepNumber });
43
+ for (const [key, value] of Object.entries(data$1)) {
44
+ if (typeof value === "function" && key !== "update") continue;
45
+ data$1[key] = value;
46
+ }
47
+ acc[curr] = data$1;
48
+ return acc;
49
+ }, {});
50
+ }
51
+ function createCtx(values, stepData) {
52
+ const formatter = new Intl.ListFormat("en", {
53
+ style: "long",
54
+ type: "disjunction"
55
+ });
56
+ const validStepKeys = Object.keys(values);
57
+ const baseErrorMessage = () => {
58
+ return `"stepData" must be set to an array of available steps (${formatter.format(validStepKeys)})`;
59
+ };
60
+ if (stepData === "all") {
61
+ let ctx = {};
62
+ for (const key of validStepKeys) ctx = {
63
+ ...ctx,
64
+ [key]: getStep(values)({ step: extractNumber(key) })
65
+ };
66
+ return createCtxHelper(values, validStepKeys);
67
+ }
68
+ if (Array.isArray(stepData)) {
69
+ require_invariant.invariant(stepData.every((step) => validStepKeys.includes(step)), () => {
70
+ const comparedResults = require_helpers.comparePartialArray(stepData, validStepKeys.map((key) => extractNumber(key)), formatter);
71
+ if (comparedResults.status === "error") return `${baseErrorMessage()}. See errors:\n ${require_helpers.printErrors(comparedResults.errors)}`;
72
+ return baseErrorMessage();
73
+ });
74
+ return createCtxHelper(values, stepData);
75
+ }
76
+ if (typeof stepData === "object") {
77
+ const keys = Object.keys(stepData);
78
+ require_invariant.invariant(keys.every((key) => validStepKeys.includes(key)), () => {
79
+ const comparedResults = require_helpers.comparePartialArray(keys, validStepKeys, formatter);
80
+ if (comparedResults.status === "error") return `${baseErrorMessage()}. See errors:\n ${require_helpers.printErrors(comparedResults.errors)}`;
81
+ return baseErrorMessage();
82
+ });
83
+ return createCtxHelper(values, keys);
84
+ }
85
+ throw new Error(`${baseErrorMessage()} OR to "all"`);
86
+ }
87
+ function functionalUpdate(updater, input) {
88
+ if (typeof updater === "function") return updater(input);
89
+ return updater;
90
+ }
91
+
92
+ //#endregion
93
+ exports.createCtx = createCtx;
94
+ exports.functionalUpdate = functionalUpdate;
95
+ exports.getStep = getStep;
96
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","names":["data","comparePartialArray","printErrors"],"sources":["../../src/steps/utils.ts"],"sourcesContent":["import { comparePartialArray, printErrors } from '@/utils/helpers';\nimport { invariant } from '@/utils/invariant';\nimport type {\n AnyResolvedStep,\n GetCurrentStep,\n HelperFnChosenSteps,\n HelperFnCtx,\n StepNumbers,\n Updater,\n} from './types';\n\nexport type GetStepOptions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TStepNumber extends TStepNumbers\n> = { step: TStepNumber };\n\n/**\n * Gets the step number from an input string.\n * @param input The input to extract the step number from.\n * @returns The extracted step number.\n */\nexport function extractNumber(input: string) {\n invariant(input.includes('step'), \"Can't extract a valid step number since\");\n\n const extracted = input.replace('step', '');\n\n invariant(/^\\d+$/.test(extracted), `Invalid step format: \"${input}\"`);\n\n return Number.parseInt(extracted, 10);\n}\n\n/**\n * A factory function to get the data of a specific step.\n * @param resolvedStepValues The resolved step values.\n * @returns A function to get specific step data from a target step.\n */\nexport function getStep<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends StepNumbers<resolvedStep>\n>(resolvedStepValues: resolvedStep) {\n /**\n * Gets the step data associated with the target step number.\n *\n * @example\n * const result = getStep(resolvedStepValues)({ step: 1 });\n * // result: { step: 1, data: ... }\n *\n * @returns An object containing the `step` number and the associated step data.\n */\n return function <stepNumber extends stepNumbers>(\n options: GetStepOptions<resolvedStep, stepNumbers, stepNumber>\n ) {\n const { step } = options;\n const stepKey = `step${step}` as keyof typeof resolvedStepValues;\n\n const data = resolvedStepValues[stepKey] as GetCurrentStep<\n typeof resolvedStepValues,\n stepNumber\n >;\n\n return { step, data };\n };\n}\n\nfunction createCtxHelper<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>\n>(values: TResolvedStep, data: string[]) {\n return data.reduce((acc, curr) => {\n const stepNumber = extractNumber(curr);\n const { data } = getStep(values)({\n step: stepNumber as TStepNumbers,\n });\n\n for (const [key, value] of Object.entries(data)) {\n // console.log({ [key]: value });\n // Remove the functions from the data to comply with `StrippedResolvedStep`\n if (typeof value === 'function' && key !== 'update') {\n continue;\n }\n\n data[key as keyof typeof data] = value as never;\n }\n\n acc[curr as keyof typeof acc] = data as never;\n\n return acc;\n }, {} as HelperFnCtx<TResolvedStep, TStepNumbers, TChosenSteps>);\n}\n\nexport function createCtx<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>\n>(values: TResolvedStep, stepData: TChosenSteps) {\n const formatter = new Intl.ListFormat('en', {\n style: 'long',\n type: 'disjunction',\n });\n const validStepKeys = Object.keys(values);\n\n const baseErrorMessage = () => {\n return `\"stepData\" must be set to an array of available steps (${formatter.format(\n validStepKeys\n )})`;\n };\n\n if (stepData === 'all') {\n let ctx = {} as HelperFnCtx<TResolvedStep, TStepNumbers, TChosenSteps>;\n\n for (const key of validStepKeys) {\n ctx = {\n ...ctx,\n [key]: getStep(values)({\n step: extractNumber(key) as never,\n }),\n };\n }\n\n return createCtxHelper<TResolvedStep, TStepNumbers, TChosenSteps>(\n values,\n validStepKeys\n );\n }\n\n if (Array.isArray(stepData)) {\n invariant(\n stepData.every((step) => validStepKeys.includes(step)),\n () => {\n const comparedResults = comparePartialArray(\n stepData,\n validStepKeys.map((key) => extractNumber(key)),\n formatter\n );\n\n if (comparedResults.status === 'error') {\n return `${baseErrorMessage()}. See errors:\\n ${printErrors(\n comparedResults.errors\n )}`;\n }\n\n return baseErrorMessage();\n }\n );\n\n return createCtxHelper<TResolvedStep, TStepNumbers, TChosenSteps>(\n values,\n stepData\n );\n }\n\n if (typeof stepData === 'object') {\n const keys = Object.keys(stepData);\n\n invariant(\n keys.every((key) => validStepKeys.includes(key)),\n () => {\n const comparedResults = comparePartialArray(\n keys,\n validStepKeys,\n formatter\n );\n\n if (comparedResults.status === 'error') {\n return `${baseErrorMessage()}. See errors:\\n ${printErrors(\n comparedResults.errors\n )}`;\n }\n\n return baseErrorMessage();\n }\n );\n\n return createCtxHelper<TResolvedStep, TStepNumbers, TChosenSteps>(\n values,\n keys\n );\n }\n\n throw new Error(`${baseErrorMessage()} OR to \"all\"`);\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput\n) {\n if (typeof updater === 'function') {\n return (updater as (_: TInput) => TOutput)(input);\n }\n\n return updater;\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAgB,cAAc,OAAe;AAC3C,6BAAU,MAAM,SAAS,OAAO,EAAE,0CAA0C;CAE5E,MAAM,YAAY,MAAM,QAAQ,QAAQ,GAAG;AAE3C,6BAAU,QAAQ,KAAK,UAAU,EAAE,yBAAyB,MAAM,GAAG;AAErE,QAAO,OAAO,SAAS,WAAW,GAAG;;;;;;;AAQvC,SAAgB,QAGd,oBAAkC;;;;;;;;;;AAUlC,QAAO,SACL,SACA;EACA,MAAM,EAAE,SAAS;AAQjB,SAAO;GAAE;GAAM,MALF,mBAFG,OAAO;GAOF;;;AAIzB,SAAS,gBAIP,QAAuB,MAAgB;AACvC,QAAO,KAAK,QAAQ,KAAK,SAAS;EAChC,MAAM,aAAa,cAAc,KAAK;EACtC,MAAM,EAAE,iBAAS,QAAQ,OAAO,CAAC,EAC/B,MAAM,YACP,CAAC;AAEF,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQA,OAAK,EAAE;AAG/C,OAAI,OAAO,UAAU,cAAc,QAAQ,SACzC;AAGF,UAAK,OAA4B;;AAGnC,MAAI,QAA4BA;AAEhC,SAAO;IACN,EAAE,CAA2D;;AAGlE,SAAgB,UAId,QAAuB,UAAwB;CAC/C,MAAM,YAAY,IAAI,KAAK,WAAW,MAAM;EAC1C,OAAO;EACP,MAAM;EACP,CAAC;CACF,MAAM,gBAAgB,OAAO,KAAK,OAAO;CAEzC,MAAM,yBAAyB;AAC7B,SAAO,0DAA0D,UAAU,OACzE,cACD,CAAC;;AAGJ,KAAI,aAAa,OAAO;EACtB,IAAI,MAAM,EAAE;AAEZ,OAAK,MAAM,OAAO,cAChB,OAAM;GACJ,GAAG;IACF,MAAM,QAAQ,OAAO,CAAC,EACrB,MAAM,cAAc,IAAI,EACzB,CAAC;GACH;AAGH,SAAO,gBACL,QACA,cACD;;AAGH,KAAI,MAAM,QAAQ,SAAS,EAAE;AAC3B,8BACE,SAAS,OAAO,SAAS,cAAc,SAAS,KAAK,CAAC,QAChD;GACJ,MAAM,kBAAkBC,oCACtB,UACA,cAAc,KAAK,QAAQ,cAAc,IAAI,CAAC,EAC9C,UACD;AAED,OAAI,gBAAgB,WAAW,QAC7B,QAAO,GAAG,kBAAkB,CAAC,kBAAkBC,4BAC7C,gBAAgB,OACjB;AAGH,UAAO,kBAAkB;IAE5B;AAED,SAAO,gBACL,QACA,SACD;;AAGH,KAAI,OAAO,aAAa,UAAU;EAChC,MAAM,OAAO,OAAO,KAAK,SAAS;AAElC,8BACE,KAAK,OAAO,QAAQ,cAAc,SAAS,IAAI,CAAC,QAC1C;GACJ,MAAM,kBAAkBD,oCACtB,MACA,eACA,UACD;AAED,OAAI,gBAAgB,WAAW,QAC7B,QAAO,GAAG,kBAAkB,CAAC,kBAAkBC,4BAC7C,gBAAgB,OACjB;AAGH,UAAO,kBAAkB;IAE5B;AAED,SAAO,gBACL,QACA,KACD;;AAGH,OAAM,IAAI,MAAM,GAAG,kBAAkB,CAAC,cAAc;;AAGtD,SAAgB,iBACd,SACA,OACA;AACA,KAAI,OAAO,YAAY,WACrB,QAAQ,QAAmC,MAAM;AAGnD,QAAO"}
@@ -0,0 +1,10 @@
1
+ import { AnyResolvedStep, HelperFnChosenSteps, HelperFnCtx, StepNumbers } from "./types.cjs";
2
+
3
+ //#region src/steps/utils.d.ts
4
+ type GetStepOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TStepNumber extends TStepNumbers> = {
5
+ step: TStepNumber;
6
+ };
7
+ declare function createCtx<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>>(values: TResolvedStep, stepData: TChosenSteps): HelperFnCtx<TResolvedStep, TStepNumbers, TChosenSteps, never>;
8
+ //#endregion
9
+ export { GetStepOptions, createCtx };
10
+ //# sourceMappingURL=utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/steps/utils.ts"],"sourcesContent":[],"mappings":";;;KAWY,qCACY,sCACD,YAAY,oCACb;QACV;AAJZ,CAAA;AAqF+C,iBAJ/B,SAI+B,CAAA,sBAHvB,eAGuB,EAAA,qBAFxB,WAEwB,CAFZ,aAEY,CAAA,EAAA,qBADxB,mBACwB,CADJ,aACI,EADW,YACX,CAAA,CAAA,CAAA,MAAA,EAArC,aAAqC,EAAA,QAAA,EAAZ,YAAY,CAAA,EAAA,WAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { AnyResolvedStep, HelperFnChosenSteps, HelperFnCtx, StepNumbers } from "./types.mjs";
2
+
3
+ //#region src/steps/utils.d.ts
4
+ type GetStepOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TStepNumber extends TStepNumbers> = {
5
+ step: TStepNumber;
6
+ };
7
+ declare function createCtx<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>>(values: TResolvedStep, stepData: TChosenSteps): HelperFnCtx<TResolvedStep, TStepNumbers, TChosenSteps, never>;
8
+ //#endregion
9
+ export { GetStepOptions, createCtx };
10
+ //# sourceMappingURL=utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/steps/utils.ts"],"sourcesContent":[],"mappings":";;;KAWY,qCACY,sCACD,YAAY,oCACb;QACV;AAJZ,CAAA;AAqF+C,iBAJ/B,SAI+B,CAAA,sBAHvB,eAGuB,EAAA,qBAFxB,WAEwB,CAFZ,aAEY,CAAA,EAAA,qBADxB,mBACwB,CADJ,aACI,EADW,YACX,CAAA,CAAA,CAAA,MAAA,EAArC,aAAqC,EAAA,QAAA,EAAZ,YAAY,CAAA,EAAA,WAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,CAAA"}