@jfdevelops/multi-step-form-core 1.0.0-alpha.21 → 1.0.0-alpha.23
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.
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -2
- package/dist/internals/utils.cjs +12 -4
- package/dist/internals/utils.cjs.map +1 -1
- package/dist/internals/utils.d.cts +4 -26
- package/dist/internals/utils.d.cts.map +1 -1
- package/dist/internals/utils.d.mts +4 -26
- package/dist/internals/utils.d.mts.map +1 -1
- package/dist/internals/utils.mjs +13 -5
- package/dist/internals/utils.mjs.map +1 -1
- package/dist/schema.d.cts +1 -1
- package/dist/schema.d.mts +1 -1
- package/dist/steps/fields.cjs +6 -0
- package/dist/steps/fields.cjs.map +1 -1
- package/dist/steps/fields.d.cts +11 -5
- package/dist/steps/fields.d.cts.map +1 -1
- package/dist/steps/fields.d.mts +11 -5
- package/dist/steps/fields.d.mts.map +1 -1
- package/dist/steps/fields.mjs +6 -0
- package/dist/steps/fields.mjs.map +1 -1
- package/dist/steps/schema.cjs.map +1 -1
- package/dist/steps/schema.d.cts +3 -3
- package/dist/steps/schema.d.cts.map +1 -1
- package/dist/steps/schema.d.mts +3 -3
- package/dist/steps/schema.d.mts.map +1 -1
- package/dist/steps/schema.mjs.map +1 -1
- package/dist/steps/types.cjs.map +1 -1
- package/dist/steps/types.d.cts +4 -2
- package/dist/steps/types.d.cts.map +1 -1
- package/dist/steps/types.d.mts +4 -2
- package/dist/steps/types.d.mts.map +1 -1
- package/dist/steps/types.mjs.map +1 -1
- package/dist/utils/casing.d.cts +1 -1
- package/dist/utils/casing.d.cts.map +1 -1
- package/dist/utils/casing.d.mts +1 -1
- package/dist/utils/casing.d.mts.map +1 -1
- package/dist/utils/field-types.cjs +74 -0
- package/dist/utils/field-types.cjs.map +1 -1
- package/dist/utils/field-types.d.cts +14 -1
- package/dist/utils/field-types.d.cts.map +1 -1
- package/dist/utils/field-types.d.mts +14 -1
- package/dist/utils/field-types.d.mts.map +1 -1
- package/dist/utils/field-types.mjs +74 -1
- package/dist/utils/field-types.mjs.map +1 -1
- package/dist/utils/validator.d.cts.map +1 -1
- package/dist/utils/validator.d.mts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -41,6 +41,7 @@ Object.defineProperty(exports, 'fields', {
|
|
|
41
41
|
return require_fields.fields;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
+
exports.getInferredFieldType = require_field_types.getInferredFieldType;
|
|
44
45
|
exports.invariant = require_invariant.invariant;
|
|
45
46
|
exports.isCasingValid = require_casing.isCasingValid;
|
|
46
47
|
exports.isFieldType = require_field_types.isFieldType;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { DEFAULT_STORAGE_KEY, DefaultStorageKey, MultiStepFormStorage, StorageConfig } from "./storage.cjs";
|
|
2
1
|
import { Constrain, DeepKeys, DeepPartial, DeepValue, Expand, Join, Override, SetDefaultString, Split, objectHelpers, unionHelpers } from "./utils/types.cjs";
|
|
3
2
|
import { CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, DEFAULT_CASING, DefaultCasing, ToLower, changeCasing, isCasingValid, quote, setCasingType } from "./utils/casing.cjs";
|
|
4
|
-
import { DEFAULT_FIELD_TYPE, DefaultFieldType, DefaultFieldTypeMap, FIELD_TYPES, FieldType, GetInferredFieldType, ResolvedFieldTypeMap, isFieldType } from "./utils/field-types.cjs";
|
|
3
|
+
import { DEFAULT_FIELD_TYPE, DefaultFieldType, DefaultFieldTypeMap, FIELD_TYPES, FieldType, GetInferredFieldType, ResolvedFieldTypeMap, getInferredFieldType, isFieldType } from "./utils/field-types.cjs";
|
|
5
4
|
import { DEFAULT_LOGGER_PREFIX, MultiStepFormLogger, MultiStepFormLoggerOptions } from "./utils/logger.cjs";
|
|
6
5
|
import { invariant } from "./utils/invariant.cjs";
|
|
7
|
-
import { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, LastStep, Max, Min, MultiStepFormSchemaStepConfig, NameTransformCasingOptions, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StrippedResolvedStep, Tuple, UnionToTuple, UpdateFn, Updater, ValidStepKey, helperFnResetFn, helperFnUpdateFn } from "./steps/types.cjs";
|
|
6
|
+
import { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, CurrentStepHelperFnCtx, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, LastStep, Max, Min, MultiStepFormSchemaStepConfig, NameTransformCasingOptions, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StrippedResolvedStep, Tuple, UnionToTuple, UpdateFn, Updater, ValidStepKey, helperFnResetFn, helperFnUpdateFn } from "./steps/types.cjs";
|
|
7
|
+
import { DEFAULT_STORAGE_KEY, DefaultStorageKey, MultiStepFormStorage, StorageConfig } from "./storage.cjs";
|
|
8
8
|
import { VALIDATED_STEP_REGEX, createStep, isValidStepKey } from "./internals/utils.cjs";
|
|
9
9
|
import { fields } from "./steps/fields.cjs";
|
|
10
10
|
import { createCtx } from "./steps/utils.cjs";
|
|
11
11
|
import { AsFunction, AsFunctionReturn, AsType, AsTypeMap, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig } from "./steps/schema.cjs";
|
|
12
12
|
import { MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, createMultiStepFormSchema } from "./schema.cjs";
|
|
13
13
|
import { MultiStepFormObserver, ObserverListener, ObserverOptions } from "./observable.cjs";
|
|
14
|
-
export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, AsFunction, AsFunctionReturn, AsType, AsTypeMap, CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, ClampTo0to10, Constrain, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, DeepKeys, DeepPartial, DeepValue, DefaultCasing, DefaultFieldType, DefaultFieldTypeMap, DefaultStorageKey, Expand, ExtractStepFromKey, FIELD_TYPES, FieldType, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GetInferredFieldType, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, Join, LastStep, Max, Min, MultiStepFormLogger, MultiStepFormLoggerOptions, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, MultiStepFormSchemaStepConfig, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig, MultiStepFormStorage, NameTransformCasingOptions, ObserverListener, ObserverOptions, Override, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFieldTypeMap, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, SetDefaultString, Split, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StorageConfig, StrippedResolvedStep, ToLower, Tuple, UnionToTuple, UpdateFn, Updater, VALIDATED_STEP_REGEX, ValidStepKey, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, helperFnResetFn, helperFnUpdateFn, invariant, isCasingValid, isFieldType, isValidStepKey, objectHelpers, quote, setCasingType, unionHelpers };
|
|
14
|
+
export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, AsFunction, AsFunctionReturn, AsType, AsTypeMap, CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, ClampTo0to10, Constrain, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, CurrentStepHelperFnCtx, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, DeepKeys, DeepPartial, DeepValue, DefaultCasing, DefaultFieldType, DefaultFieldTypeMap, DefaultStorageKey, Expand, ExtractStepFromKey, FIELD_TYPES, FieldType, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GetInferredFieldType, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, Join, LastStep, Max, Min, MultiStepFormLogger, MultiStepFormLoggerOptions, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, MultiStepFormSchemaStepConfig, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig, MultiStepFormStorage, NameTransformCasingOptions, ObserverListener, ObserverOptions, Override, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFieldTypeMap, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, SetDefaultString, Split, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StorageConfig, StrippedResolvedStep, ToLower, Tuple, UnionToTuple, UpdateFn, Updater, VALIDATED_STEP_REGEX, ValidStepKey, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, getInferredFieldType, helperFnResetFn, helperFnUpdateFn, invariant, isCasingValid, isFieldType, isValidStepKey, objectHelpers, quote, setCasingType, unionHelpers };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { DEFAULT_STORAGE_KEY, DefaultStorageKey, MultiStepFormStorage, StorageConfig } from "./storage.mjs";
|
|
2
1
|
import { Constrain, DeepKeys, DeepPartial, DeepValue, Expand, Join, Override, SetDefaultString, Split, objectHelpers, unionHelpers } from "./utils/types.mjs";
|
|
3
2
|
import { CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, DEFAULT_CASING, DefaultCasing, ToLower, changeCasing, isCasingValid, quote, setCasingType } from "./utils/casing.mjs";
|
|
4
|
-
import { DEFAULT_FIELD_TYPE, DefaultFieldType, DefaultFieldTypeMap, FIELD_TYPES, FieldType, GetInferredFieldType, ResolvedFieldTypeMap, isFieldType } from "./utils/field-types.mjs";
|
|
3
|
+
import { DEFAULT_FIELD_TYPE, DefaultFieldType, DefaultFieldTypeMap, FIELD_TYPES, FieldType, GetInferredFieldType, ResolvedFieldTypeMap, getInferredFieldType, isFieldType } from "./utils/field-types.mjs";
|
|
5
4
|
import { DEFAULT_LOGGER_PREFIX, MultiStepFormLogger, MultiStepFormLoggerOptions } from "./utils/logger.mjs";
|
|
6
5
|
import { invariant } from "./utils/invariant.mjs";
|
|
7
|
-
import { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, LastStep, Max, Min, MultiStepFormSchemaStepConfig, NameTransformCasingOptions, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StrippedResolvedStep, Tuple, UnionToTuple, UpdateFn, Updater, ValidStepKey, helperFnResetFn, helperFnUpdateFn } from "./steps/types.mjs";
|
|
6
|
+
import { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, ClampTo0to10, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, CurrentStepHelperFnCtx, ExtractStepFromKey, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, LastStep, Max, Min, MultiStepFormSchemaStepConfig, NameTransformCasingOptions, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StrippedResolvedStep, Tuple, UnionToTuple, UpdateFn, Updater, ValidStepKey, helperFnResetFn, helperFnUpdateFn } from "./steps/types.mjs";
|
|
7
|
+
import { DEFAULT_STORAGE_KEY, DefaultStorageKey, MultiStepFormStorage, StorageConfig } from "./storage.mjs";
|
|
8
8
|
import { VALIDATED_STEP_REGEX, createStep, isValidStepKey } from "./internals/utils.mjs";
|
|
9
9
|
import { fields } from "./steps/fields.mjs";
|
|
10
10
|
import { createCtx } from "./steps/utils.mjs";
|
|
11
11
|
import { AsFunction, AsFunctionReturn, AsType, AsTypeMap, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig } from "./steps/schema.mjs";
|
|
12
12
|
import { MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, createMultiStepFormSchema } from "./schema.mjs";
|
|
13
13
|
import { MultiStepFormObserver, ObserverListener, ObserverOptions } from "./observable.mjs";
|
|
14
|
-
export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, AsFunction, AsFunctionReturn, AsType, AsTypeMap, CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, ClampTo0to10, Constrain, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, DeepKeys, DeepPartial, DeepValue, DefaultCasing, DefaultFieldType, DefaultFieldTypeMap, DefaultStorageKey, Expand, ExtractStepFromKey, FIELD_TYPES, FieldType, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GetInferredFieldType, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, Join, LastStep, Max, Min, MultiStepFormLogger, MultiStepFormLoggerOptions, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, MultiStepFormSchemaStepConfig, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig, MultiStepFormStorage, NameTransformCasingOptions, ObserverListener, ObserverOptions, Override, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFieldTypeMap, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, SetDefaultString, Split, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StorageConfig, StrippedResolvedStep, ToLower, Tuple, UnionToTuple, UpdateFn, Updater, VALIDATED_STEP_REGEX, ValidStepKey, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, helperFnResetFn, helperFnUpdateFn, invariant, isCasingValid, isFieldType, isValidStepKey, objectHelpers, quote, setCasingType, unionHelpers };
|
|
14
|
+
export { AnyResolvedStep, AnyStep, AnyStepField, AnyStepFieldOption, AsFunction, AsFunctionReturn, AsType, AsTypeMap, CASING_TYPES, CapitalizeWord, CasingType, ChangeCasing, ChangeObjectCasing, ClampTo0to10, Constrain, CreateHelperFunctionOptionsBase, CreateHelperFunctionOptionsWithCustomCtxOptions, CreateHelperFunctionOptionsWithValidator, CreateHelperFunctionOptionsWithoutValidator, CreateStepHelperFn, CreatedHelperFnInput, CreatedHelperFnWithInput, CreatedHelperFnWithoutInput, CtxDataSelector, CurrentStepHelperFnCtx, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, DeepKeys, DeepPartial, DeepValue, DefaultCasing, DefaultFieldType, DefaultFieldTypeMap, DefaultStorageKey, Expand, ExtractStepFromKey, FIELD_TYPES, FieldType, FirstStep, GeneralHelperFn, GetCurrentStep, GetDefaultCasingTransformation, GetFieldsForStep, GetInferredFieldType, GreaterThan, HelperFn, HelperFnChosenSteps, HelperFnCtx, HelperFnInputBase, HelperFnInputWithValidator, HelperFnInputWithoutValidator, HelperFnResetFn, HelperFnUpdateFn, HelperFnWithValidator, HelperFnWithoutValidator, InferStepOptions, Join, LastStep, Max, Min, MultiStepFormLogger, MultiStepFormLoggerOptions, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormSchemaListener, MultiStepFormSchemaOptions, MultiStepFormSchemaStepConfig, MultiStepFormStepSchema, MultiStepFormStepSchemaFunctions, MultiStepFormStepSchemaListener, MultiStepFormStepStepsConfig, MultiStepFormStorage, NameTransformCasingOptions, ObserverListener, ObserverOptions, Override, Range, Relaxed, RequireAtLeastOne, ResetFn, ResolvedFieldTypeMap, ResolvedFields, ResolvedStep, ResolvedStepBuilder, SetDefault, SetDefaultString, Split, Step, StepData, StepFieldOptions, StepNumbers, StepOptions, StepSpecificHelperFn, StepSpecificHelperFns, StorageConfig, StrippedResolvedStep, ToLower, Tuple, UnionToTuple, UpdateFn, Updater, VALIDATED_STEP_REGEX, ValidStepKey, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, getInferredFieldType, helperFnResetFn, helperFnUpdateFn, invariant, isCasingValid, isFieldType, isValidStepKey, objectHelpers, quote, setCasingType, unionHelpers };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { invariant } from "./utils/invariant.mjs";
|
|
2
2
|
import { createCtx } from "./steps/utils.mjs";
|
|
3
3
|
import { CASING_TYPES, DEFAULT_CASING, changeCasing, isCasingValid, quote, setCasingType } from "./utils/casing.mjs";
|
|
4
|
-
import { DEFAULT_FIELD_TYPE, FIELD_TYPES, isFieldType } from "./utils/field-types.mjs";
|
|
4
|
+
import { DEFAULT_FIELD_TYPE, FIELD_TYPES, getInferredFieldType, isFieldType } from "./utils/field-types.mjs";
|
|
5
5
|
import { DEFAULT_LOGGER_PREFIX, MultiStepFormLogger } from "./utils/logger.mjs";
|
|
6
6
|
import { VALIDATED_STEP_REGEX, createStep, isValidStepKey } from "./internals/utils.mjs";
|
|
7
7
|
import { DEFAULT_STORAGE_KEY, MultiStepFormStorage } from "./storage.mjs";
|
|
@@ -13,4 +13,4 @@ import "./steps/index.mjs";
|
|
|
13
13
|
import { MultiStepFormSchema, createMultiStepFormSchema } from "./schema.mjs";
|
|
14
14
|
import { MultiStepFormObserver } from "./observable.mjs";
|
|
15
15
|
|
|
16
|
-
export { CASING_TYPES, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, FIELD_TYPES, HelperFnChosenSteps, MultiStepFormLogger, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormStepSchema, MultiStepFormStorage, VALIDATED_STEP_REGEX, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, invariant, isCasingValid, isFieldType, isValidStepKey, quote, setCasingType };
|
|
16
|
+
export { CASING_TYPES, DEFAULT_CASING, DEFAULT_FIELD_TYPE, DEFAULT_LOGGER_PREFIX, DEFAULT_STORAGE_KEY, FIELD_TYPES, HelperFnChosenSteps, MultiStepFormLogger, MultiStepFormObserver, MultiStepFormSchema, MultiStepFormStepSchema, MultiStepFormStorage, VALIDATED_STEP_REGEX, changeCasing, createCtx, createMultiStepFormSchema, createStep, fields, getInferredFieldType, invariant, isCasingValid, isFieldType, isValidStepKey, quote, setCasingType };
|
package/dist/internals/utils.cjs
CHANGED
|
@@ -17,14 +17,18 @@ function createStepFields(options) {
|
|
|
17
17
|
for (const [name, values] of Object.entries(fields)) {
|
|
18
18
|
require_invariant.invariant(typeof name === "string", `Each key for the "fields" option must be a string. Key ${name} was a ${typeof name}`);
|
|
19
19
|
require_invariant.invariant(typeof values === "object", `The value for key ${name} must be an object. Was ${typeof values}`);
|
|
20
|
-
const { defaultValue, label, nameTransformCasing, type
|
|
20
|
+
const { defaultValue, label, nameTransformCasing, type } = values;
|
|
21
21
|
if (validateFields) resolvedFields[name] = defaultValue;
|
|
22
22
|
else {
|
|
23
23
|
const casing = nameTransformCasing ?? defaultCasing;
|
|
24
|
+
const resolvedType = require_field_types.getInferredFieldType({
|
|
25
|
+
defaultValue,
|
|
26
|
+
type
|
|
27
|
+
});
|
|
24
28
|
resolvedFields[name] = {
|
|
25
29
|
...resolvedFields[name],
|
|
26
30
|
nameTransformCasing: casing,
|
|
27
|
-
type,
|
|
31
|
+
type: resolvedType,
|
|
28
32
|
defaultValue,
|
|
29
33
|
label: createFieldLabel(label, name, casing)
|
|
30
34
|
};
|
|
@@ -37,12 +41,16 @@ function createStepFields(options) {
|
|
|
37
41
|
for (const [name, defaultValue] of Object.entries(validatedFields)) {
|
|
38
42
|
const currentField = fields[name];
|
|
39
43
|
require_invariant.invariant(currentField, `No field found in the fields config for "${name}"`);
|
|
40
|
-
const { label, type
|
|
44
|
+
const { label, type, nameTransformCasing } = currentField;
|
|
41
45
|
const casing = nameTransformCasing ?? defaultCasing;
|
|
46
|
+
const resolvedType = require_field_types.getInferredFieldType({
|
|
47
|
+
defaultValue,
|
|
48
|
+
type
|
|
49
|
+
});
|
|
42
50
|
resolvedFields[name] = {
|
|
43
51
|
...resolvedFields[name],
|
|
44
52
|
nameTransformCasing: casing,
|
|
45
|
-
type,
|
|
53
|
+
type: resolvedType,
|
|
46
54
|
defaultValue,
|
|
47
55
|
label: createFieldLabel(label, name, casing)
|
|
48
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","names":["changeCasing","resolvedFields: Record<string, unknown>","
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":["changeCasing","resolvedFields: Record<string, unknown>","getInferredFieldType","runStandardValidation","DEFAULT_CASING"],"sources":["../../src/internals/utils.ts"],"sourcesContent":["import type {\n AnyResolvedStep,\n AnyStepField,\n Step,\n InferStepOptions,\n ResolvedStep,\n HelperFnChosenSteps,\n ResolvedStepBuilder,\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 getInferredFieldType,\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 { defaultValue, label, nameTransformCasing, type } = values;\n\n if (validateFields) {\n resolvedFields[name] = defaultValue;\n } else {\n const casing = nameTransformCasing ?? defaultCasing;\n const resolvedType = getInferredFieldType({ defaultValue, type });\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type: resolvedType,\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 { label, type, nameTransformCasing } = currentField;\n const casing = nameTransformCasing ?? defaultCasing;\n const resolvedType = getInferredFieldType({ defaultValue, type });\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type: resolvedType,\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 ResolvedStepBuilder<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] as Record<string, unknown>),\n title,\n nameTransformCasing: defaultCasing,\n // Only add the description if it's defined\n ...(typeof description === 'string' ? { description } : {}),\n fields: resolvedFields,\n } as never;\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,33 +1,11 @@
|
|
|
1
|
-
import { Constrain
|
|
1
|
+
import { Constrain } from "../utils/types.cjs";
|
|
2
2
|
import { CasingType, DefaultCasing } from "../utils/casing.cjs";
|
|
3
|
-
import {
|
|
4
|
-
import { AnyResolvedStep, ExtractStepFromKey, GetDefaultCasingTransformation, GetFieldsForStep, InferStepOptions, ResetFn, ResolvedFields, Step, StepSpecificHelperFn, UpdateFn } from "../steps/types.cjs";
|
|
3
|
+
import { AnyResolvedStep, InferStepOptions, ResolvedStepBuilder, Step } from "../steps/types.cjs";
|
|
5
4
|
|
|
6
5
|
//#region src/internals/utils.d.ts
|
|
7
6
|
declare const VALIDATED_STEP_REGEX: RegExp;
|
|
8
|
-
declare function isValidStepKey<T
|
|
9
|
-
declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>):
|
|
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
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_1, stepKey_1, "title">;
|
|
15
|
-
label: string;
|
|
16
|
-
}>>;
|
|
17
|
-
}> } : 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">>]-?: {
|
|
18
|
-
type: DefaultFieldType;
|
|
19
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, TDefaultCasing>;
|
|
20
|
-
}[K_1] } & {
|
|
21
|
-
fields: Expand<ResolvedFields<T_2, stepKey_2, GetFieldsForStep<T_2, stepKey_2>, {
|
|
22
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, "title">;
|
|
23
|
-
label: string;
|
|
24
|
-
}>>;
|
|
25
|
-
}> } : never> ? { [stepKey in keyof T]: T[stepKey] & {
|
|
26
|
-
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>>;
|
|
27
|
-
} & (stepKey extends `step${ExtractStepFromKey<keyof T extends infer T_2 ? T_2 extends keyof T ? T_2 extends string ? T_2 : never : never : never>}` ? {
|
|
28
|
-
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>;
|
|
29
|
-
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>;
|
|
30
|
-
} : {}) } : never;
|
|
7
|
+
declare function isValidStepKey<T extends AnyResolvedStep>(steps: T, stepKey: string): stepKey is Constrain<keyof T, string>;
|
|
8
|
+
declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>): ResolvedStepBuilder<step, casing>;
|
|
31
9
|
//#endregion
|
|
32
10
|
export { VALIDATED_STEP_REGEX, createStep, isValidStepKey };
|
|
33
11
|
//# sourceMappingURL=utils.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":";;;;;cA0Ba,sBAAoB;iBACjB,yBAAyB,wBAChC,gCAEK,gBAAgB;AAAP,iBA2FP,UA3FO,CAAA,aA4FR,IA5FQ,CA4FH,MA5FG,CAAA,EAAA,eA6FN,UA7FM,GA6FO,aA7FP,CAAA,CAAA,WAAA,EA8FR,gBA9FQ,CA8FS,IA9FT,CAAA,CAAA,EA8Fc,mBA9Fd,CA8Fc,IA9Fd,EA8Fc,MA9Fd,CAAA"}
|
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
import { Constrain
|
|
1
|
+
import { Constrain } from "../utils/types.mjs";
|
|
2
2
|
import { CasingType, DefaultCasing } from "../utils/casing.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { AnyResolvedStep, ExtractStepFromKey, GetDefaultCasingTransformation, GetFieldsForStep, InferStepOptions, ResetFn, ResolvedFields, Step, StepSpecificHelperFn, UpdateFn } from "../steps/types.mjs";
|
|
3
|
+
import { AnyResolvedStep, InferStepOptions, ResolvedStepBuilder, Step } from "../steps/types.mjs";
|
|
5
4
|
|
|
6
5
|
//#region src/internals/utils.d.ts
|
|
7
6
|
declare const VALIDATED_STEP_REGEX: RegExp;
|
|
8
|
-
declare function isValidStepKey<T
|
|
9
|
-
declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>):
|
|
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
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_1, stepKey_1, "title">;
|
|
15
|
-
label: string;
|
|
16
|
-
}>>;
|
|
17
|
-
}> } : 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">>]-?: {
|
|
18
|
-
type: DefaultFieldType;
|
|
19
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, TDefaultCasing>;
|
|
20
|
-
}[K_1] } & {
|
|
21
|
-
fields: Expand<ResolvedFields<T_2, stepKey_2, GetFieldsForStep<T_2, stepKey_2>, {
|
|
22
|
-
nameTransformCasing: GetDefaultCasingTransformation<T_2, stepKey_2, "title">;
|
|
23
|
-
label: string;
|
|
24
|
-
}>>;
|
|
25
|
-
}> } : never> ? { [stepKey in keyof T]: T[stepKey] & {
|
|
26
|
-
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>>;
|
|
27
|
-
} & (stepKey extends `step${ExtractStepFromKey<keyof T extends infer T_2 ? T_2 extends keyof T ? T_2 extends string ? T_2 : never : never : never>}` ? {
|
|
28
|
-
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>;
|
|
29
|
-
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>;
|
|
30
|
-
} : {}) } : never;
|
|
7
|
+
declare function isValidStepKey<T extends AnyResolvedStep>(steps: T, stepKey: string): stepKey is Constrain<keyof T, string>;
|
|
8
|
+
declare function createStep<step extends Step<casing>, casing extends CasingType = DefaultCasing>(stepsConfig: InferStepOptions<step>): ResolvedStepBuilder<step, casing>;
|
|
31
9
|
//#endregion
|
|
32
10
|
export { VALIDATED_STEP_REGEX, createStep, isValidStepKey };
|
|
33
11
|
//# sourceMappingURL=utils.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/internals/utils.ts"],"sourcesContent":[],"mappings":";;;;;cA0Ba,sBAAoB;iBACjB,yBAAyB,wBAChC,gCAEK,gBAAgB;AAAP,iBA2FP,UA3FO,CAAA,aA4FR,IA5FQ,CA4FH,MA5FG,CAAA,EAAA,eA6FN,UA7FM,GA6FO,aA7FP,CAAA,CAAA,WAAA,EA8FR,gBA9FQ,CA8FS,IA9FT,CAAA,CAAA,EA8Fc,mBA9Fd,CA8Fc,IA9Fd,EA8Fc,MA9Fd,CAAA"}
|
package/dist/internals/utils.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { invariant } from "../utils/invariant.mjs";
|
|
2
2
|
import { DEFAULT_CASING, changeCasing } from "../utils/casing.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { getInferredFieldType } from "../utils/field-types.mjs";
|
|
4
4
|
import { runStandardValidation } from "../utils/validator.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/internals/utils.ts
|
|
@@ -17,14 +17,18 @@ function createStepFields(options) {
|
|
|
17
17
|
for (const [name, values] of Object.entries(fields)) {
|
|
18
18
|
invariant(typeof name === "string", `Each key for the "fields" option must be a string. Key ${name} was a ${typeof name}`);
|
|
19
19
|
invariant(typeof values === "object", `The value for key ${name} must be an object. Was ${typeof values}`);
|
|
20
|
-
const { defaultValue, label, nameTransformCasing, type
|
|
20
|
+
const { defaultValue, label, nameTransformCasing, type } = values;
|
|
21
21
|
if (validateFields) resolvedFields[name] = defaultValue;
|
|
22
22
|
else {
|
|
23
23
|
const casing = nameTransformCasing ?? defaultCasing;
|
|
24
|
+
const resolvedType = getInferredFieldType({
|
|
25
|
+
defaultValue,
|
|
26
|
+
type
|
|
27
|
+
});
|
|
24
28
|
resolvedFields[name] = {
|
|
25
29
|
...resolvedFields[name],
|
|
26
30
|
nameTransformCasing: casing,
|
|
27
|
-
type,
|
|
31
|
+
type: resolvedType,
|
|
28
32
|
defaultValue,
|
|
29
33
|
label: createFieldLabel(label, name, casing)
|
|
30
34
|
};
|
|
@@ -37,12 +41,16 @@ function createStepFields(options) {
|
|
|
37
41
|
for (const [name, defaultValue] of Object.entries(validatedFields)) {
|
|
38
42
|
const currentField = fields[name];
|
|
39
43
|
invariant(currentField, `No field found in the fields config for "${name}"`);
|
|
40
|
-
const { label, type
|
|
44
|
+
const { label, type, nameTransformCasing } = currentField;
|
|
41
45
|
const casing = nameTransformCasing ?? defaultCasing;
|
|
46
|
+
const resolvedType = getInferredFieldType({
|
|
47
|
+
defaultValue,
|
|
48
|
+
type
|
|
49
|
+
});
|
|
42
50
|
resolvedFields[name] = {
|
|
43
51
|
...resolvedFields[name],
|
|
44
52
|
nameTransformCasing: casing,
|
|
45
|
-
type,
|
|
53
|
+
type: resolvedType,
|
|
46
54
|
defaultValue,
|
|
47
55
|
label: createFieldLabel(label, name, casing)
|
|
48
56
|
};
|
|
@@ -1 +1 @@
|
|
|
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 {
|
|
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 ResolvedStepBuilder,\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 getInferredFieldType,\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 { defaultValue, label, nameTransformCasing, type } = values;\n\n if (validateFields) {\n resolvedFields[name] = defaultValue;\n } else {\n const casing = nameTransformCasing ?? defaultCasing;\n const resolvedType = getInferredFieldType({ defaultValue, type });\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type: resolvedType,\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 { label, type, nameTransformCasing } = currentField;\n const casing = nameTransformCasing ?? defaultCasing;\n const resolvedType = getInferredFieldType({ defaultValue, type });\n\n resolvedFields[name] = {\n ...(resolvedFields[name] as Record<string, unknown>),\n nameTransformCasing: casing,\n type: resolvedType,\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 ResolvedStepBuilder<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] as Record<string, unknown>),\n title,\n nameTransformCasing: defaultCasing,\n // Only add the description if it's defined\n ...(typeof description === 'string' ? { description } : {}),\n fields: resolvedFields,\n } as never;\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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"}
|
package/dist/schema.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DefaultStorageKey, MultiStepFormStorage } from "./storage.cjs";
|
|
2
1
|
import { Constrain } from "./utils/types.cjs";
|
|
3
2
|
import { CasingType, DefaultCasing } from "./utils/casing.cjs";
|
|
4
3
|
import { MultiStepFormSchemaStepConfig, ResolvedStep, Step, StepNumbers } from "./steps/types.cjs";
|
|
4
|
+
import { DefaultStorageKey, MultiStepFormStorage } from "./storage.cjs";
|
|
5
5
|
import { Subscribable } from "./subscribable.cjs";
|
|
6
6
|
import { MultiStepFormStepSchema } from "./steps/schema.cjs";
|
|
7
7
|
|
package/dist/schema.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DefaultStorageKey, MultiStepFormStorage } from "./storage.mjs";
|
|
2
1
|
import { Constrain } from "./utils/types.mjs";
|
|
3
2
|
import { CasingType, DefaultCasing } from "./utils/casing.mjs";
|
|
4
3
|
import { MultiStepFormSchemaStepConfig, ResolvedStep, Step, StepNumbers } from "./steps/types.mjs";
|
|
4
|
+
import { DefaultStorageKey, MultiStepFormStorage } from "./storage.mjs";
|
|
5
5
|
import { Subscribable } from "./subscribable.mjs";
|
|
6
6
|
import { MultiStepFormStepSchema } from "./steps/schema.mjs";
|
|
7
7
|
|
package/dist/steps/fields.cjs
CHANGED
|
@@ -11,6 +11,12 @@ let fields;
|
|
|
11
11
|
return require_path.path.pickBy(fields$1, fullPath);
|
|
12
12
|
}
|
|
13
13
|
_fields.resolvedDeepPath = resolvedDeepPath;
|
|
14
|
+
function buildValuePath(field, valuePropertyName = "defaultValue") {
|
|
15
|
+
const [parent, ...children] = field.split(".");
|
|
16
|
+
if (children.length === 0) return `${parent}.${valuePropertyName}`;
|
|
17
|
+
return `${parent}.${valuePropertyName}.${children.join(".")}`;
|
|
18
|
+
}
|
|
19
|
+
_fields.buildValuePath = buildValuePath;
|
|
14
20
|
})(fields || (fields = {}));
|
|
15
21
|
|
|
16
22
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.cjs","names":["path","fields"],"sources":["../../src/steps/fields.ts"],"sourcesContent":["import { path } from '@/internals';\nimport type { DeepKeys, Join, Split } from '@/utils';\nimport type { AnyResolvedStep
|
|
1
|
+
{"version":3,"file":"fields.cjs","names":["path","fields"],"sources":["../../src/steps/fields.ts"],"sourcesContent":["import { path } from '@/internals';\nimport type { DeepKeys, Join, Split } from '@/utils';\nimport type { AnyResolvedStep } from './types';\n\nexport namespace fields {\n type GetDeepFields<TFields> = [keyof TFields] extends [never]\n ? never\n : {\n [_ in keyof TFields]: TFields[_] extends Record<\n 'defaultValue',\n infer value\n >\n ? keyof value extends never\n ? TFields\n : DeepKeys<{ [field in _]: TFields[_]['defaultValue'] }>\n : never;\n }[keyof TFields];\n export type getFieldsForStep<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep\n > = TResolvedStep[TStep] extends {\n fields: infer fields extends object;\n }\n ? fields\n : never;\n export type get<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TFields extends getFieldsForStep<TResolvedStep, TStep> = getFieldsForStep<\n TResolvedStep,\n TStep\n >\n > = TFields;\n export type removeParentPath<T extends string> = Split<T, '.'> extends [\n infer _,\n ...infer rest\n ]\n ? rest extends string[]\n ? Join<rest, '.'>\n : never\n : never;\n export type getConfig<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TField extends getDeepFields<TResolvedStep, TStep>\n > = parentOf<TField> extends keyof get<TResolvedStep, TStep>\n ? get<TResolvedStep, TStep>[parentOf<TField>]\n : never;\n export type getDeepFields<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep = keyof TResolvedStep\n > = GetDeepFields<\n get<TResolvedStep, TStep>\n > extends infer value extends string\n ? value\n : never;\n\n type buildValuePath<\n TField extends string,\n TValuePropertyName extends string = 'defaultValue',\n TSplit extends Split<TField, '.'> = Split<TField, '.'>\n > = TSplit extends [infer field extends string, ...infer rest]\n ? rest extends []\n ? `${field}.${TValuePropertyName}`\n : rest extends string[]\n ? `${field}.${TValuePropertyName}.${Join<rest, '.'>}`\n : never\n : never;\n export type resolveDeepPath<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TField extends getDeepFields<TResolvedStep, TStep>,\n TValue extends get<TResolvedStep, TStep> = get<TResolvedStep, TStep>\n > = buildValuePath<TField> extends DeepKeys<TValue>\n ? path.pickBy<TValue, buildValuePath<TField>>\n : never;\n\n export type parentOf<T extends string> = Split<T, '.'>[0];\n\n // TODO add field validation\n export function resolvedDeepPath<\n resolvedStep extends AnyResolvedStep,\n targetStep extends keyof resolvedStep,\n fields extends get<resolvedStep, targetStep>,\n fieldPath extends getDeepFields<resolvedStep, targetStep>\n >(fieldPath: fieldPath, fields: fields, filler = 'defaultValue') {\n const [parent, ...children] = fieldPath.split('.');\n const shared = `${parent}.${filler}`;\n const fullPath = (\n children.length === 0 ? shared : `${shared}.${children.join('.')}`\n ) as DeepKeys<fields>;\n\n const resolvedValue = path.pickBy(fields, fullPath) as resolveDeepPath<\n resolvedStep,\n targetStep,\n fieldPath\n >;\n\n return resolvedValue;\n }\n\n export function buildValuePath<\n TField extends string,\n TValuePropertyName extends string = 'defaultValue',\n TSplit extends Split<TField, '.'> = Split<TField, '.'>\n >(\n field: TField,\n valuePropertyName: TValuePropertyName = 'defaultValue' as TValuePropertyName\n ) {\n const [parent, ...children] = field.split('.');\n\n if (children.length === 0) {\n return `${parent}.${valuePropertyName}` as buildValuePath<\n TField,\n TValuePropertyName,\n TSplit\n >;\n }\n\n return `${parent}.${valuePropertyName}.${children.join(\n '.'\n )}` as buildValuePath<TField, TValuePropertyName, TSplit>;\n }\n}\n"],"mappings":";;;;;;CAgFS,SAAS,iBAKd,WAAsB,UAAgB,SAAS,gBAAgB;EAC/D,MAAM,CAAC,QAAQ,GAAG,YAAY,UAAU,MAAM,IAAI;EAClD,MAAM,SAAS,GAAG,OAAO,GAAG;EAC5B,MAAM,WACJ,SAAS,WAAW,IAAI,SAAS,GAAG,OAAO,GAAG,SAAS,KAAK,IAAI;AASlE,SANsBA,kBAAK,OAAOC,UAAQ,SAAS;;;CAS9C,SAAS,eAKd,OACA,oBAAwC,gBACxC;EACA,MAAM,CAAC,QAAQ,GAAG,YAAY,MAAM,MAAM,IAAI;AAE9C,MAAI,SAAS,WAAW,EACtB,QAAO,GAAG,OAAO,GAAG;AAOtB,SAAO,GAAG,OAAO,GAAG,kBAAkB,GAAG,SAAS,KAChD,IACD"}
|
package/dist/steps/fields.d.cts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { DeepKeys, Join, Split } from "../utils/types.cjs";
|
|
2
2
|
import { path } from "../utils/path.cjs";
|
|
3
|
-
import { AnyResolvedStep
|
|
3
|
+
import { AnyResolvedStep } from "./types.cjs";
|
|
4
4
|
|
|
5
5
|
//#region src/steps/fields.d.ts
|
|
6
6
|
declare namespace fields {
|
|
7
7
|
type GetDeepFields<TFields> = [keyof TFields] extends [never] ? never : { [_ in keyof TFields]: TFields[_] extends Record<'defaultValue', infer value> ? keyof value extends never ? TFields : DeepKeys<{ [field in _]: TFields[_]['defaultValue'] }> : never }[keyof TFields];
|
|
8
|
-
export type
|
|
8
|
+
export type getFieldsForStep<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep> = TResolvedStep[TStep] extends {
|
|
9
|
+
fields: infer fields extends object;
|
|
10
|
+
} ? fields : never;
|
|
11
|
+
export type get<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TFields extends getFieldsForStep<TResolvedStep, TStep> = getFieldsForStep<TResolvedStep, TStep>> = TFields;
|
|
9
12
|
export type removeParentPath<T extends string> = Split<T, '.'> extends [infer _, ...infer rest] ? rest extends string[] ? Join<rest, '.'> : never : never;
|
|
10
|
-
export type
|
|
13
|
+
export type getConfig<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TField extends getDeepFields<TResolvedStep, TStep>> = parentOf<TField> extends keyof get<TResolvedStep, TStep> ? get<TResolvedStep, TStep>[parentOf<TField>] : never;
|
|
14
|
+
export type getDeepFields<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep = keyof TResolvedStep> = GetDeepFields<get<TResolvedStep, TStep>> extends infer value extends string ? value : never;
|
|
15
|
+
type buildValuePath<TField extends string, TValuePropertyName extends string = 'defaultValue', TSplit extends Split<TField, '.'> = Split<TField, '.'>> = TSplit extends [infer field extends string, ...infer rest] ? rest extends [] ? `${field}.${TValuePropertyName}` : rest extends string[] ? `${field}.${TValuePropertyName}.${Join<rest, '.'>}` : never : never;
|
|
16
|
+
export type resolveDeepPath<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TField extends getDeepFields<TResolvedStep, TStep>, TValue extends get<TResolvedStep, TStep> = get<TResolvedStep, TStep>> = buildValuePath<TField> extends DeepKeys<TValue> ? path.pickBy<TValue, buildValuePath<TField>> : never;
|
|
11
17
|
export type parentOf<T extends string> = Split<T, '.'>[0];
|
|
12
|
-
export
|
|
13
|
-
export function
|
|
18
|
+
export function resolvedDeepPath<resolvedStep extends AnyResolvedStep, targetStep extends keyof resolvedStep, fields$1 extends get<resolvedStep, targetStep>, fieldPath extends getDeepFields<resolvedStep, targetStep>>(fieldPath: fieldPath, fields: fields$1, filler?: string): resolveDeepPath<resolvedStep, targetStep, fieldPath, getFieldsForStep<resolvedStep, targetStep>>;
|
|
19
|
+
export function buildValuePath<TField extends string, TValuePropertyName extends string = 'defaultValue', TSplit extends Split<TField, '.'> = Split<TField, '.'>>(field: TField, valuePropertyName?: TValuePropertyName): buildValuePath<TField, TValuePropertyName, TSplit>;
|
|
14
20
|
export {};
|
|
15
21
|
}
|
|
16
22
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.cts","names":[],"sources":["../../src/steps/fields.ts"],"sourcesContent":[],"mappings":";;;;;kBAIiB,MAAA;uCACsB,2CADhB,MAIH,OAJG,GAIO,OAJP,CAIe,CAJf,CAAA,SAI0B,MAJ1B,CAAA,cAAA,EAAA,KAAA,MAAA,CAAA,GAAA,MAQL,KARK,SAAA,KAAA,GAST,OATS,GAUT,QAVS,CAAA,YAUY,CATI,GASA,OATA,CASQ,CATR,CAAA,CAAA,cAAA,CAAA,EAGnB,CAAA,GAAA,KAAA,EAAU,CAAA,MAQhB,OARgB,CAAA;EAAQ,OAAA,KAAA,
|
|
1
|
+
{"version":3,"file":"fields.d.cts","names":[],"sources":["../../src/steps/fields.ts"],"sourcesContent":[],"mappings":";;;;;kBAIiB,MAAA;uCACsB,2CADhB,MAIH,OAJG,GAIO,OAJP,CAIe,CAJf,CAAA,SAI0B,MAJ1B,CAAA,cAAA,EAAA,KAAA,MAAA,CAAA,GAAA,MAQL,KARK,SAAA,KAAA,GAST,OATS,GAUT,QAVS,CAAA,YAUY,CATI,GASA,OATA,CASQ,CATR,CAAA,CAAA,cAAA,CAAA,EAGnB,CAAA,GAAA,KAAA,EAAU,CAAA,MAQhB,OARgB,CAAA;EAAQ,OAAA,KAAA,gBAAA,CAAA,sBAUZ,eAVY,EAAA,cAAA,MAWd,aAXc,CAAA,GAYhC,aAZgC,CAYlB,KAZkB,CAAA,SAAA;IAAW,MAAA,EAAA,KAAA,gBAAA,MAAA;EAI/B,CAAA,GAAA,MAAA,GAAA,KAAA;EACJ,OAAA,KAAA,GAAA,CAAA,sBAaY,eAbZ,EAAA,cAAA,MAcU,aAdV,EAAA,gBAeM,gBAfN,CAeuB,aAfvB,EAesC,KAftC,CAAA,GAe+C,gBAf/C,CAgBR,aAhBQ,EAiBR,KAjBQ,CAAA,CAAA,GAmBR,OAnBQ;EACqB,OAAA,KAAA,gBAAA,CAAA,UAAA,MAAA,CAAA,GAmBgB,KAnBhB,CAmBsB,CAnBtB,EAAA,GAAA,CAAA,SAAA,CAAI,KAAA,EAAA,EAAQ,GAAA,KAAA,KAAA,CAAjC,GAAA,IAAA,SAAA,MAAA,EAAA,GAwBN,IAxBM,CAwBD,IAxBC,EAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA;EAEA,OAAA,KAAA,SAAA,CAAA,sBA0BY,eA1BZ,EAAA,cAAA,MA2BU,aA3BV,EAAA,eA4BK,aA5BL,CA4BmB,aA5BnB,EA4BkC,KA5BlC,CAAA,CAAA,GA6BR,QA7BQ,CA6BC,MA7BD,CAAA,SAAA,MA6BuB,GA7BvB,CA6B2B,aA7B3B,EA6B0C,KA7B1C,CAAA,GA8BR,GA9BQ,CA8BJ,aA9BI,EA8BW,KA9BX,CAAA,CA8BkB,QA9BlB,CA8B2B,MA9B3B,CAAA,CAAA,GAAA,KAAA;EAEY,OAAA,KAAA,aAAA,CAAA,sBA+BA,eA/BA,EAAA,cAAA,MAgCF,aAhCE,GAAA,MAgCoB,aAhCpB,CAAA,GAiCpB,aAjCoB,CAkCtB,GAlCsB,CAkClB,aAlCkB,EAkCH,KAlCG,CAAA,CAAA,SAAA,KAAA,eAAA,MAAA,GAAA,KAAA,GAAA,KAAA;EACF,KAAA,cAAA,CAAA,eAAA,MAAA,EAAA,2BAAA,MAAA,GAAA,cAAA,EAAA,eAyCL,KAzCK,CAyCC,MAzCD,EAAA,GAAA,CAAA,GAyCgB,KAzChB,CAyCsB,MAzCtB,EAAA,GAAA,CAAA,CAAA,GA0ClB,MA1CkB,SAAA,CAAA,KAAA,eAAA,MAAA,EAAA,GAAA,KAAA,KAAA,CAAA,GAAA,IAAA,SAAA,EAAA,GAAA,GA4Cb,KA5Ca,IA4CJ,kBA5CI,EAAA,GAAA,IAAA,SAAA,MAAA,EAAA,GAAA,GA8Cb,KA9Ca,IA8CJ,kBA9CI,IA8CkB,IA9ClB,CA8CuB,IA9CvB,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,GAAA,KAAA;EAClB,OAAA,KAAA,eAAA,CAAA,sBAiDoB,eAjDpB,EAAA,cAAA,MAkDkB,aAlDlB,EAAA,eAmDa,aAnDb,CAmD2B,aAnD3B,EAmD0C,KAnD1C,CAAA,EAAA,eAoDa,GApDb,CAoDiB,aApDjB,EAoDgC,KApDhC,CAAA,GAoDyC,GApDzC,CAoD6C,aApD7C,EAoD4D,KApD5D,CAAA,CAAA,GAqDA,cArDA,CAqDe,MArDf,CAAA,SAqD+B,QArD/B,CAqDwC,MArDxC,CAAA,GAsDA,IAAA,CAAK,MAtDL,CAsDY,MAtDZ,EAsDoB,cAtDpB,CAsDmC,MAtDnC,CAAA,CAAA,GAAA,KAAA;EAAc,OAAA,KAAA,QAAA,CAAA,UAAA,MAAA,CAAA,GAyDuB,KAzDvB,CAyD6B,CAzD7B,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EAMM,OAAA,SAAA,gBAAA,CAAA,qBAuDD,eAvDC,EAAA,mBAAA,MAwDG,YAxDH,EAAA,iBAyDP,GAzDO,CAyDH,YAzDG,EAyDW,UAzDX,CAAA,EAAA,kBA0DJ,aA1DI,CA0DU,YA1DV,EA0DwB,UA1DxB,CAAA,CAAA,CAAA,SAAA,EA2DX,SA3DW,EAAA,MAAA,EA2DQ,QA3DR,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EA2DuC,eA3DvC,CA2DuC,YA3DvC,EA2DuC,UA3DvC,EA2DuC,SA3DvC,EA2DuC,gBA3DvC,CA2DuC,YA3DvC,EA2DuC,UA3DvC,CAAA,CAAA;EACF,OAAA,SAAA,cAAA,CAAA,eAAA,MAAA,EAAA,2BAAA,MAAA,GAAA,cAAA,EAAA,eA6EL,KA7EK,CA6EC,MA7ED,EAAA,GAAA,CAAA,GA6EgB,KA7EhB,CA6EsB,MA7EtB,EAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EA+Eb,MA/Ea,EAAA,iBAAA,CAAA,EAgFD,kBAhFC,CAAA,EAgFwD,cAhFxD,CAgFwD,MAhFxD,EAgFwD,kBAhFxD,EAgFwD,MAhFxD,CAAA;EACa"}
|
package/dist/steps/fields.d.mts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { DeepKeys, Join, Split } from "../utils/types.mjs";
|
|
2
2
|
import { path } from "../utils/path.mjs";
|
|
3
|
-
import { AnyResolvedStep
|
|
3
|
+
import { AnyResolvedStep } from "./types.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/steps/fields.d.ts
|
|
6
6
|
declare namespace fields {
|
|
7
7
|
type GetDeepFields<TFields> = [keyof TFields] extends [never] ? never : { [_ in keyof TFields]: TFields[_] extends Record<'defaultValue', infer value> ? keyof value extends never ? TFields : DeepKeys<{ [field in _]: TFields[_]['defaultValue'] }> : never }[keyof TFields];
|
|
8
|
-
export type
|
|
8
|
+
export type getFieldsForStep<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep> = TResolvedStep[TStep] extends {
|
|
9
|
+
fields: infer fields extends object;
|
|
10
|
+
} ? fields : never;
|
|
11
|
+
export type get<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TFields extends getFieldsForStep<TResolvedStep, TStep> = getFieldsForStep<TResolvedStep, TStep>> = TFields;
|
|
9
12
|
export type removeParentPath<T extends string> = Split<T, '.'> extends [infer _, ...infer rest] ? rest extends string[] ? Join<rest, '.'> : never : never;
|
|
10
|
-
export type
|
|
13
|
+
export type getConfig<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TField extends getDeepFields<TResolvedStep, TStep>> = parentOf<TField> extends keyof get<TResolvedStep, TStep> ? get<TResolvedStep, TStep>[parentOf<TField>] : never;
|
|
14
|
+
export type getDeepFields<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep = keyof TResolvedStep> = GetDeepFields<get<TResolvedStep, TStep>> extends infer value extends string ? value : never;
|
|
15
|
+
type buildValuePath<TField extends string, TValuePropertyName extends string = 'defaultValue', TSplit extends Split<TField, '.'> = Split<TField, '.'>> = TSplit extends [infer field extends string, ...infer rest] ? rest extends [] ? `${field}.${TValuePropertyName}` : rest extends string[] ? `${field}.${TValuePropertyName}.${Join<rest, '.'>}` : never : never;
|
|
16
|
+
export type resolveDeepPath<TResolvedStep extends AnyResolvedStep, TStep extends keyof TResolvedStep, TField extends getDeepFields<TResolvedStep, TStep>, TValue extends get<TResolvedStep, TStep> = get<TResolvedStep, TStep>> = buildValuePath<TField> extends DeepKeys<TValue> ? path.pickBy<TValue, buildValuePath<TField>> : never;
|
|
11
17
|
export type parentOf<T extends string> = Split<T, '.'>[0];
|
|
12
|
-
export
|
|
13
|
-
export function
|
|
18
|
+
export function resolvedDeepPath<resolvedStep extends AnyResolvedStep, targetStep extends keyof resolvedStep, fields$1 extends get<resolvedStep, targetStep>, fieldPath extends getDeepFields<resolvedStep, targetStep>>(fieldPath: fieldPath, fields: fields$1, filler?: string): resolveDeepPath<resolvedStep, targetStep, fieldPath, getFieldsForStep<resolvedStep, targetStep>>;
|
|
19
|
+
export function buildValuePath<TField extends string, TValuePropertyName extends string = 'defaultValue', TSplit extends Split<TField, '.'> = Split<TField, '.'>>(field: TField, valuePropertyName?: TValuePropertyName): buildValuePath<TField, TValuePropertyName, TSplit>;
|
|
14
20
|
export {};
|
|
15
21
|
}
|
|
16
22
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.mts","names":[],"sources":["../../src/steps/fields.ts"],"sourcesContent":[],"mappings":";;;;;kBAIiB,MAAA;uCACsB,2CADhB,MAIH,OAJG,GAIO,OAJP,CAIe,CAJf,CAAA,SAI0B,MAJ1B,CAAA,cAAA,EAAA,KAAA,MAAA,CAAA,GAAA,MAQL,KARK,SAAA,KAAA,GAST,OATS,GAUT,QAVS,CAAA,YAUY,CATI,GASA,OATA,CASQ,CATR,CAAA,CAAA,cAAA,CAAA,EAGnB,CAAA,GAAA,KAAA,EAAU,CAAA,MAQhB,OARgB,CAAA;EAAQ,OAAA,KAAA,
|
|
1
|
+
{"version":3,"file":"fields.d.mts","names":[],"sources":["../../src/steps/fields.ts"],"sourcesContent":[],"mappings":";;;;;kBAIiB,MAAA;uCACsB,2CADhB,MAIH,OAJG,GAIO,OAJP,CAIe,CAJf,CAAA,SAI0B,MAJ1B,CAAA,cAAA,EAAA,KAAA,MAAA,CAAA,GAAA,MAQL,KARK,SAAA,KAAA,GAST,OATS,GAUT,QAVS,CAAA,YAUY,CATI,GASA,OATA,CASQ,CATR,CAAA,CAAA,cAAA,CAAA,EAGnB,CAAA,GAAA,KAAA,EAAU,CAAA,MAQhB,OARgB,CAAA;EAAQ,OAAA,KAAA,gBAAA,CAAA,sBAUZ,eAVY,EAAA,cAAA,MAWd,aAXc,CAAA,GAYhC,aAZgC,CAYlB,KAZkB,CAAA,SAAA;IAAW,MAAA,EAAA,KAAA,gBAAA,MAAA;EAI/B,CAAA,GAAA,MAAA,GAAA,KAAA;EACJ,OAAA,KAAA,GAAA,CAAA,sBAaY,eAbZ,EAAA,cAAA,MAcU,aAdV,EAAA,gBAeM,gBAfN,CAeuB,aAfvB,EAesC,KAftC,CAAA,GAe+C,gBAf/C,CAgBR,aAhBQ,EAiBR,KAjBQ,CAAA,CAAA,GAmBR,OAnBQ;EACqB,OAAA,KAAA,gBAAA,CAAA,UAAA,MAAA,CAAA,GAmBgB,KAnBhB,CAmBsB,CAnBtB,EAAA,GAAA,CAAA,SAAA,CAAI,KAAA,EAAA,EAAQ,GAAA,KAAA,KAAA,CAAjC,GAAA,IAAA,SAAA,MAAA,EAAA,GAwBN,IAxBM,CAwBD,IAxBC,EAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA;EAEA,OAAA,KAAA,SAAA,CAAA,sBA0BY,eA1BZ,EAAA,cAAA,MA2BU,aA3BV,EAAA,eA4BK,aA5BL,CA4BmB,aA5BnB,EA4BkC,KA5BlC,CAAA,CAAA,GA6BR,QA7BQ,CA6BC,MA7BD,CAAA,SAAA,MA6BuB,GA7BvB,CA6B2B,aA7B3B,EA6B0C,KA7B1C,CAAA,GA8BR,GA9BQ,CA8BJ,aA9BI,EA8BW,KA9BX,CAAA,CA8BkB,QA9BlB,CA8B2B,MA9B3B,CAAA,CAAA,GAAA,KAAA;EAEY,OAAA,KAAA,aAAA,CAAA,sBA+BA,eA/BA,EAAA,cAAA,MAgCF,aAhCE,GAAA,MAgCoB,aAhCpB,CAAA,GAiCpB,aAjCoB,CAkCtB,GAlCsB,CAkClB,aAlCkB,EAkCH,KAlCG,CAAA,CAAA,SAAA,KAAA,eAAA,MAAA,GAAA,KAAA,GAAA,KAAA;EACF,KAAA,cAAA,CAAA,eAAA,MAAA,EAAA,2BAAA,MAAA,GAAA,cAAA,EAAA,eAyCL,KAzCK,CAyCC,MAzCD,EAAA,GAAA,CAAA,GAyCgB,KAzChB,CAyCsB,MAzCtB,EAAA,GAAA,CAAA,CAAA,GA0ClB,MA1CkB,SAAA,CAAA,KAAA,eAAA,MAAA,EAAA,GAAA,KAAA,KAAA,CAAA,GAAA,IAAA,SAAA,EAAA,GAAA,GA4Cb,KA5Ca,IA4CJ,kBA5CI,EAAA,GAAA,IAAA,SAAA,MAAA,EAAA,GAAA,GA8Cb,KA9Ca,IA8CJ,kBA9CI,IA8CkB,IA9ClB,CA8CuB,IA9CvB,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,GAAA,KAAA;EAClB,OAAA,KAAA,eAAA,CAAA,sBAiDoB,eAjDpB,EAAA,cAAA,MAkDkB,aAlDlB,EAAA,eAmDa,aAnDb,CAmD2B,aAnD3B,EAmD0C,KAnD1C,CAAA,EAAA,eAoDa,GApDb,CAoDiB,aApDjB,EAoDgC,KApDhC,CAAA,GAoDyC,GApDzC,CAoD6C,aApD7C,EAoD4D,KApD5D,CAAA,CAAA,GAqDA,cArDA,CAqDe,MArDf,CAAA,SAqD+B,QArD/B,CAqDwC,MArDxC,CAAA,GAsDA,IAAA,CAAK,MAtDL,CAsDY,MAtDZ,EAsDoB,cAtDpB,CAsDmC,MAtDnC,CAAA,CAAA,GAAA,KAAA;EAAc,OAAA,KAAA,QAAA,CAAA,UAAA,MAAA,CAAA,GAyDuB,KAzDvB,CAyD6B,CAzD7B,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EAMM,OAAA,SAAA,gBAAA,CAAA,qBAuDD,eAvDC,EAAA,mBAAA,MAwDG,YAxDH,EAAA,iBAyDP,GAzDO,CAyDH,YAzDG,EAyDW,UAzDX,CAAA,EAAA,kBA0DJ,aA1DI,CA0DU,YA1DV,EA0DwB,UA1DxB,CAAA,CAAA,CAAA,SAAA,EA2DX,SA3DW,EAAA,MAAA,EA2DQ,QA3DR,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EA2DuC,eA3DvC,CA2DuC,YA3DvC,EA2DuC,UA3DvC,EA2DuC,SA3DvC,EA2DuC,gBA3DvC,CA2DuC,YA3DvC,EA2DuC,UA3DvC,CAAA,CAAA;EACF,OAAA,SAAA,cAAA,CAAA,eAAA,MAAA,EAAA,2BAAA,MAAA,GAAA,cAAA,EAAA,eA6EL,KA7EK,CA6EC,MA7ED,EAAA,GAAA,CAAA,GA6EgB,KA7EhB,CA6EsB,MA7EtB,EAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EA+Eb,MA/Ea,EAAA,iBAAA,CAAA,EAgFD,kBAhFC,CAAA,EAgFwD,cAhFxD,CAgFwD,MAhFxD,EAgFwD,kBAhFxD,EAgFwD,MAhFxD,CAAA;EACa"}
|
package/dist/steps/fields.mjs
CHANGED
|
@@ -11,6 +11,12 @@ let fields;
|
|
|
11
11
|
return path.pickBy(fields$1, fullPath);
|
|
12
12
|
}
|
|
13
13
|
_fields.resolvedDeepPath = resolvedDeepPath;
|
|
14
|
+
function buildValuePath(field, valuePropertyName = "defaultValue") {
|
|
15
|
+
const [parent, ...children] = field.split(".");
|
|
16
|
+
if (children.length === 0) return `${parent}.${valuePropertyName}`;
|
|
17
|
+
return `${parent}.${valuePropertyName}.${children.join(".")}`;
|
|
18
|
+
}
|
|
19
|
+
_fields.buildValuePath = buildValuePath;
|
|
14
20
|
})(fields || (fields = {}));
|
|
15
21
|
|
|
16
22
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.mjs","names":["fields"],"sources":["../../src/steps/fields.ts"],"sourcesContent":["import { path } from '@/internals';\nimport type { DeepKeys, Join, Split } from '@/utils';\nimport type { AnyResolvedStep
|
|
1
|
+
{"version":3,"file":"fields.mjs","names":["fields"],"sources":["../../src/steps/fields.ts"],"sourcesContent":["import { path } from '@/internals';\nimport type { DeepKeys, Join, Split } from '@/utils';\nimport type { AnyResolvedStep } from './types';\n\nexport namespace fields {\n type GetDeepFields<TFields> = [keyof TFields] extends [never]\n ? never\n : {\n [_ in keyof TFields]: TFields[_] extends Record<\n 'defaultValue',\n infer value\n >\n ? keyof value extends never\n ? TFields\n : DeepKeys<{ [field in _]: TFields[_]['defaultValue'] }>\n : never;\n }[keyof TFields];\n export type getFieldsForStep<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep\n > = TResolvedStep[TStep] extends {\n fields: infer fields extends object;\n }\n ? fields\n : never;\n export type get<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TFields extends getFieldsForStep<TResolvedStep, TStep> = getFieldsForStep<\n TResolvedStep,\n TStep\n >\n > = TFields;\n export type removeParentPath<T extends string> = Split<T, '.'> extends [\n infer _,\n ...infer rest\n ]\n ? rest extends string[]\n ? Join<rest, '.'>\n : never\n : never;\n export type getConfig<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TField extends getDeepFields<TResolvedStep, TStep>\n > = parentOf<TField> extends keyof get<TResolvedStep, TStep>\n ? get<TResolvedStep, TStep>[parentOf<TField>]\n : never;\n export type getDeepFields<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep = keyof TResolvedStep\n > = GetDeepFields<\n get<TResolvedStep, TStep>\n > extends infer value extends string\n ? value\n : never;\n\n type buildValuePath<\n TField extends string,\n TValuePropertyName extends string = 'defaultValue',\n TSplit extends Split<TField, '.'> = Split<TField, '.'>\n > = TSplit extends [infer field extends string, ...infer rest]\n ? rest extends []\n ? `${field}.${TValuePropertyName}`\n : rest extends string[]\n ? `${field}.${TValuePropertyName}.${Join<rest, '.'>}`\n : never\n : never;\n export type resolveDeepPath<\n TResolvedStep extends AnyResolvedStep,\n TStep extends keyof TResolvedStep,\n TField extends getDeepFields<TResolvedStep, TStep>,\n TValue extends get<TResolvedStep, TStep> = get<TResolvedStep, TStep>\n > = buildValuePath<TField> extends DeepKeys<TValue>\n ? path.pickBy<TValue, buildValuePath<TField>>\n : never;\n\n export type parentOf<T extends string> = Split<T, '.'>[0];\n\n // TODO add field validation\n export function resolvedDeepPath<\n resolvedStep extends AnyResolvedStep,\n targetStep extends keyof resolvedStep,\n fields extends get<resolvedStep, targetStep>,\n fieldPath extends getDeepFields<resolvedStep, targetStep>\n >(fieldPath: fieldPath, fields: fields, filler = 'defaultValue') {\n const [parent, ...children] = fieldPath.split('.');\n const shared = `${parent}.${filler}`;\n const fullPath = (\n children.length === 0 ? shared : `${shared}.${children.join('.')}`\n ) as DeepKeys<fields>;\n\n const resolvedValue = path.pickBy(fields, fullPath) as resolveDeepPath<\n resolvedStep,\n targetStep,\n fieldPath\n >;\n\n return resolvedValue;\n }\n\n export function buildValuePath<\n TField extends string,\n TValuePropertyName extends string = 'defaultValue',\n TSplit extends Split<TField, '.'> = Split<TField, '.'>\n >(\n field: TField,\n valuePropertyName: TValuePropertyName = 'defaultValue' as TValuePropertyName\n ) {\n const [parent, ...children] = field.split('.');\n\n if (children.length === 0) {\n return `${parent}.${valuePropertyName}` as buildValuePath<\n TField,\n TValuePropertyName,\n TSplit\n >;\n }\n\n return `${parent}.${valuePropertyName}.${children.join(\n '.'\n )}` as buildValuePath<TField, TValuePropertyName, TSplit>;\n }\n}\n"],"mappings":";;;;;;CAgFS,SAAS,iBAKd,WAAsB,UAAgB,SAAS,gBAAgB;EAC/D,MAAM,CAAC,QAAQ,GAAG,YAAY,UAAU,MAAM,IAAI;EAClD,MAAM,SAAS,GAAG,OAAO,GAAG;EAC5B,MAAM,WACJ,SAAS,WAAW,IAAI,SAAS,GAAG,OAAO,GAAG,SAAS,KAAK,IAAI;AASlE,SANsB,KAAK,OAAOA,UAAQ,SAAS;;;CAS9C,SAAS,eAKd,OACA,oBAAwC,gBACxC;EACA,MAAM,CAAC,QAAQ,GAAG,YAAY,MAAM,MAAM,IAAI;AAE9C,MAAI,SAAS,WAAW,EACtB,QAAO,GAAG,OAAO,GAAG;AAOtB,SAAO,GAAG,OAAO,GAAG,kBAAkB,GAAG,SAAS,KAChD,IACD"}
|