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

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/package.json +1 -1
  2. package/dist/_internals.cjs +0 -14
  3. package/dist/_internals.d.cts +0 -4
  4. package/dist/_internals.d.mts +0 -4
  5. package/dist/_internals.mjs +0 -5
  6. package/dist/index.cjs +0 -49
  7. package/dist/index.d.cts +0 -14
  8. package/dist/index.d.mts +0 -14
  9. package/dist/index.mjs +0 -16
  10. package/dist/internals/step-schema.cjs +0 -385
  11. package/dist/internals/step-schema.cjs.map +0 -1
  12. package/dist/internals/step-schema.d.cts +0 -41
  13. package/dist/internals/step-schema.d.cts.map +0 -1
  14. package/dist/internals/step-schema.d.mts +0 -41
  15. package/dist/internals/step-schema.d.mts.map +0 -1
  16. package/dist/internals/step-schema.mjs +0 -385
  17. package/dist/internals/step-schema.mjs.map +0 -1
  18. package/dist/internals/utils.cjs +0 -94
  19. package/dist/internals/utils.cjs.map +0 -1
  20. package/dist/internals/utils.d.cts +0 -27
  21. package/dist/internals/utils.d.cts.map +0 -1
  22. package/dist/internals/utils.d.mts +0 -27
  23. package/dist/internals/utils.d.mts.map +0 -1
  24. package/dist/internals/utils.mjs +0 -91
  25. package/dist/internals/utils.mjs.map +0 -1
  26. package/dist/observable.cjs +0 -44
  27. package/dist/observable.cjs.map +0 -1
  28. package/dist/observable.d.cts +0 -26
  29. package/dist/observable.d.cts.map +0 -1
  30. package/dist/observable.d.mts +0 -26
  31. package/dist/observable.d.mts.map +0 -1
  32. package/dist/observable.mjs +0 -44
  33. package/dist/observable.mjs.map +0 -1
  34. package/dist/schema.cjs +0 -68
  35. package/dist/schema.cjs.map +0 -1
  36. package/dist/schema.d.cts +0 -28
  37. package/dist/schema.d.cts.map +0 -1
  38. package/dist/schema.d.mts +0 -28
  39. package/dist/schema.d.mts.map +0 -1
  40. package/dist/schema.mjs +0 -67
  41. package/dist/schema.mjs.map +0 -1
  42. package/dist/steps/fields.cjs +0 -23
  43. package/dist/steps/fields.cjs.map +0 -1
  44. package/dist/steps/fields.d.cts +0 -18
  45. package/dist/steps/fields.d.cts.map +0 -1
  46. package/dist/steps/fields.d.mts +0 -18
  47. package/dist/steps/fields.d.mts.map +0 -1
  48. package/dist/steps/fields.mjs +0 -18
  49. package/dist/steps/fields.mjs.map +0 -1
  50. package/dist/steps/index.cjs +0 -4
  51. package/dist/steps/index.mjs +0 -6
  52. package/dist/steps/schema.cjs +0 -194
  53. package/dist/steps/schema.cjs.map +0 -1
  54. package/dist/steps/schema.d.cts +0 -124
  55. package/dist/steps/schema.d.cts.map +0 -1
  56. package/dist/steps/schema.d.mts +0 -124
  57. package/dist/steps/schema.d.mts.map +0 -1
  58. package/dist/steps/schema.mjs +0 -194
  59. package/dist/steps/schema.mjs.map +0 -1
  60. package/dist/steps/types.cjs +0 -33
  61. package/dist/steps/types.cjs.map +0 -1
  62. package/dist/steps/types.d.cts +0 -322
  63. package/dist/steps/types.d.cts.map +0 -1
  64. package/dist/steps/types.d.mts +0 -322
  65. package/dist/steps/types.d.mts.map +0 -1
  66. package/dist/steps/types.mjs +0 -27
  67. package/dist/steps/types.mjs.map +0 -1
  68. package/dist/steps/utils.cjs +0 -96
  69. package/dist/steps/utils.cjs.map +0 -1
  70. package/dist/steps/utils.d.cts +0 -10
  71. package/dist/steps/utils.d.cts.map +0 -1
  72. package/dist/steps/utils.d.mts +0 -10
  73. package/dist/steps/utils.d.mts.map +0 -1
  74. package/dist/steps/utils.mjs +0 -94
  75. package/dist/steps/utils.mjs.map +0 -1
  76. package/dist/storage.cjs +0 -72
  77. package/dist/storage.cjs.map +0 -1
  78. package/dist/storage.d.cts +0 -33
  79. package/dist/storage.d.cts.map +0 -1
  80. package/dist/storage.d.mts +0 -33
  81. package/dist/storage.d.mts.map +0 -1
  82. package/dist/storage.mjs +0 -71
  83. package/dist/storage.mjs.map +0 -1
  84. package/dist/subscribable.cjs +0 -25
  85. package/dist/subscribable.cjs.map +0 -1
  86. package/dist/subscribable.d.cts +0 -14
  87. package/dist/subscribable.d.cts.map +0 -1
  88. package/dist/subscribable.d.mts +0 -14
  89. package/dist/subscribable.d.mts.map +0 -1
  90. package/dist/subscribable.mjs +0 -24
  91. package/dist/subscribable.mjs.map +0 -1
  92. package/dist/utils/casing.cjs +0 -63
  93. package/dist/utils/casing.cjs.map +0 -1
  94. package/dist/utils/casing.d.cts +0 -40
  95. package/dist/utils/casing.d.cts.map +0 -1
  96. package/dist/utils/casing.d.mts +0 -40
  97. package/dist/utils/casing.d.mts.map +0 -1
  98. package/dist/utils/casing.mjs +0 -57
  99. package/dist/utils/casing.mjs.map +0 -1
  100. package/dist/utils/field-types.cjs +0 -23
  101. package/dist/utils/field-types.cjs.map +0 -1
  102. package/dist/utils/field-types.d.cts +0 -11
  103. package/dist/utils/field-types.d.cts.map +0 -1
  104. package/dist/utils/field-types.d.mts +0 -11
  105. package/dist/utils/field-types.d.mts.map +0 -1
  106. package/dist/utils/field-types.mjs +0 -20
  107. package/dist/utils/field-types.mjs.map +0 -1
  108. package/dist/utils/helpers.cjs +0 -30
  109. package/dist/utils/helpers.cjs.map +0 -1
  110. package/dist/utils/helpers.mjs +0 -27
  111. package/dist/utils/helpers.mjs.map +0 -1
  112. package/dist/utils/invariant.cjs +0 -18
  113. package/dist/utils/invariant.cjs.map +0 -1
  114. package/dist/utils/invariant.d.cts +0 -5
  115. package/dist/utils/invariant.d.cts.map +0 -1
  116. package/dist/utils/invariant.d.mts +0 -5
  117. package/dist/utils/invariant.d.mts.map +0 -1
  118. package/dist/utils/invariant.mjs +0 -17
  119. package/dist/utils/invariant.mjs.map +0 -1
  120. package/dist/utils/logger.cjs +0 -58
  121. package/dist/utils/logger.cjs.map +0 -1
  122. package/dist/utils/logger.d.cts +0 -53
  123. package/dist/utils/logger.d.cts.map +0 -1
  124. package/dist/utils/logger.d.mts +0 -53
  125. package/dist/utils/logger.d.mts.map +0 -1
  126. package/dist/utils/logger.mjs +0 -56
  127. package/dist/utils/logger.mjs.map +0 -1
  128. package/dist/utils/path.cjs +0 -331
  129. package/dist/utils/path.cjs.map +0 -1
  130. package/dist/utils/path.d.cts +0 -139
  131. package/dist/utils/path.d.cts.map +0 -1
  132. package/dist/utils/path.d.mts +0 -139
  133. package/dist/utils/path.d.mts.map +0 -1
  134. package/dist/utils/path.mjs +0 -325
  135. package/dist/utils/path.mjs.map +0 -1
  136. package/dist/utils/types.d.cts +0 -25
  137. package/dist/utils/types.d.cts.map +0 -1
  138. package/dist/utils/types.d.mts +0 -25
  139. package/dist/utils/types.d.mts.map +0 -1
  140. package/dist/utils/validator.cjs +0 -12
  141. package/dist/utils/validator.cjs.map +0 -1
  142. package/dist/utils/validator.d.cts +0 -77
  143. package/dist/utils/validator.d.cts.map +0 -1
  144. package/dist/utils/validator.d.mts +0 -77
  145. package/dist/utils/validator.d.mts.map +0 -1
  146. package/dist/utils/validator.mjs +0 -11
  147. package/dist/utils/validator.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.cjs","names":["changeCasing","resolvedFields: Record<string, unknown>","DEFAULT_FIELD_TYPE","runStandardValidation","DEFAULT_CASING"],"sources":["../../src/internals/utils.ts"],"sourcesContent":["import type {\n AnyResolvedStep,\n AnyStepField,\n Step,\n InferStepOptions,\n ResolvedStep,\n HelperFnChosenSteps,\n} from '@/steps';\nimport {\n type Constrain,\n type CasingType,\n changeCasing,\n DEFAULT_FIELD_TYPE,\n invariant,\n type DefaultCasing,\n DEFAULT_CASING,\n} from '@/utils';\nimport {\n type AnyValidator,\n type DefaultValidator,\n runStandardValidation,\n type StandardSchemaValidator,\n} from '@/utils/validator';\n\nexport const VALIDATED_STEP_REGEX = /^step\\d+$/i;\nexport function isValidStepKey<T extends AnyResolvedStep>(\n steps: T,\n stepKey: string\n): stepKey is Constrain<keyof T, string> {\n return Object.keys(steps).includes(stepKey);\n}\n\nexport function createFieldLabel(\n label: string | false | undefined,\n fieldName: string,\n casingType: CasingType\n) {\n return label ?? changeCasing(fieldName, casingType);\n}\n\nexport function createStepFields(options: {\n fields: AnyStepField;\n validateFields:\n | Constrain<unknown, AnyValidator, DefaultValidator>\n | undefined;\n defaultCasing: CasingType;\n}) {\n const resolvedFields: Record<string, unknown> = {};\n const { fields, defaultCasing, validateFields } = options;\n\n for (const [name, values] of Object.entries(fields)) {\n invariant(\n typeof name === 'string',\n `Each key for the \"fields\" option must be a string. Key ${name} was a ${typeof name}`\n );\n invariant(\n typeof values === 'object',\n `The value for key ${name} must be an object. Was ${typeof values}`\n );\n\n const {\n defaultValue,\n label,\n nameTransformCasing,\n type = DEFAULT_FIELD_TYPE,\n } = values;\n\n if (validateFields) {\n resolvedFields[name] = defaultValue;\n } else {\n const casing = nameTransformCasing ?? defaultCasing;\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type,\n defaultValue,\n label: createFieldLabel(label, name, casing),\n\n // TODO add more fields here\n };\n }\n }\n\n if (validateFields) {\n const validatedFields = runStandardValidation(\n validateFields as StandardSchemaValidator,\n resolvedFields\n );\n\n invariant(\n typeof validatedFields === 'object',\n `The result of the validated fields must be an object, was (${typeof validatedFields}). This is probably an internal error, so open up an issue about it`\n );\n invariant(\n !!validatedFields,\n 'The result of the validated fields must be defined. This is probably an internal error, so open up an issue about it'\n );\n\n for (const [name, defaultValue] of Object.entries(validatedFields)) {\n const currentField = fields[name];\n\n invariant(\n currentField,\n `No field found in the fields config for \"${name}\"`\n );\n\n const {\n label,\n type = DEFAULT_FIELD_TYPE,\n nameTransformCasing,\n } = currentField;\n const casing = nameTransformCasing ?? defaultCasing;\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type,\n defaultValue,\n label: createFieldLabel(label, name, casing),\n };\n }\n }\n\n return resolvedFields;\n}\nexport function createStep<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing\n>(stepsConfig: InferStepOptions<step>) {\n const resolvedSteps = {} as ResolvedStep<step, casing>;\n\n invariant(!!stepsConfig, 'The steps config must be defined', TypeError);\n invariant(\n typeof stepsConfig === 'object',\n `The steps config must be an object, was (${typeof stepsConfig})`,\n TypeError\n );\n\n for (const [stepKey, stepValue] of Object.entries(stepsConfig)) {\n invariant(\n typeof stepKey === 'string',\n `Each key for the step config must be a string. Key \"${stepKey}\" was ${typeof stepKey} `,\n TypeError\n );\n invariant(\n VALIDATED_STEP_REGEX.test(stepKey),\n `The key \"${stepKey}\" isn't formatted properly. Each key in the step config must be the following format: \"step{number}\"`\n );\n\n const validStepKey = stepKey as keyof typeof resolvedSteps;\n const {\n fields,\n title,\n nameTransformCasing: defaultCasing = DEFAULT_CASING,\n description,\n validateFields,\n } = stepValue;\n\n const currentStep = validStepKey.toString().replace('step', '');\n\n invariant(\n fields,\n `Missing fields for step ${currentStep} (${String(validStepKey)})`,\n TypeError\n );\n invariant(\n typeof fields === 'object',\n 'Fields must be an object',\n TypeError\n );\n invariant(\n Object.keys(fields).length > 0,\n `The fields config for step ${currentStep} (${String(\n validStepKey\n )}) is empty. Please add a field`\n );\n invariant(\n typeof fields === 'object',\n `The \"fields\" property must be an object. Was ${typeof fields}`\n );\n\n const resolvedFields = createStepFields({\n defaultCasing,\n fields,\n validateFields,\n });\n\n resolvedSteps[validStepKey] = {\n ...resolvedSteps[validStepKey],\n title,\n nameTransformCasing: defaultCasing,\n // Only add the description if it's defined\n ...(typeof description === 'string' ? { description } : {}),\n fields: resolvedFields,\n };\n }\n\n return resolvedSteps;\n}\n\nexport function isTupleNotation<T extends string>(\n value: unknown\n): value is HelperFnChosenSteps.tupleNotation<T> {\n if (!Array.isArray(value)) {\n return false;\n }\n\n if (value.length === 0) {\n return false;\n }\n\n if (!value.every((v) => typeof v === 'string')) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Constrain, Expand } from "../utils/types.cjs";
2
- import { CasingType, DefaultCasing } from "../utils/casing.cjs";
3
- import { DefaultFieldType } from "../utils/field-types.cjs";
4
- import { AnyResolvedStep, ExtractStepFromKey, GetDefaultCasingTransformation, GetFieldsForStep, InferStepOptions, ResetFn, ResolvedFields, Step, StepSpecificHelperFn, UpdateFn } from "../steps/types.cjs";
5
-
6
- //#region src/internals/utils.d.ts
7
- declare const VALIDATED_STEP_REGEX: RegExp;
8
- declare function isValidStepKey<T$1 extends AnyResolvedStep>(steps: T$1, stepKey: string): stepKey is Constrain<keyof T$1, string>;
9
- declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>): Expand<InferStepOptions<step> extends infer T_1 extends InferStepOptions<TStep> ? { [stepKey_1 in keyof T_1]: Expand<(Omit<T_1[stepKey_1], "validateFields" | "fields"> extends infer T_2 ? { [K in keyof T_2]-?: K extends keyof Defaults ? undefined extends T_2[K] ? Exclude<T_2[K], T_2[K] & undefined> | Defaults[K] : T_2[K] : T_2[K] } : never) & { [K_1 in Exclude<"type", Exclude<keyof T_1[stepKey_1], "validateFields" | "fields">> | Exclude<"nameTransformCasing", Exclude<keyof T_1[stepKey_1], "validateFields" | "fields">>]-?: {
10
- type: DefaultFieldType;
11
- nameTransformCasing: GetDefaultCasingTransformation<T_1, stepKey_1, TDefaultCasing>;
12
- }[K_1] } & {
13
- fields: Expand<ResolvedFields<T_1, stepKey_1, GetFieldsForStep<T_1, stepKey_1>>>;
14
- }> } : never> extends infer T extends Expand<InferStepOptions<TStep_1> extends infer T_2 extends InferStepOptions<TStep> ? { [stepKey_2 in keyof T_2]: Expand<(Omit<T_2[stepKey_2], "validateFields" | "fields"> extends infer T_3 ? { [K in keyof T_3]-?: K extends keyof Defaults ? undefined extends T_3[K] ? Exclude<T_3[K], T_3[K] & undefined> | Defaults[K] : T_3[K] : T_3[K] } : never) & { [K_1 in Exclude<"type", Exclude<keyof T_2[stepKey_2], "validateFields" | "fields">> | Exclude<"nameTransformCasing", Exclude<keyof T_2[stepKey_2], "validateFields" | "fields">>]-?: {
15
- type: DefaultFieldType;
16
- nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, TDefaultCasing>;
17
- }[K_1] } & {
18
- fields: Expand<ResolvedFields<T_2, stepKey_2, GetFieldsForStep<T_2, stepKey_2>>>;
19
- }> } : never> ? { [stepKey in keyof T]: T[stepKey] & {
20
- createHelperFn: StepSpecificHelperFn<T, ExtractStepFromKey<keyof T extends infer T_1 ? T_1 extends keyof T ? T_1 extends string ? T_1 : never : never : never>, ExtractStepFromKey<stepKey extends string ? stepKey : never>>;
21
- } & (stepKey extends `step${ExtractStepFromKey<keyof T extends infer T_2 ? T_2 extends keyof T ? T_2 extends string ? T_2 : never : never : never>}` ? {
22
- update: UpdateFn.stepSpecific<T, ExtractStepFromKey<keyof T extends infer T_3 ? T_3 extends keyof T ? T_3 extends string ? T_3 : never : never : never>, stepKey>;
23
- reset: ResetFn.stepSpecific<T, ExtractStepFromKey<keyof T extends infer T_4 ? T_4 extends keyof T ? T_4 extends string ? T_4 : never : never : never>, stepKey>;
24
- } : {}) } : never;
25
- //#endregion
26
- export { VALIDATED_STEP_REGEX, createStep, isValidStepKey };
27
- //# sourceMappingURL=utils.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Constrain, Expand } from "../utils/types.mjs";
2
- import { CasingType, DefaultCasing } from "../utils/casing.mjs";
3
- import { DefaultFieldType } from "../utils/field-types.mjs";
4
- import { AnyResolvedStep, ExtractStepFromKey, GetDefaultCasingTransformation, GetFieldsForStep, InferStepOptions, ResetFn, ResolvedFields, Step, StepSpecificHelperFn, UpdateFn } from "../steps/types.mjs";
5
-
6
- //#region src/internals/utils.d.ts
7
- declare const VALIDATED_STEP_REGEX: RegExp;
8
- declare function isValidStepKey<T$1 extends AnyResolvedStep>(steps: T$1, stepKey: string): stepKey is Constrain<keyof T$1, string>;
9
- declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>): Expand<InferStepOptions<step> extends infer T_1 extends InferStepOptions<TStep> ? { [stepKey_1 in keyof T_1]: Expand<(Omit<T_1[stepKey_1], "validateFields" | "fields"> extends infer T_2 ? { [K in keyof T_2]-?: K extends keyof Defaults ? undefined extends T_2[K] ? Exclude<T_2[K], T_2[K] & undefined> | Defaults[K] : T_2[K] : T_2[K] } : never) & { [K_1 in Exclude<"type", Exclude<keyof T_1[stepKey_1], "validateFields" | "fields">> | Exclude<"nameTransformCasing", Exclude<keyof T_1[stepKey_1], "validateFields" | "fields">>]-?: {
10
- type: DefaultFieldType;
11
- nameTransformCasing: GetDefaultCasingTransformation<T_1, stepKey_1, TDefaultCasing>;
12
- }[K_1] } & {
13
- fields: Expand<ResolvedFields<T_1, stepKey_1, GetFieldsForStep<T_1, stepKey_1>>>;
14
- }> } : never> extends infer T extends Expand<InferStepOptions<TStep_1> extends infer T_2 extends InferStepOptions<TStep> ? { [stepKey_2 in keyof T_2]: Expand<(Omit<T_2[stepKey_2], "validateFields" | "fields"> extends infer T_3 ? { [K in keyof T_3]-?: K extends keyof Defaults ? undefined extends T_3[K] ? Exclude<T_3[K], T_3[K] & undefined> | Defaults[K] : T_3[K] : T_3[K] } : never) & { [K_1 in Exclude<"type", Exclude<keyof T_2[stepKey_2], "validateFields" | "fields">> | Exclude<"nameTransformCasing", Exclude<keyof T_2[stepKey_2], "validateFields" | "fields">>]-?: {
15
- type: DefaultFieldType;
16
- nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, TDefaultCasing>;
17
- }[K_1] } & {
18
- fields: Expand<ResolvedFields<T_2, stepKey_2, GetFieldsForStep<T_2, stepKey_2>>>;
19
- }> } : never> ? { [stepKey in keyof T]: T[stepKey] & {
20
- createHelperFn: StepSpecificHelperFn<T, ExtractStepFromKey<keyof T extends infer T_1 ? T_1 extends keyof T ? T_1 extends string ? T_1 : never : never : never>, ExtractStepFromKey<stepKey extends string ? stepKey : never>>;
21
- } & (stepKey extends `step${ExtractStepFromKey<keyof T extends infer T_2 ? T_2 extends keyof T ? T_2 extends string ? T_2 : never : never : never>}` ? {
22
- update: UpdateFn.stepSpecific<T, ExtractStepFromKey<keyof T extends infer T_3 ? T_3 extends keyof T ? T_3 extends string ? T_3 : never : never : never>, stepKey>;
23
- reset: ResetFn.stepSpecific<T, ExtractStepFromKey<keyof T extends infer T_4 ? T_4 extends keyof T ? T_4 extends string ? T_4 : never : never : never>, stepKey>;
24
- } : {}) } : never;
25
- //#endregion
26
- export { VALIDATED_STEP_REGEX, createStep, isValidStepKey };
27
- //# sourceMappingURL=utils.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { invariant } from "../utils/invariant.mjs";
2
- import { DEFAULT_CASING, changeCasing } from "../utils/casing.mjs";
3
- import { DEFAULT_FIELD_TYPE } from "../utils/field-types.mjs";
4
- import { runStandardValidation } from "../utils/validator.mjs";
5
-
6
- //#region src/internals/utils.ts
7
- const VALIDATED_STEP_REGEX = /^step\d+$/i;
8
- function isValidStepKey(steps, stepKey) {
9
- return Object.keys(steps).includes(stepKey);
10
- }
11
- function createFieldLabel(label, fieldName, casingType) {
12
- return label ?? changeCasing(fieldName, casingType);
13
- }
14
- function createStepFields(options) {
15
- const resolvedFields = {};
16
- const { fields, defaultCasing, validateFields } = options;
17
- for (const [name, values] of Object.entries(fields)) {
18
- invariant(typeof name === "string", `Each key for the "fields" option must be a string. Key ${name} was a ${typeof name}`);
19
- invariant(typeof values === "object", `The value for key ${name} must be an object. Was ${typeof values}`);
20
- const { defaultValue, label, nameTransformCasing, type = DEFAULT_FIELD_TYPE } = values;
21
- if (validateFields) resolvedFields[name] = defaultValue;
22
- else {
23
- const casing = nameTransformCasing ?? defaultCasing;
24
- resolvedFields[name] = {
25
- ...resolvedFields[name],
26
- nameTransformCasing: casing,
27
- type,
28
- defaultValue,
29
- label: createFieldLabel(label, name, casing)
30
- };
31
- }
32
- }
33
- if (validateFields) {
34
- const validatedFields = runStandardValidation(validateFields, resolvedFields);
35
- invariant(typeof validatedFields === "object", `The result of the validated fields must be an object, was (${typeof validatedFields}). This is probably an internal error, so open up an issue about it`);
36
- invariant(!!validatedFields, "The result of the validated fields must be defined. This is probably an internal error, so open up an issue about it");
37
- for (const [name, defaultValue] of Object.entries(validatedFields)) {
38
- const currentField = fields[name];
39
- invariant(currentField, `No field found in the fields config for "${name}"`);
40
- const { label, type = DEFAULT_FIELD_TYPE, nameTransformCasing } = currentField;
41
- const casing = nameTransformCasing ?? defaultCasing;
42
- resolvedFields[name] = {
43
- ...resolvedFields[name],
44
- nameTransformCasing: casing,
45
- type,
46
- defaultValue,
47
- label: createFieldLabel(label, name, casing)
48
- };
49
- }
50
- }
51
- return resolvedFields;
52
- }
53
- function createStep(stepsConfig) {
54
- const resolvedSteps = {};
55
- invariant(!!stepsConfig, "The steps config must be defined", TypeError);
56
- invariant(typeof stepsConfig === "object", `The steps config must be an object, was (${typeof stepsConfig})`, TypeError);
57
- for (const [stepKey, stepValue] of Object.entries(stepsConfig)) {
58
- invariant(typeof stepKey === "string", `Each key for the step config must be a string. Key "${stepKey}" was ${typeof stepKey} `, TypeError);
59
- invariant(VALIDATED_STEP_REGEX.test(stepKey), `The key "${stepKey}" isn't formatted properly. Each key in the step config must be the following format: "step{number}"`);
60
- const validStepKey = stepKey;
61
- const { fields, title, nameTransformCasing: defaultCasing = DEFAULT_CASING, description, validateFields } = stepValue;
62
- const currentStep = validStepKey.toString().replace("step", "");
63
- invariant(fields, `Missing fields for step ${currentStep} (${String(validStepKey)})`, TypeError);
64
- invariant(typeof fields === "object", "Fields must be an object", TypeError);
65
- invariant(Object.keys(fields).length > 0, `The fields config for step ${currentStep} (${String(validStepKey)}) is empty. Please add a field`);
66
- invariant(typeof fields === "object", `The "fields" property must be an object. Was ${typeof fields}`);
67
- const resolvedFields = createStepFields({
68
- defaultCasing,
69
- fields,
70
- validateFields
71
- });
72
- resolvedSteps[validStepKey] = {
73
- ...resolvedSteps[validStepKey],
74
- title,
75
- nameTransformCasing: defaultCasing,
76
- ...typeof description === "string" ? { description } : {},
77
- fields: resolvedFields
78
- };
79
- }
80
- return resolvedSteps;
81
- }
82
- function isTupleNotation(value) {
83
- if (!Array.isArray(value)) return false;
84
- if (value.length === 0) return false;
85
- if (!value.every((v) => typeof v === "string")) return false;
86
- return true;
87
- }
88
-
89
- //#endregion
90
- export { VALIDATED_STEP_REGEX, createStep, isTupleNotation, isValidStepKey };
91
- //# sourceMappingURL=utils.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.mjs","names":["resolvedFields: Record<string, unknown>"],"sources":["../../src/internals/utils.ts"],"sourcesContent":["import type {\n AnyResolvedStep,\n AnyStepField,\n Step,\n InferStepOptions,\n ResolvedStep,\n HelperFnChosenSteps,\n} from '@/steps';\nimport {\n type Constrain,\n type CasingType,\n changeCasing,\n DEFAULT_FIELD_TYPE,\n invariant,\n type DefaultCasing,\n DEFAULT_CASING,\n} from '@/utils';\nimport {\n type AnyValidator,\n type DefaultValidator,\n runStandardValidation,\n type StandardSchemaValidator,\n} from '@/utils/validator';\n\nexport const VALIDATED_STEP_REGEX = /^step\\d+$/i;\nexport function isValidStepKey<T extends AnyResolvedStep>(\n steps: T,\n stepKey: string\n): stepKey is Constrain<keyof T, string> {\n return Object.keys(steps).includes(stepKey);\n}\n\nexport function createFieldLabel(\n label: string | false | undefined,\n fieldName: string,\n casingType: CasingType\n) {\n return label ?? changeCasing(fieldName, casingType);\n}\n\nexport function createStepFields(options: {\n fields: AnyStepField;\n validateFields:\n | Constrain<unknown, AnyValidator, DefaultValidator>\n | undefined;\n defaultCasing: CasingType;\n}) {\n const resolvedFields: Record<string, unknown> = {};\n const { fields, defaultCasing, validateFields } = options;\n\n for (const [name, values] of Object.entries(fields)) {\n invariant(\n typeof name === 'string',\n `Each key for the \"fields\" option must be a string. Key ${name} was a ${typeof name}`\n );\n invariant(\n typeof values === 'object',\n `The value for key ${name} must be an object. Was ${typeof values}`\n );\n\n const {\n defaultValue,\n label,\n nameTransformCasing,\n type = DEFAULT_FIELD_TYPE,\n } = values;\n\n if (validateFields) {\n resolvedFields[name] = defaultValue;\n } else {\n const casing = nameTransformCasing ?? defaultCasing;\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type,\n defaultValue,\n label: createFieldLabel(label, name, casing),\n\n // TODO add more fields here\n };\n }\n }\n\n if (validateFields) {\n const validatedFields = runStandardValidation(\n validateFields as StandardSchemaValidator,\n resolvedFields\n );\n\n invariant(\n typeof validatedFields === 'object',\n `The result of the validated fields must be an object, was (${typeof validatedFields}). This is probably an internal error, so open up an issue about it`\n );\n invariant(\n !!validatedFields,\n 'The result of the validated fields must be defined. This is probably an internal error, so open up an issue about it'\n );\n\n for (const [name, defaultValue] of Object.entries(validatedFields)) {\n const currentField = fields[name];\n\n invariant(\n currentField,\n `No field found in the fields config for \"${name}\"`\n );\n\n const {\n label,\n type = DEFAULT_FIELD_TYPE,\n nameTransformCasing,\n } = currentField;\n const casing = nameTransformCasing ?? defaultCasing;\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type,\n defaultValue,\n label: createFieldLabel(label, name, casing),\n };\n }\n }\n\n return resolvedFields;\n}\nexport function createStep<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing\n>(stepsConfig: InferStepOptions<step>) {\n const resolvedSteps = {} as ResolvedStep<step, casing>;\n\n invariant(!!stepsConfig, 'The steps config must be defined', TypeError);\n invariant(\n typeof stepsConfig === 'object',\n `The steps config must be an object, was (${typeof stepsConfig})`,\n TypeError\n );\n\n for (const [stepKey, stepValue] of Object.entries(stepsConfig)) {\n invariant(\n typeof stepKey === 'string',\n `Each key for the step config must be a string. Key \"${stepKey}\" was ${typeof stepKey} `,\n TypeError\n );\n invariant(\n VALIDATED_STEP_REGEX.test(stepKey),\n `The key \"${stepKey}\" isn't formatted properly. Each key in the step config must be the following format: \"step{number}\"`\n );\n\n const validStepKey = stepKey as keyof typeof resolvedSteps;\n const {\n fields,\n title,\n nameTransformCasing: defaultCasing = DEFAULT_CASING,\n description,\n validateFields,\n } = stepValue;\n\n const currentStep = validStepKey.toString().replace('step', '');\n\n invariant(\n fields,\n `Missing fields for step ${currentStep} (${String(validStepKey)})`,\n TypeError\n );\n invariant(\n typeof fields === 'object',\n 'Fields must be an object',\n TypeError\n );\n invariant(\n Object.keys(fields).length > 0,\n `The fields config for step ${currentStep} (${String(\n validStepKey\n )}) is empty. Please add a field`\n );\n invariant(\n typeof fields === 'object',\n `The \"fields\" property must be an object. Was ${typeof fields}`\n );\n\n const resolvedFields = createStepFields({\n defaultCasing,\n fields,\n validateFields,\n });\n\n resolvedSteps[validStepKey] = {\n ...resolvedSteps[validStepKey],\n title,\n nameTransformCasing: defaultCasing,\n // Only add the description if it's defined\n ...(typeof description === 'string' ? { description } : {}),\n fields: resolvedFields,\n };\n }\n\n return resolvedSteps;\n}\n\nexport function isTupleNotation<T extends string>(\n value: unknown\n): value is HelperFnChosenSteps.tupleNotation<T> {\n if (!Array.isArray(value)) {\n return false;\n }\n\n if (value.length === 0) {\n return false;\n }\n\n if (!value.every((v) => typeof v === 'string')) {\n return false;\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAwBA,MAAa,uBAAuB;AACpC,SAAgB,eACd,OACA,SACuC;AACvC,QAAO,OAAO,KAAK,MAAM,CAAC,SAAS,QAAQ;;AAG7C,SAAgB,iBACd,OACA,WACA,YACA;AACA,QAAO,SAAS,aAAa,WAAW,WAAW;;AAGrD,SAAgB,iBAAiB,SAM9B;CACD,MAAMA,iBAA0C,EAAE;CAClD,MAAM,EAAE,QAAQ,eAAe,mBAAmB;AAElD,MAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,OAAO,EAAE;AACnD,YACE,OAAO,SAAS,UAChB,0DAA0D,KAAK,SAAS,OAAO,OAChF;AACD,YACE,OAAO,WAAW,UAClB,qBAAqB,KAAK,0BAA0B,OAAO,SAC5D;EAED,MAAM,EACJ,cACA,OACA,qBACA,OAAO,uBACL;AAEJ,MAAI,eACF,gBAAe,QAAQ;OAClB;GACL,MAAM,SAAS,uBAAuB;AAEtC,kBAAe,QAAQ;IACrB,GAAI,eAAe;IACnB,qBAAqB;IACrB;IACA;IACA,OAAO,iBAAiB,OAAO,MAAM,OAAO;IAG7C;;;AAIL,KAAI,gBAAgB;EAClB,MAAM,kBAAkB,sBACtB,gBACA,eACD;AAED,YACE,OAAO,oBAAoB,UAC3B,8DAA8D,OAAO,gBAAgB,qEACtF;AACD,YACE,CAAC,CAAC,iBACF,uHACD;AAED,OAAK,MAAM,CAAC,MAAM,iBAAiB,OAAO,QAAQ,gBAAgB,EAAE;GAClE,MAAM,eAAe,OAAO;AAE5B,aACE,cACA,4CAA4C,KAAK,GAClD;GAED,MAAM,EACJ,OACA,OAAO,oBACP,wBACE;GACJ,MAAM,SAAS,uBAAuB;AAEtC,kBAAe,QAAQ;IACrB,GAAI,eAAe;IACnB,qBAAqB;IACrB;IACA;IACA,OAAO,iBAAiB,OAAO,MAAM,OAAO;IAC7C;;;AAIL,QAAO;;AAET,SAAgB,WAGd,aAAqC;CACrC,MAAM,gBAAgB,EAAE;AAExB,WAAU,CAAC,CAAC,aAAa,oCAAoC,UAAU;AACvE,WACE,OAAO,gBAAgB,UACvB,4CAA4C,OAAO,YAAY,IAC/D,UACD;AAED,MAAK,MAAM,CAAC,SAAS,cAAc,OAAO,QAAQ,YAAY,EAAE;AAC9D,YACE,OAAO,YAAY,UACnB,uDAAuD,QAAQ,QAAQ,OAAO,QAAQ,IACtF,UACD;AACD,YACE,qBAAqB,KAAK,QAAQ,EAClC,YAAY,QAAQ,sGACrB;EAED,MAAM,eAAe;EACrB,MAAM,EACJ,QACA,OACA,qBAAqB,gBAAgB,gBACrC,aACA,mBACE;EAEJ,MAAM,cAAc,aAAa,UAAU,CAAC,QAAQ,QAAQ,GAAG;AAE/D,YACE,QACA,2BAA2B,YAAY,IAAI,OAAO,aAAa,CAAC,IAChE,UACD;AACD,YACE,OAAO,WAAW,UAClB,4BACA,UACD;AACD,YACE,OAAO,KAAK,OAAO,CAAC,SAAS,GAC7B,8BAA8B,YAAY,IAAI,OAC5C,aACD,CAAC,gCACH;AACD,YACE,OAAO,WAAW,UAClB,gDAAgD,OAAO,SACxD;EAED,MAAM,iBAAiB,iBAAiB;GACtC;GACA;GACA;GACD,CAAC;AAEF,gBAAc,gBAAgB;GAC5B,GAAG,cAAc;GACjB;GACA,qBAAqB;GAErB,GAAI,OAAO,gBAAgB,WAAW,EAAE,aAAa,GAAG,EAAE;GAC1D,QAAQ;GACT;;AAGH,QAAO;;AAGT,SAAgB,gBACd,OAC+C;AAC/C,KAAI,CAAC,MAAM,QAAQ,MAAM,CACvB,QAAO;AAGT,KAAI,MAAM,WAAW,EACnB,QAAO;AAGT,KAAI,CAAC,MAAM,OAAO,MAAM,OAAO,MAAM,SAAS,CAC5C,QAAO;AAGT,QAAO"}
@@ -1,44 +0,0 @@
1
- const require_subscribable = require('./subscribable.cjs');
2
-
3
- //#region src/observable.ts
4
- var MultiStepFormObserver = class extends require_subscribable.Subscribable {
5
- schema;
6
- unsubscribeFromSchema;
7
- constructor(options) {
8
- super();
9
- this.schema = options.schema;
10
- this.subscribeToSchema();
11
- }
12
- subscribeToSchema() {
13
- this.unsubscribeFromSchema = this.schema.subscribe(() => {
14
- this.notify();
15
- });
16
- }
17
- getSnapshot() {
18
- return this;
19
- }
20
- getResult() {
21
- return this.schema;
22
- }
23
- setOptions(options) {
24
- if (options.schema && options.schema !== this.schema) {
25
- this.unsubscribeFromSchema?.();
26
- this.schema = options.schema;
27
- this.subscribeToSchema();
28
- this.notify();
29
- }
30
- }
31
- notify() {
32
- for (const listener of this.listeners) listener(this.schema);
33
- }
34
- destroy() {
35
- this.unsubscribeFromSchema?.();
36
- this.listeners.clear();
37
- }
38
- onSubscribe() {}
39
- onUnsubscribe() {}
40
- };
41
-
42
- //#endregion
43
- exports.MultiStepFormObserver = MultiStepFormObserver;
44
- //# sourceMappingURL=observable.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observable.cjs","names":["Subscribable"],"sources":["../src/observable.ts"],"sourcesContent":["import type { MultiStepFormSchema } from './schema';\nimport type {\n ResolvedStep,\n Step,\n StepNumbers\n} from '@/steps/types';\nimport { Subscribable } from './subscribable';\nimport type { CasingType } from '@/utils/casing';\n\nexport type ObserverListener<\n TStep extends Step<TCasing>,\n TResolvedStep extends ResolvedStep<TStep, TCasing>,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = (\n schema: MultiStepFormSchema<\n TStep,\n TCasing,\n TResolvedStep,\n TStepNumbers,\n TStorageKey\n >\n) => void;\n\nexport type ObserverOptions<\n TStep extends Step<TCasing>,\n TResolvedStep extends ResolvedStep<TStep, TCasing>,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = {\n schema: MultiStepFormSchema<\n TStep,\n TCasing,\n TResolvedStep,\n TStepNumbers,\n TStorageKey\n >;\n};\n\nexport class MultiStepFormObserver<\n step extends Step<casing>,\n resolvedStep extends ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep>,\n casing extends CasingType,\n storageKey extends string\n> extends Subscribable<\n ObserverListener<step, resolvedStep, stepNumbers, casing, storageKey>\n> {\n protected schema: MultiStepFormSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >;\n private unsubscribeFromSchema?: () => void;\n\n constructor(\n options: ObserverOptions<\n step,\n resolvedStep,\n stepNumbers,\n casing,\n storageKey\n >\n ) {\n super();\n\n this.schema = options.schema;\n this.subscribeToSchema();\n }\n\n protected subscribeToSchema() {\n this.unsubscribeFromSchema = this.schema.subscribe(() => {\n this.notify();\n });\n }\n\n getSnapshot() {\n return this;\n }\n\n getResult() {\n return this.schema;\n }\n\n setOptions(\n options: Partial<\n ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>\n >\n ) {\n if (options.schema && options.schema !== this.schema) {\n this.unsubscribeFromSchema?.();\n this.schema = options.schema;\n this.subscribeToSchema();\n this.notify();\n }\n }\n\n protected notify() {\n for (const listener of this.listeners) {\n listener(this.schema);\n }\n }\n\n destroy() {\n this.unsubscribeFromSchema?.();\n this.listeners.clear();\n }\n\n protected onSubscribe() {}\n\n protected onUnsubscribe() {}\n}\n"],"mappings":";;;AAyCA,IAAa,wBAAb,cAMUA,kCAER;CACA,AAAU;CAOV,AAAQ;CAER,YACE,SAOA;AACA,SAAO;AAEP,OAAK,SAAS,QAAQ;AACtB,OAAK,mBAAmB;;CAG1B,AAAU,oBAAoB;AAC5B,OAAK,wBAAwB,KAAK,OAAO,gBAAgB;AACvD,QAAK,QAAQ;IACb;;CAGJ,cAAc;AACZ,SAAO;;CAGT,YAAY;AACV,SAAO,KAAK;;CAGd,WACE,SAGA;AACA,MAAI,QAAQ,UAAU,QAAQ,WAAW,KAAK,QAAQ;AACpD,QAAK,yBAAyB;AAC9B,QAAK,SAAS,QAAQ;AACtB,QAAK,mBAAmB;AACxB,QAAK,QAAQ;;;CAIjB,AAAU,SAAS;AACjB,OAAK,MAAM,YAAY,KAAK,UAC1B,UAAS,KAAK,OAAO;;CAIzB,UAAU;AACR,OAAK,yBAAyB;AAC9B,OAAK,UAAU,OAAO;;CAGxB,AAAU,cAAc;CAExB,AAAU,gBAAgB"}
@@ -1,26 +0,0 @@
1
- import { CasingType } from "./utils/casing.cjs";
2
- import { ResolvedStep, Step, StepNumbers } from "./steps/types.cjs";
3
- import { Subscribable } from "./subscribable.cjs";
4
- import { MultiStepFormSchema } from "./schema.cjs";
5
-
6
- //#region src/observable.d.ts
7
- type ObserverListener<TStep extends Step<TCasing>, TResolvedStep extends ResolvedStep<TStep, TCasing>, TStepNumbers extends StepNumbers<TResolvedStep>, TCasing extends CasingType, TStorageKey extends string> = (schema: MultiStepFormSchema<TStep, TCasing, TResolvedStep, TStepNumbers, TStorageKey>) => void;
8
- type ObserverOptions<TStep extends Step<TCasing>, TResolvedStep extends ResolvedStep<TStep, TCasing>, TStepNumbers extends StepNumbers<TResolvedStep>, TCasing extends CasingType, TStorageKey extends string> = {
9
- schema: MultiStepFormSchema<TStep, TCasing, TResolvedStep, TStepNumbers, TStorageKey>;
10
- };
11
- declare class MultiStepFormObserver<step extends Step<casing>, resolvedStep extends ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep>, casing extends CasingType, storageKey extends string> extends Subscribable<ObserverListener<step, resolvedStep, stepNumbers, casing, storageKey>> {
12
- protected schema: MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
13
- private unsubscribeFromSchema?;
14
- constructor(options: ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>);
15
- protected subscribeToSchema(): void;
16
- getSnapshot(): this;
17
- getResult(): MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
18
- setOptions(options: Partial<ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>>): void;
19
- protected notify(): void;
20
- destroy(): void;
21
- protected onSubscribe(): void;
22
- protected onUnsubscribe(): void;
23
- }
24
- //#endregion
25
- export { MultiStepFormObserver, ObserverListener, ObserverOptions };
26
- //# sourceMappingURL=observable.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observable.d.cts","names":[],"sources":["../src/observable.ts"],"sourcesContent":[],"mappings":";;;;;;KASY,+BACI,KAAK,gCACG,aAAa,OAAO,+BACrB,YAAY,gCACjB,mDAGR,oBACN,OACA,SACA,eACA,cACA;KAIQ,8BACI,KAAK,gCACG,aAAa,OAAO,+BACrB,YAAY,gCACjB;EApBN,MAAA,EAuBF,mBAvBkB,CAwBxB,KAxBwB,EAyBxB,OAzBwB,EA0BxB,aA1BwB,EA2BxB,YA3BwB,EA4BxB,WA5BwB,CAAA;CACP;AAAL,cA+BH,qBA/BG,CAAA,aAgCD,IAhCC,CAgCI,MAhCJ,CAAA,EAAA,qBAiCO,YAjCP,CAiCoB,IAjCpB,EAiC0B,MAjC1B,CAAA,EAAA,oBAkCM,WAlCN,CAkCkB,YAlClB,CAAA,EAAA,eAmCC,UAnCD,EAAA,mBAAA,MAAA,CAAA,SAqCN,YArCM,CAsCd,gBAtCc,CAsCG,IAtCH,EAsCS,YAtCT,EAsCuB,WAtCvB,EAsCoC,MAtCpC,EAsC4C,UAtC5C,CAAA,CAAA,CAAA;EACqB,UAAA,MAAA,EAuCjB,mBAvCiB,CAwCjC,IAxCiC,EAyCjC,MAzCiC,EA0CjC,YA1CiC,EA2CjC,WA3CiC,EA4CjC,UA5CiC,CAAA;EAAO,QAAA,qBAAA;EAApB,WAAA,CAAA,OAAA,EAiDX,eAjDW,CAkDlB,IAlDkB,EAmDlB,YAnDkB,EAoDlB,WApDkB,EAqDlB,MArDkB,EAsDlB,UAtDkB,CAAA;EACW,UAAA,iBAAA,CAAA,CAAA,EAAA,IAAA;EAAZ,WAAA,CAAA,CAAA,EAAA,IAAA;EACL,SAAA,CAAA,CAAA,EAuEP,mBAvEO,CAuEP,IAvEO,EAuEP,MAvEO,EAuEP,YAvEO,EAuEP,WAvEO,EAuEP,UAvEO,CAAA;EAId,UAAA,CAAA,OAAA,EAwES,OAxET,CAyEE,eAzEF,CAyEkB,IAzElB,EAyEwB,YAzExB,EAyEsC,WAzEtC,EAyEmD,MAzEnD,EAyE2D,UAzE3D,CAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,MAAA,CAAA,CAAA,EAAA,IAAA;EACA,OAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,WAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,aAAA,CAAA,CAAA,EAAA,IAAA"}
@@ -1,26 +0,0 @@
1
- import { CasingType } from "./utils/casing.mjs";
2
- import { ResolvedStep, Step, StepNumbers } from "./steps/types.mjs";
3
- import { Subscribable } from "./subscribable.mjs";
4
- import { MultiStepFormSchema } from "./schema.mjs";
5
-
6
- //#region src/observable.d.ts
7
- type ObserverListener<TStep extends Step<TCasing>, TResolvedStep extends ResolvedStep<TStep, TCasing>, TStepNumbers extends StepNumbers<TResolvedStep>, TCasing extends CasingType, TStorageKey extends string> = (schema: MultiStepFormSchema<TStep, TCasing, TResolvedStep, TStepNumbers, TStorageKey>) => void;
8
- type ObserverOptions<TStep extends Step<TCasing>, TResolvedStep extends ResolvedStep<TStep, TCasing>, TStepNumbers extends StepNumbers<TResolvedStep>, TCasing extends CasingType, TStorageKey extends string> = {
9
- schema: MultiStepFormSchema<TStep, TCasing, TResolvedStep, TStepNumbers, TStorageKey>;
10
- };
11
- declare class MultiStepFormObserver<step extends Step<casing>, resolvedStep extends ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep>, casing extends CasingType, storageKey extends string> extends Subscribable<ObserverListener<step, resolvedStep, stepNumbers, casing, storageKey>> {
12
- protected schema: MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
13
- private unsubscribeFromSchema?;
14
- constructor(options: ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>);
15
- protected subscribeToSchema(): void;
16
- getSnapshot(): this;
17
- getResult(): MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
18
- setOptions(options: Partial<ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>>): void;
19
- protected notify(): void;
20
- destroy(): void;
21
- protected onSubscribe(): void;
22
- protected onUnsubscribe(): void;
23
- }
24
- //#endregion
25
- export { MultiStepFormObserver, ObserverListener, ObserverOptions };
26
- //# sourceMappingURL=observable.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observable.d.mts","names":[],"sources":["../src/observable.ts"],"sourcesContent":[],"mappings":";;;;;;KASY,+BACI,KAAK,gCACG,aAAa,OAAO,+BACrB,YAAY,gCACjB,mDAGR,oBACN,OACA,SACA,eACA,cACA;KAIQ,8BACI,KAAK,gCACG,aAAa,OAAO,+BACrB,YAAY,gCACjB;EApBN,MAAA,EAuBF,mBAvBkB,CAwBxB,KAxBwB,EAyBxB,OAzBwB,EA0BxB,aA1BwB,EA2BxB,YA3BwB,EA4BxB,WA5BwB,CAAA;CACP;AAAL,cA+BH,qBA/BG,CAAA,aAgCD,IAhCC,CAgCI,MAhCJ,CAAA,EAAA,qBAiCO,YAjCP,CAiCoB,IAjCpB,EAiC0B,MAjC1B,CAAA,EAAA,oBAkCM,WAlCN,CAkCkB,YAlClB,CAAA,EAAA,eAmCC,UAnCD,EAAA,mBAAA,MAAA,CAAA,SAqCN,YArCM,CAsCd,gBAtCc,CAsCG,IAtCH,EAsCS,YAtCT,EAsCuB,WAtCvB,EAsCoC,MAtCpC,EAsC4C,UAtC5C,CAAA,CAAA,CAAA;EACqB,UAAA,MAAA,EAuCjB,mBAvCiB,CAwCjC,IAxCiC,EAyCjC,MAzCiC,EA0CjC,YA1CiC,EA2CjC,WA3CiC,EA4CjC,UA5CiC,CAAA;EAAO,QAAA,qBAAA;EAApB,WAAA,CAAA,OAAA,EAiDX,eAjDW,CAkDlB,IAlDkB,EAmDlB,YAnDkB,EAoDlB,WApDkB,EAqDlB,MArDkB,EAsDlB,UAtDkB,CAAA;EACW,UAAA,iBAAA,CAAA,CAAA,EAAA,IAAA;EAAZ,WAAA,CAAA,CAAA,EAAA,IAAA;EACL,SAAA,CAAA,CAAA,EAuEP,mBAvEO,CAuEP,IAvEO,EAuEP,MAvEO,EAuEP,YAvEO,EAuEP,WAvEO,EAuEP,UAvEO,CAAA;EAId,UAAA,CAAA,OAAA,EAwES,OAxET,CAyEE,eAzEF,CAyEkB,IAzElB,EAyEwB,YAzExB,EAyEsC,WAzEtC,EAyEmD,MAzEnD,EAyE2D,UAzE3D,CAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,MAAA,CAAA,CAAA,EAAA,IAAA;EACA,OAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,WAAA,CAAA,CAAA,EAAA,IAAA;EACA,UAAA,aAAA,CAAA,CAAA,EAAA,IAAA"}
@@ -1,44 +0,0 @@
1
- import { Subscribable } from "./subscribable.mjs";
2
-
3
- //#region src/observable.ts
4
- var MultiStepFormObserver = class extends Subscribable {
5
- schema;
6
- unsubscribeFromSchema;
7
- constructor(options) {
8
- super();
9
- this.schema = options.schema;
10
- this.subscribeToSchema();
11
- }
12
- subscribeToSchema() {
13
- this.unsubscribeFromSchema = this.schema.subscribe(() => {
14
- this.notify();
15
- });
16
- }
17
- getSnapshot() {
18
- return this;
19
- }
20
- getResult() {
21
- return this.schema;
22
- }
23
- setOptions(options) {
24
- if (options.schema && options.schema !== this.schema) {
25
- this.unsubscribeFromSchema?.();
26
- this.schema = options.schema;
27
- this.subscribeToSchema();
28
- this.notify();
29
- }
30
- }
31
- notify() {
32
- for (const listener of this.listeners) listener(this.schema);
33
- }
34
- destroy() {
35
- this.unsubscribeFromSchema?.();
36
- this.listeners.clear();
37
- }
38
- onSubscribe() {}
39
- onUnsubscribe() {}
40
- };
41
-
42
- //#endregion
43
- export { MultiStepFormObserver };
44
- //# sourceMappingURL=observable.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observable.mjs","names":[],"sources":["../src/observable.ts"],"sourcesContent":["import type { MultiStepFormSchema } from './schema';\nimport type {\n ResolvedStep,\n Step,\n StepNumbers\n} from '@/steps/types';\nimport { Subscribable } from './subscribable';\nimport type { CasingType } from '@/utils/casing';\n\nexport type ObserverListener<\n TStep extends Step<TCasing>,\n TResolvedStep extends ResolvedStep<TStep, TCasing>,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = (\n schema: MultiStepFormSchema<\n TStep,\n TCasing,\n TResolvedStep,\n TStepNumbers,\n TStorageKey\n >\n) => void;\n\nexport type ObserverOptions<\n TStep extends Step<TCasing>,\n TResolvedStep extends ResolvedStep<TStep, TCasing>,\n TStepNumbers extends StepNumbers<TResolvedStep>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = {\n schema: MultiStepFormSchema<\n TStep,\n TCasing,\n TResolvedStep,\n TStepNumbers,\n TStorageKey\n >;\n};\n\nexport class MultiStepFormObserver<\n step extends Step<casing>,\n resolvedStep extends ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep>,\n casing extends CasingType,\n storageKey extends string\n> extends Subscribable<\n ObserverListener<step, resolvedStep, stepNumbers, casing, storageKey>\n> {\n protected schema: MultiStepFormSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >;\n private unsubscribeFromSchema?: () => void;\n\n constructor(\n options: ObserverOptions<\n step,\n resolvedStep,\n stepNumbers,\n casing,\n storageKey\n >\n ) {\n super();\n\n this.schema = options.schema;\n this.subscribeToSchema();\n }\n\n protected subscribeToSchema() {\n this.unsubscribeFromSchema = this.schema.subscribe(() => {\n this.notify();\n });\n }\n\n getSnapshot() {\n return this;\n }\n\n getResult() {\n return this.schema;\n }\n\n setOptions(\n options: Partial<\n ObserverOptions<step, resolvedStep, stepNumbers, casing, storageKey>\n >\n ) {\n if (options.schema && options.schema !== this.schema) {\n this.unsubscribeFromSchema?.();\n this.schema = options.schema;\n this.subscribeToSchema();\n this.notify();\n }\n }\n\n protected notify() {\n for (const listener of this.listeners) {\n listener(this.schema);\n }\n }\n\n destroy() {\n this.unsubscribeFromSchema?.();\n this.listeners.clear();\n }\n\n protected onSubscribe() {}\n\n protected onUnsubscribe() {}\n}\n"],"mappings":";;;AAyCA,IAAa,wBAAb,cAMU,aAER;CACA,AAAU;CAOV,AAAQ;CAER,YACE,SAOA;AACA,SAAO;AAEP,OAAK,SAAS,QAAQ;AACtB,OAAK,mBAAmB;;CAG1B,AAAU,oBAAoB;AAC5B,OAAK,wBAAwB,KAAK,OAAO,gBAAgB;AACvD,QAAK,QAAQ;IACb;;CAGJ,cAAc;AACZ,SAAO;;CAGT,YAAY;AACV,SAAO,KAAK;;CAGd,WACE,SAGA;AACA,MAAI,QAAQ,UAAU,QAAQ,WAAW,KAAK,QAAQ;AACpD,QAAK,yBAAyB;AAC9B,QAAK,SAAS,QAAQ;AACtB,QAAK,mBAAmB;AACxB,QAAK,QAAQ;;;CAIjB,AAAU,SAAS;AACjB,OAAK,MAAM,YAAY,KAAK,UAC1B,UAAS,KAAK,OAAO;;CAIzB,UAAU;AACR,OAAK,yBAAyB;AAC9B,OAAK,UAAU,OAAO;;CAGxB,AAAU,cAAc;CAExB,AAAU,gBAAgB"}
package/dist/schema.cjs DELETED
@@ -1,68 +0,0 @@
1
- const require_casing = require('./utils/casing.cjs');
2
- const require_storage = require('./storage.cjs');
3
- const require_subscribable = require('./subscribable.cjs');
4
- const require_schema = require('./steps/schema.cjs');
5
- require('./steps/index.cjs');
6
-
7
- //#region src/schema.ts
8
- var MultiStepFormSchema = class extends require_subscribable.Subscribable {
9
- defaultNameTransformationCasing;
10
- stepSchema;
11
- storage;
12
- mountCount = 0;
13
- constructor(options) {
14
- super();
15
- const { steps, nameTransformCasing, storage } = options;
16
- this.defaultNameTransformationCasing = require_casing.setCasingType(nameTransformCasing);
17
- this.stepSchema = new require_schema.MultiStepFormStepSchema({
18
- steps,
19
- nameTransformCasing: this.defaultNameTransformationCasing
20
- });
21
- this.storage = new require_storage.MultiStepFormStorage({
22
- key: storage?.key ?? require_storage.DEFAULT_STORAGE_KEY,
23
- data: this.stepSchema.value,
24
- store: storage?.store,
25
- throwWhenUndefined: storage?.throwWhenUndefined ?? false
26
- });
27
- this.stepSchema.subscribe(() => {
28
- this.notify();
29
- });
30
- }
31
- getSnapshot() {
32
- return this;
33
- }
34
- mount() {
35
- this.mountCount++;
36
- if (this.mountCount === 1) this.onMount();
37
- return () => {
38
- this.unmount();
39
- };
40
- }
41
- unmount() {
42
- this.mountCount = Math.max(0, this.mountCount - 1);
43
- if (this.mountCount === 0) this.onUnmount();
44
- }
45
- isMounted() {
46
- return this.mountCount > 0;
47
- }
48
- onMount() {}
49
- onUnmount() {}
50
- notify() {
51
- for (const listener of this.listeners) listener({
52
- nameTransformCasing: this.defaultNameTransformationCasing,
53
- storage: {
54
- key: this.storage.key,
55
- store: this.storage.store
56
- },
57
- steps: this.stepSchema.original
58
- });
59
- }
60
- };
61
- function createMultiStepFormSchema(options) {
62
- return new MultiStepFormSchema(options);
63
- }
64
-
65
- //#endregion
66
- exports.MultiStepFormSchema = MultiStepFormSchema;
67
- exports.createMultiStepFormSchema = createMultiStepFormSchema;
68
- //# sourceMappingURL=schema.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.cjs","names":["Subscribable","setCasingType","MultiStepFormStepSchema","MultiStepFormStorage","DEFAULT_STORAGE_KEY"],"sources":["../src/schema.ts"],"sourcesContent":["import {\n MultiStepFormStepSchema,\n type MultiStepFormSchemaStepConfig,\n type ResolvedStep,\n type Step,\n type StepNumbers,\n} from '@/steps';\nimport {\n setCasingType,\n type CasingType,\n type Constrain,\n type DefaultCasing,\n} from '@/utils';\nimport {\n DEFAULT_STORAGE_KEY,\n MultiStepFormStorage,\n type DefaultStorageKey,\n} from './storage.js';\nimport { Subscribable } from './subscribable.js';\n\nexport interface MultiStepFormSchemaOptions<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TStorageKey extends string\n> extends MultiStepFormSchemaStepConfig<TStep, TCasing, TStorageKey> {}\nexport type MultiStepFormSchemaListener<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = (data: MultiStepFormSchemaOptions<TStep, TCasing, TStorageKey>) => void;\n\nexport class MultiStepFormSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n> extends Subscribable<MultiStepFormSchemaListener<step, casing, storageKey>> {\n readonly defaultNameTransformationCasing: casing;\n readonly stepSchema: MultiStepFormStepSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >;\n storage: MultiStepFormStorage<resolvedStep, storageKey>;\n private mountCount = 0;\n\n constructor(\n options: MultiStepFormSchemaOptions<\n step,\n // Allows full autocomplete\n Constrain<casing, CasingType>,\n storageKey\n >\n ) {\n super();\n\n const { steps, nameTransformCasing, storage } = options;\n\n this.defaultNameTransformationCasing = setCasingType(\n nameTransformCasing\n ) as casing;\n // @ts-ignore Type instantiation is excessively deep and possibly infinite\n this.stepSchema = new MultiStepFormStepSchema({\n steps,\n nameTransformCasing: this.defaultNameTransformationCasing,\n });\n this.storage = new MultiStepFormStorage<resolvedStep, storageKey>({\n key: (storage?.key ?? DEFAULT_STORAGE_KEY) as storageKey,\n data: this.stepSchema.value as never,\n store: storage?.store,\n throwWhenUndefined: storage?.throwWhenUndefined ?? false,\n });\n\n this.stepSchema.subscribe(() => {\n this.notify();\n });\n }\n\n getSnapshot() {\n return this;\n }\n\n mount() {\n this.mountCount++;\n\n if (this.mountCount === 1) {\n this.onMount();\n }\n\n return () => {\n this.unmount();\n };\n }\n\n unmount() {\n this.mountCount = Math.max(0, this.mountCount - 1);\n\n if (this.mountCount === 0) {\n this.onUnmount();\n }\n }\n\n isMounted() {\n return this.mountCount > 0;\n }\n\n protected onMount() {}\n protected onUnmount() {}\n\n protected notify() {\n for (const listener of this.listeners) {\n listener({\n nameTransformCasing: this.defaultNameTransformationCasing,\n storage: {\n key: this.storage.key,\n store: this.storage.store,\n },\n steps: this.stepSchema.original,\n });\n }\n }\n}\n\nexport function createMultiStepFormSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n>(\n options: MultiStepFormSchemaOptions<\n step,\n // Allows full autocomplete\n Constrain<casing, CasingType>,\n storageKey\n >\n) {\n return new MultiStepFormSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >(options);\n}\n"],"mappings":";;;;;;;AA+BA,IAAa,sBAAb,cAMUA,kCAAoE;CAC5E,AAAS;CACT,AAAS;CAOT;CACA,AAAQ,aAAa;CAErB,YACE,SAMA;AACA,SAAO;EAEP,MAAM,EAAE,OAAO,qBAAqB,YAAY;AAEhD,OAAK,kCAAkCC,6BACrC,oBACD;AAED,OAAK,aAAa,IAAIC,uCAAwB;GAC5C;GACA,qBAAqB,KAAK;GAC3B,CAAC;AACF,OAAK,UAAU,IAAIC,qCAA+C;GAChE,KAAM,SAAS,OAAOC;GACtB,MAAM,KAAK,WAAW;GACtB,OAAO,SAAS;GAChB,oBAAoB,SAAS,sBAAsB;GACpD,CAAC;AAEF,OAAK,WAAW,gBAAgB;AAC9B,QAAK,QAAQ;IACb;;CAGJ,cAAc;AACZ,SAAO;;CAGT,QAAQ;AACN,OAAK;AAEL,MAAI,KAAK,eAAe,EACtB,MAAK,SAAS;AAGhB,eAAa;AACX,QAAK,SAAS;;;CAIlB,UAAU;AACR,OAAK,aAAa,KAAK,IAAI,GAAG,KAAK,aAAa,EAAE;AAElD,MAAI,KAAK,eAAe,EACtB,MAAK,WAAW;;CAIpB,YAAY;AACV,SAAO,KAAK,aAAa;;CAG3B,AAAU,UAAU;CACpB,AAAU,YAAY;CAEtB,AAAU,SAAS;AACjB,OAAK,MAAM,YAAY,KAAK,UAC1B,UAAS;GACP,qBAAqB,KAAK;GAC1B,SAAS;IACP,KAAK,KAAK,QAAQ;IAClB,OAAO,KAAK,QAAQ;IACrB;GACD,OAAO,KAAK,WAAW;GACxB,CAAC;;;AAKR,SAAgB,0BAOd,SAMA;AACA,QAAO,IAAI,oBAMT,QAAQ"}
package/dist/schema.d.cts DELETED
@@ -1,28 +0,0 @@
1
- import { DefaultStorageKey, MultiStepFormStorage } from "./storage.cjs";
2
- import { Constrain } from "./utils/types.cjs";
3
- import { CasingType, DefaultCasing } from "./utils/casing.cjs";
4
- import { MultiStepFormSchemaStepConfig, ResolvedStep, Step, StepNumbers } from "./steps/types.cjs";
5
- import { Subscribable } from "./subscribable.cjs";
6
- import { MultiStepFormStepSchema } from "./steps/schema.cjs";
7
-
8
- //#region src/schema.d.ts
9
- interface MultiStepFormSchemaOptions<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> extends MultiStepFormSchemaStepConfig<TStep, TCasing, TStorageKey> {}
10
- type MultiStepFormSchemaListener<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> = (data: MultiStepFormSchemaOptions<TStep, TCasing, TStorageKey>) => void;
11
- declare class MultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>, storageKey extends string = DefaultStorageKey> extends Subscribable<MultiStepFormSchemaListener<step, casing, storageKey>> {
12
- readonly defaultNameTransformationCasing: casing;
13
- readonly stepSchema: MultiStepFormStepSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
14
- storage: MultiStepFormStorage<resolvedStep, storageKey>;
15
- private mountCount;
16
- constructor(options: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey>);
17
- getSnapshot(): this;
18
- mount(): () => void;
19
- unmount(): void;
20
- isMounted(): boolean;
21
- protected onMount(): void;
22
- protected onUnmount(): void;
23
- protected notify(): void;
24
- }
25
- declare function createMultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>, storageKey extends string = DefaultStorageKey>(options: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey>): MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
26
- //#endregion
27
- export { MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, createMultiStepFormSchema };
28
- //# sourceMappingURL=schema.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.cts","names":[],"sources":["../src/schema.ts"],"sourcesContent":[],"mappings":";;;;;;;;UAoBiB,yCACD,KAAK,0BACH,gDAER,8BAA8B,OAAO,SAAS;KAC5C,0CACI,KAAK,0BACH,iDAEP,2BAA2B,OAAO,SAAS;cAEzC,iCACE,KAAK,wBACH,aAAa,oCACP,aAAa,MAAM,UAAU,aAAa,MAAM,6BACjD,YAAY,gBAAgB,YAAY,2CAChC,2BACpB,aAAa,4BAA4B,MAAM,QAAQ;EAjBhD,SAAA,+BAA0B,EAkBC,MAlBD;EACtB,SAAA,UAAA,EAkBE,uBAlBF,CAmBjB,IAnBiB,EAoBjB,MApBiB,EAqBjB,YArBiB,EAsBjB,WAtBiB,EAuBjB,UAvBiB,CAAA;EAAL,OAAA,EAyBL,oBAzBK,CAyBgB,YAzBhB,EAyB8B,UAzB9B,CAAA;EACE,QAAA,UAAA;EAEsB,WAAA,CAAA,OAAA,EA0B3B,0BA1B2B,CA2BlC,IA3BkC,EA6BlC,SA7BkC,CA6BxB,MA7BwB,EA6BhB,UA7BgB,CAAA,EA8BlC,UA9BkC,CAAA;EAAO,WAAA,CAAA,CAAA,EAAA,IAAA;EAAS,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAA9C,OAAA,CAAA,CAAA,EAAA,IAAA;EAA6B,SAAA,CAAA,CAAA,EAAA,OAAA;EAC3B,UAAA,OAAA,CAAA,CAAA,EAAA,IAAA;EACS,UAAA,SAAA,CAAA,CAAA,EAAA,IAAA;EAAL,UAAA,MAAA,CAAA,CAAA,EAAA,IAAA;;AAGsB,iBAiGtB,yBAjGsB,CAAA,aAkGvB,IAlGuB,CAkGlB,MAlGkB,CAAA,EAAA,eAmGrB,UAnGqB,GAmGR,aAnGQ,EAAA,qBAoGf,YApGe,CAoGF,IApGE,EAoGI,MApGJ,CAAA,GAoGc,YApGd,CAoG2B,IApG3B,EAoGiC,MApGjC,CAAA,EAAA,oBAqGhB,WArGgB,CAqGJ,YArGI,CAAA,GAqGY,WArGZ,CAqGwB,YArGxB,CAAA,EAAA,mBAAA,MAAA,GAsGR,iBAtGQ,CAAA,CAAA,OAAA,EAwG3B,0BAxG2B,CAyGlC,IAzGkC,EA2GlC,SA3GkC,CA2GxB,MA3GwB,EA2GhB,UA3GgB,CAAA,EA4GlC,UA5GkC,CAAA,CAAA,EA6GnC,mBA7GmC,CA6GnC,IA7GmC,EA6GnC,MA7GmC,EA6GnC,YA7GmC,EA6GnC,WA7GmC,EA6GnC,UA7GmC,CAAA"}
package/dist/schema.d.mts DELETED
@@ -1,28 +0,0 @@
1
- import { DefaultStorageKey, MultiStepFormStorage } from "./storage.mjs";
2
- import { Constrain } from "./utils/types.mjs";
3
- import { CasingType, DefaultCasing } from "./utils/casing.mjs";
4
- import { MultiStepFormSchemaStepConfig, ResolvedStep, Step, StepNumbers } from "./steps/types.mjs";
5
- import { Subscribable } from "./subscribable.mjs";
6
- import { MultiStepFormStepSchema } from "./steps/schema.mjs";
7
-
8
- //#region src/schema.d.ts
9
- interface MultiStepFormSchemaOptions<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> extends MultiStepFormSchemaStepConfig<TStep, TCasing, TStorageKey> {}
10
- type MultiStepFormSchemaListener<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string> = (data: MultiStepFormSchemaOptions<TStep, TCasing, TStorageKey>) => void;
11
- declare class MultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>, storageKey extends string = DefaultStorageKey> extends Subscribable<MultiStepFormSchemaListener<step, casing, storageKey>> {
12
- readonly defaultNameTransformationCasing: casing;
13
- readonly stepSchema: MultiStepFormStepSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
14
- storage: MultiStepFormStorage<resolvedStep, storageKey>;
15
- private mountCount;
16
- constructor(options: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey>);
17
- getSnapshot(): this;
18
- mount(): () => void;
19
- unmount(): void;
20
- isMounted(): boolean;
21
- protected onMount(): void;
22
- protected onUnmount(): void;
23
- protected notify(): void;
24
- }
25
- declare function createMultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>, storageKey extends string = DefaultStorageKey>(options: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey>): MultiStepFormSchema<step, casing, resolvedStep, stepNumbers, storageKey>;
26
- //#endregion
27
- export { MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, createMultiStepFormSchema };
28
- //# sourceMappingURL=schema.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.mts","names":[],"sources":["../src/schema.ts"],"sourcesContent":[],"mappings":";;;;;;;;UAoBiB,yCACD,KAAK,0BACH,gDAER,8BAA8B,OAAO,SAAS;KAC5C,0CACI,KAAK,0BACH,iDAEP,2BAA2B,OAAO,SAAS;cAEzC,iCACE,KAAK,wBACH,aAAa,oCACP,aAAa,MAAM,UAAU,aAAa,MAAM,6BACjD,YAAY,gBAAgB,YAAY,2CAChC,2BACpB,aAAa,4BAA4B,MAAM,QAAQ;EAjBhD,SAAA,+BAA0B,EAkBC,MAlBD;EACtB,SAAA,UAAA,EAkBE,uBAlBF,CAmBjB,IAnBiB,EAoBjB,MApBiB,EAqBjB,YArBiB,EAsBjB,WAtBiB,EAuBjB,UAvBiB,CAAA;EAAL,OAAA,EAyBL,oBAzBK,CAyBgB,YAzBhB,EAyB8B,UAzB9B,CAAA;EACE,QAAA,UAAA;EAEsB,WAAA,CAAA,OAAA,EA0B3B,0BA1B2B,CA2BlC,IA3BkC,EA6BlC,SA7BkC,CA6BxB,MA7BwB,EA6BhB,UA7BgB,CAAA,EA8BlC,UA9BkC,CAAA;EAAO,WAAA,CAAA,CAAA,EAAA,IAAA;EAAS,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAA9C,OAAA,CAAA,CAAA,EAAA,IAAA;EAA6B,SAAA,CAAA,CAAA,EAAA,OAAA;EAC3B,UAAA,OAAA,CAAA,CAAA,EAAA,IAAA;EACS,UAAA,SAAA,CAAA,CAAA,EAAA,IAAA;EAAL,UAAA,MAAA,CAAA,CAAA,EAAA,IAAA;;AAGsB,iBAiGtB,yBAjGsB,CAAA,aAkGvB,IAlGuB,CAkGlB,MAlGkB,CAAA,EAAA,eAmGrB,UAnGqB,GAmGR,aAnGQ,EAAA,qBAoGf,YApGe,CAoGF,IApGE,EAoGI,MApGJ,CAAA,GAoGc,YApGd,CAoG2B,IApG3B,EAoGiC,MApGjC,CAAA,EAAA,oBAqGhB,WArGgB,CAqGJ,YArGI,CAAA,GAqGY,WArGZ,CAqGwB,YArGxB,CAAA,EAAA,mBAAA,MAAA,GAsGR,iBAtGQ,CAAA,CAAA,OAAA,EAwG3B,0BAxG2B,CAyGlC,IAzGkC,EA2GlC,SA3GkC,CA2GxB,MA3GwB,EA2GhB,UA3GgB,CAAA,EA4GlC,UA5GkC,CAAA,CAAA,EA6GnC,mBA7GmC,CA6GnC,IA7GmC,EA6GnC,MA7GmC,EA6GnC,YA7GmC,EA6GnC,WA7GmC,EA6GnC,UA7GmC,CAAA"}
package/dist/schema.mjs DELETED
@@ -1,67 +0,0 @@
1
- import { setCasingType } from "./utils/casing.mjs";
2
- import { DEFAULT_STORAGE_KEY, MultiStepFormStorage } from "./storage.mjs";
3
- import { Subscribable } from "./subscribable.mjs";
4
- import { MultiStepFormStepSchema } from "./steps/schema.mjs";
5
- import "./steps/index.mjs";
6
-
7
- //#region src/schema.ts
8
- var MultiStepFormSchema = class extends Subscribable {
9
- defaultNameTransformationCasing;
10
- stepSchema;
11
- storage;
12
- mountCount = 0;
13
- constructor(options) {
14
- super();
15
- const { steps, nameTransformCasing, storage } = options;
16
- this.defaultNameTransformationCasing = setCasingType(nameTransformCasing);
17
- this.stepSchema = new MultiStepFormStepSchema({
18
- steps,
19
- nameTransformCasing: this.defaultNameTransformationCasing
20
- });
21
- this.storage = new MultiStepFormStorage({
22
- key: storage?.key ?? DEFAULT_STORAGE_KEY,
23
- data: this.stepSchema.value,
24
- store: storage?.store,
25
- throwWhenUndefined: storage?.throwWhenUndefined ?? false
26
- });
27
- this.stepSchema.subscribe(() => {
28
- this.notify();
29
- });
30
- }
31
- getSnapshot() {
32
- return this;
33
- }
34
- mount() {
35
- this.mountCount++;
36
- if (this.mountCount === 1) this.onMount();
37
- return () => {
38
- this.unmount();
39
- };
40
- }
41
- unmount() {
42
- this.mountCount = Math.max(0, this.mountCount - 1);
43
- if (this.mountCount === 0) this.onUnmount();
44
- }
45
- isMounted() {
46
- return this.mountCount > 0;
47
- }
48
- onMount() {}
49
- onUnmount() {}
50
- notify() {
51
- for (const listener of this.listeners) listener({
52
- nameTransformCasing: this.defaultNameTransformationCasing,
53
- storage: {
54
- key: this.storage.key,
55
- store: this.storage.store
56
- },
57
- steps: this.stepSchema.original
58
- });
59
- }
60
- };
61
- function createMultiStepFormSchema(options) {
62
- return new MultiStepFormSchema(options);
63
- }
64
-
65
- //#endregion
66
- export { MultiStepFormSchema, createMultiStepFormSchema };
67
- //# sourceMappingURL=schema.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import {\n MultiStepFormStepSchema,\n type MultiStepFormSchemaStepConfig,\n type ResolvedStep,\n type Step,\n type StepNumbers,\n} from '@/steps';\nimport {\n setCasingType,\n type CasingType,\n type Constrain,\n type DefaultCasing,\n} from '@/utils';\nimport {\n DEFAULT_STORAGE_KEY,\n MultiStepFormStorage,\n type DefaultStorageKey,\n} from './storage.js';\nimport { Subscribable } from './subscribable.js';\n\nexport interface MultiStepFormSchemaOptions<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TStorageKey extends string\n> extends MultiStepFormSchemaStepConfig<TStep, TCasing, TStorageKey> {}\nexport type MultiStepFormSchemaListener<\n TStep extends Step<TCasing>,\n TCasing extends CasingType,\n TStorageKey extends string\n> = (data: MultiStepFormSchemaOptions<TStep, TCasing, TStorageKey>) => void;\n\nexport class MultiStepFormSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n> extends Subscribable<MultiStepFormSchemaListener<step, casing, storageKey>> {\n readonly defaultNameTransformationCasing: casing;\n readonly stepSchema: MultiStepFormStepSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >;\n storage: MultiStepFormStorage<resolvedStep, storageKey>;\n private mountCount = 0;\n\n constructor(\n options: MultiStepFormSchemaOptions<\n step,\n // Allows full autocomplete\n Constrain<casing, CasingType>,\n storageKey\n >\n ) {\n super();\n\n const { steps, nameTransformCasing, storage } = options;\n\n this.defaultNameTransformationCasing = setCasingType(\n nameTransformCasing\n ) as casing;\n // @ts-ignore Type instantiation is excessively deep and possibly infinite\n this.stepSchema = new MultiStepFormStepSchema({\n steps,\n nameTransformCasing: this.defaultNameTransformationCasing,\n });\n this.storage = new MultiStepFormStorage<resolvedStep, storageKey>({\n key: (storage?.key ?? DEFAULT_STORAGE_KEY) as storageKey,\n data: this.stepSchema.value as never,\n store: storage?.store,\n throwWhenUndefined: storage?.throwWhenUndefined ?? false,\n });\n\n this.stepSchema.subscribe(() => {\n this.notify();\n });\n }\n\n getSnapshot() {\n return this;\n }\n\n mount() {\n this.mountCount++;\n\n if (this.mountCount === 1) {\n this.onMount();\n }\n\n return () => {\n this.unmount();\n };\n }\n\n unmount() {\n this.mountCount = Math.max(0, this.mountCount - 1);\n\n if (this.mountCount === 0) {\n this.onUnmount();\n }\n }\n\n isMounted() {\n return this.mountCount > 0;\n }\n\n protected onMount() {}\n protected onUnmount() {}\n\n protected notify() {\n for (const listener of this.listeners) {\n listener({\n nameTransformCasing: this.defaultNameTransformationCasing,\n storage: {\n key: this.storage.key,\n store: this.storage.store,\n },\n steps: this.stepSchema.original,\n });\n }\n }\n}\n\nexport function createMultiStepFormSchema<\n step extends Step<casing>,\n casing extends CasingType = DefaultCasing,\n resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>,\n stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>,\n storageKey extends string = DefaultStorageKey\n>(\n options: MultiStepFormSchemaOptions<\n step,\n // Allows full autocomplete\n Constrain<casing, CasingType>,\n storageKey\n >\n) {\n return new MultiStepFormSchema<\n step,\n casing,\n resolvedStep,\n stepNumbers,\n storageKey\n >(options);\n}\n"],"mappings":";;;;;;;AA+BA,IAAa,sBAAb,cAMU,aAAoE;CAC5E,AAAS;CACT,AAAS;CAOT;CACA,AAAQ,aAAa;CAErB,YACE,SAMA;AACA,SAAO;EAEP,MAAM,EAAE,OAAO,qBAAqB,YAAY;AAEhD,OAAK,kCAAkC,cACrC,oBACD;AAED,OAAK,aAAa,IAAI,wBAAwB;GAC5C;GACA,qBAAqB,KAAK;GAC3B,CAAC;AACF,OAAK,UAAU,IAAI,qBAA+C;GAChE,KAAM,SAAS,OAAO;GACtB,MAAM,KAAK,WAAW;GACtB,OAAO,SAAS;GAChB,oBAAoB,SAAS,sBAAsB;GACpD,CAAC;AAEF,OAAK,WAAW,gBAAgB;AAC9B,QAAK,QAAQ;IACb;;CAGJ,cAAc;AACZ,SAAO;;CAGT,QAAQ;AACN,OAAK;AAEL,MAAI,KAAK,eAAe,EACtB,MAAK,SAAS;AAGhB,eAAa;AACX,QAAK,SAAS;;;CAIlB,UAAU;AACR,OAAK,aAAa,KAAK,IAAI,GAAG,KAAK,aAAa,EAAE;AAElD,MAAI,KAAK,eAAe,EACtB,MAAK,WAAW;;CAIpB,YAAY;AACV,SAAO,KAAK,aAAa;;CAG3B,AAAU,UAAU;CACpB,AAAU,YAAY;CAEtB,AAAU,SAAS;AACjB,OAAK,MAAM,YAAY,KAAK,UAC1B,UAAS;GACP,qBAAqB,KAAK;GAC1B,SAAS;IACP,KAAK,KAAK,QAAQ;IAClB,OAAO,KAAK,QAAQ;IACrB;GACD,OAAO,KAAK,WAAW;GACxB,CAAC;;;AAKR,SAAgB,0BAOd,SAMA;AACA,QAAO,IAAI,oBAMT,QAAQ"}