@jfdevelops/multi-step-form-core 1.0.0-alpha.17 → 1.0.0-alpha.18

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 (147) hide show
  1. package/dist/_internals.cjs +14 -0
  2. package/dist/_internals.d.cts +4 -0
  3. package/dist/_internals.d.mts +4 -0
  4. package/dist/_internals.mjs +5 -0
  5. package/dist/index.cjs +49 -0
  6. package/dist/index.d.cts +14 -0
  7. package/dist/index.d.mts +14 -0
  8. package/dist/index.mjs +16 -0
  9. package/dist/internals/step-schema.cjs +389 -0
  10. package/dist/internals/step-schema.cjs.map +1 -0
  11. package/dist/internals/step-schema.d.cts +41 -0
  12. package/dist/internals/step-schema.d.cts.map +1 -0
  13. package/dist/internals/step-schema.d.mts +41 -0
  14. package/dist/internals/step-schema.d.mts.map +1 -0
  15. package/dist/internals/step-schema.mjs +389 -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 +332 -0
  62. package/dist/steps/types.d.cts.map +1 -0
  63. package/dist/steps/types.d.mts +332 -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 +68 -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 +67 -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 +331 -0
  128. package/dist/utils/path.cjs.map +1 -0
  129. package/dist/utils/path.d.cts +139 -0
  130. package/dist/utils/path.d.cts.map +1 -0
  131. package/dist/utils/path.d.mts +139 -0
  132. package/dist/utils/path.d.mts.map +1 -0
  133. package/dist/utils/path.mjs +325 -0
  134. package/dist/utils/path.mjs.map +1 -0
  135. package/dist/utils/types.d.cts +25 -0
  136. package/dist/utils/types.d.cts.map +1 -0
  137. package/dist/utils/types.d.mts +25 -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 +1 -1
@@ -0,0 +1,332 @@
1
+ import { StorageConfig } from "../storage.mjs";
2
+ import { Constrain, DeepKeys, DeepPartial, 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 type mode = {
81
+ /**
82
+ * Enables strict mode for the update operation.
83
+ *
84
+ * When enabled, you won't be able to add new keys to an object. If
85
+ * you need to add new keys, set to `false`.
86
+ * @default true
87
+ */
88
+ strict: boolean;
89
+ /**
90
+ * Enables partial mode for the update operation.
91
+ *
92
+ * When enabled, you will be required to return the whole object. If
93
+ * you need to return a partial object, set to `false`.
94
+ * @default false
95
+ */
96
+ partial: boolean;
97
+ };
98
+ export type defaultMode = {
99
+ strict: true;
100
+ partial: false;
101
+ };
102
+ export type additionalUpdaterData = Record<string, unknown> | (() => Record<string, unknown>);
103
+ export type inferAdditionalUpdaterData<T extends additionalUpdaterData> = T extends (() => infer _) ? _ : T;
104
+ export type resolvedUpdaterReturnType<T, TMode extends mode, TAdditionalCtx extends additionalUpdaterData> = TMode['strict'] extends true ? TMode['partial'] extends true ? DeepPartial<T> : T : TMode['partial'] extends true ? DeepPartial<T> & TAdditionalCtx : T & TAdditionalCtx;
105
+ export interface BaseOptions<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>> {
106
+ /**
107
+ * The step to update.
108
+ */
109
+ targetStep: TTargetStep;
110
+ /**
111
+ * The specific fields to update.
112
+ *
113
+ * Optionally provide a value to narrow the results of the `ctx` in the
114
+ * updater `fn`.
115
+ */
116
+ fields?: TField;
117
+ /**
118
+ * Enables verbose debug logging for this update operation.
119
+ * Set to `true` to output helpful information for troubleshooting.
120
+ */
121
+ debug?: boolean;
122
+ /**
123
+ * Controls whether console errors should be silenced.
124
+ *
125
+ * By default, errors will be silenced when `partial: true` OR `strict: false`.
126
+ *
127
+ */
128
+ silentErrors?: boolean;
129
+ }
130
+ export interface SharedOptions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TMode extends mode, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> extends BaseOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, TCurrentStep> {
131
+ /**
132
+ * Enables strict mode for the update operation.
133
+ *
134
+ * When enabled, you won't be able to add new keys to an object. If
135
+ * you need to add new keys, set to `false`.
136
+ * @default true
137
+ */
138
+ strict?: TMode['strict'];
139
+ /**
140
+ * Enables partial mode for the update operation.
141
+ *
142
+ * When enabled, you will be required to return the whole object. If
143
+ * you need to return a partial object, set to `false`.
144
+ * @default false
145
+ */
146
+ partial?: TMode['partial'];
147
+ }
148
+ export type options<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>, TField extends chosenFields<TCurrentStep>, TStrict extends boolean, TPartial extends boolean, TAdditionalCtx extends Record<string, unknown>, TAdditionalUpdaterData extends additionalUpdaterData, TCurrentStep extends resolvedStep<TResolvedStep, TStepNumbers, TTargetStep> = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>, TMode extends mode = {
149
+ strict: TStrict;
150
+ partial: TPartial;
151
+ }> = SharedOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, TMode, TCurrentStep> & CtxDataSelector<TResolvedStep, TStepNumbers, [TTargetStep], TAdditionalCtx> & {
152
+ updater: Updater<Expand<HelperFnInputBase<TResolvedStep, TStepNumbers, [TTargetStep], never, TAdditionalCtx>>, resolvedUpdaterReturnType<resolvedFieldValue<TResolvedStep, TStepNumbers, TTargetStep, TField, TCurrentStep>, TMode, TAdditionalUpdaterData>>;
153
+ };
154
+ export type availableFields<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = HelperFnChosenSteps.build<DeepKeys<resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>>>;
155
+ export type general<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = <targetStep extends ValidStepKey<TStepNumbers>, field extends chosenFields<resolvedStep<TResolvedStep, TStepNumbers, targetStep>> = 'all', strict extends boolean = true, partial extends boolean = false, additionalCtx extends Record<string, unknown> = {}, additionalUpdaterData extends Record<string, unknown> = {}>(options: options<TResolvedStep, TStepNumbers, targetStep, field, strict, partial, additionalCtx, additionalUpdaterData>) => void;
156
+ export type stepSpecific<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends ValidStepKey<TStepNumbers>> = <field extends chosenFields<resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>> = 'all', strict extends boolean = true, partial extends boolean = false, additionalCtx extends Record<string, unknown> = {}, additionalUpdaterData extends Record<string, unknown> = {}>(options: Omit<options<TResolvedStep, TStepNumbers, TTargetStep, field, strict, partial, additionalCtx, additionalUpdaterData>, 'targetStep'>) => void;
157
+ export {};
158
+ }
159
+ declare namespace ResetFn {
160
+ 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.BaseOptions<TResolvedStep, TStepNumbers, TTargetStep, TField, TCurrentStep> {
161
+ /**
162
+ * The fields to reset.
163
+ */
164
+ fields: TField;
165
+ }
166
+ type general<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = <targetStep extends ValidStepKey<TStepNumbers>, field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, targetStep>> = 'all'>(options: Options<TResolvedStep, TStepNumbers, targetStep, field>) => void;
167
+ 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;
168
+ }
169
+ type StepSpecificHelperFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends TStepNumbers> = {
170
+ /**
171
+ * Create a helper function with validated input.
172
+ */
173
+ <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>;
174
+ /**
175
+ * Create a helper function without input.
176
+ */
177
+ <additionalCtx extends Record<string, unknown>, response>(fn: HelperFnWithoutValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], additionalCtx, response>): CreatedHelperFnWithoutInput<response>;
178
+ /**
179
+ * Create a helper function without input.
180
+ */
181
+ <response>(fn: HelperFnWithoutValidator<TResolvedStep, TStepNumbers, [ValidStepKey<TTargetStep>], {}, response>): CreatedHelperFnWithoutInput<response>;
182
+ };
183
+ type GeneralHelperFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = {
184
+ /**
185
+ * Create a helper function with validated input.
186
+ */
187
+ <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>;
188
+ /**
189
+ * Create a helper function without input.
190
+ */
191
+ <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>;
192
+ };
193
+ 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>;
194
+ type StepSpecificHelperFns<TResolvedStep extends AnyResolvedStep, TKey extends keyof TResolvedStep> = {
195
+ /**
196
+ * A helper function to create a reusable function for the current step.
197
+ */
198
+ createHelperFn: CreateStepHelperFn<TResolvedStep, StepNumbers<TResolvedStep>, ExtractStepFromKey<Constrain<TKey, string>>, true>;
199
+ } & (TKey extends ValidStepKey<StepNumbers<TResolvedStep>> ? {
200
+ /**
201
+ * A helper function to updated the current step's data.
202
+ */
203
+ update: UpdateFn.stepSpecific<TResolvedStep, StepNumbers<TResolvedStep>, TKey>;
204
+ /**
205
+ * A helper function to reset the current step's data.
206
+ *
207
+ * If no config is provided, **all** fields for the current step
208
+ * will be reset. If you need to reset a specific field, specify
209
+ * that field in the config.
210
+ */
211
+ reset: ResetFn.stepSpecific<TResolvedStep, StepNumbers<TResolvedStep>, TKey>;
212
+ } : {});
213
+ 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> };
214
+ type StrippedResolvedStep<T extends AnyResolvedStep, TStringUpdate extends boolean = false> = { [_ in keyof T as T[_] extends Function ? _ extends 'update' ? TStringUpdate extends true ? never : _ : never : _]: T[_] };
215
+ type AnyResolvedStep = ResolvedStep<any, any, any>;
216
+ type ValidStepKey<N extends number = number> = `step${N}`;
217
+ type ExtractStepFromKey<T> = T extends string ? T extends ValidStepKey<infer N> ? N : never : never;
218
+ 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>;
219
+ type Range = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
220
+ type ClampTo0to10<N extends number> = N extends Range ? N : number extends N ? never : `${N}` extends `-${string}` ? 0 : 10;
221
+ type Tuple<N extends number, R extends any[] = []> = R['length'] extends N ? R : Tuple<N, [...R, any]>;
222
+ 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;
223
+ 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;
224
+ 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;
225
+ 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] : [];
226
+ type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = { [K in Keys]-?: Required<Pick<T, K>> & Partial<Omit<T, K>> }[Keys];
227
+ type LastStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey ? Max<Constrain<UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>, number[]>> : never;
228
+ type FirstStep<T extends AnyResolvedStep> = keyof T extends ValidStepKey ? Min<Constrain<UnionToTuple<ExtractStepFromKey<Constrain<keyof T, string>>>, number[]>> : never;
229
+ type GetCurrentStep<T extends AnyResolvedStep, S extends ExtractStepFromKey<Constrain<keyof T, string>>> = ValidStepKey<S> extends Constrain<keyof T, string> ? T[ValidStepKey<S>] : never;
230
+ type StepData<T extends AnyResolvedStep, Step$1 extends ExtractStepFromKey<Constrain<keyof T, string>>> = {
231
+ /**
232
+ * The step number.
233
+ */
234
+ step: Step$1;
235
+ /**
236
+ * The step data.
237
+ */
238
+ data: GetCurrentStep<T, Step$1>;
239
+ };
240
+ type StepNumbers<TResolvedStep extends AnyResolvedStep> = ExtractStepFromKey<Constrain<keyof TResolvedStep, string>>;
241
+ type WidenSpecial<T> = T extends CasingType ? CasingType : T extends FieldType ? FieldType : T;
242
+ 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>;
243
+ declare namespace HelperFnChosenSteps {
244
+ type defaultStringOption = 'all';
245
+ type stringOption<T extends string> = defaultStringOption | T;
246
+ type tupleNotation<T extends string> = [T, ...T[]];
247
+ type objectNotation<T extends string> = RequireAtLeastOne<{ [_ in T]: true }>;
248
+ type build<TValue extends string, TStringOptions = defaultStringOption> = TStringOptions | tupleNotation<TValue> | objectNotation<TValue>;
249
+ type main<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>> = build<ValidStepKey<TSteps>>;
250
+ 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;
251
+ 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;
252
+ 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, ...})";
253
+ function isAll(value: unknown): value is defaultStringOption;
254
+ function isTuple<T extends number>(value: unknown, validValues?: Array<unknown>): value is tupleNotation<ValidStepKey<T>>;
255
+ function isObject<T extends number>(value: unknown, validKeys?: Array<unknown>): value is objectNotation<ValidStepKey<T>>;
256
+ }
257
+ type HelperFnChosenSteps<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>> = HelperFnChosenSteps.main<TResolvedStep, TSteps>;
258
+ type CreateHelperFunctionOptionsBase<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>> = {
259
+ /**
260
+ * The step data to use for the function. It can either be an array with the **available**
261
+ * step numbers or `'all'`.
262
+ *
263
+ * - If set to `'all'`, data from **all** the steps will be available.
264
+ * - If an array of the **available** step numbers is provided, only data from those steps will be available.
265
+ */
266
+ stepData: TChosenSteps;
267
+ };
268
+ type CreateHelperFunctionOptionsWithoutValidator<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>> = CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, TChosenSteps>;
269
+ interface CtxDataSelector<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, TAdditionalCtx extends Record<string, unknown>> {
270
+ /**
271
+ * A function to select the data that will be available in the `fn`'s ctx.
272
+ * @param input The available input to create the context with.
273
+ * @returns The created ctx.
274
+ */
275
+ ctxData?: (input: Pick<HelperFnInputBase<TResolvedStep, TStepNumbers, 'all', HelperFnChosenSteps.resolve<TResolvedStep, TStepNumbers, TChosenSteps>>, 'ctx'>) => TAdditionalCtx;
276
+ }
277
+ 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>;
278
+ 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> & {
279
+ /**
280
+ * A validator used to validate the params.
281
+ */
282
+ validator: Constrain<TValidator, AnyValidator, DefaultValidator>;
283
+ };
284
+ type CreatedHelperFnInput<T> = {
285
+ data: Expand<ResolveValidatorOutput<T>>;
286
+ };
287
+ type CreatedHelperFnWithInput<TValidator, TResponse> = (input: CreatedHelperFnInput<TValidator>) => TResponse;
288
+ type CreatedHelperFnWithoutInput<TResponse> = () => TResponse;
289
+ type isString<T> = T extends string ? T : never;
290
+ 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;
291
+ declare namespace HelperFn {
292
+ type stepSpecificKey<TNumber extends number, TSteps> = Exclude<ValidStepKey<TNumber>, ExtractStepFromKey<TSteps>>;
293
+ }
294
+ type helperFnUpdateFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TSteps extends ValidStepKey<TStepNumbers>> = { [step in HelperFn.stepSpecificKey<TStepNumbers, TSteps>]: UpdateFn.stepSpecific<TResolvedStep, TStepNumbers, step> };
295
+ 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>[HelperFn.stepSpecificKey<TSteps, step>] : {} } : {});
296
+ type helperFnResetFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TSteps extends ValidStepKey<TStepNumbers>> = { [step in HelperFn.stepSpecificKey<TStepNumbers, TSteps>]: ResetFn.stepSpecific<TResolvedStep, TStepNumbers, step> };
297
+ type HelperFnResetFn<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>> = ResetFn.general<TResolvedStep, TSteps> & (TChosenSteps extends HelperFnChosenSteps.defaultStringOption ? helperFnResetFn<TResolvedStep, TSteps, ValidStepKey<TSteps>> : TChosenSteps extends HelperFnChosenSteps.tupleNotation<ValidStepKey<TSteps>> ? helperFnResetFn<TResolvedStep, TSteps, TChosenSteps[number]> : TChosenSteps extends HelperFnChosenSteps.objectNotation<ValidStepKey<TSteps>> ? { [step in keyof TChosenSteps]: step extends ValidStepKey<TSteps> ? helperFnResetFn<TResolvedStep, TSteps, step>[HelperFn.stepSpecificKey<TSteps, step>] : {} } : {});
298
+ 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> = {}> {
299
+ /**
300
+ * The multi-step form step context.
301
+ */
302
+ ctx: Expand<HelperFnCtx<TResolvedStep, TSteps, TChosenSteps, TOmitSteps> & TAdditionalCtx>;
303
+ /**
304
+ * A function to update parts of the multi-step form schema.
305
+ */
306
+ update: HelperFnUpdateFn<TResolvedStep, TSteps, TChosenSteps>;
307
+ /**
308
+ * A useful wrapper for `update` to reset a specific field's value to its
309
+ * original config value.
310
+ * @resetFn
311
+ */
312
+ reset: HelperFnResetFn<TResolvedStep, TSteps, TChosenSteps>;
313
+ }
314
+ 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> & {
315
+ data: ResolveValidatorOutput<TValidator>;
316
+ };
317
+ 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>;
318
+ 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;
319
+ 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;
320
+ interface MultiStepFormSchemaStepConfig<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> extends NameTransformCasingOptions<TCasing> {
321
+ /**
322
+ * The steps that this multi step form will include.
323
+ */
324
+ steps: InferStepOptions<TStep>;
325
+ /**
326
+ * The options for the storage module.
327
+ */
328
+ storage?: Omit<StorageConfig<any, TStorageKey>, 'data'>;
329
+ }
330
+ //#endregion
331
+ export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, 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, helperFnResetFn, helperFnUpdateFn };
332
+ //# 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 DeepPartial,\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 type mode = {\n /**\n * Enables strict mode for the update operation.\n *\n * When enabled, you won't be able to add new keys to an object. If\n * you need to add new keys, set to `false`.\n * @default true\n */\n strict: boolean;\n /**\n * Enables partial mode for the update operation.\n *\n * When enabled, you will be required to return the whole object. If\n * you need to return a partial object, set to `false`.\n * @default false\n */\n partial: boolean;\n };\n export type defaultMode = {\n strict: true;\n partial: false;\n };\n export type additionalUpdaterData =\n | Record<string, unknown>\n | (() => Record<string, unknown>);\n export type inferAdditionalUpdaterData<T extends additionalUpdaterData> =\n T extends () => infer _ ? _ : T;\n export type resolvedUpdaterReturnType<\n T,\n TMode extends mode,\n TAdditionalCtx extends additionalUpdaterData\n > = TMode['strict'] extends true\n ? TMode['partial'] extends true\n ? DeepPartial<T>\n : T\n : TMode['partial'] extends true\n ? DeepPartial<T> & TAdditionalCtx\n : T & TAdditionalCtx;\n export interface BaseOptions<\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 > {\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 * Controls whether console errors should be silenced.\n *\n * By default, errors will be silenced when `partial: true` OR `strict: false`.\n *\n */\n silentErrors?: boolean;\n }\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 TMode extends mode,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>\n > extends BaseOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TCurrentStep\n > {\n /**\n * Enables strict mode for the update operation.\n *\n * When enabled, you won't be able to add new keys to an object. If\n * you need to add new keys, set to `false`.\n * @default true\n */\n strict?: TMode['strict'];\n /**\n * Enables partial mode for the update operation.\n *\n * When enabled, you will be required to return the whole object. If\n * you need to return a partial object, set to `false`.\n * @default false\n */\n partial?: TMode['partial'];\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 TStrict extends boolean,\n TPartial extends boolean,\n TAdditionalCtx extends Record<string, unknown>,\n TAdditionalUpdaterData extends additionalUpdaterData,\n TCurrentStep extends resolvedStep<\n TResolvedStep,\n TStepNumbers,\n TTargetStep\n > = resolvedStep<TResolvedStep, TStepNumbers, TTargetStep>,\n TMode extends mode = {\n strict: TStrict;\n partial: TPartial;\n }\n > = SharedOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TMode,\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 resolvedUpdaterReturnType<\n resolvedFieldValue<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TCurrentStep\n >,\n TMode,\n TAdditionalUpdaterData\n >\n >;\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 strict extends boolean = true,\n partial extends boolean = false,\n additionalCtx extends Record<string, unknown> = {},\n additionalUpdaterData extends Record<string, unknown> = {}\n >(\n options: options<\n TResolvedStep,\n TStepNumbers,\n targetStep,\n field,\n strict,\n partial,\n additionalCtx,\n additionalUpdaterData\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 strict extends boolean = true,\n partial extends boolean = false,\n additionalCtx extends Record<string, unknown> = {},\n additionalUpdaterData extends Record<string, unknown> = {}\n >(\n options: Omit<\n options<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n field,\n strict,\n partial,\n additionalCtx,\n additionalUpdaterData\n >,\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.BaseOptions<\n TResolvedStep,\n TStepNumbers,\n TTargetStep,\n TField,\n TCurrentStep\n > {\n /**\n * The fields to reset.\n */\n fields: TField;\n }\n\n export type general<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>\n > = <\n targetStep extends ValidStepKey<TStepNumbers>,\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<TResolvedStep, TStepNumbers, targetStep>\n > = 'all'\n >(\n options: Options<TResolvedStep, TStepNumbers, targetStep, field>\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 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 namespace HelperFn {\n export type stepSpecificKey<TNumber extends number, TSteps> = Exclude<\n ValidStepKey<TNumber>,\n ExtractStepFromKey<TSteps>\n >;\n}\nexport type helperFnUpdateFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TSteps extends ValidStepKey<TStepNumbers>\n> = {\n [step in HelperFn.stepSpecificKey<\n TStepNumbers,\n TSteps\n >]: 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<\n TResolvedStep,\n TSteps,\n step\n >[HelperFn.stepSpecificKey<TSteps, step>]\n : {};\n }\n : {});\n\nexport type helperFnResetFn<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TSteps extends ValidStepKey<TStepNumbers>\n> = {\n [step in HelperFn.stepSpecificKey<\n TStepNumbers,\n TSteps\n >]: ResetFn.stepSpecific<TResolvedStep, TStepNumbers, step>;\n};\nexport type HelperFnResetFn<\n TResolvedStep extends AnyResolvedStep,\n TSteps extends StepNumbers<TResolvedStep>,\n TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>\n> = ResetFn.general<TResolvedStep, TSteps> &\n (TChosenSteps extends HelperFnChosenSteps.defaultStringOption\n ? helperFnResetFn<TResolvedStep, TSteps, ValidStepKey<TSteps>>\n : TChosenSteps extends HelperFnChosenSteps.tupleNotation<\n ValidStepKey<TSteps>\n >\n ? helperFnResetFn<TResolvedStep, TSteps, TChosenSteps[number]>\n : TChosenSteps extends HelperFnChosenSteps.objectNotation<\n ValidStepKey<TSteps>\n >\n ? {\n [step in keyof TChosenSteps]: step extends ValidStepKey<TSteps>\n ? helperFnResetFn<\n TResolvedStep,\n TSteps,\n step\n >[HelperFn.stepSpecificKey<TSteps, 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 /**\n * A useful wrapper for `update` to reset a specific field's value to its\n * original config value.\n * @resetFn\n */\n reset: HelperFnResetFn<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":";;;0CA21BI;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"}