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

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 (40) hide show
  1. package/dist/index.d.cts +3 -3
  2. package/dist/index.d.mts +3 -3
  3. package/dist/internals/step-schema.cjs +110 -34
  4. package/dist/internals/step-schema.cjs.map +1 -1
  5. package/dist/internals/step-schema.d.cts +4 -2
  6. package/dist/internals/step-schema.d.cts.map +1 -1
  7. package/dist/internals/step-schema.d.mts +4 -2
  8. package/dist/internals/step-schema.d.mts.map +1 -1
  9. package/dist/internals/step-schema.mjs +110 -34
  10. package/dist/internals/step-schema.mjs.map +1 -1
  11. package/dist/steps/schema.cjs.map +1 -1
  12. package/dist/steps/schema.d.cts +1 -1
  13. package/dist/steps/schema.d.cts.map +1 -1
  14. package/dist/steps/schema.d.mts +1 -1
  15. package/dist/steps/schema.d.mts.map +1 -1
  16. package/dist/steps/schema.mjs.map +1 -1
  17. package/dist/steps/types.cjs.map +1 -1
  18. package/dist/steps/types.d.cts +63 -9
  19. package/dist/steps/types.d.cts.map +1 -1
  20. package/dist/steps/types.d.mts +63 -9
  21. package/dist/steps/types.d.mts.map +1 -1
  22. package/dist/steps/types.mjs.map +1 -1
  23. package/dist/utils/casing.d.cts +1 -1
  24. package/dist/utils/casing.d.cts.map +1 -1
  25. package/dist/utils/casing.d.mts +1 -1
  26. package/dist/utils/casing.d.mts.map +1 -1
  27. package/dist/utils/path.cjs +61 -2
  28. package/dist/utils/path.cjs.map +1 -1
  29. package/dist/utils/path.d.cts +9 -1
  30. package/dist/utils/path.d.cts.map +1 -1
  31. package/dist/utils/path.d.mts +9 -1
  32. package/dist/utils/path.d.mts.map +1 -1
  33. package/dist/utils/path.mjs +61 -2
  34. package/dist/utils/path.mjs.map +1 -1
  35. package/dist/utils/types.d.cts +3 -1
  36. package/dist/utils/types.d.cts.map +1 -1
  37. package/dist/utils/types.d.mts +3 -1
  38. package/dist/utils/types.d.mts.map +1 -1
  39. package/dist/utils/validator.d.mts.map +1 -1
  40. package/package.json +3 -2
@@ -9,6 +9,21 @@ import { HelperFnChosenSteps } from "../steps/types.mjs";
9
9
  import "../steps/index.mjs";
10
10
 
11
11
  //#region src/internals/step-schema.ts
12
+ function verifyUpdate(options) {
13
+ const { strict, partial, actual, obj, paths } = options;
14
+ const { mismatches, ok } = path.equalsAtPaths(obj, paths, actual);
15
+ let isValid = true;
16
+ if (strict) isValid = ok && mismatches.length === 0;
17
+ if (partial) {
18
+ const mismatchesWithoutMissingKey = mismatches.filter(({ reason }) => reason !== "missing-key");
19
+ if (strict) isValid = mismatchesWithoutMissingKey.length === 0;
20
+ else isValid = mismatchesWithoutMissingKey.filter(({ reason }) => reason !== "extra-key").length === 0;
21
+ }
22
+ invariant(isValid, `[update]: found value mismatches in ${path.printMismatches({
23
+ ok,
24
+ mismatches
25
+ })}`);
26
+ }
12
27
  var MultiStepFormStepSchemaInternal = class {
13
28
  #originalValue;
14
29
  #additionalEnrichedProps;
@@ -27,8 +42,20 @@ var MultiStepFormStepSchemaInternal = class {
27
42
  handlePostUpdate(value) {
28
43
  this.#setValue(this.enrichValues(value));
29
44
  }
45
+ buildCtxData(options) {
46
+ const { logger, values, ctxData } = options;
47
+ invariant(typeof ctxData === "function", "[update]: \"ctxData\" must be a function");
48
+ logger.info("Custom \"ctx\" will be used");
49
+ const additionalCtx = ctxData({ ctx: values });
50
+ invariant(typeof additionalCtx === "object" && Object.keys(additionalCtx).length > 0, "[update]: \"ctxData\" must return an object with keys");
51
+ logger.info(`Custom "ctx" consists of the following keys: ${new Intl.ListFormat("en", {
52
+ style: "long",
53
+ type: "conjunction"
54
+ }).format(Object.keys(additionalCtx))}`);
55
+ return additionalCtx;
56
+ }
30
57
  createStepUpdaterFnImpl(options) {
31
- const { targetStep, ctxData, fields = "all", debug } = options;
58
+ const { targetStep, ctxData, fields = "all", debug, partial = false, strict = true } = options;
32
59
  const logger = new MultiStepFormLogger({
33
60
  debug,
34
61
  prefix: (value) => `${value}:update${targetStep}`
@@ -41,14 +68,11 @@ var MultiStepFormStepSchemaInternal = class {
41
68
  let updatedValue = { ...this.value };
42
69
  let ctx = createCtx(updatedValue, [targetStep]);
43
70
  if (ctxData) {
44
- invariant(typeof ctxData === "function", "[update]: \"ctxData\" must be a function");
45
- logger.info("Custom \"ctx\" will be used");
46
- const additionalCtx = ctxData({ ctx: values });
47
- invariant(typeof additionalCtx === "object" && Object.keys(additionalCtx).length > 0, "[update]: \"ctxData\" must return an object with keys");
48
- logger.info(`Custom "ctx" consists of the following keys: ${new Intl.ListFormat("en", {
49
- style: "long",
50
- type: "conjunction"
51
- }).format(Object.keys(additionalCtx))}`);
71
+ const additionalCtx = this.buildCtxData({
72
+ values,
73
+ ctxData,
74
+ logger
75
+ });
52
76
  ctx = {
53
77
  ...ctx,
54
78
  ...additionalCtx
@@ -56,7 +80,8 @@ var MultiStepFormStepSchemaInternal = class {
56
80
  }
57
81
  const updated = functionalUpdate(updater, {
58
82
  ctx,
59
- update: this.createHelperFnInputUpdate([targetStep])
83
+ update: this.createHelperFnInputUpdate([targetStep]),
84
+ reset: this.createHelperFnInputReset([targetStep])
60
85
  });
61
86
  logger.info(`The updated data is ${JSON.stringify(updated, null, 2)}`);
62
87
  if (fields === "all") {
@@ -90,16 +115,21 @@ var MultiStepFormStepSchemaInternal = class {
90
115
  ...updated,
91
116
  ...functions
92
117
  };
93
- const { mismatches, ok } = path.equalsAtPaths(obj, paths, actual);
94
- invariant(ok && mismatches.length === 0, () => {
95
- return `[update]: found value mismatches in ${path.formatMismatches({
96
- mismatches,
97
- ok
98
- })}`;
118
+ verifyUpdate({
119
+ strict,
120
+ partial,
121
+ obj,
122
+ paths,
123
+ actual
99
124
  });
100
125
  logger.info("The entire step will be updated");
101
126
  const currentUpdatedValue = updatedValue[stepKey];
102
- const updatedAtPath = path.updateAt(currentUpdatedValue, paths, actual);
127
+ const updatedAtPath = path.updateAt({
128
+ obj: currentUpdatedValue,
129
+ paths,
130
+ value: actual,
131
+ partial
132
+ });
103
133
  updatedValue = {
104
134
  ...updatedValue,
105
135
  [targetStep]: updatedAtPath
@@ -113,18 +143,25 @@ var MultiStepFormStepSchemaInternal = class {
113
143
  if (Array.isArray(fields)) {
114
144
  const compareResult = comparePartialArray(currentStepDeepKeys, fields);
115
145
  invariant(compareResult.status === "success", `[update]: Found errors with the provided fields\n${compareResult.status === "error" ? printErrors(compareResult.errors) : ""}`);
116
- const { mismatches, ok } = path.equalsAtPaths(currentStep, fields, updated);
117
- invariant(ok && mismatches.length === 0, `[update]: found value mismatches in ${path.printMismatches({
118
- ok,
119
- mismatches
120
- })}`);
146
+ verifyUpdate({
147
+ strict,
148
+ partial,
149
+ obj: currentStep,
150
+ paths: fields,
151
+ actual: updated
152
+ });
121
153
  logger.info(`The following fields will be updated: ${new Intl.ListFormat("en", {
122
154
  type: "conjunction",
123
155
  style: "long"
124
156
  }).format(fields)}`);
125
157
  updatedValue = {
126
158
  ...updatedValue,
127
- [targetStep]: path.updateAt(currentStep, fields, updated)
159
+ [targetStep]: path.updateAt({
160
+ obj: currentStep,
161
+ paths: fields,
162
+ value: updated,
163
+ partial
164
+ })
128
165
  };
129
166
  this.handlePostUpdate(updatedValue);
130
167
  logger.info(`The new value is: ${JSON.stringify(updatedValue, null, 2)}`);
@@ -134,14 +171,21 @@ var MultiStepFormStepSchemaInternal = class {
134
171
  const keys = path.createDeep(fields);
135
172
  const compareResult = comparePartialArray(currentStepDeepKeys, keys);
136
173
  invariant(compareResult.status === "success", `[update]: Found errors with the provided fields\n${compareResult.status === "error" ? printErrors(compareResult.errors) : ""}`);
137
- const { mismatches, ok } = path.equalsAtPaths(currentStep, keys, updated);
138
- invariant(ok && mismatches.length === 0, `[update]: found value mismatches in ${path.printMismatches({
139
- ok,
140
- mismatches
141
- })}`);
174
+ verifyUpdate({
175
+ strict,
176
+ partial,
177
+ obj: currentStep,
178
+ paths: keys,
179
+ actual: updated
180
+ });
142
181
  updatedValue = {
143
182
  ...updatedValue,
144
- [targetStep]: path.updateAt(currentStep, keys, updated)
183
+ [targetStep]: path.updateAt({
184
+ obj: currentStep,
185
+ paths: keys,
186
+ value: updated,
187
+ partial
188
+ })
145
189
  };
146
190
  logger.info(`The following fields will be updated: ${new Intl.ListFormat("en", {
147
191
  type: "conjunction",
@@ -172,7 +216,11 @@ var MultiStepFormStepSchemaInternal = class {
172
216
  const picked = path.pickBy(values, ...resolvedFields);
173
217
  config.updatedValues = {
174
218
  ...config.updatedValues,
175
- ...path.updateAt(values, fields, picked)
219
+ ...path.updateAt({
220
+ obj: values,
221
+ paths: fields,
222
+ value: picked
223
+ })
176
224
  };
177
225
  const message = `${new Intl.ListFormat("en", {
178
226
  style: "long",
@@ -244,13 +292,41 @@ var MultiStepFormStepSchemaInternal = class {
244
292
  }
245
293
  throw new TypeError(`[update]: ${HelperFnChosenSteps.CATCH_ALL_MESSAGE}`);
246
294
  }
295
+ createHelperFnInputReset(chosenSteps) {
296
+ if (HelperFnChosenSteps.isAll(chosenSteps)) {
297
+ const stepSpecificUpdateFn = typedObjectKeys(this.value).reduce((acc, key) => {
298
+ acc[key] = this.createStepResetterFn(key);
299
+ return acc;
300
+ }, {});
301
+ return Object.assign(this.reset, stepSpecificUpdateFn);
302
+ }
303
+ const validKeys = Object.keys(this.value);
304
+ if (HelperFnChosenSteps.isTuple(chosenSteps, validKeys)) {
305
+ const stepSpecificUpdateFn = chosenSteps.reduce((acc, step) => {
306
+ acc[step] = this.createStepResetterFn(step);
307
+ return acc;
308
+ }, {});
309
+ return Object.assign(this.reset, stepSpecificUpdateFn);
310
+ }
311
+ if (HelperFnChosenSteps.isObject(chosenSteps, validKeys)) {
312
+ const stepSpecificUpdateFn = typedObjectKeys(chosenSteps).reduce((acc, key) => {
313
+ acc[key] = this.createStepResetterFn(key);
314
+ return acc;
315
+ }, {});
316
+ return Object.assign(this.reset, stepSpecificUpdateFn);
317
+ }
318
+ throw new TypeError(`[update]: ${HelperFnChosenSteps.CATCH_ALL_MESSAGE}`);
319
+ }
247
320
  createStepHelperFn(stepData) {
248
321
  return (optionsOrFunction, fn) => {
249
- const createInputUpdateFn = this.createHelperFnInputUpdate(stepData);
322
+ const functions = {
323
+ update: this.createHelperFnInputUpdate(stepData),
324
+ reset: this.createHelperFnInputReset(stepData)
325
+ };
250
326
  if (typeof optionsOrFunction === "function") return () => {
251
327
  return optionsOrFunction({
252
328
  ctx: createCtx(this.value, stepData),
253
- update: createInputUpdateFn
329
+ ...functions
254
330
  });
255
331
  };
256
332
  if (typeof optionsOrFunction === "object") return (input) => {
@@ -269,13 +345,13 @@ var MultiStepFormStepSchemaInternal = class {
269
345
  }
270
346
  return fn({
271
347
  ctx: resolvedCtx,
272
- update: createInputUpdateFn,
348
+ ...functions,
273
349
  ...input
274
350
  });
275
351
  }
276
352
  return fn({
277
353
  ctx,
278
- update: createInputUpdateFn
354
+ ...functions
279
355
  });
280
356
  };
281
357
  throw new Error(`The first argument must be a function or an object, (was ${typeof optionsOrFunction})`);
@@ -1 +1 @@
1
- {"version":3,"file":"step-schema.mjs","names":["#originalValue","#additionalEnrichedProps","#getValue","#setValue","currentStep","actual: Record<string, unknown>"],"sources":["../../src/internals/step-schema.ts"],"sourcesContent":["import {\n createCtx,\n HelperFnChosenSteps,\n type AnyResolvedStep,\n type CreatedHelperFnInput,\n type CreateHelperFunctionOptionsWithoutValidator,\n type CreateHelperFunctionOptionsWithValidator,\n type HelperFnCtx,\n type helperFnUpdateFn,\n type HelperFnUpdateFn,\n type HelperFnWithoutValidator,\n type HelperFnWithValidator,\n type InferStepOptions,\n type ResetFn,\n type Step,\n type StepNumbers,\n type UpdateFn,\n type ValidStepKey,\n} from '@/steps';\nimport { functionalUpdate } from '@/steps/utils';\nimport {\n invariant,\n MultiStepFormLogger,\n type CasingType,\n type DeepKeys,\n} from '@/utils';\nimport {\n comparePartialArray,\n printErrors,\n typedObjectKeys,\n} from '@/utils/helpers';\nimport { path } from '@/utils/path';\nimport {\n runStandardValidation,\n type StandardSchemaValidator,\n} from '@/utils/validator';\nimport { createStep, isTupleNotation, isValidStepKey } from './utils';\n\nexport type InternalOptions<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TResolvedStep extends AnyResolvedStep,\n additionalEnrichedProps extends Record<string, unknown>\n> = {\n originalValue: InferStepOptions<TStep>;\n additionalEnrichedProps?: (step: number) => additionalEnrichedProps;\n /**\n * The resolved multi step form values.\n */\n getValue: () => TResolvedStep;\n /**\n * A function used for setting the `value`. It is called after the\n * `value` is updated successfully.\n * @param value The updated and enriched multi step form values.\n * @returns\n */\n setValue: (value: TResolvedStep) => void;\n};\n\nexport class MultiStepFormStepSchemaInternal<\n step extends Step<casing>,\n casing extends CasingType,\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends StepNumbers<resolvedStep>,\n additionalEnrichedProps extends Record<string, unknown> = {}\n> {\n readonly #originalValue: InferStepOptions<step>;\n readonly #additionalEnrichedProps?: (step: number) => additionalEnrichedProps;\n readonly #getValue: () => resolvedStep;\n readonly #setValue: (value: resolvedStep) => void;\n\n private get value() {\n return this.#getValue();\n }\n\n constructor(\n options: InternalOptions<\n step,\n casing,\n resolvedStep,\n additionalEnrichedProps\n >\n ) {\n const { getValue, setValue, originalValue, additionalEnrichedProps } =\n options;\n\n this.#originalValue = originalValue;\n this.#getValue = getValue;\n this.#setValue = setValue;\n this.#additionalEnrichedProps = additionalEnrichedProps;\n }\n\n private handlePostUpdate(value: resolvedStep) {\n this.#setValue(this.enrichValues(value));\n }\n\n private createStepUpdaterFnImpl<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n additionalCtx extends Record<string, unknown>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n additionalCtx,\n currentStep\n >\n ) {\n const { targetStep, ctxData, fields = 'all', debug } = options;\n const logger = new MultiStepFormLogger({\n debug,\n prefix: (value) => `${value}:update${targetStep}`,\n });\n\n logger.info(`${targetStep} will be updated`);\n invariant(\n isValidStepKey(this.value, targetStep),\n `[update]: The target step ${targetStep} isn't a valid step. Please select a valid step`\n );\n\n const { [targetStep]: currentStep, ...values } = this.value;\n\n invariant(\n 'updater' in options,\n '[update]: No \"updater\" was found. Please provide a value to the \"updater\" property'\n );\n\n const updater = options.updater;\n let updatedValue = { ...this.value };\n\n let ctx = createCtx(updatedValue, [targetStep]);\n\n // Build the `ctx` first\n if (ctxData) {\n invariant(\n typeof ctxData === 'function',\n '[update]: \"ctxData\" must be a function'\n );\n logger.info('Custom \"ctx\" will be used');\n\n const additionalCtx = ctxData({ ctx: values as never });\n\n invariant(\n typeof additionalCtx === 'object' &&\n Object.keys(additionalCtx).length > 0,\n '[update]: \"ctxData\" must return an object with keys'\n );\n\n logger.info(\n `Custom \"ctx\" consists of the following keys: ${new Intl.ListFormat(\n 'en',\n {\n style: 'long',\n type: 'conjunction',\n }\n ).format(Object.keys(additionalCtx))}`\n );\n\n ctx = {\n ...ctx,\n ...additionalCtx,\n };\n }\n\n const updated = functionalUpdate(updater, {\n ctx: ctx as never,\n update: this.createHelperFnInputUpdate([targetStep]),\n });\n logger.info(`The updated data is ${JSON.stringify(updated, null, 2)}`);\n\n // TODO validate `updater` - will have to be done in each case (I think)\n\n // default case: updating all fields for the current step\n if (fields === 'all') {\n invariant(\n typeof updated === 'object',\n '[update]: \"updater\" must be an object or a function that returns an object'\n );\n\n const functionKeys = new Set(['update', 'reset', 'createHelperFn']);\n const stepKeys = Object.keys(this.value);\n const updaterResultKeys = Object.keys(\n updated as Record<string, unknown>\n ).filter((value) => !functionKeys.has(value));\n const missingKeys = stepKeys.filter(\n (key) => !updaterResultKeys.includes(key)\n );\n\n for (const stepKey of stepKeys) {\n const { update, reset, createHelperFn, ...currentStep } = this.value[\n stepKey\n ] as resolvedStep[keyof resolvedStep];\n\n invariant(\n updaterResultKeys.length === Object.keys(currentStep).length,\n (formatter) => {\n return `[update]: \"updater\" is missing keys ${formatter.format(\n missingKeys\n )}`;\n }\n );\n const functions = { update, reset, createHelperFn };\n const obj = { ...currentStep, update, reset, createHelperFn };\n const paths = path.createDeep(obj);\n const actual: Record<string, unknown> = {\n ...updated,\n ...functions,\n };\n\n const { mismatches, ok } = path.equalsAtPaths(\n obj,\n paths,\n actual as never\n );\n\n invariant(ok && mismatches.length === 0, () => {\n const formatted = path.formatMismatches({ mismatches, ok });\n\n return `[update]: found value mismatches in ${formatted}`;\n });\n\n logger.info('The entire step will be updated');\n\n const currentUpdatedValue = updatedValue[stepKey] as Record<\n string,\n unknown\n >;\n const updatedAtPath = path.updateAt(\n currentUpdatedValue,\n paths,\n actual as never\n );\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: updatedAtPath,\n };\n\n this.handlePostUpdate(updatedValue);\n logger.info(\n `The new value is: ${JSON.stringify(updatedValue, null, 2)}`\n );\n }\n\n return;\n }\n\n const currentStepDeepKeys = path.createDeep(currentStep);\n\n if (Array.isArray(fields)) {\n const compareResult = comparePartialArray(currentStepDeepKeys, fields);\n\n invariant(\n compareResult.status === 'success',\n `[update]: Found errors with the provided fields\\n${\n compareResult.status === 'error'\n ? printErrors(compareResult.errors)\n : ''\n }`\n );\n\n const { mismatches, ok } = path.equalsAtPaths(\n currentStep,\n fields,\n updated as never\n );\n\n invariant(\n ok && mismatches.length === 0,\n `[update]: found value mismatches in ${path.printMismatches({\n ok,\n mismatches,\n })}`\n );\n\n logger.info(\n `The following fields will be updated: ${new Intl.ListFormat('en', {\n type: 'conjunction',\n style: 'long',\n }).format(fields)}`\n );\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: path.updateAt(currentStep, fields, updated as never),\n };\n\n this.handlePostUpdate(updatedValue);\n logger.info(`The new value is: ${JSON.stringify(updatedValue, null, 2)}`);\n\n return;\n }\n\n if (typeof fields === 'object' && Object.keys(fields).length > 0) {\n const keys = path.createDeep(fields);\n const compareResult = comparePartialArray(\n currentStepDeepKeys,\n keys as never\n );\n\n invariant(\n compareResult.status === 'success',\n `[update]: Found errors with the provided fields\\n${\n compareResult.status === 'error'\n ? printErrors(compareResult.errors)\n : ''\n }`\n );\n\n // TODO validate all values (deepest) are `true`\n const { mismatches, ok } = path.equalsAtPaths(\n currentStep,\n keys as never,\n updated as never\n );\n\n invariant(\n ok && mismatches.length === 0,\n `[update]: found value mismatches in ${path.printMismatches({\n ok,\n mismatches,\n })}`\n );\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: path.updateAt(\n currentStep,\n keys as never,\n updated as never\n ),\n };\n\n logger.info(\n `The following fields will be updated: ${new Intl.ListFormat('en', {\n type: 'conjunction',\n style: 'long',\n }).format(Object.keys(fields))}`\n );\n this.handlePostUpdate(updatedValue);\n logger.info(`The new value is: ${JSON.stringify(updatedValue, null, 2)}`);\n\n return;\n }\n\n logger.error('Unsupported value for the \"fields\" option');\n throw new TypeError(\n `[update]: property \"fields\" must be set to one of the following: \"all\", an array of deep paths to update, or an object of paths. Was ${typeof updater}`,\n { cause: updater }\n );\n }\n\n createStepUpdaterFn<targetStep extends ValidStepKey<stepNumbers>>(\n targetStep: targetStep\n ): UpdateFn.stepSpecific<resolvedStep, stepNumbers, targetStep> {\n return (options) => {\n this.createStepUpdaterFnImpl({ targetStep, ...options });\n };\n }\n\n update<\n targetStep extends ValidStepKey<stepNumbers>,\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>\n > = 'all',\n additionalCtx extends Record<string, unknown> = {}\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n field,\n additionalCtx\n >\n ) {\n return this.createStepUpdaterFnImpl(options);\n }\n\n private resetFields<\n targetStep extends ValidStepKey<stepNumbers>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(config: {\n targetStep: targetStep;\n values: AnyResolvedStep;\n updatedValues: AnyResolvedStep;\n logger: MultiStepFormLogger;\n }) {\n return <\n fields extends HelperFnChosenSteps.tupleNotation<DeepKeys<currentStep>>\n >(\n fields: fields\n ) => {\n const { targetStep, logger, values } = config;\n const resolvedFields = fields.map((value) => `${targetStep}.${value}`);\n const picked = path.pickBy<resolvedStep, DeepKeys<resolvedStep>>(\n values,\n ...(resolvedFields as any)\n );\n\n config.updatedValues = {\n ...config.updatedValues,\n ...path.updateAt(values, fields, picked),\n };\n\n const formatter = new Intl.ListFormat('en', {\n style: 'long',\n type: 'conjunction',\n });\n const message = `${formatter.format(fields)} for ${targetStep}`;\n\n logger.info(`Resetting ${message}`);\n this.handlePostUpdate(config.updatedValues);\n logger.info(`Reset ${message}`);\n };\n }\n\n private createStepResetterFnImpl<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n const { fields = 'all', targetStep, debug } = options;\n const logger = new MultiStepFormLogger({\n debug,\n prefix: (value) => `${value}:reset${targetStep}`,\n });\n invariant(\n fields,\n '[update]: \"fields\" must have a value when \"type\" is \"reset\"'\n );\n\n const originalValues = createStep(this.#originalValue);\n const enrichedOriginalValues = this.enrichValues<\n resolvedStep,\n additionalEnrichedProps\n >(originalValues as never, this.#additionalEnrichedProps);\n\n if (fields === 'all') {\n logger.info(`Resetting all fields for ${targetStep}`);\n this.handlePostUpdate(enrichedOriginalValues);\n logger.info(`Reset all fields for ${targetStep}`);\n }\n\n let updatedValues = { ...enrichedOriginalValues };\n const reset = this.resetFields<targetStep, currentStep>({\n logger,\n targetStep,\n updatedValues,\n values: enrichedOriginalValues,\n });\n\n if (isTupleNotation<DeepKeys<currentStep>>(fields)) {\n reset(fields);\n }\n\n if (typeof fields === 'object' && Object.keys(fields).length > 0) {\n const keys = path.createDeep(fields);\n\n reset(keys as never);\n }\n }\n\n createStepResetterFn<targetStep extends ValidStepKey<stepNumbers>>(\n targetStep: targetStep\n ): ResetFn.stepSpecific<resolvedStep, stepNumbers, targetStep> {\n return (options) => {\n return this.createStepResetterFnImpl({\n targetStep,\n fields: options?.fields ?? 'all',\n debug: options?.debug ?? false,\n });\n };\n }\n\n reset<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n this.createStepResetterFnImpl(options);\n }\n\n createHelperFnInputUpdate<\n chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>\n >(chosenSteps: chosenSteps) {\n if (HelperFnChosenSteps.isAll(chosenSteps)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n resolvedStep,\n ValidStepKey<stepNumbers>\n >(this.value).reduce((acc, key) => {\n acc[key] = this.createStepUpdaterFn(key);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n const validKeys = Object.keys(this.value);\n\n if (HelperFnChosenSteps.isTuple<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = chosenSteps.reduce((acc, step) => {\n acc[step] = this.createStepUpdaterFn(step);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n if (HelperFnChosenSteps.isObject<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n HelperFnChosenSteps.objectNotation<`step${stepNumbers}`>,\n ValidStepKey<stepNumbers>\n >(chosenSteps).reduce((acc, key) => {\n acc[key] = this.createStepUpdaterFn(key);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n throw new TypeError(`[update]: ${HelperFnChosenSteps.CATCH_ALL_MESSAGE}`);\n }\n\n createStepHelperFn<\n chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>\n >(stepData: chosenSteps) {\n return <validator, additionalCtx extends Record<string, unknown>, response>(\n optionsOrFunction:\n | Omit<\n CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >,\n 'stepData'\n >\n | Omit<\n CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >,\n 'stepData'\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >,\n fn:\n | HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ) => {\n const createInputUpdateFn = this.createHelperFnInputUpdate(\n stepData\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n if (typeof optionsOrFunction === 'function') {\n return () => {\n // Create ctx fresh each time the function is called to ensure it has the latest this.value\n const ctx = createCtx<resolvedStep, stepNumbers, chosenSteps>(\n this.value,\n stepData\n ) as never;\n return optionsOrFunction({\n ctx,\n update: createInputUpdateFn,\n });\n };\n }\n\n if (typeof optionsOrFunction === 'object') {\n return (input?: CreatedHelperFnInput<validator>) => {\n // Create ctx fresh each time the function is called to ensure it has the latest this.value\n const ctx = createCtx<resolvedStep, stepNumbers, chosenSteps>(\n this.value,\n stepData\n ) as never;\n\n if ('validator' in optionsOrFunction) {\n invariant(\n typeof input === 'object',\n 'An input is expected since you provided a validator'\n );\n\n runStandardValidation(\n optionsOrFunction.validator as StandardSchemaValidator,\n input.data\n );\n\n let resolvedCtx = ctx as HelperFnCtx<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >;\n\n if (optionsOrFunction.ctxData) {\n const currentStepKey = (\n stepData as HelperFnChosenSteps.tupleNotation<\n ValidStepKey<stepNumbers>\n >\n )[0] as keyof resolvedStep;\n const { [currentStepKey]: _, ...values } = this.value;\n\n resolvedCtx = {\n ...resolvedCtx,\n ...optionsOrFunction.ctxData({ ctx: values as never }),\n };\n }\n\n return fn({\n ctx: resolvedCtx as never,\n update: createInputUpdateFn,\n ...input,\n });\n }\n\n return (\n fn as HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n )({\n ctx,\n update: createInputUpdateFn,\n });\n };\n }\n\n throw new Error(\n `The first argument must be a function or an object, (was ${typeof optionsOrFunction})`\n );\n };\n }\n\n private extractStepFromKey(key: string) {\n const [targetStep] = [key] as HelperFnChosenSteps.tupleNotation<\n ValidStepKey<stepNumbers>\n >;\n const step = Number.parseInt(targetStep.replace('step', '')) as stepNumbers;\n\n return { targetStep, step };\n }\n\n enrichValues<\n values extends AnyResolvedStep,\n additionalProps extends Record<string, unknown>\n >(values: values, additionalProps?: (step: number) => additionalProps) {\n let enriched = { ...values };\n\n for (const [key, stepValue] of Object.entries(enriched)) {\n const { step, targetStep } = this.extractStepFromKey(key);\n\n enriched[targetStep] = {\n ...stepValue,\n update: this.createStepUpdaterFn(targetStep),\n reset: this.createStepResetterFn(targetStep),\n createHelperFn: this.createStepHelperFn([targetStep]),\n ...additionalProps?.(step),\n };\n }\n\n return enriched;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"step-schema.mjs","names":["#originalValue","#additionalEnrichedProps","#getValue","#setValue","currentStep","actual: Record<string, unknown>"],"sources":["../../src/internals/step-schema.ts"],"sourcesContent":["import {\n createCtx,\n HelperFnChosenSteps,\n type AnyResolvedStep,\n type CreatedHelperFnInput,\n type CreateHelperFunctionOptionsWithoutValidator,\n type CreateHelperFunctionOptionsWithValidator,\n type CtxDataSelector,\n type HelperFnCtx,\n type helperFnResetFn,\n type HelperFnResetFn,\n type helperFnUpdateFn,\n type HelperFnUpdateFn,\n type HelperFnWithoutValidator,\n type HelperFnWithValidator,\n type InferStepOptions,\n type ResetFn,\n type Step,\n type StepNumbers,\n type UpdateFn,\n type ValidStepKey,\n} from '@/steps';\nimport { functionalUpdate } from '@/steps/utils';\nimport {\n invariant,\n MultiStepFormLogger,\n type CasingType,\n type DeepKeys,\n} from '@/utils';\nimport {\n comparePartialArray,\n printErrors,\n typedObjectKeys,\n} from '@/utils/helpers';\nimport { path } from '@/utils/path';\nimport {\n runStandardValidation,\n type StandardSchemaValidator,\n} from '@/utils/validator';\nimport { createStep, isTupleNotation, isValidStepKey } from './utils';\n\nexport type InternalOptions<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TResolvedStep extends AnyResolvedStep,\n additionalEnrichedProps extends Record<string, unknown>\n> = {\n originalValue: InferStepOptions<TStep>;\n additionalEnrichedProps?: (step: number) => additionalEnrichedProps;\n /**\n * The resolved multi step form values.\n */\n getValue: () => TResolvedStep;\n /**\n * A function used for setting the `value`. It is called after the\n * `value` is updated successfully.\n * @param value The updated and enriched multi step form values.\n * @returns\n */\n setValue: (value: TResolvedStep) => void;\n};\n\nfunction verifyUpdate<def, paths extends DeepKeys<def>>(options: {\n strict: boolean;\n partial: boolean;\n obj: def;\n paths: paths[];\n actual: path.pickBy<def, paths>;\n}) {\n const { strict, partial, actual, obj, paths } = options;\n\n // Define the logic for when the update is considered valid\n const { mismatches, ok } = path.equalsAtPaths(obj, paths, actual);\n\n let isValid = true;\n\n if (strict) {\n isValid = ok && mismatches.length === 0;\n }\n\n if (partial) {\n const mismatchesWithoutMissingKey = mismatches.filter(\n ({ reason }) => reason !== 'missing-key'\n );\n\n if (strict) {\n isValid = mismatchesWithoutMissingKey.length === 0;\n } else {\n const withoutExtraKey = mismatchesWithoutMissingKey.filter(\n ({ reason }) => reason !== 'extra-key'\n );\n\n isValid = withoutExtraKey.length === 0;\n }\n }\n\n invariant(\n isValid,\n `[update]: found value mismatches in ${path.printMismatches({\n ok,\n mismatches,\n })}`\n );\n}\n\nexport class MultiStepFormStepSchemaInternal<\n step extends Step<casing>,\n casing extends CasingType,\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends StepNumbers<resolvedStep>,\n additionalEnrichedProps extends Record<string, unknown> = {}\n> {\n readonly #originalValue: InferStepOptions<step>;\n readonly #additionalEnrichedProps?: (step: number) => additionalEnrichedProps;\n readonly #getValue: () => resolvedStep;\n readonly #setValue: (value: resolvedStep) => void;\n\n private get value() {\n return this.#getValue();\n }\n\n constructor(\n options: InternalOptions<\n step,\n casing,\n resolvedStep,\n additionalEnrichedProps\n >\n ) {\n const { getValue, setValue, originalValue, additionalEnrichedProps } =\n options;\n\n this.#originalValue = originalValue;\n this.#getValue = getValue;\n this.#setValue = setValue;\n this.#additionalEnrichedProps = additionalEnrichedProps;\n }\n\n private handlePostUpdate(value: resolvedStep) {\n this.#setValue(this.enrichValues(value));\n }\n\n private buildCtxData<\n targetStep extends ValidStepKey<stepNumbers>,\n additionalCtx extends Record<string, unknown>\n >(\n options: Required<\n CtxDataSelector<resolvedStep, stepNumbers, [targetStep], additionalCtx>\n > & {\n values: Omit<resolvedStep, targetStep>;\n logger: MultiStepFormLogger;\n }\n ) {\n const { logger, values, ctxData } = options;\n invariant(\n typeof ctxData === 'function',\n '[update]: \"ctxData\" must be a function'\n );\n logger.info('Custom \"ctx\" will be used');\n\n const additionalCtx = ctxData({ ctx: values as never });\n\n invariant(\n typeof additionalCtx === 'object' &&\n Object.keys(additionalCtx).length > 0,\n '[update]: \"ctxData\" must return an object with keys'\n );\n\n logger.info(\n `Custom \"ctx\" consists of the following keys: ${new Intl.ListFormat(\n 'en',\n {\n style: 'long',\n type: 'conjunction',\n }\n ).format(Object.keys(additionalCtx))}`\n );\n\n return additionalCtx;\n }\n\n private createStepUpdaterFnImpl<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>\n >,\n strict extends boolean,\n partial extends boolean,\n additionalCtx extends Record<string, unknown>,\n additionalUpdaterData extends UpdateFn.additionalUpdaterData\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n strict,\n partial,\n additionalCtx,\n additionalUpdaterData\n >\n ) {\n const {\n targetStep,\n ctxData,\n fields = 'all',\n debug,\n partial = false,\n strict = true,\n } = options;\n const logger = new MultiStepFormLogger({\n debug,\n prefix: (value) => `${value}:update${targetStep}`,\n });\n\n logger.info(`${targetStep} will be updated`);\n invariant(\n isValidStepKey(this.value, targetStep),\n `[update]: The target step ${targetStep} isn't a valid step. Please select a valid step`\n );\n\n const { [targetStep]: currentStep, ...values } = this.value;\n\n invariant(\n 'updater' in options,\n '[update]: No \"updater\" was found. Please provide a value to the \"updater\" property'\n );\n\n const updater = options.updater;\n let updatedValue = { ...this.value };\n\n let ctx = createCtx(updatedValue, [targetStep]);\n\n // Build the `ctx` first\n if (ctxData) {\n const additionalCtx = this.buildCtxData({\n values,\n ctxData,\n logger,\n });\n\n ctx = {\n ...ctx,\n ...additionalCtx,\n };\n }\n\n const updated = functionalUpdate(updater, {\n ctx: ctx as never,\n update: this.createHelperFnInputUpdate([targetStep]),\n reset: this.createHelperFnInputReset([targetStep]),\n });\n logger.info(`The updated data is ${JSON.stringify(updated, null, 2)}`);\n\n // TODO validate `updater` - will have to be done in each case (I think)\n\n // default case: updating all fields for the current step\n if (fields === 'all') {\n invariant(\n typeof updated === 'object',\n '[update]: \"updater\" must be an object or a function that returns an object'\n );\n\n const functionKeys = new Set(['update', 'reset', 'createHelperFn']);\n const stepKeys = Object.keys(this.value);\n const updaterResultKeys = Object.keys(\n updated as Record<string, unknown>\n ).filter((value) => !functionKeys.has(value));\n const missingKeys = stepKeys.filter(\n (key) => !updaterResultKeys.includes(key)\n );\n\n for (const stepKey of stepKeys) {\n const { update, reset, createHelperFn, ...currentStep } = this.value[\n stepKey\n ] as resolvedStep[keyof resolvedStep];\n\n invariant(\n updaterResultKeys.length === Object.keys(currentStep).length,\n (formatter) => {\n return `[update]: \"updater\" is missing keys ${formatter.format(\n missingKeys\n )}`;\n }\n );\n const functions = { update, reset, createHelperFn };\n const obj = { ...currentStep, update, reset, createHelperFn };\n const paths = path.createDeep(obj);\n const actual: Record<string, unknown> = {\n ...updated,\n ...functions,\n };\n\n verifyUpdate({\n strict,\n partial,\n obj,\n paths,\n actual: actual as never,\n });\n\n logger.info('The entire step will be updated');\n\n const currentUpdatedValue = updatedValue[stepKey] as Record<\n string,\n unknown\n >;\n const updatedAtPath = path.updateAt({\n obj: currentUpdatedValue,\n paths,\n value: actual as never,\n partial,\n });\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: updatedAtPath,\n };\n\n this.handlePostUpdate(updatedValue);\n logger.info(\n `The new value is: ${JSON.stringify(updatedValue, null, 2)}`\n );\n }\n\n return;\n }\n\n const currentStepDeepKeys = path.createDeep(currentStep);\n\n if (Array.isArray(fields)) {\n const compareResult = comparePartialArray(currentStepDeepKeys, fields);\n\n invariant(\n compareResult.status === 'success',\n `[update]: Found errors with the provided fields\\n${\n compareResult.status === 'error'\n ? printErrors(compareResult.errors)\n : ''\n }`\n );\n\n verifyUpdate({\n strict,\n partial,\n obj: currentStep,\n paths: fields,\n actual: updated as never,\n });\n\n logger.info(\n `The following fields will be updated: ${new Intl.ListFormat('en', {\n type: 'conjunction',\n style: 'long',\n }).format(fields)}`\n );\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: path.updateAt({\n obj: currentStep,\n paths: fields,\n value: updated as never,\n partial,\n }),\n };\n\n this.handlePostUpdate(updatedValue);\n logger.info(`The new value is: ${JSON.stringify(updatedValue, null, 2)}`);\n\n return;\n }\n\n if (typeof fields === 'object' && Object.keys(fields).length > 0) {\n const keys = path.createDeep(fields);\n const compareResult = comparePartialArray(\n currentStepDeepKeys,\n keys as never\n );\n\n invariant(\n compareResult.status === 'success',\n `[update]: Found errors with the provided fields\\n${\n compareResult.status === 'error'\n ? printErrors(compareResult.errors)\n : ''\n }`\n );\n\n // TODO validate all values (deepest) are `true`\n verifyUpdate({\n strict,\n partial,\n obj: currentStep,\n paths: keys as never,\n actual: updated as never,\n });\n\n updatedValue = {\n ...updatedValue,\n [targetStep]: path.updateAt({\n obj: currentStep,\n paths: keys as never,\n value: updated as never,\n partial,\n }),\n };\n\n logger.info(\n `The following fields will be updated: ${new Intl.ListFormat('en', {\n type: 'conjunction',\n style: 'long',\n }).format(Object.keys(fields))}`\n );\n this.handlePostUpdate(updatedValue);\n logger.info(`The new value is: ${JSON.stringify(updatedValue, null, 2)}`);\n\n return;\n }\n\n logger.error('Unsupported value for the \"fields\" option');\n throw new TypeError(\n `[update]: property \"fields\" must be set to one of the following: \"all\", an array of deep paths to update, or an object of paths. Was ${typeof updater}`,\n { cause: updater }\n );\n }\n\n createStepUpdaterFn<targetStep extends ValidStepKey<stepNumbers>>(\n targetStep: targetStep\n ): UpdateFn.stepSpecific<resolvedStep, stepNumbers, targetStep> {\n return (options) => {\n this.createStepUpdaterFnImpl({ targetStep, ...options });\n };\n }\n\n update<\n targetStep extends ValidStepKey<stepNumbers>,\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>\n > = 'all',\n strict extends boolean = true,\n partial extends boolean = false,\n additionalCtx extends Record<string, unknown> = {},\n additionalUpdaterData extends UpdateFn.additionalUpdaterData = never\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n field,\n strict,\n partial,\n additionalCtx,\n additionalUpdaterData\n >\n ) {\n return this.createStepUpdaterFnImpl(options);\n }\n\n private resetFields<\n targetStep extends ValidStepKey<stepNumbers>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(config: {\n targetStep: targetStep;\n values: AnyResolvedStep;\n updatedValues: AnyResolvedStep;\n logger: MultiStepFormLogger;\n }) {\n return <\n fields extends HelperFnChosenSteps.tupleNotation<DeepKeys<currentStep>>\n >(\n fields: fields\n ) => {\n const { targetStep, logger, values } = config;\n const resolvedFields = fields.map((value) => `${targetStep}.${value}`);\n const picked = path.pickBy<resolvedStep, DeepKeys<resolvedStep>>(\n values,\n ...(resolvedFields as any)\n );\n\n config.updatedValues = {\n ...config.updatedValues,\n ...path.updateAt({\n obj: values,\n paths: fields,\n value: picked,\n }),\n };\n\n const formatter = new Intl.ListFormat('en', {\n style: 'long',\n type: 'conjunction',\n });\n const message = `${formatter.format(fields)} for ${targetStep}`;\n\n logger.info(`Resetting ${message}`);\n this.handlePostUpdate(config.updatedValues);\n logger.info(`Reset ${message}`);\n };\n }\n\n private createStepResetterFnImpl<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n const { fields = 'all', targetStep, debug } = options;\n const logger = new MultiStepFormLogger({\n debug,\n prefix: (value) => `${value}:reset${targetStep}`,\n });\n invariant(\n fields,\n '[update]: \"fields\" must have a value when \"type\" is \"reset\"'\n );\n\n const originalValues = createStep(this.#originalValue);\n const enrichedOriginalValues = this.enrichValues<\n resolvedStep,\n additionalEnrichedProps\n >(originalValues as never, this.#additionalEnrichedProps);\n\n if (fields === 'all') {\n logger.info(`Resetting all fields for ${targetStep}`);\n this.handlePostUpdate(enrichedOriginalValues);\n logger.info(`Reset all fields for ${targetStep}`);\n }\n\n let updatedValues = { ...enrichedOriginalValues };\n const reset = this.resetFields<targetStep, currentStep>({\n logger,\n targetStep,\n updatedValues,\n values: enrichedOriginalValues,\n });\n\n if (isTupleNotation<DeepKeys<currentStep>>(fields)) {\n reset(fields);\n }\n\n if (typeof fields === 'object' && Object.keys(fields).length > 0) {\n const keys = path.createDeep(fields);\n\n reset(keys as never);\n }\n }\n\n createStepResetterFn<targetStep extends ValidStepKey<stepNumbers>>(\n targetStep: targetStep\n ): ResetFn.stepSpecific<resolvedStep, stepNumbers, targetStep> {\n return (options) => {\n return this.createStepResetterFnImpl({\n targetStep,\n fields: options?.fields ?? 'all',\n debug: options?.debug ?? false,\n });\n };\n }\n\n reset<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n this.createStepResetterFnImpl(options);\n }\n\n createHelperFnInputUpdate<\n chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>\n >(chosenSteps: chosenSteps) {\n if (HelperFnChosenSteps.isAll(chosenSteps)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n resolvedStep,\n ValidStepKey<stepNumbers>\n >(this.value).reduce((acc, key) => {\n acc[key] = this.createStepUpdaterFn(key);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n const validKeys = Object.keys(this.value);\n\n if (HelperFnChosenSteps.isTuple<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = chosenSteps.reduce((acc, step) => {\n acc[step] = this.createStepUpdaterFn(step);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n if (HelperFnChosenSteps.isObject<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n HelperFnChosenSteps.objectNotation<`step${stepNumbers}`>,\n ValidStepKey<stepNumbers>\n >(chosenSteps).reduce((acc, key) => {\n acc[key] = this.createStepUpdaterFn(key);\n\n return acc;\n }, {} as helperFnUpdateFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const update = Object.assign(\n this.update,\n stepSpecificUpdateFn\n ) as HelperFnUpdateFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return update;\n }\n\n throw new TypeError(`[update]: ${HelperFnChosenSteps.CATCH_ALL_MESSAGE}`);\n }\n\n createHelperFnInputReset<\n chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>\n >(chosenSteps: chosenSteps) {\n if (HelperFnChosenSteps.isAll(chosenSteps)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n resolvedStep,\n ValidStepKey<stepNumbers>\n >(this.value).reduce((acc, key) => {\n acc[key] = this.createStepResetterFn(key);\n\n return acc;\n }, {} as helperFnResetFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const reset = Object.assign(\n this.reset,\n stepSpecificUpdateFn\n ) as HelperFnResetFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return reset;\n }\n\n const validKeys = Object.keys(this.value);\n\n if (HelperFnChosenSteps.isTuple<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = chosenSteps.reduce((acc, step) => {\n acc[step] = this.createStepResetterFn(step);\n\n return acc;\n }, {} as helperFnResetFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const reset = Object.assign(\n this.reset,\n stepSpecificUpdateFn\n ) as HelperFnResetFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return reset;\n }\n\n if (HelperFnChosenSteps.isObject<stepNumbers>(chosenSteps, validKeys)) {\n const stepSpecificUpdateFn = typedObjectKeys<\n HelperFnChosenSteps.objectNotation<`step${stepNumbers}`>,\n ValidStepKey<stepNumbers>\n >(chosenSteps).reduce((acc, key) => {\n acc[key] = this.createStepResetterFn(key);\n\n return acc;\n }, {} as helperFnResetFn<resolvedStep, stepNumbers, ValidStepKey<stepNumbers>>);\n const reset = Object.assign(\n this.reset,\n stepSpecificUpdateFn\n ) as HelperFnResetFn<resolvedStep, stepNumbers, chosenSteps>;\n\n return reset;\n }\n\n throw new TypeError(`[update]: ${HelperFnChosenSteps.CATCH_ALL_MESSAGE}`);\n }\n\n createStepHelperFn<\n chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>\n >(stepData: chosenSteps) {\n return <validator, additionalCtx extends Record<string, unknown>, response>(\n optionsOrFunction:\n | Omit<\n CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >,\n 'stepData'\n >\n | Omit<\n CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >,\n 'stepData'\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >,\n fn:\n | HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ) => {\n const functions = {\n update: this.createHelperFnInputUpdate(stepData),\n reset: this.createHelperFnInputReset(stepData),\n };\n\n if (typeof optionsOrFunction === 'function') {\n return () => {\n // Create ctx fresh each time the function is called to ensure it has the latest this.value\n const ctx = createCtx<resolvedStep, stepNumbers, chosenSteps>(\n this.value,\n stepData\n ) as never;\n return optionsOrFunction({\n ctx,\n ...functions,\n });\n };\n }\n\n if (typeof optionsOrFunction === 'object') {\n return (input?: CreatedHelperFnInput<validator>) => {\n // Create ctx fresh each time the function is called to ensure it has the latest this.value\n const ctx = createCtx<resolvedStep, stepNumbers, chosenSteps>(\n this.value,\n stepData\n ) as never;\n\n if ('validator' in optionsOrFunction) {\n invariant(\n typeof input === 'object',\n 'An input is expected since you provided a validator'\n );\n\n runStandardValidation(\n optionsOrFunction.validator as StandardSchemaValidator,\n input.data\n );\n\n let resolvedCtx = ctx as HelperFnCtx<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >;\n\n if (optionsOrFunction.ctxData) {\n const currentStepKey = (\n stepData as HelperFnChosenSteps.tupleNotation<\n ValidStepKey<stepNumbers>\n >\n )[0] as keyof resolvedStep;\n const { [currentStepKey]: _, ...values } = this.value;\n\n resolvedCtx = {\n ...resolvedCtx,\n ...optionsOrFunction.ctxData({ ctx: values as never }),\n };\n }\n\n return fn({\n ctx: resolvedCtx as never,\n ...functions,\n ...input,\n });\n }\n\n return (\n fn as HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n )({\n ctx,\n ...functions,\n });\n };\n }\n\n throw new Error(\n `The first argument must be a function or an object, (was ${typeof optionsOrFunction})`\n );\n };\n }\n\n private extractStepFromKey(key: string) {\n const [targetStep] = [key] as HelperFnChosenSteps.tupleNotation<\n ValidStepKey<stepNumbers>\n >;\n const step = Number.parseInt(targetStep.replace('step', '')) as stepNumbers;\n\n return { targetStep, step };\n }\n\n enrichValues<\n values extends AnyResolvedStep,\n additionalProps extends Record<string, unknown>\n >(values: values, additionalProps?: (step: number) => additionalProps) {\n let enriched = { ...values };\n\n for (const [key, stepValue] of Object.entries(enriched)) {\n const { step, targetStep } = this.extractStepFromKey(key);\n\n enriched[targetStep] = {\n ...stepValue,\n update: this.createStepUpdaterFn(targetStep),\n reset: this.createStepResetterFn(targetStep),\n createHelperFn: this.createStepHelperFn([targetStep]),\n ...additionalProps?.(step),\n };\n }\n\n return enriched;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.cjs","names":["Subscribable","#internal","setCasingType","createStep","MultiStepFormStorage","DEFAULT_STORAGE_KEY","MultiStepFormStepSchemaInternal","isValidStepKey","getStep","v","isCasingValid","isFieldType","fields","fieldsUtils"],"sources":["../../src/steps/schema.ts"],"sourcesContent":["import { MultiStepFormStepSchemaInternal } from '@/internals/step-schema';\nimport {\n DEFAULT_STORAGE_KEY,\n DefaultStorageKey,\n MultiStepFormStorage,\n} from '@/storage';\nimport {\n isCasingValid,\n isFieldType,\n setCasingType,\n type CasingType,\n type Constrain,\n type DefaultCasing,\n type Expand,\n type Join,\n} from '@/utils';\nimport { invariant } from '@/utils/invariant';\nimport { Subscribable } from '../subscribable';\nimport { fields as fieldsUtils } from './fields';\nimport {\n AnyResolvedStep,\n AnyStepField,\n AnyStepFieldOption,\n CreateHelperFunctionOptionsWithCustomCtxOptions,\n CreateHelperFunctionOptionsWithValidator,\n CreateHelperFunctionOptionsWithoutValidator,\n CreateStepHelperFn,\n CreatedHelperFnWithInput,\n CreatedHelperFnWithoutInput,\n ExtractStepFromKey,\n FirstStep,\n GetCurrentStep,\n HelperFnChosenSteps,\n HelperFnWithValidator,\n HelperFnWithoutValidator,\n InferStepOptions,\n LastStep,\n MultiStepFormSchemaStepConfig,\n ResolvedFields,\n ResolvedStep,\n Step,\n StepData,\n StepNumbers,\n StepOptions,\n UnionToTuple,\n UpdateFn,\n ValidStepKey,\n type ResetFn,\n} from './types';\nimport { getStep, type GetStepOptions } from './utils';\nimport { createStep, isValidStepKey } from '@/internals/utils';\n\nexport interface MultiStepFormStepSchemaFunctions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>\n> {\n update: UpdateFn.general<TResolvedStep, TStepNumbers>;\n createHelperFn: CreateStepHelperFn<TResolvedStep, TStepNumbers>;\n}\nexport type AsType = (typeof AS_TYPES)[number];\ntype Quote<T extends string[]> = {\n [K in keyof T]: T[K] extends string ? `'${T[K]}'` : never;\n};\nexport type AsTypeMap<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>\n> = {\n // Exclude is needed due to all the Constrains\n string: Exclude<\n Join<\n Constrain<\n Quote<Constrain<UnionToTuple<`${stepNumbers}`>, string[]>>,\n string[]\n >,\n ' | '\n >,\n ''\n >;\n number: Exclude<\n Join<Constrain<UnionToTuple<`${stepNumbers}`>, string[]>, ' | '>,\n ''\n >;\n 'array.string': UnionToTuple<`${stepNumbers}`>;\n 'array.string.untyped': string[];\n};\nexport type AsFunctionReturn<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>,\n asType extends AsType\n> = AsTypeMap<resolvedStep, stepNumbers>[asType];\nexport type AsFunction<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>\n> = <asType extends AsType>(\n asType: asType\n) => AsFunctionReturn<resolvedStep, stepNumbers, asType>;\nexport type MultiStepFormStepStepsConfig<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TResolvedStep extends ResolvedStep<TStep, TCasing> = ResolvedStep<\n TStep,\n TCasing\n >,\n TStepNumbers extends StepNumbers<TResolvedStep> = StepNumbers<TResolvedStep>\n> = {\n first: FirstStep<TResolvedStep>;\n last: LastStep<TResolvedStep>;\n value: ReadonlyArray<TStepNumbers>;\n as: AsFunction<TResolvedStep, TStepNumbers>;\n isValidStepNumber: (stepNumber: number) => stepNumber is TStepNumbers;\n isValidStepKey: (\n value: string\n ) => value is Constrain<keyof TResolvedStep, string>;\n};\nexport type MultiStepFormStepSchemaListener<\n TStep extends Step<TCasing>,\n TCasing extends CasingType\n> = (data: {\n original: InferStepOptions<TStep>;\n value: ResolvedStep<TStep, TCasing>;\n steps: MultiStepFormStepStepsConfig<TStep, TCasing>;\n defaultNameTransformationCasing: TCasing;\n}) => void;\n\n/**\n * Available transformation types for the step numbers.\n */\nconst AS_TYPES = [\n 'string',\n 'number',\n 'array.string',\n 'array.string.untyped',\n] as const;\n\ntype ValueCheck<T> = (v: unknown) => v is T;\n\ntype FieldChecks<T extends object> = {\n [K in keyof T]: ValueCheck<T[K]>;\n};\n\nfunction assertObjectFields<T extends object>(\n obj: unknown,\n checks: FieldChecks<T>\n): obj is T {\n if (typeof obj !== 'object' || obj === null) return false;\n\n for (const key of Object.keys(checks) as (keyof T)[]) {\n // Check that the property exists\n if (!(key in obj)) return false;\n\n // Now check the type\n const checkFn = checks[key];\n const value = (obj as any)[key];\n if (!checkFn(value)) return false;\n }\n\n return true;\n}\n\nexport class MultiStepFormStepSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<\n step,\n casing\n >,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n >\n extends Subscribable<MultiStepFormStepSchemaListener<step, casing>>\n implements MultiStepFormStepSchemaFunctions<resolvedStep, stepNumbers>\n{\n /**\n * The original config before any validation or transformations have been applied.\n */\n readonly original: InferStepOptions<step>;\n /**\n * The resolved step values.\n */\n value: resolvedStep;\n readonly steps: MultiStepFormStepStepsConfig<step, casing>;\n readonly defaultNameTransformationCasing: casing;\n //@ts-ignore\n private readonly firstStep: StepData<resolvedStep, FirstStep<resolvedStep>>;\n private readonly lastStep: StepData<resolvedStep, LastStep<resolvedStep>>;\n private readonly stepNumbers: Array<number>;\n private readonly storage: MultiStepFormStorage<resolvedStep, storageKey>;\n readonly #internal: MultiStepFormStepSchemaInternal<\n step,\n casing,\n resolvedStep,\n stepNumbers\n >;\n\n constructor(\n config: MultiStepFormSchemaStepConfig<\n step,\n Constrain<casing, CasingType>,\n storageKey\n >\n ) {\n super();\n\n const { steps, nameTransformCasing, storage } = config;\n\n this.defaultNameTransformationCasing = setCasingType(\n nameTransformCasing\n ) as casing;\n\n this.original = steps;\n\n this.value = createStep<step, casing>(this.original) as resolvedStep;\n this.storage = new MultiStepFormStorage<resolvedStep, storageKey>({\n data: this.value,\n key: (storage?.key ?? DEFAULT_STORAGE_KEY) as storageKey,\n store: storage?.store,\n throwWhenUndefined: storage?.throwWhenUndefined ?? false,\n });\n this.#internal = new MultiStepFormStepSchemaInternal<\n step,\n casing,\n resolvedStep,\n stepNumbers\n >({\n originalValue: this.original,\n getValue: () => this.value,\n setValue: (next) => this.handlePostUpdate(next),\n });\n\n this.value = this.#internal.enrichValues(this.value);\n this.stepNumbers = Object.keys(this.value).map((key) =>\n Number.parseInt(key.replace('step', ''))\n );\n\n this.firstStep = this.first();\n this.lastStep = this.last();\n this.steps = {\n first: this.firstStep.step,\n last: this.lastStep.step,\n value: this.stepNumbers as unknown as ReadonlyArray<stepNumbers>,\n as: (asType): any => {\n invariant(\n typeof asType === 'string',\n `The type of the target transformation type must be a string, was ${typeof asType}`\n );\n\n if (asType === 'string') {\n return this.stepNumbers.map((value) => `'${value}'`).join(' | ');\n }\n\n if (asType === 'number') {\n return this.stepNumbers.join(' | ');\n }\n\n if (asType.includes('array.string')) {\n return this.stepNumbers.map((value) => `${value}`);\n }\n\n throw new Error(\n `Transformation type \"${asType}\" is not supported. Available transformations include: ${AS_TYPES.map(\n (value) => `\"${value}\"`\n ).join(', ')}`\n );\n },\n isValidStepNumber: (stepNumber): stepNumber is stepNumbers =>\n this.stepNumbers.includes(stepNumber),\n isValidStepKey: (value) =>\n isValidStepKey<resolvedStep>(this.value, value),\n };\n\n this.sync();\n }\n\n /**\n * @internal\n */\n __getStorage() {\n return this.storage;\n }\n\n getSnapshot() {\n return this;\n }\n\n /**\n * Syncs the values from storage to {@linkcode value}.\n */\n sync() {\n // TODO add \"syncOptions\" so caller can chose where to sync from ('storage' | 'instance')\n const storageValues = this.__getStorage().get();\n\n if (storageValues) {\n const enrichedValues = this.#internal.enrichValues(storageValues);\n\n this.value = { ...enrichedValues };\n }\n }\n\n protected notify() {\n for (const listener of this.listeners) {\n listener({\n defaultNameTransformationCasing: this.defaultNameTransformationCasing,\n original: this.original,\n steps: this.steps,\n value: this.value,\n });\n }\n }\n\n /**\n * Gets the data for a specific step.\n * @param options The options for getting the step data.\n * @returns The step data for the target step.\n */\n get<stepNumber extends stepNumbers>(\n options: GetStepOptions<resolvedStep, stepNumbers, stepNumber>\n ) {\n return getStep(this.value)(options);\n }\n\n /**\n * Gets the data for the first step.\n * @returns The data for the first step.\n */\n first() {\n const firstStep = Math.min(...this.stepNumbers) as FirstStep<resolvedStep>;\n\n return this.get({ step: firstStep });\n }\n\n /**\n * Gets the data for the last step.\n * @returns The data for the last step.\n */\n last() {\n const lastStep = Math.max(...this.stepNumbers);\n\n return this.get<LastStep<resolvedStep>>({ step: lastStep as never });\n }\n\n protected handlePostUpdate(next: resolvedStep) {\n this.value = { ...next };\n\n this.__getStorage().add(this.value);\n this.sync();\n this.notify();\n }\n\n update<\n targetStep extends ValidStepKey<stepNumbers>,\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>\n > = 'all',\n additionalCtx extends Record<string, unknown> = {}\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n field,\n additionalCtx\n >\n ) {\n this.#internal.update(options);\n }\n\n reset<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n this.#internal.reset(options);\n }\n\n /**\n * Create a helper function with validated input.\n */\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n validator,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >,\n fn: HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithInput<validator, response>;\n /**\n * Create a helper function without input.\n */\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n > &\n CreateHelperFunctionOptionsWithCustomCtxOptions<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx\n >,\n fn: HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithoutInput<response>;\n // Implementation\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n response,\n additionalCtx extends Record<string, unknown>,\n validator = never\n >(\n options:\n | CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >\n | CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >,\n fn:\n | HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ) {\n const { stepData, ...rest } = options;\n\n return this.#internal.createStepHelperFn(stepData)(rest, fn);\n }\n\n /**\n * Validates that a given object is the proper shape for step data.\n * @param value\n */\n static hasData<\n step extends Step<casing>,\n resolvedStep extends ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep>,\n casing extends CasingType = DefaultCasing\n >(\n value: unknown,\n options?: {\n optionalKeysToCheck?: FieldChecks<\n Pick<StepOptions, 'description' | 'validateFields'>\n >;\n }\n ): value is GetCurrentStep<resolvedStep, stepNumbers> {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n\n return assertObjectFields<\n | GetCurrentStep<resolvedStep, stepNumbers>\n | (Omit<StepOptions, 'fields'> & {\n fields: Expand<\n ResolvedFields<InferStepOptions<step>, keyof InferStepOptions<step>>\n >;\n })\n >(value, {\n title: (v) => typeof v === 'string',\n fields: (\n v\n ): v is Expand<\n ResolvedFields<InferStepOptions<step>, keyof InferStepOptions<step>>\n > => {\n if (v === null || typeof v !== 'object') {\n return false;\n }\n\n for (const key of Object.keys(v)) {\n if (typeof key !== 'string' || !(key in v)) {\n return false;\n }\n\n const current = (v as Record<string, unknown>)[key];\n\n if (current === null || typeof current !== 'object') {\n return false;\n }\n\n const hasField = assertObjectFields<AnyStepFieldOption>(current, {\n defaultValue: (v): v is {} => v !== 'undefined' && v !== null,\n label: (v) =>\n typeof v === 'string' || (typeof v === 'boolean' && !v),\n nameTransformCasing: isCasingValid,\n type: isFieldType,\n });\n\n if (!hasField) {\n return false;\n }\n }\n\n return true;\n },\n createHelperFn: (\n v\n ): v is GetCurrentStep<resolvedStep, stepNumbers>['createHelperFn'] =>\n typeof v === 'function',\n // update: (v): v is GetCurrentStep<resolvedStep, stepNumbers>['update'] =>\n // typeof v === 'function',\n nameTransformCasing: isCasingValid,\n ...options?.optionalKeysToCheck,\n });\n }\n\n /**\n * Gets the value of a given field for a given step.\n * @param step The step to get the value from.\n * @param field The field to get the value from.\n * @returns The value of the {@linkcode field}.\n */\n getValue<\n step extends keyof resolvedStep,\n field extends fieldsUtils.getDeep<resolvedStep, step>\n >(step: step, field: field) {\n const stepData = this.value[step];\n const baseErrorMessage = `Unable to get the value for \"${String(\n step\n )}.fields.${String(field)}\"`;\n\n invariant('fields' in stepData, baseErrorMessage);\n invariant(\n typeof stepData.fields === 'object',\n `${baseErrorMessage} because \"fields\" is not an object. This shouldn't be the case, so please open an issue`\n );\n\n const fields = stepData.fields as AnyStepField;\n\n const defaultValue = fieldsUtils.resolvedDeepPath<\n resolvedStep,\n step,\n fieldsUtils.get<resolvedStep, step>,\n field\n >(field, fields as fieldsUtils.get<resolvedStep, step>);\n\n return defaultValue;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema.cjs","names":["Subscribable","#internal","setCasingType","createStep","MultiStepFormStorage","DEFAULT_STORAGE_KEY","MultiStepFormStepSchemaInternal","isValidStepKey","getStep","v","isCasingValid","isFieldType","fields","fieldsUtils"],"sources":["../../src/steps/schema.ts"],"sourcesContent":["import { MultiStepFormStepSchemaInternal } from '@/internals/step-schema';\nimport {\n DEFAULT_STORAGE_KEY,\n DefaultStorageKey,\n MultiStepFormStorage,\n} from '@/storage';\nimport {\n isCasingValid,\n isFieldType,\n setCasingType,\n type CasingType,\n type Constrain,\n type DefaultCasing,\n type Expand,\n type Join,\n} from '@/utils';\nimport { invariant } from '@/utils/invariant';\nimport { Subscribable } from '../subscribable';\nimport { fields as fieldsUtils } from './fields';\nimport {\n AnyResolvedStep,\n AnyStepField,\n AnyStepFieldOption,\n CreateHelperFunctionOptionsWithCustomCtxOptions,\n CreateHelperFunctionOptionsWithValidator,\n CreateHelperFunctionOptionsWithoutValidator,\n CreateStepHelperFn,\n CreatedHelperFnWithInput,\n CreatedHelperFnWithoutInput,\n ExtractStepFromKey,\n FirstStep,\n GetCurrentStep,\n HelperFnChosenSteps,\n HelperFnWithValidator,\n HelperFnWithoutValidator,\n InferStepOptions,\n LastStep,\n MultiStepFormSchemaStepConfig,\n ResolvedFields,\n ResolvedStep,\n Step,\n StepData,\n StepNumbers,\n StepOptions,\n UnionToTuple,\n UpdateFn,\n ValidStepKey,\n type ResetFn,\n} from './types';\nimport { getStep, type GetStepOptions } from './utils';\nimport { createStep, isValidStepKey } from '@/internals/utils';\n\nexport interface MultiStepFormStepSchemaFunctions<\n TResolvedStep extends AnyResolvedStep,\n TStepNumbers extends StepNumbers<TResolvedStep>\n> {\n update: UpdateFn.general<TResolvedStep, TStepNumbers>;\n createHelperFn: CreateStepHelperFn<TResolvedStep, TStepNumbers>;\n}\nexport type AsType = (typeof AS_TYPES)[number];\ntype Quote<T extends string[]> = {\n [K in keyof T]: T[K] extends string ? `'${T[K]}'` : never;\n};\nexport type AsTypeMap<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>\n> = {\n // Exclude is needed due to all the Constrains\n string: Exclude<\n Join<\n Constrain<\n Quote<Constrain<UnionToTuple<`${stepNumbers}`>, string[]>>,\n string[]\n >,\n ' | '\n >,\n ''\n >;\n number: Exclude<\n Join<Constrain<UnionToTuple<`${stepNumbers}`>, string[]>, ' | '>,\n ''\n >;\n 'array.string': UnionToTuple<`${stepNumbers}`>;\n 'array.string.untyped': string[];\n};\nexport type AsFunctionReturn<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>,\n asType extends AsType\n> = AsTypeMap<resolvedStep, stepNumbers>[asType];\nexport type AsFunction<\n resolvedStep extends AnyResolvedStep,\n stepNumbers extends ExtractStepFromKey<Constrain<keyof resolvedStep, string>>\n> = <asType extends AsType>(\n asType: asType\n) => AsFunctionReturn<resolvedStep, stepNumbers, asType>;\nexport type MultiStepFormStepStepsConfig<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TResolvedStep extends ResolvedStep<TStep, TCasing> = ResolvedStep<\n TStep,\n TCasing\n >,\n TStepNumbers extends StepNumbers<TResolvedStep> = StepNumbers<TResolvedStep>\n> = {\n first: FirstStep<TResolvedStep>;\n last: LastStep<TResolvedStep>;\n value: ReadonlyArray<TStepNumbers>;\n as: AsFunction<TResolvedStep, TStepNumbers>;\n isValidStepNumber: (stepNumber: number) => stepNumber is TStepNumbers;\n isValidStepKey: (\n value: string\n ) => value is Constrain<keyof TResolvedStep, string>;\n};\nexport type MultiStepFormStepSchemaListener<\n TStep extends Step<TCasing>,\n TCasing extends CasingType\n> = (data: {\n original: InferStepOptions<TStep>;\n value: ResolvedStep<TStep, TCasing>;\n steps: MultiStepFormStepStepsConfig<TStep, TCasing>;\n defaultNameTransformationCasing: TCasing;\n}) => void;\n\n/**\n * Available transformation types for the step numbers.\n */\nconst AS_TYPES = [\n 'string',\n 'number',\n 'array.string',\n 'array.string.untyped',\n] as const;\n\ntype ValueCheck<T> = (v: unknown) => v is T;\n\ntype FieldChecks<T extends object> = {\n [K in keyof T]: ValueCheck<T[K]>;\n};\n\nfunction assertObjectFields<T extends object>(\n obj: unknown,\n checks: FieldChecks<T>\n): obj is T {\n if (typeof obj !== 'object' || obj === null) return false;\n\n for (const key of Object.keys(checks) as (keyof T)[]) {\n // Check that the property exists\n if (!(key in obj)) return false;\n\n // Now check the type\n const checkFn = checks[key];\n const value = (obj as any)[key];\n if (!checkFn(value)) return false;\n }\n\n return true;\n}\n\nexport class MultiStepFormStepSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<\n step,\n casing\n >,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n >\n extends Subscribable<MultiStepFormStepSchemaListener<step, casing>>\n implements MultiStepFormStepSchemaFunctions<resolvedStep, stepNumbers>\n{\n /**\n * The original config before any validation or transformations have been applied.\n */\n readonly original: InferStepOptions<step>;\n /**\n * The resolved step values.\n */\n value: resolvedStep;\n readonly steps: MultiStepFormStepStepsConfig<step, casing>;\n readonly defaultNameTransformationCasing: casing;\n //@ts-ignore\n private readonly firstStep: StepData<resolvedStep, FirstStep<resolvedStep>>;\n private readonly lastStep: StepData<resolvedStep, LastStep<resolvedStep>>;\n private readonly stepNumbers: Array<number>;\n private readonly storage: MultiStepFormStorage<resolvedStep, storageKey>;\n readonly #internal: MultiStepFormStepSchemaInternal<\n step,\n casing,\n resolvedStep,\n stepNumbers\n >;\n\n constructor(\n config: MultiStepFormSchemaStepConfig<\n step,\n Constrain<casing, CasingType>,\n storageKey\n >\n ) {\n super();\n\n const { steps, nameTransformCasing, storage } = config;\n\n this.defaultNameTransformationCasing = setCasingType(\n nameTransformCasing\n ) as casing;\n\n this.original = steps;\n\n this.value = createStep<step, casing>(this.original) as resolvedStep;\n this.storage = new MultiStepFormStorage<resolvedStep, storageKey>({\n data: this.value,\n key: (storage?.key ?? DEFAULT_STORAGE_KEY) as storageKey,\n store: storage?.store,\n throwWhenUndefined: storage?.throwWhenUndefined ?? false,\n });\n this.#internal = new MultiStepFormStepSchemaInternal<\n step,\n casing,\n resolvedStep,\n stepNumbers\n >({\n originalValue: this.original,\n getValue: () => this.value,\n setValue: (next) => this.handlePostUpdate(next),\n });\n\n this.value = this.#internal.enrichValues(this.value);\n this.stepNumbers = Object.keys(this.value).map((key) =>\n Number.parseInt(key.replace('step', ''))\n );\n\n this.firstStep = this.first();\n this.lastStep = this.last();\n this.steps = {\n first: this.firstStep.step,\n last: this.lastStep.step,\n value: this.stepNumbers as unknown as ReadonlyArray<stepNumbers>,\n as: (asType): any => {\n invariant(\n typeof asType === 'string',\n `The type of the target transformation type must be a string, was ${typeof asType}`\n );\n\n if (asType === 'string') {\n return this.stepNumbers.map((value) => `'${value}'`).join(' | ');\n }\n\n if (asType === 'number') {\n return this.stepNumbers.join(' | ');\n }\n\n if (asType.includes('array.string')) {\n return this.stepNumbers.map((value) => `${value}`);\n }\n\n throw new Error(\n `Transformation type \"${asType}\" is not supported. Available transformations include: ${AS_TYPES.map(\n (value) => `\"${value}\"`\n ).join(', ')}`\n );\n },\n isValidStepNumber: (stepNumber): stepNumber is stepNumbers =>\n this.stepNumbers.includes(stepNumber),\n isValidStepKey: (value) =>\n isValidStepKey<resolvedStep>(this.value, value),\n };\n\n this.sync();\n }\n\n /**\n * @internal\n */\n __getStorage() {\n return this.storage;\n }\n\n getSnapshot() {\n return this;\n }\n\n /**\n * Syncs the values from storage to {@linkcode value}.\n */\n sync() {\n // TODO add \"syncOptions\" so caller can chose where to sync from ('storage' | 'instance')\n const storageValues = this.__getStorage().get();\n\n if (storageValues) {\n const enrichedValues = this.#internal.enrichValues(storageValues);\n\n this.value = { ...enrichedValues };\n }\n }\n\n protected notify() {\n for (const listener of this.listeners) {\n listener({\n defaultNameTransformationCasing: this.defaultNameTransformationCasing,\n original: this.original,\n steps: this.steps,\n value: this.value,\n });\n }\n }\n\n /**\n * Gets the data for a specific step.\n * @param options The options for getting the step data.\n * @returns The step data for the target step.\n */\n get<stepNumber extends stepNumbers>(\n options: GetStepOptions<resolvedStep, stepNumbers, stepNumber>\n ) {\n return getStep(this.value)(options);\n }\n\n /**\n * Gets the data for the first step.\n * @returns The data for the first step.\n */\n first() {\n const firstStep = Math.min(...this.stepNumbers) as FirstStep<resolvedStep>;\n\n return this.get({ step: firstStep });\n }\n\n /**\n * Gets the data for the last step.\n * @returns The data for the last step.\n */\n last() {\n const lastStep = Math.max(...this.stepNumbers);\n\n return this.get<LastStep<resolvedStep>>({ step: lastStep as never });\n }\n\n protected handlePostUpdate(next: resolvedStep) {\n this.value = { ...next };\n\n this.__getStorage().add(this.value);\n this.sync();\n this.notify();\n }\n\n update<\n targetStep extends ValidStepKey<stepNumbers>,\n field extends UpdateFn.chosenFields<\n UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>\n > = 'all',\n strict extends boolean = true,\n partial extends boolean = false,\n additionalCtx extends Record<string, unknown> = {},\n additionalUpdaterData extends UpdateFn.additionalUpdaterData = never\n >(\n options: UpdateFn.options<\n resolvedStep,\n stepNumbers,\n targetStep,\n field,\n strict,\n partial,\n additionalCtx,\n additionalUpdaterData\n >\n ) {\n this.#internal.update(options);\n }\n\n reset<\n targetStep extends ValidStepKey<stepNumbers>,\n fields extends UpdateFn.chosenFields<currentStep>,\n currentStep extends UpdateFn.resolvedStep<\n resolvedStep,\n stepNumbers,\n targetStep\n >\n >(\n options: ResetFn.Options<\n resolvedStep,\n stepNumbers,\n targetStep,\n fields,\n currentStep\n >\n ) {\n this.#internal.reset(options);\n }\n\n /**\n * Create a helper function with validated input.\n */\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n validator,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >,\n fn: HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithInput<validator, response>;\n /**\n * Create a helper function without input.\n */\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n additionalCtx extends Record<string, unknown>,\n response\n >(\n options: CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n > &\n CreateHelperFunctionOptionsWithCustomCtxOptions<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx\n >,\n fn: HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ): CreatedHelperFnWithoutInput<response>;\n // Implementation\n createHelperFn<\n const chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>,\n response,\n additionalCtx extends Record<string, unknown>,\n validator = never\n >(\n options:\n | CreateHelperFunctionOptionsWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx\n >\n | CreateHelperFunctionOptionsWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps\n >,\n fn:\n | HelperFnWithValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n validator,\n additionalCtx,\n response\n >\n | HelperFnWithoutValidator<\n resolvedStep,\n stepNumbers,\n chosenSteps,\n additionalCtx,\n response\n >\n ) {\n const { stepData, ...rest } = options;\n\n return this.#internal.createStepHelperFn(stepData)(rest, fn);\n }\n\n /**\n * Validates that a given object is the proper shape for step data.\n * @param value\n */\n static hasData<\n step extends Step<casing>,\n resolvedStep extends ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep>,\n casing extends CasingType = DefaultCasing\n >(\n value: unknown,\n options?: {\n optionalKeysToCheck?: FieldChecks<\n Pick<StepOptions, 'description' | 'validateFields'>\n >;\n }\n ): value is GetCurrentStep<resolvedStep, stepNumbers> {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n\n return assertObjectFields<\n | GetCurrentStep<resolvedStep, stepNumbers>\n | (Omit<StepOptions, 'fields'> & {\n fields: Expand<\n ResolvedFields<InferStepOptions<step>, keyof InferStepOptions<step>>\n >;\n })\n >(value, {\n title: (v) => typeof v === 'string',\n fields: (\n v\n ): v is Expand<\n ResolvedFields<InferStepOptions<step>, keyof InferStepOptions<step>>\n > => {\n if (v === null || typeof v !== 'object') {\n return false;\n }\n\n for (const key of Object.keys(v)) {\n if (typeof key !== 'string' || !(key in v)) {\n return false;\n }\n\n const current = (v as Record<string, unknown>)[key];\n\n if (current === null || typeof current !== 'object') {\n return false;\n }\n\n const hasField = assertObjectFields<AnyStepFieldOption>(current, {\n defaultValue: (v): v is {} => v !== 'undefined' && v !== null,\n label: (v) =>\n typeof v === 'string' || (typeof v === 'boolean' && !v),\n nameTransformCasing: isCasingValid,\n type: isFieldType,\n });\n\n if (!hasField) {\n return false;\n }\n }\n\n return true;\n },\n createHelperFn: (\n v\n ): v is GetCurrentStep<resolvedStep, stepNumbers>['createHelperFn'] =>\n typeof v === 'function',\n // update: (v): v is GetCurrentStep<resolvedStep, stepNumbers>['update'] =>\n // typeof v === 'function',\n nameTransformCasing: isCasingValid,\n ...options?.optionalKeysToCheck,\n });\n }\n\n /**\n * Gets the value of a given field for a given step.\n * @param step The step to get the value from.\n * @param field The field to get the value from.\n * @returns The value of the {@linkcode field}.\n */\n getValue<\n step extends keyof resolvedStep,\n field extends fieldsUtils.getDeep<resolvedStep, step>\n >(step: step, field: field) {\n const stepData = this.value[step];\n const baseErrorMessage = `Unable to get the value for \"${String(\n step\n )}.fields.${String(field)}\"`;\n\n invariant('fields' in stepData, baseErrorMessage);\n invariant(\n typeof stepData.fields === 'object',\n `${baseErrorMessage} because \"fields\" is not an object. This shouldn't be the case, so please open an issue`\n );\n\n const fields = stepData.fields as AnyStepField;\n\n const defaultValue = fieldsUtils.resolvedDeepPath<\n resolvedStep,\n step,\n fieldsUtils.get<resolvedStep, step>,\n field\n >(field, fields as fieldsUtils.get<resolvedStep, step>);\n\n return defaultValue;\n }\n}\n"],"mappings":"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"}
@@ -94,7 +94,7 @@ declare class MultiStepFormStepSchema<step extends Step<casing>, casing extends
94
94
  data: GetCurrentStep<resolvedStep, LastStep<resolvedStep>>;
95
95
  };
96
96
  protected handlePostUpdate(next: resolvedStep): void;
97
- update<targetStep extends ValidStepKey<stepNumbers>, field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>> = 'all', additionalCtx extends Record<string, unknown> = {}>(options: UpdateFn.options<resolvedStep, stepNumbers, targetStep, field, additionalCtx>): void;
97
+ update<targetStep extends ValidStepKey<stepNumbers>, field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>> = 'all', strict extends boolean = true, partial extends boolean = false, additionalCtx extends Record<string, unknown> = {}, additionalUpdaterData extends UpdateFn.additionalUpdaterData = never>(options: UpdateFn.options<resolvedStep, stepNumbers, targetStep, field, strict, partial, additionalCtx, additionalUpdaterData>): void;
98
98
  reset<targetStep extends ValidStepKey<stepNumbers>, fields$1 extends UpdateFn.chosenFields<currentStep>, currentStep extends UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>>(options: ResetFn.Options<resolvedStep, stepNumbers, targetStep, fields$1, currentStep>): void;
99
99
  /**
100
100
  * Create a helper function with validated input.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/steps/schema.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/steps/schema.ts"],"sourcesContent":[],"mappings":"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"}
@@ -94,7 +94,7 @@ declare class MultiStepFormStepSchema<step extends Step<casing>, casing extends
94
94
  data: GetCurrentStep<resolvedStep, LastStep<resolvedStep>>;
95
95
  };
96
96
  protected handlePostUpdate(next: resolvedStep): void;
97
- update<targetStep extends ValidStepKey<stepNumbers>, field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>> = 'all', additionalCtx extends Record<string, unknown> = {}>(options: UpdateFn.options<resolvedStep, stepNumbers, targetStep, field, additionalCtx>): void;
97
+ update<targetStep extends ValidStepKey<stepNumbers>, field extends UpdateFn.chosenFields<UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>> = 'all', strict extends boolean = true, partial extends boolean = false, additionalCtx extends Record<string, unknown> = {}, additionalUpdaterData extends UpdateFn.additionalUpdaterData = never>(options: UpdateFn.options<resolvedStep, stepNumbers, targetStep, field, strict, partial, additionalCtx, additionalUpdaterData>): void;
98
98
  reset<targetStep extends ValidStepKey<stepNumbers>, fields$1 extends UpdateFn.chosenFields<currentStep>, currentStep extends UpdateFn.resolvedStep<resolvedStep, stepNumbers, targetStep>>(options: ResetFn.Options<resolvedStep, stepNumbers, targetStep, fields$1, currentStep>): void;
99
99
  /**
100
100
  * Create a helper function with validated input.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/steps/schema.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/steps/schema.ts"],"sourcesContent":[],"mappings":"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"}