@radicalbit/formbit 3.0.0 → 4.0.0
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.js +137 -264
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +137 -264
- package/dist/index.modern.js.map +1 -1
- package/package.json +32 -50
- package/dist/__tests__/check.test.d.ts +0 -1
- package/dist/__tests__/error.test.d.ts +0 -1
- package/dist/__tests__/initialize.test.d.ts +0 -1
- package/dist/__tests__/is-form-invalid.test.d.ts +0 -1
- package/dist/__tests__/is-form-valid.test.d.ts +0 -1
- package/dist/__tests__/is-validation-error.test.d.ts +0 -1
- package/dist/__tests__/live-validation.test.d.ts +0 -1
- package/dist/__tests__/miscellaneous.d.ts +0 -1
- package/dist/__tests__/remove-all.test.d.ts +0 -1
- package/dist/__tests__/remove.test.d.ts +0 -1
- package/dist/__tests__/reset-form.test.d.ts +0 -1
- package/dist/__tests__/set-error.test.d.ts +0 -1
- package/dist/__tests__/set-schema.test.d.ts +0 -1
- package/dist/__tests__/submit-form.test.d.ts +0 -1
- package/dist/__tests__/use-execute-callbacks.test.d.ts +0 -1
- package/dist/__tests__/use-formbit-context.test.d.ts +0 -1
- package/dist/__tests__/validate-all.test.d.ts +0 -1
- package/dist/__tests__/validate-form.test.d.ts +0 -1
- package/dist/__tests__/validate-sync-all.test.d.ts +0 -1
- package/dist/__tests__/validate.test.d.ts +0 -1
- package/dist/__tests__/write-all.test.d.ts +0 -1
- package/dist/__tests__/write.test.d.ts +0 -1
- package/dist/types/index.d.ts +0 -178
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/helpers/obj-leaves.ts","../src/helpers/constants.ts","../src/types/helpers.ts","../src/validate-sync-all.ts","../src/use-execute-callbacks.ts","../src/use-formbit.ts","../src/formbit-context.tsx"],"sourcesContent":["type ObjectLeaves = (obj: unknown, acc?: string[]) => string[]\n\nfunction isObject(val: unknown): val is Record<string, unknown> {\n return val != null && typeof val === 'object' && Array.isArray(val) === false\n}\n\nconst objLeaves: ObjectLeaves = (obj, acc = []) => {\n const fn = (o: unknown, s?: string) => {\n if (Array.isArray(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}[${k}]` : k\n\n const isLeaf = fn(o[+k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n if (isObject(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}.${k}` : k\n\n const isLeaf = fn(o[k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n return false\n }\n\n fn(obj)\n return acc\n}\n\nexport default objLeaves\n","export const TEST_ERROR_MESSAGES = {\n MIN: 'must be greater than or equal',\n REQUIRED: 'is a required field'\n}\n\nexport enum ACTIONS {\n write = 'write',\n remove = 'remove'\n}\n\nexport const MISSING_CONTEXT_ERROR =\n 'No FormbitContext.Provider found, useFormbitContext can only be called inside proper context'\n","import { ValidationError } from 'yup'\n\nexport const isValidationError = (error: unknown): error is ValidationError => {\n if (error && typeof error === 'object' && 'message' in error && 'path' in error && 'inner' in error) {\n const { path, message, inner } = error\n\n return (typeof path === 'string' || path === undefined) &&\n (typeof message === 'string' || message === undefined) &&\n Array.isArray(inner)\n }\n\n return false\n}\n","import { isEmpty } from 'lodash'\nimport { FormbitValues, ValidateOptions, ValidationFormbitError, ValidationSchema } from './types'\nimport { isValidationError } from './types/helpers'\n\n/* We implement the validateSyncAll because yup.pick won't work with\n * schema with nested values: https://github.com/jquense/yup/issues/1269 */\nexport const validateSyncAll = <T extends FormbitValues> (\n paths:string[],\n schema:ValidationSchema<T>,\n form: FormbitValues,\n options: ValidateOptions = {}\n): ValidationFormbitError[] => {\n let errors: ValidationFormbitError[] = []\n\n if (isEmpty(paths)) {\n return errors\n }\n\n for (const pathToValidate of paths) {\n try {\n schema.validateSyncAt(pathToValidate, form, options)\n } catch (e) {\n if (isValidationError(e)) {\n const { message, path } = e\n\n errors = errors.concat({ message, path })\n }\n\n if (options?.abortEarly) {\n break\n }\n }\n }\n\n return errors\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { FormState, GenericCallback, FormbitValues, SetError } from './types'\nimport { isEmpty } from 'lodash'\n\n/**\n * useExecuteCallbacks\n *\n * This hook is meant to give a simple way to make sure that callbacks are called only once,\n * even if they are called inside React hooks like useEffect or setState.\n *\n *\n */\nexport default <T extends FormbitValues>(writer: FormState<T>, setError: SetError) => {\n const callbacksStore = useRef<Record<string, GenericCallback<Partial<T>> | undefined>>({})\n\n useEffect(() => {\n if (isEmpty(callbacksStore.current)) {\n return\n }\n\n Object.entries(callbacksStore.current).forEach(([, cb]) => {\n if (cb) {\n cb(writer, setError)\n }\n })\n\n callbacksStore.current = {}\n }, [setError, writer])\n\n /**\n * executeCallbacks\n * @param cb Callback that needs to be executed.\n *\n */\n return useCallback((uuid: string, cb?: GenericCallback<Partial<T>>) => {\n if (cb) {\n callbacksStore.current = { ...callbacksStore.current, [uuid]: cb }\n }\n }, [])\n}\n","import objLeaves from './helpers/obj-leaves'\nimport {\n useCallback, useRef, useState\n} from 'react'\nimport { ACTIONS } from './helpers/constants'\nimport {\n Check,\n FormbitObject,\n FormState,\n FormbitValues,\n LiveValidation,\n PrivateValidateForm,\n Remove,\n RemoveAll,\n SetError,\n SubmitForm,\n SuccessCallback,\n Validate,\n ValidateAll,\n ValidateForm,\n ValidationSchema,\n Write,\n WriteAll,\n WriteOrRemove\n} from './types'\nimport { isValidationError } from './types/helpers'\nimport { validateSyncAll } from './validate-sync-all'\nimport useExecuteCallbacks from './use-execute-callbacks'\nimport { cloneDeep, get, isEmpty, omit, set } from 'lodash'\nimport { v4 as uuidv4 } from 'uuid'\n\ntype UseFormbitParams<T extends FormbitValues> = {\n initialValues?: Partial<T>,\n yup: ValidationSchema<T>\n}\n\nexport default <T extends FormbitValues>({\n initialValues = {},\n yup: schema\n}: UseFormbitParams<T>): FormbitObject<T> => {\n const schemaRef = useRef<ValidationSchema<T>>(schema)\n\n const [writer, setWriter] = useState<FormState<Partial<T>>>({\n form: initialValues,\n initialValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n })\n\n const initialize = useCallback((values: Partial<T>) => {\n const { __metadata } = values\n\n if (__metadata) {\n setWriter((w) => ({\n ...w,\n initialValues: values,\n form: values,\n errors: {},\n liveValidation: {},\n isDirty: false\n }))\n\n return\n }\n\n setWriter((w) => {\n const { form: { __metadata } } = w\n const newValues = { ...values, __metadata }\n\n return {\n ...w,\n initialValues: newValues,\n form: newValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n }\n })\n }, [])\n\n const setSchema = useCallback((newSchema: ValidationSchema<T>) => { schemaRef.current = newSchema }, [])\n\n const setError: SetError = useCallback((path, value) => {\n setWriter((w) => {\n const errors = set(cloneDeep(w.errors), path, value)\n\n return { ...w, errors }\n })\n }, [])\n\n const executeCb = useExecuteCallbacks<Partial<T>>(writer, setError)\n\n const writeOrRemove: WriteOrRemove<T> = useCallback((\n path,\n value,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {},\n action\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = (function execute() {\n switch (action) {\n case ACTIONS.write: return set(cloneDeep(w.form), path, value)\n\n case ACTIONS.remove: return omit<Partial<T>>(cloneDeep(w.form), path)\n\n default: return cloneDeep(w.form)\n }\n }())\n\n const newWriter: FormState<Partial<T>> = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: innerPath, message }) => innerPath ? set(acc, innerPath, message) : acc,\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: innerPath }) => innerPath ? ({ ...acc, [innerPath]: true }) : acc,\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const write: Write<T> = useCallback((path, value, options) =>\n writeOrRemove(path, value, options, ACTIONS.write), [writeOrRemove])\n\n const remove: Remove<T> = useCallback((path, options) =>\n writeOrRemove(path, undefined, options, ACTIONS.remove), [writeOrRemove])\n\n const writeAll: WriteAll<T> = useCallback((\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, [key, val]) => set(acc, key, val),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const removeAll: RemoveAll<T> = useCallback(\n (\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n return newWriter\n }\n\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n newUUID && executeCb(newUUID, successCallback)\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n },\n [executeCb]\n )\n\n const validate: Validate<T> = useCallback((\n path,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = set(cloneDeep(w.errors), path, undefined)\n\n // VALIDATE\n const inner = validateSyncAll([path], schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: errorPath = '', message }) => set(acc, errorPath, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: errorPath = '' }) => ({ ...acc, [errorPath]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const validateAll: ValidateAll<T> = useCallback((\n paths,\n { successCallback, errorCallback, options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const check: Check<Partial<T>> = useCallback((\n json,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n try {\n schemaRef.current.validateSync(json, { abortEarly: false, ...options })\n successCallback?.(json, writer, setError)\n\n return undefined\n } catch (e) {\n if (isValidationError(e)) {\n const { inner } = e\n\n errorCallback?.(json, inner, writer, setError)\n\n return inner\n }\n\n return undefined\n }\n }, [setError, writer])\n\n const privateValidateForm: PrivateValidateForm<Partial<T>> = useCallback((\n successCallback,\n errorCallback,\n { options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n try {\n // abortEarly: false as default is to be retrocompatible\n schemaRef.current.validateSync(w.form, { abortEarly: false, ...options })\n\n newUUID && executeCb(newUUID, successCallback)\n\n return { ...w, errors: {} }\n } catch (e) {\n if (!isValidationError(e)) {\n // Checking if error is not formbit-related (e.g. a bug inside the successCallback)\n console.error(e)\n return w\n }\n\n const { inner } = e\n\n const errors = inner.reduce(\n (acc, { message, path = '' }) => set(acc, path, message),\n {}\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const newWriter = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return newWriter\n }\n })\n }, [executeCb])\n\n const validateForm: ValidateForm<Partial<T>> = useCallback((successCallback, errorCallback, options = {}) =>\n privateValidateForm(\n successCallback,\n errorCallback,\n { options }\n ), [privateValidateForm])\n\n const submitForm: SubmitForm<T> =\n useCallback((successCallback, errorCallback, options = {}) => {\n const fn = () => setWriter((w) => ({ ...w, isDirty: false }))\n\n const successCallbackAndClearIsDirty: SuccessCallback<Partial<T>> = (a, b) => {\n // Success callback is called only if the form is valid so we can safely cast a as FormState<T>\n const writer = a as FormState<T>\n\n // __metadata is a field used to store metadata about the form and should not be submitted\n const { __metadata: _, ...form } = writer.form\n\n return successCallback({ ...writer, form }, b, fn)\n }\n\n return privateValidateForm(\n successCallbackAndClearIsDirty,\n errorCallback,\n { options }\n )\n }, [privateValidateForm])\n\n const resetForm = useCallback(() => {\n setWriter((w) => ({\n ...w,\n form: w.initialValues,\n errors: {},\n isDirty: false,\n liveValidation: {}\n }))\n }, [])\n\n const isFormValid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).every((leaf) => !get(e, leaf))\n }, [writer.errors])\n\n const isFormInvalid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).some((leaf) => get(e, leaf))\n }, [writer.errors])\n\n const error = useCallback((path: string): string | undefined => get(writer.errors, path, undefined), [writer.errors])\n\n const liveValidation = useCallback(\n (path: string): true | undefined => get(writer.liveValidation, path, undefined),\n [writer.liveValidation]\n )\n\n return {\n // State\n form: writer.form,\n errors: writer.errors,\n isDirty: writer.isDirty,\n\n // Queries\n error,\n isFormValid,\n isFormInvalid,\n liveValidation,\n\n // Mutations\n write,\n writeAll,\n remove,\n removeAll,\n initialize,\n resetForm,\n setError,\n setSchema,\n validate,\n validateAll,\n validateForm,\n submitForm,\n check\n }\n}\n","import React, { useContext, createContext, PropsWithChildren } from 'react'\nimport useFormbit from './use-formbit'\nimport * as yup from 'yup'\nimport { FormbitObject, FormbitValues, ValidationSchema } from './types'\nimport { MISSING_CONTEXT_ERROR } from './helpers/constants'\nimport { once } from 'lodash'\n\ntype Props<Values extends FormbitValues> = {\n initialValues?: Partial<Values> | {}\n schema: ValidationSchema<Values>\n} & PropsWithChildren\n\nconst createFormbitContext =\n once(<Values extends FormbitValues>() => createContext<FormbitObject<Values> | undefined>(undefined))\n\nexport default function FormbitContextProvider<Values extends FormbitValues>({\n initialValues = {},\n schema,\n children\n}: Props<Values>) {\n const FormbitContext = createFormbitContext<Values>()\n\n const value = useFormbit({ initialValues, yup: schema || yup.object() })\n\n return (\n <FormbitContext.Provider value={value}>{children}</FormbitContext.Provider>\n )\n}\n\nexport const useFormbitContext = <Values extends FormbitValues>() => {\n const context = useContext(createFormbitContext<Values>())\n\n if (!context) {\n throw new Error(MISSING_CONTEXT_ERROR)\n }\n\n return context\n}\n"],"names":["isObject","val","Array","isArray","objLeaves","obj","acc","fn","o","s","Object","keys","forEach","k","path","isLeaf","push","ACTIONS","MISSING_CONTEXT_ERROR","isValidationError","error","message","inner","undefined","validateSyncAll","paths","schema","form","options","errors","isEmpty","pathToValidate","validateSyncAt","e","concat","abortEarly","writer","setError","callbacksStore","useRef","useEffect","current","entries","cb","useCallback","uuid","initialValues","yup","schemaRef","useState","liveValidation","isDirty","setWriter","initialize","values","__metadata","w","newValues","setSchema","newSchema","value","set","cloneDeep","executeCb","useExecuteCallbacks","writeOrRemove","action","noLiveValidation","pathsToValidate","successCallback","errorCallback","newUUID","getUUID","uuidv4","liveValidationPaths","execute","write","remove","omit","newWriter","length","cleanErrors","reduce","key","neww","innerPath","writeAll","arr","removeAll","validate","errorPath","validateAll","check","json","validateSync","privateValidateForm","console","validateForm","submitForm","successCallbackAndClearIsDirty","a","b","_","resetForm","isFormValid","every","leaf","get","isFormInvalid","some","createFormbitContext","once","createContext","FormbitContextProvider","children","FormbitContext","useFormbit","useFormbitContext","context","useContext","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/helpers/obj-leaves.ts","../src/helpers/constants.ts","../src/types/helpers.ts","../src/validate-sync-all.ts","../src/use-execute-callbacks.ts","../src/use-formbit.ts","../src/formbit-context.tsx"],"sourcesContent":["type ObjectLeaves = (obj: unknown, acc?: string[]) => string[]\n\nfunction isObject(val: unknown): val is Record<string, unknown> {\n return val != null && typeof val === 'object' && Array.isArray(val) === false\n}\n\nconst objLeaves: ObjectLeaves = (obj, acc = []) => {\n const fn = (o: unknown, s?: string) => {\n if (Array.isArray(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}[${k}]` : k\n\n const isLeaf = fn(o[+k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n if (isObject(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}.${k}` : k\n\n const isLeaf = fn(o[k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n return false\n }\n\n fn(obj)\n return acc\n}\n\nexport default objLeaves\n","export const TEST_ERROR_MESSAGES = {\n MIN: 'must be greater than or equal',\n REQUIRED: 'is a required field'\n}\n\nexport enum ACTIONS {\n write = 'write',\n remove = 'remove'\n}\n\nexport const MISSING_CONTEXT_ERROR =\n 'No FormbitContext.Provider found, useFormbitContext can only be called inside proper context'\n","import { ValidationError } from 'yup'\n\nexport const isValidationError = (error: unknown): error is ValidationError => {\n if (error && typeof error === 'object' && 'message' in error && 'path' in error && 'inner' in error) {\n const { path, message, inner } = error\n\n return (typeof path === 'string' || path === undefined) &&\n (typeof message === 'string' || message === undefined) &&\n Array.isArray(inner)\n }\n\n return false\n}\n","import { isEmpty } from 'lodash'\nimport { FormbitValues, ValidateOptions, ValidationFormbitError, ValidationSchema } from './types'\nimport { isValidationError } from './types/helpers'\n\n/* We implement the validateSyncAll because yup.pick won't work with\n * schema with nested values: https://github.com/jquense/yup/issues/1269 */\nexport const validateSyncAll = <T extends FormbitValues> (\n paths:string[],\n schema:ValidationSchema<T>,\n form: FormbitValues,\n options: ValidateOptions = {}\n): ValidationFormbitError[] => {\n let errors: ValidationFormbitError[] = []\n\n if (isEmpty(paths)) {\n return errors\n }\n\n for (const pathToValidate of paths) {\n try {\n schema.validateSyncAt(pathToValidate, form, options)\n } catch (e) {\n if (isValidationError(e)) {\n const { message, path } = e\n\n errors = errors.concat({ message, path })\n }\n\n if (options?.abortEarly) {\n break\n }\n }\n }\n\n return errors\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { FormState, GenericCallback, FormbitValues, SetError } from './types'\nimport { isEmpty } from 'lodash'\n\n/**\n * useExecuteCallbacks\n *\n * This hook is meant to give a simple way to make sure that callbacks are called only once,\n * even if they are called inside React hooks like useEffect or setState.\n *\n *\n */\nexport default <T extends FormbitValues>(writer: FormState<T>, setError: SetError) => {\n const callbacksStore = useRef<Record<string, GenericCallback<Partial<T>> | undefined>>({})\n\n useEffect(() => {\n if (isEmpty(callbacksStore.current)) {\n return\n }\n\n Object.entries(callbacksStore.current).forEach(([, cb]) => {\n if (cb) {\n cb(writer, setError)\n }\n })\n\n callbacksStore.current = {}\n }, [setError, writer])\n\n /**\n * executeCallbacks\n * @param cb Callback that needs to be executed.\n *\n */\n return useCallback((uuid: string, cb?: GenericCallback<Partial<T>>) => {\n if (cb) {\n callbacksStore.current = { ...callbacksStore.current, [uuid]: cb }\n }\n }, [])\n}\n","import objLeaves from './helpers/obj-leaves'\nimport {\n useCallback, useRef, useState\n} from 'react'\nimport { ACTIONS } from './helpers/constants'\nimport {\n Check,\n FormbitObject,\n FormState,\n FormbitValues,\n LiveValidation,\n PrivateValidateForm,\n Remove,\n RemoveAll,\n SetError,\n SubmitForm,\n SuccessCallback,\n Validate,\n ValidateAll,\n ValidateForm,\n ValidationSchema,\n Write,\n WriteAll,\n WriteOrRemove\n} from './types'\nimport { isValidationError } from './types/helpers'\nimport { validateSyncAll } from './validate-sync-all'\nimport useExecuteCallbacks from './use-execute-callbacks'\nimport { cloneDeep, get, isEmpty, omit, set } from 'lodash'\nimport { v4 as uuidv4 } from 'uuid'\n\ntype UseFormbitParams<T extends FormbitValues> = {\n initialValues?: Partial<T>,\n yup: ValidationSchema<T>\n}\n\nexport default <T extends FormbitValues>({\n initialValues = {},\n yup: schema\n}: UseFormbitParams<T>): FormbitObject<T> => {\n const schemaRef = useRef<ValidationSchema<T>>(schema)\n\n const [writer, setWriter] = useState<FormState<Partial<T>>>({\n form: initialValues,\n initialValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n })\n\n const initialize = useCallback((values: Partial<T>) => {\n const { __metadata } = values\n\n if (__metadata) {\n setWriter((w) => ({\n ...w,\n initialValues: values,\n form: values,\n errors: {},\n liveValidation: {},\n isDirty: false\n }))\n\n return\n }\n\n setWriter((w) => {\n const { form: { __metadata } } = w\n const newValues = { ...values, __metadata }\n\n return {\n ...w,\n initialValues: newValues,\n form: newValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n }\n })\n }, [])\n\n const setSchema = useCallback((newSchema: ValidationSchema<T>) => { schemaRef.current = newSchema }, [])\n\n const setError: SetError = useCallback((path, value) => {\n setWriter((w) => {\n const errors = set(cloneDeep(w.errors), path, value)\n\n return { ...w, errors }\n })\n }, [])\n\n const executeCb = useExecuteCallbacks<Partial<T>>(writer, setError)\n\n const writeOrRemove: WriteOrRemove<T> = useCallback((\n path,\n value,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {},\n action\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = (function execute() {\n switch (action) {\n case ACTIONS.write: return set(cloneDeep(w.form), path, value)\n\n case ACTIONS.remove: return omit<Partial<T>>(cloneDeep(w.form), path)\n\n default: return cloneDeep(w.form)\n }\n }())\n\n const newWriter: FormState<Partial<T>> = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: innerPath, message }) => innerPath ? set(acc, innerPath, message) : acc,\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: innerPath }) => innerPath ? ({ ...acc, [innerPath]: true }) : acc,\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const write: Write<T> = useCallback((path, value, options) =>\n writeOrRemove(path, value, options, ACTIONS.write), [writeOrRemove])\n\n const remove: Remove<T> = useCallback((path, options) =>\n writeOrRemove(path, undefined, options, ACTIONS.remove), [writeOrRemove])\n\n const writeAll: WriteAll<T> = useCallback((\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, [key, val]) => set(acc, key, val),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const removeAll: RemoveAll<T> = useCallback(\n (\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n return newWriter\n }\n\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n newUUID && executeCb(newUUID, successCallback)\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n },\n [executeCb]\n )\n\n const validate: Validate<T> = useCallback((\n path,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = set(cloneDeep(w.errors), path, undefined)\n\n // VALIDATE\n const inner = validateSyncAll([path], schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: errorPath = '', message }) => set(acc, errorPath, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: errorPath = '' }) => ({ ...acc, [errorPath]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const validateAll: ValidateAll<T> = useCallback((\n paths,\n { successCallback, errorCallback, options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const check: Check<Partial<T>> = useCallback((\n json,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n try {\n schemaRef.current.validateSync(json, { abortEarly: false, ...options })\n successCallback?.(json, writer, setError)\n\n return undefined\n } catch (e) {\n if (isValidationError(e)) {\n const { inner } = e\n\n errorCallback?.(json, inner, writer, setError)\n\n return inner\n }\n\n return undefined\n }\n }, [setError, writer])\n\n const privateValidateForm: PrivateValidateForm<Partial<T>> = useCallback((\n successCallback,\n errorCallback,\n { options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n try {\n // abortEarly: false as default is to be retrocompatible\n schemaRef.current.validateSync(w.form, { abortEarly: false, ...options })\n\n newUUID && executeCb(newUUID, successCallback)\n\n return { ...w, errors: {} }\n } catch (e) {\n if (!isValidationError(e)) {\n // Checking if error is not formbit-related (e.g. a bug inside the successCallback)\n console.error(e)\n return w\n }\n\n const { inner } = e\n\n const errors = inner.reduce(\n (acc, { message, path = '' }) => set(acc, path, message),\n {}\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const newWriter = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return newWriter\n }\n })\n }, [executeCb])\n\n const validateForm: ValidateForm<Partial<T>> = useCallback((successCallback, errorCallback, options = {}) =>\n privateValidateForm(\n successCallback,\n errorCallback,\n { options }\n ), [privateValidateForm])\n\n const submitForm: SubmitForm<T> =\n useCallback((successCallback, errorCallback, options = {}) => {\n const fn = () => setWriter((w) => ({ ...w, isDirty: false }))\n\n const successCallbackAndClearIsDirty: SuccessCallback<Partial<T>> = (a, b) => {\n // Success callback is called only if the form is valid so we can safely cast a as FormState<T>\n const writer = a as FormState<T>\n\n // __metadata is a field used to store metadata about the form and should not be submitted\n const { __metadata: _, ...form } = writer.form\n\n return successCallback({ ...writer, form }, b, fn)\n }\n\n return privateValidateForm(\n successCallbackAndClearIsDirty,\n errorCallback,\n { options }\n )\n }, [privateValidateForm])\n\n const resetForm = useCallback(() => {\n setWriter((w) => ({\n ...w,\n form: w.initialValues,\n errors: {},\n isDirty: false,\n liveValidation: {}\n }))\n }, [])\n\n const isFormValid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).every((leaf) => !get(e, leaf))\n }, [writer.errors])\n\n const isFormInvalid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).some((leaf) => get(e, leaf))\n }, [writer.errors])\n\n const error = useCallback((path: string): string | undefined => get(writer.errors, path, undefined), [writer.errors])\n\n const liveValidation = useCallback(\n (path: string): true | undefined => get(writer.liveValidation, path, undefined),\n [writer.liveValidation]\n )\n\n return {\n // State\n form: writer.form,\n errors: writer.errors,\n isDirty: writer.isDirty,\n\n // Queries\n error,\n isFormValid,\n isFormInvalid,\n liveValidation,\n\n // Mutations\n write,\n writeAll,\n remove,\n removeAll,\n initialize,\n resetForm,\n setError,\n setSchema,\n validate,\n validateAll,\n validateForm,\n submitForm,\n check\n }\n}\n","import React, { useContext, createContext, PropsWithChildren } from 'react'\nimport useFormbit from './use-formbit'\nimport * as yup from 'yup'\nimport { FormbitObject, FormbitValues, ValidationSchema } from './types'\nimport { MISSING_CONTEXT_ERROR } from './helpers/constants'\nimport { once } from 'lodash'\n\ntype Props<Values extends FormbitValues> = {\n initialValues?: Partial<Values> | {}\n schema: ValidationSchema<Values>\n} & PropsWithChildren\n\nconst createFormbitContext =\n once(<Values extends FormbitValues>() => createContext<FormbitObject<Values> | undefined>(undefined))\n\nexport default function FormbitContextProvider<Values extends FormbitValues>({\n initialValues = {},\n schema,\n children\n}: Props<Values>) {\n const FormbitContext = createFormbitContext<Values>()\n\n const value = useFormbit({ initialValues, yup: schema || yup.object() })\n\n return (\n <FormbitContext.Provider value={value}>{children}</FormbitContext.Provider>\n )\n}\n\nexport const useFormbitContext = <Values extends FormbitValues>() => {\n const context = useContext(createFormbitContext<Values>())\n\n if (!context) {\n throw new Error(MISSING_CONTEXT_ERROR)\n }\n\n return context\n}\n"],"names":["isObject","val","Array","isArray","objLeaves","obj","acc","fn","o","s","Object","keys","forEach","k","path","isLeaf","push","ACTIONS","MISSING_CONTEXT_ERROR","isValidationError","error","message","inner","undefined","validateSyncAll","paths","schema","form","options","errors","isEmpty","_iterator","_createForOfIteratorHelperLoose","_step","done","pathToValidate","value","validateSyncAt","e","_options","concat","abortEarly","writer","setError","callbacksStore","useRef","useEffect","current","entries","_ref","cb","useCallback","uuid","_extends2","_extends","initialValues","_ref$initialValues","yup","schemaRef","_useState","useState","liveValidation","isDirty","setWriter","initialize","values","__metadata","w","newValues","setSchema","newSchema","set","cloneDeep","executeCb","useExecuteCallbacks","writeOrRemove","_temp","action","_ref2$noLiveValidatio","_ref2","noLiveValidation","_ref2$pathsToValidate","pathsToValidate","successCallback","errorCallback","_ref2$options","newUUID","getUUID","uuidv4","liveValidationPaths","execute","write","remove","omit","newWriter","length","cleanErrors","reduce","key","neww","_ref3","innerPath","_ref4","writeAll","arr","_temp2","_ref5$noLiveValidatio","_ref5","_ref5$pathsToValidate","_ref5$options","_ref6","_ref7","_ref7$path","_ref8","_extends3","_ref8$path","removeAll","_temp3","_ref9$noLiveValidatio","_ref9","_ref9$pathsToValidate","_ref9$options","_ref0","_ref0$path","_ref1","_extends4","_ref1$path","validate","_temp4","_ref10","_ref11","_ref11$path","errorPath","_ref12","_extends5","_ref12$path","validateAll","_temp5","_ref13","_ref14","_ref14$path","_ref15","_extends6","_ref15$path","check","json","_temp6","_ref16","validateSync","privateValidateForm","_temp7","_ref17","console","_ref18","_ref18$path","_ref19","_extends7","_ref19$path","validateForm","submitForm","successCallbackAndClearIsDirty","a","b","_writer$form","_","_objectWithoutPropertiesLoose","_excluded","resetForm","isFormValid","_writer$errors","_excluded2","every","leaf","get","isFormInvalid","_writer$errors2","_excluded3","some","createFormbitContext","once","createContext","FormbitContextProvider","children","FormbitContext","useFormbit","React","createElement","Provider","useFormbitContext","context","useContext","Error"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radicalbit/formbit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Lightweight state form library",
|
|
5
5
|
"author": "https://github.com/radicalbit",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"source": "src/index.ts",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
13
|
+
"node": ">=22"
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "microbundle-crl --no-compress --format modern,cjs",
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"prepare": "run-s build && husky",
|
|
19
19
|
"test": "run-s test:unit test:lint test:build",
|
|
20
20
|
"test:build": "run-s build",
|
|
21
|
-
"test:lint": "eslint
|
|
22
|
-
"test:unit": "
|
|
23
|
-
"test:watch": "
|
|
24
|
-
"test:coverage": "
|
|
21
|
+
"test:lint": "eslint .",
|
|
22
|
+
"test:unit": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"test:coverage": "vitest run --coverage",
|
|
25
25
|
"predeploy": "cd example && yarn install && yarn run build",
|
|
26
26
|
"deploy": "gh-pages -d example/build",
|
|
27
27
|
"yalc:publish": "yalc publish --push --sig",
|
|
28
|
-
"docs:gen": "typedoc --excludePrivate --excludeInternal --plugin typedoc-plugin-markdown --
|
|
28
|
+
"docs:gen": "typedoc --excludePrivate --excludeInternal --plugin typedoc-plugin-markdown --out docs src/types/index.ts",
|
|
29
29
|
"docs:merge": "node scripts/readme-merge.js",
|
|
30
30
|
"docs:toc": "doctoc --maxlevel 3 README.md --github",
|
|
31
31
|
"docs:clean": "rimraf docs",
|
|
@@ -37,57 +37,39 @@
|
|
|
37
37
|
"yup": "^1.4.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@babel/eslint-parser": "^7.28.5",
|
|
41
|
-
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
42
40
|
"@testing-library/dom": "^10.4.1",
|
|
43
|
-
"@testing-library/jest-dom": "^
|
|
44
|
-
"@testing-library/react": "^
|
|
45
|
-
"@types/
|
|
46
|
-
"@types/
|
|
47
|
-
"@types/react": "^19.
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@typescript-eslint/eslint-plugin": "^7.4.0",
|
|
51
|
-
"@typescript-eslint/parser": "^7.4.0",
|
|
52
|
-
"cross-env": "^7.0.2",
|
|
41
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
42
|
+
"@testing-library/react": "^16.3.3",
|
|
43
|
+
"@types/lodash": "^4.17.25",
|
|
44
|
+
"@types/react": "^19.2.18",
|
|
45
|
+
"@types/react-dom": "^19.2.7",
|
|
46
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
47
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
53
48
|
"doctoc": "^2.2.1",
|
|
54
|
-
"eslint": "
|
|
55
|
-
"eslint-
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"eslint-plugin-import": "^2.29.1",
|
|
61
|
-
"eslint-plugin-jest": "^27.9.0",
|
|
62
|
-
"eslint-plugin-n": "^16.6.2",
|
|
63
|
-
"eslint-plugin-node": "^11.0.0",
|
|
64
|
-
"eslint-plugin-prettier": "^3.1.1",
|
|
65
|
-
"eslint-plugin-promise": "^4.2.1",
|
|
66
|
-
"eslint-plugin-react": "^7.17.0",
|
|
67
|
-
"eslint-plugin-react-refresh": "^0.4.7",
|
|
68
|
-
"eslint-plugin-sonarjs": "^0.25.0",
|
|
69
|
-
"eslint-plugin-standard": "^4.0.1",
|
|
70
|
-
"gh-pages": "^2.2.0",
|
|
71
|
-
"husky": "^9.0.11",
|
|
49
|
+
"eslint": "^9.39.5",
|
|
50
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
51
|
+
"gh-pages": "^6.3.0",
|
|
52
|
+
"husky": "^9.1.7",
|
|
53
|
+
"jsdom": "^30.0.1",
|
|
54
|
+
"lodash": "^4.17.21",
|
|
72
55
|
"microbundle-crl": "^0.13.11",
|
|
56
|
+
"neostandard": "^0.13.0",
|
|
73
57
|
"npm-run-all": "^4.1.5",
|
|
74
|
-
"react": "^19.
|
|
75
|
-
"react-dom": "^19.
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"typedoc": "^
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
58
|
+
"react": "^19.2.8",
|
|
59
|
+
"react-dom": "^19.2.8",
|
|
60
|
+
"rimraf": "^6.1.3",
|
|
61
|
+
"typedoc": "^0.28.20",
|
|
62
|
+
"typedoc-plugin-markdown": "^4.13.0",
|
|
63
|
+
"typescript": "^5.9.3",
|
|
64
|
+
"vite": "^8.2.2",
|
|
65
|
+
"vitest": "^5.0.0"
|
|
82
66
|
},
|
|
83
67
|
"dependencies": {
|
|
84
|
-
"uuid": "^
|
|
85
|
-
"yup": "^1.
|
|
68
|
+
"uuid": "^14.0.2",
|
|
69
|
+
"yup": "^1.7.1"
|
|
86
70
|
},
|
|
87
71
|
"resolutions": {
|
|
88
|
-
"**/typescript": "^5.
|
|
89
|
-
"**/@typescript-eslint/eslint-plugin": "^5.4.3",
|
|
90
|
-
"**/@typescript-eslint/parser": "^5.4.3"
|
|
72
|
+
"**/typescript": "^5.9.3"
|
|
91
73
|
},
|
|
92
74
|
"files": [
|
|
93
75
|
"dist"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/index.d.ts
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import { ObjectSchema, ValidationError as YupValidationError, ValidateOptions as YupValidateOptions } from 'yup';
|
|
2
|
-
import { ACTIONS } from '../helpers/constants';
|
|
3
|
-
/**
|
|
4
|
-
* Base shape of every form handled by formbit: an open record of values, plus an
|
|
5
|
-
* optional `__metadata` field formbit uses to carry data that must survive a
|
|
6
|
-
* reset/initialize but must NOT be submitted.
|
|
7
|
-
*
|
|
8
|
-
* The generic `T` you pass to `useFormbit<T>()` must extend this type.
|
|
9
|
-
*/
|
|
10
|
-
export type FormbitValues = Record<string, unknown> & {
|
|
11
|
-
__metadata?: Record<string, unknown>;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Error messages registered since the last validation, stored under the same
|
|
15
|
-
* dot-path as the corresponding form value.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* form: { age: 1 }
|
|
19
|
-
* errors: { age: "Age must be greater than 18" }
|
|
20
|
-
*/
|
|
21
|
-
export type Errors = Record<string, string>;
|
|
22
|
-
/**
|
|
23
|
-
* Fields currently under live-validation (re-validated on every form change).
|
|
24
|
-
* A field is added here automatically when it fails a validation. Empty by default.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* form: { age: 1 }
|
|
28
|
-
* liveValidation: { age: true }
|
|
29
|
-
*/
|
|
30
|
-
export type LiveValidation = Record<string, true>;
|
|
31
|
-
/**
|
|
32
|
-
* The whole internal state of the form (everything except the validation schema).
|
|
33
|
-
*/
|
|
34
|
-
export type FormState<T extends FormbitValues> = {
|
|
35
|
-
form: T;
|
|
36
|
-
initialValues: T;
|
|
37
|
-
errors: Errors;
|
|
38
|
-
liveValidation: LiveValidation;
|
|
39
|
-
isDirty: boolean;
|
|
40
|
-
};
|
|
41
|
-
/** A validation schema built with `yup.object()`. See {@link https://github.com/jquense/yup}. */
|
|
42
|
-
export type ValidationSchema<T extends FormbitValues> = ObjectSchema<T>;
|
|
43
|
-
/** Options forwarded to yup's validation methods. See {@link https://github.com/jquense/yup}. */
|
|
44
|
-
export type ValidateOptions = YupValidateOptions;
|
|
45
|
-
/** The error object yup throws when a validation fails. See {@link https://github.com/jquense/yup}. */
|
|
46
|
-
export type ValidationError = YupValidationError;
|
|
47
|
-
/** Invoked by validation methods when the form (or the validated paths) are valid. */
|
|
48
|
-
export type SuccessCallback<T extends FormbitValues> = (writer: FormState<T>, setError: SetError) => void;
|
|
49
|
-
/** Invoked by validation methods when validation fails. */
|
|
50
|
-
export type ErrorCallback<T extends FormbitValues> = (writer: FormState<T>, setError: SetError) => void;
|
|
51
|
-
/** Invoked by `check()` when the given json is valid. */
|
|
52
|
-
export type CheckSuccessCallback<T extends FormbitValues> = (json: FormbitValues, writer: FormState<T>, setError: SetError) => void;
|
|
53
|
-
/** Invoked by `check()` when the given json is invalid. */
|
|
54
|
-
export type CheckErrorCallback<T extends FormbitValues> = (json: FormbitValues, inner: ValidationError[], writer: FormState<T>, setError: SetError) => void;
|
|
55
|
-
/**
|
|
56
|
-
* Invoked by `submitForm()` once the whole form is valid — the place to send data
|
|
57
|
-
* to the backend. `__metadata` is stripped from `writer.form` before this runs.
|
|
58
|
-
*/
|
|
59
|
-
export type SubmitSuccessCallback<T extends FormbitValues> = (writer: FormState<Omit<T, '__metadata'>>, setError: SetError, clearIsDirty: () => void) => void;
|
|
60
|
-
/** See {@link FormbitObject.check}. */
|
|
61
|
-
export type Check<T extends FormbitValues> = (json: FormbitValues, options?: CheckFnOptions<T>) => ValidationError[] | undefined;
|
|
62
|
-
/** See {@link FormbitObject.initialize}. */
|
|
63
|
-
export type Initialize<T extends FormbitValues> = (values: Partial<T>) => void;
|
|
64
|
-
/** See {@link FormbitObject.remove}. */
|
|
65
|
-
export type Remove<T extends FormbitValues> = (path: string, options?: WriteFnOptions<T>) => void;
|
|
66
|
-
/** See {@link FormbitObject.setError}. */
|
|
67
|
-
export type SetError = (path: string, value: string) => void;
|
|
68
|
-
/** See {@link FormbitObject.setSchema}. */
|
|
69
|
-
export type SetSchema<T extends FormbitValues> = (newSchema: ValidationSchema<T>) => void;
|
|
70
|
-
/** A single `[path, value]` pair accepted by `writeAll`. */
|
|
71
|
-
export type WriteAllValue<T extends FormbitValues> = [keyof T | string, unknown];
|
|
72
|
-
/** See {@link FormbitObject.write}. */
|
|
73
|
-
export type Write<T extends FormbitValues> = (path: keyof T | string, value: unknown, options?: WriteFnOptions<T>) => void;
|
|
74
|
-
/** See {@link FormbitObject.writeAll}. */
|
|
75
|
-
export type WriteAll<T extends FormbitValues> = (arr: WriteAllValue<T>[], options?: WriteFnOptions<T>) => void;
|
|
76
|
-
/** See {@link FormbitObject.removeAll}. */
|
|
77
|
-
export type RemoveAll<T extends FormbitValues> = (arr: string[], options?: WriteFnOptions<T>) => void;
|
|
78
|
-
/** See {@link FormbitObject.validate}. */
|
|
79
|
-
export type Validate<T extends FormbitValues> = (path: string, options?: ValidateFnOptions<T>) => void;
|
|
80
|
-
/** See {@link FormbitObject.validateAll}. */
|
|
81
|
-
export type ValidateAll<T extends FormbitValues> = (paths: string[], options?: ValidateFnOptions<T>) => void;
|
|
82
|
-
/** See {@link FormbitObject.validateForm}. */
|
|
83
|
-
export type ValidateForm<T extends FormbitValues> = (successCallback?: SuccessCallback<T>, errorCallback?: ErrorCallback<T>, options?: ValidateOptions) => void;
|
|
84
|
-
/** See {@link FormbitObject.submitForm}. */
|
|
85
|
-
export type SubmitForm<T extends FormbitValues> = (successCallback: SubmitSuccessCallback<T>, errorCallback?: ErrorCallback<Partial<T>>, options?: ValidateOptions) => void;
|
|
86
|
-
/** Options accepted by `check()`. */
|
|
87
|
-
export type CheckFnOptions<T extends FormbitValues> = {
|
|
88
|
-
successCallback?: CheckSuccessCallback<T>;
|
|
89
|
-
errorCallback?: CheckErrorCallback<T>;
|
|
90
|
-
options?: ValidateOptions;
|
|
91
|
-
};
|
|
92
|
-
/** Options accepted by the `validate` methods. */
|
|
93
|
-
export type ValidateFnOptions<T extends FormbitValues> = {
|
|
94
|
-
successCallback?: SuccessCallback<Partial<T>>;
|
|
95
|
-
errorCallback?: ErrorCallback<Partial<T>>;
|
|
96
|
-
options?: ValidateOptions;
|
|
97
|
-
};
|
|
98
|
-
/** Options accepted by the `write`/`remove` methods (validate options plus path control). */
|
|
99
|
-
export type WriteFnOptions<T extends FormbitValues> = {
|
|
100
|
-
noLiveValidation?: boolean;
|
|
101
|
-
pathsToValidate?: string[];
|
|
102
|
-
} & ValidateFnOptions<T>;
|
|
103
|
-
/** @internal */
|
|
104
|
-
export type Action = keyof typeof ACTIONS;
|
|
105
|
-
/** @internal */
|
|
106
|
-
export type GenericCallback<T extends FormbitValues> = SuccessCallback<T> | ErrorCallback<T>;
|
|
107
|
-
/** @internal Subset of a yup ValidationError kept by formbit's sync validation. */
|
|
108
|
-
export type ValidationFormbitError = Pick<ValidationError, 'message' | 'path'>;
|
|
109
|
-
/** @internal */
|
|
110
|
-
export type WriteOrRemove<T extends FormbitValues> = (path: keyof T | string, value: unknown, options?: WriteFnOptions<T>, action?: Action) => void;
|
|
111
|
-
/** @internal */
|
|
112
|
-
export type PrivateValidateForm<T extends FormbitValues> = (successCallback?: SuccessCallback<T>, errorCallback?: ErrorCallback<Partial<T>>, options?: {
|
|
113
|
-
options?: ValidateOptions;
|
|
114
|
-
}) => void;
|
|
115
|
-
/**
|
|
116
|
-
* The object returned by `useFormbit()` and `useFormbitContext()`. Holds the form
|
|
117
|
-
* state and every method needed to read, mutate and validate the form.
|
|
118
|
-
*/
|
|
119
|
-
export type FormbitObject<T extends FormbitValues> = {
|
|
120
|
-
/** The current form values. Partial: fields may be missing until validated. */
|
|
121
|
-
form: Partial<T>;
|
|
122
|
-
/**
|
|
123
|
-
* Error messages registered since the last validation, keyed by the value's dot-path.
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* form: { age: 1 }
|
|
127
|
-
* errors: { age: "Age must be greater than 18" }
|
|
128
|
-
*/
|
|
129
|
-
errors: Errors;
|
|
130
|
-
/** True once the user has interacted with the form. */
|
|
131
|
-
isDirty: boolean;
|
|
132
|
-
/** Returns the error message registered for `path`, if any. */
|
|
133
|
-
error: (path: string) => string | undefined;
|
|
134
|
-
/** True if no errors are currently registered. Does not run validation. */
|
|
135
|
-
isFormValid: () => boolean;
|
|
136
|
-
/** True if any error is currently registered. Does not run validation. */
|
|
137
|
-
isFormInvalid: () => boolean;
|
|
138
|
-
/** True if live-validation is active for `path`. */
|
|
139
|
-
liveValidation: (path: string) => true | undefined;
|
|
140
|
-
/** Validates `json` against the current schema; returns the errors, or undefined if valid. */
|
|
141
|
-
check: Check<Partial<T>>;
|
|
142
|
-
/**
|
|
143
|
-
* Writes `value` at `path`, sets `isDirty`, then validates `pathsToValidate`
|
|
144
|
-
* plus every live-validated field.
|
|
145
|
-
*/
|
|
146
|
-
write: Write<T>;
|
|
147
|
-
/**
|
|
148
|
-
* Writes every `[path, value]` pair, sets `isDirty`, then validates
|
|
149
|
-
* `pathsToValidate` plus every live-validated field.
|
|
150
|
-
*/
|
|
151
|
-
writeAll: WriteAll<T>;
|
|
152
|
-
/**
|
|
153
|
-
* Removes the value at `path`, sets `isDirty`, then validates `pathsToValidate`
|
|
154
|
-
* plus every live-validated field.
|
|
155
|
-
*/
|
|
156
|
-
remove: Remove<T>;
|
|
157
|
-
/**
|
|
158
|
-
* Removes every given path, sets `isDirty`, then validates `pathsToValidate`
|
|
159
|
-
* plus every live-validated field.
|
|
160
|
-
*/
|
|
161
|
-
removeAll: RemoveAll<T>;
|
|
162
|
-
/** Re-initializes the form with new initial values. */
|
|
163
|
-
initialize: Initialize<T>;
|
|
164
|
-
/** Resets form, errors, liveValidation and isDirty back to their initial state. */
|
|
165
|
-
resetForm: () => void;
|
|
166
|
-
/** Sets the error message at `path`. */
|
|
167
|
-
setError: SetError;
|
|
168
|
-
/** Replaces the current validation schema. */
|
|
169
|
-
setSchema: SetSchema<T>;
|
|
170
|
-
/** Validates only `path` (ignores live-validated fields). */
|
|
171
|
-
validate: Validate<T>;
|
|
172
|
-
/** Validates only the given `paths` (ignores live-validated fields). */
|
|
173
|
-
validateAll: ValidateAll<T>;
|
|
174
|
-
/** Validates the whole form and registers any error. */
|
|
175
|
-
validateForm: ValidateForm<Partial<T>>;
|
|
176
|
-
/** Validates the whole form and, if valid, runs the success callback to submit. */
|
|
177
|
-
submitForm: SubmitForm<T>;
|
|
178
|
-
};
|