@lehnihon/bit-form 2.2.18 → 2.2.24
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/README.md +10 -13
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +7 -6
- package/dist/angular/index.d.ts +7 -6
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/{chunk-DD6XWUMR.cjs → chunk-27LJCW56.cjs} +2 -2
- package/dist/chunk-27LJCW56.cjs.map +1 -0
- package/dist/chunk-3SEB4YRQ.cjs +2 -0
- package/dist/chunk-3SEB4YRQ.cjs.map +1 -0
- package/dist/chunk-4WPLTOBT.cjs +2 -0
- package/dist/chunk-4WPLTOBT.cjs.map +1 -0
- package/dist/chunk-5ILGCBKG.cjs +2 -0
- package/dist/chunk-5ILGCBKG.cjs.map +1 -0
- package/dist/chunk-725CMNAV.cjs +2 -0
- package/dist/chunk-725CMNAV.cjs.map +1 -0
- package/dist/{chunk-GKNGJOB3.cjs → chunk-7LCFS2JM.cjs} +2 -2
- package/dist/chunk-7LCFS2JM.cjs.map +1 -0
- package/dist/{chunk-AVUK52JW.cjs → chunk-AOMXTUA4.cjs} +2 -2
- package/dist/chunk-AOMXTUA4.cjs.map +1 -0
- package/dist/chunk-BSGJ3T5S.cjs.map +1 -1
- package/dist/chunk-CATA7YEV.js +2 -0
- package/dist/chunk-CATA7YEV.js.map +1 -0
- package/dist/chunk-DGEGYNQL.js +2 -0
- package/dist/{chunk-3NUJVIAM.js.map → chunk-DGEGYNQL.js.map} +1 -1
- package/dist/chunk-DNHPYPJA.js +2 -0
- package/dist/chunk-DNHPYPJA.js.map +1 -0
- package/dist/chunk-H3RTOA6X.cjs +2 -0
- package/dist/chunk-H3RTOA6X.cjs.map +1 -0
- package/dist/chunk-H6HGYVRV.cjs +2 -0
- package/dist/chunk-H6HGYVRV.cjs.map +1 -0
- package/dist/chunk-HTMNDK6W.js +2 -0
- package/dist/chunk-HTMNDK6W.js.map +1 -0
- package/dist/chunk-JVRTPL7W.js +2 -0
- package/dist/chunk-JVRTPL7W.js.map +1 -0
- package/dist/{chunk-77PK7U73.cjs → chunk-K2JSAJAF.cjs} +2 -2
- package/dist/chunk-K2JSAJAF.cjs.map +1 -0
- package/dist/chunk-K2KCQEER.js +2 -0
- package/dist/chunk-K2KCQEER.js.map +1 -0
- package/dist/chunk-L57KMBXS.js +2 -0
- package/dist/chunk-L57KMBXS.js.map +1 -0
- package/dist/chunk-LY67POOF.js +2 -0
- package/dist/chunk-LY67POOF.js.map +1 -0
- package/dist/chunk-MBEQLBJB.js +2 -0
- package/dist/chunk-MBEQLBJB.js.map +1 -0
- package/dist/chunk-MFSDDSVG.cjs.map +1 -1
- package/dist/chunk-PDFT5E2E.cjs +2 -0
- package/dist/chunk-PDFT5E2E.cjs.map +1 -0
- package/dist/chunk-PRMNTQD5.js +2 -0
- package/dist/chunk-PRMNTQD5.js.map +1 -0
- package/dist/chunk-QKGTVKBU.cjs.map +1 -1
- package/dist/chunk-RHMJPKNV.cjs.map +1 -1
- package/dist/chunk-SFVGMVIE.js +2 -0
- package/dist/chunk-SFVGMVIE.js.map +1 -0
- package/dist/chunk-SMCFLQIA.cjs +2 -0
- package/dist/chunk-SMCFLQIA.cjs.map +1 -0
- package/dist/chunk-T36GFQHU.cjs +2 -0
- package/dist/chunk-T36GFQHU.cjs.map +1 -0
- package/dist/chunk-W5CLDRRE.cjs.map +1 -1
- package/dist/chunk-WEZ5Q6YO.js +2 -0
- package/dist/chunk-WEZ5Q6YO.js.map +1 -0
- package/dist/chunk-X3DGA5UC.cjs +2 -0
- package/dist/chunk-X3DGA5UC.cjs.map +1 -0
- package/dist/{chunk-HE6EQZTH.js → chunk-X3OFU2UH.js} +2 -2
- package/dist/chunk-XPY6TCOO.js +2 -0
- package/dist/{chunk-SYEUXL2E.js.map → chunk-XPY6TCOO.js.map} +1 -1
- package/dist/cli/index.cjs +19 -18
- package/dist/{config-types-bTt2lcw9.d.ts → config-types-DB6FaTiZ.d.ts} +3 -3
- package/dist/{config-types-Dbyt7t3D.d.cts → config-types-mZFlp2Bi.d.cts} +3 -3
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.cjs.map +1 -1
- package/dist/core/bindings.d.cts +4 -4
- package/dist/core/bindings.d.ts +4 -4
- package/dist/core/bindings.js +1 -1
- package/dist/core/status.cjs.map +1 -1
- package/dist/core/status.d.cts +3 -3
- package/dist/core/status.d.ts +3 -3
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.cjs.map +1 -1
- package/dist/core/store.d.cts +5 -5
- package/dist/core/store.d.ts +5 -5
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.cjs.map +1 -1
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +4 -4
- package/dist/core.d.ts +4 -4
- package/dist/core.js +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +17 -17
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +2 -2
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.js +17 -17
- package/dist/devtools/index.js.map +1 -1
- package/dist/devtools/protocol.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.d.cts +1 -1
- package/dist/mask.d.ts +1 -1
- package/dist/mask.js +1 -1
- package/dist/{meta-types-BC1VLABk.d.cts → meta-types-1Xcht8hj.d.cts} +1 -1
- package/dist/{meta-types-BC1VLABk.d.ts → meta-types-1Xcht8hj.d.ts} +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -6
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +5 -5
- package/dist/react-native/index.d.ts +5 -5
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/types.cjs.map +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.cts → runtime-types-BLCkMgcy.d.cts} +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.ts → runtime-types-BLCkMgcy.d.ts} +1 -1
- package/dist/{store-api-types-i-zmM25p.d.ts → store-api-types-CgRVo2DA.d.ts} +4 -4
- package/dist/{store-api-types-BPD27biP.d.cts → store-api-types-D7i0KWbr.d.cts} +4 -4
- package/dist/{use-bit-persist-BGH2Bazx.d.ts → use-bit-persist-CFcuAzwp.d.ts} +5 -5
- package/dist/{use-bit-persist-DiwICsEm.d.cts → use-bit-persist-Dsr69hme.d.cts} +5 -5
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +23 -22
- package/dist/vue/index.d.ts +23 -22
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +70 -16
- package/dist/chunk-3774TIGK.js +0 -2
- package/dist/chunk-3774TIGK.js.map +0 -1
- package/dist/chunk-3KI3GEU3.cjs +0 -2
- package/dist/chunk-3KI3GEU3.cjs.map +0 -1
- package/dist/chunk-3NUJVIAM.js +0 -2
- package/dist/chunk-77PK7U73.cjs.map +0 -1
- package/dist/chunk-AVUK52JW.cjs.map +0 -1
- package/dist/chunk-CTURHI75.cjs +0 -2
- package/dist/chunk-CTURHI75.cjs.map +0 -1
- package/dist/chunk-DD6XWUMR.cjs.map +0 -1
- package/dist/chunk-FGJB4DHQ.js +0 -2
- package/dist/chunk-FGJB4DHQ.js.map +0 -1
- package/dist/chunk-FTXV2NZO.cjs +0 -2
- package/dist/chunk-FTXV2NZO.cjs.map +0 -1
- package/dist/chunk-G3EHXKOS.js +0 -2
- package/dist/chunk-G3EHXKOS.js.map +0 -1
- package/dist/chunk-GDRNKTHO.js +0 -2
- package/dist/chunk-GDRNKTHO.js.map +0 -1
- package/dist/chunk-GKNGJOB3.cjs.map +0 -1
- package/dist/chunk-GSZTHF7Z.js +0 -2
- package/dist/chunk-GSZTHF7Z.js.map +0 -1
- package/dist/chunk-GUU6EXFN.js +0 -2
- package/dist/chunk-GUU6EXFN.js.map +0 -1
- package/dist/chunk-ICYXODTQ.js +0 -2
- package/dist/chunk-ICYXODTQ.js.map +0 -1
- package/dist/chunk-L7EAZ6K6.cjs +0 -2
- package/dist/chunk-L7EAZ6K6.cjs.map +0 -1
- package/dist/chunk-LIHWJJIM.js +0 -2
- package/dist/chunk-LIHWJJIM.js.map +0 -1
- package/dist/chunk-M2XR4C7T.js +0 -2
- package/dist/chunk-M2XR4C7T.js.map +0 -1
- package/dist/chunk-P5YQ62YN.cjs +0 -2
- package/dist/chunk-P5YQ62YN.cjs.map +0 -1
- package/dist/chunk-PFPGASVZ.cjs +0 -2
- package/dist/chunk-PFPGASVZ.cjs.map +0 -1
- package/dist/chunk-QCKCONCU.js +0 -2
- package/dist/chunk-QCKCONCU.js.map +0 -1
- package/dist/chunk-RSH6LQVC.cjs +0 -2
- package/dist/chunk-RSH6LQVC.cjs.map +0 -1
- package/dist/chunk-SYEUXL2E.js +0 -2
- package/dist/chunk-U5TBWV74.cjs +0 -2
- package/dist/chunk-U5TBWV74.cjs.map +0 -1
- package/dist/chunk-UT63HKR6.cjs +0 -2
- package/dist/chunk-UT63HKR6.cjs.map +0 -1
- package/dist/chunk-WRNR6SXK.cjs +0 -2
- package/dist/chunk-WRNR6SXK.cjs.map +0 -1
- package/dist/chunk-YO4TZ6N6.js +0 -2
- package/dist/chunk-YO4TZ6N6.js.map +0 -1
- /package/dist/{chunk-HE6EQZTH.js.map → chunk-X3OFU2UH.js.map} +0 -0
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitFrameworkStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n) {\n provide(BIT_STORE_KEY, createFrameworkStoreAdapter<T>(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitFrameworkStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = observeFormMetaSnapshot(store, (nextMeta) => {\n state.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const { controller, actions } = createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\n\n const state = shallowRef(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const metaState = computed(() => deriveFieldMeta(state.value));\n const error = computed(() => metaState.value.error);\n const touched = computed(() => metaState.value.touched);\n const invalid = computed(() => metaState.value.invalid);\n const isValidating = computed(() => metaState.value.isValidating);\n const isDirty = computed(() => metaState.value.isDirty);\n const isHidden = computed(() => metaState.value.isHidden);\n const isRequired = computed(() => metaState.value.isRequired);\n const hasError = computed(() => metaState.value.hasError);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.feature.undo();\n const redo = () => store.feature.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onMounted, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scope.value));\n let unsubscribe: (() => void) | undefined;\n\n watch(scope, (newScope) => {\n status.value = store.read.getScopeStatus(newScope);\n unsubscribe?.();\n unsubscribe = store.observe.subscribeScopeStatus(newScope, updateStatus);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.read.getScopeStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.observe.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(\n () => !!field.meta.isValidating.value || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { observePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.feature.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.feature.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.feature.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","createFrameworkStoreAdapter","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","fieldController","createFrameworkMaskedFieldBinding","state","shallowRef","unsubscribe","nextState","onUnmounted","cleanupRegisteredField","rawValue","computed","displayValue","modelValue","val","metaState","deriveFieldMeta","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onMounted","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onMounted","onUnmounted","ref","watch","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","valueEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","kernelCallbacks","val","path","msg","key","e","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","computed"]}
|
|
1
|
+
{"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, onUnmounted, provide, InjectionKey } from \"vue\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nexport const BIT_STORE_KEY: InjectionKey<BitFrameworkStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n) {\n const adapted = createFrameworkStoreAdapter<T>(store);\n provide(BIT_STORE_KEY, adapted);\n\n onUnmounted(() => {\n (adapted as any).feature?.cleanup?.();\n });\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitFrameworkStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref, reactive } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = observeFormMetaSnapshot(store, (nextMeta) => {\n state.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const { controller, actions } = createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = reactive({\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n });\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef, reactive } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\n\n const state = shallowRef(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n });\n\n const metaState = computed(() => deriveFieldMeta(state.value));\n const error = computed(() => metaState.value.error);\n const touched = computed(() => metaState.value.touched);\n const invalid = computed(() => metaState.value.invalid);\n const isValidating = computed(() => metaState.value.isValidating);\n const isDirty = computed(() => metaState.value.isDirty);\n const isHidden = computed(() => metaState.value.isHidden);\n const isRequired = computed(() => metaState.value.isRequired);\n const hasError = computed(() => metaState.value.hasError);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: reactive({\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n }),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.feature.undo();\n const redo = () => store.feature.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n\n const unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n\n onUnmounted(() => {\n unsubscribe();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n if (scopeNames.length === 0) {\n throw new Error(\"useBitSteps: scopeNames must not be empty\");\n }\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scope.value));\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.read.getScopeStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n let unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n\n const rebindScopeSubscription = () => {\n unsubscribe();\n unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n };\n\n onUnmounted(() => {\n unsubscribe();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.observe.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n const sharedGen = { current: 0 };\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks, sharedGen);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks, sharedGen);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error),\n isValidating: computed(\n () => !!field.meta.isValidating || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref, reactive } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { observePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.feature.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.feature.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.feature.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: reactive({\n isSaving: computed(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n }),\n };\n}\n"],"mappings":"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","names":["inject","onUnmounted","provide","BIT_STORE_KEY","provideBitStore","store","adapted","createFrameworkStoreAdapter","provide","onUnmounted","useBitStore","inject","computed","onUnmounted","shallowRef","ref","reactive","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","reactive","computed","onUnmounted","shallowRef","reactive","useBitField","path","store","useBitStore","fieldController","createFrameworkMaskedFieldBinding","state","shallowRef","unsubscribe","nextState","onUnmounted","cleanupRegisteredField","rawValue","computed","displayValue","modelValue","val","metaState","deriveFieldMeta","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","reactive","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onUnmounted","ref","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","updateStatus","scopeName","newStatus","isScopeStatusEqual","unsubscribe","rebindScopeSubscription","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","valueEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","sharedGen","kernelCallbacks","val","path","msg","key","e","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","reactive","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","reactive","computed"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lehnihon/bit-form",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
4
4
|
"description": "Gerenciamento de estado de formulários agnóstico e performático",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://
|
|
11
|
+
"url": "https://gitlab.com/kenji.ccp-group/bit-form.git"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://
|
|
13
|
+
"homepage": "https://gitlab.com/kenji.ccp-group/bit-form#readme",
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://
|
|
15
|
+
"url": "https://gitlab.com/kenji.ccp-group/bit-form/-/issues"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [
|
|
18
18
|
"form",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"require": "./dist/index.cjs"
|
|
42
42
|
},
|
|
43
43
|
"./core": {
|
|
44
|
-
"types": "./dist/core
|
|
45
|
-
"import": "./dist/core
|
|
46
|
-
"require": "./dist/core
|
|
44
|
+
"types": "./dist/core.d.ts",
|
|
45
|
+
"import": "./dist/core.js",
|
|
46
|
+
"require": "./dist/core.cjs"
|
|
47
47
|
},
|
|
48
48
|
"./core/store": {
|
|
49
49
|
"types": "./dist/core/store.d.ts",
|
|
@@ -95,11 +95,6 @@
|
|
|
95
95
|
"import": "./dist/mask.js",
|
|
96
96
|
"require": "./dist/mask.cjs"
|
|
97
97
|
},
|
|
98
|
-
"./resolvers/*": {
|
|
99
|
-
"types": "./dist/resolvers/*.d.ts",
|
|
100
|
-
"import": "./dist/resolvers/*.js",
|
|
101
|
-
"require": "./dist/resolvers/*.cjs"
|
|
102
|
-
},
|
|
103
98
|
"./resolvers": {
|
|
104
99
|
"types": "./dist/resolvers/index.d.ts",
|
|
105
100
|
"import": "./dist/resolvers/index.js",
|
|
@@ -121,6 +116,64 @@
|
|
|
121
116
|
"require": "./dist/devtools/protocol.cjs"
|
|
122
117
|
}
|
|
123
118
|
},
|
|
119
|
+
"typesVersions": {
|
|
120
|
+
"*": {
|
|
121
|
+
"core": [
|
|
122
|
+
"./dist/core.d.ts"
|
|
123
|
+
],
|
|
124
|
+
"core/store": [
|
|
125
|
+
"./dist/core/store.d.ts"
|
|
126
|
+
],
|
|
127
|
+
"core/bindings": [
|
|
128
|
+
"./dist/core/bindings.d.ts"
|
|
129
|
+
],
|
|
130
|
+
"core/status": [
|
|
131
|
+
"./dist/core/status.d.ts"
|
|
132
|
+
],
|
|
133
|
+
"core/utils": [
|
|
134
|
+
"./dist/core/utils.d.ts"
|
|
135
|
+
],
|
|
136
|
+
"utils": [
|
|
137
|
+
"./dist/utils.d.ts"
|
|
138
|
+
],
|
|
139
|
+
"react": [
|
|
140
|
+
"./dist/react/index.d.ts"
|
|
141
|
+
],
|
|
142
|
+
"react-native": [
|
|
143
|
+
"./dist/react-native/index.d.ts"
|
|
144
|
+
],
|
|
145
|
+
"vue": [
|
|
146
|
+
"./dist/vue/index.d.ts"
|
|
147
|
+
],
|
|
148
|
+
"angular": [
|
|
149
|
+
"./dist/angular/index.d.ts"
|
|
150
|
+
],
|
|
151
|
+
"mask": [
|
|
152
|
+
"./dist/mask.d.ts"
|
|
153
|
+
],
|
|
154
|
+
"resolvers": [
|
|
155
|
+
"./dist/resolvers/index.d.ts"
|
|
156
|
+
],
|
|
157
|
+
"resolvers/zod": [
|
|
158
|
+
"./dist/resolvers/zod.d.ts"
|
|
159
|
+
],
|
|
160
|
+
"resolvers/yup": [
|
|
161
|
+
"./dist/resolvers/yup.d.ts"
|
|
162
|
+
],
|
|
163
|
+
"resolvers/joi": [
|
|
164
|
+
"./dist/resolvers/joi.d.ts"
|
|
165
|
+
],
|
|
166
|
+
"devtools": [
|
|
167
|
+
"./dist/devtools/index.d.ts"
|
|
168
|
+
],
|
|
169
|
+
"devtools/bridge": [
|
|
170
|
+
"./dist/devtools/bridge.d.ts"
|
|
171
|
+
],
|
|
172
|
+
"devtools/protocol": [
|
|
173
|
+
"./dist/devtools/protocol.d.ts"
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
},
|
|
124
177
|
"files": [
|
|
125
178
|
"dist",
|
|
126
179
|
"README.md",
|
|
@@ -142,21 +195,22 @@
|
|
|
142
195
|
"test:bench:memory": "vitest run -c quality/vitest.quality.config.ts quality/bench/memory.bench.ts",
|
|
143
196
|
"test:bench:compare": "vitest run -c quality/vitest.quality.config.ts quality/bench/rhf-compare.test.ts --maxWorkers=1 --minWorkers=1",
|
|
144
197
|
"test:bench:all": "npm run test:bench && npm run test:bench:memory && npm run test:bench:compare",
|
|
145
|
-
"test:quality:critical": "npm run test:
|
|
198
|
+
"test:quality:critical": "npm run test:release-gates",
|
|
146
199
|
"test:compat": "node quality/compat/run-compat.mjs",
|
|
147
200
|
"test:observability": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/observability.test.ts",
|
|
148
201
|
"test:bundle-size": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size.test.ts",
|
|
149
|
-
"test:release-gates": "npm run build && npm run test:
|
|
202
|
+
"test:release-gates": "npm run build && npm run test:bundle-size && vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size-gate.test.ts && npm run test:observability",
|
|
150
203
|
"clean": "rm -rf dist && rm -f *.tsbuildinfo",
|
|
151
204
|
"lint": "npm run lint:eslint && npm run lint:types",
|
|
152
205
|
"lint:eslint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
153
206
|
"lint:eslint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
|
|
154
207
|
"lint:types": "npm run clean && tsc --build && tsc -p tsconfig.test.json",
|
|
155
208
|
"lint:imports": "npm run lint:eslint:fix",
|
|
156
|
-
"prepublishOnly": "npm run build
|
|
209
|
+
"prepublishOnly": "npm run build",
|
|
157
210
|
"release": "npm publish",
|
|
158
211
|
"dry-run": "npm publish --dry-run",
|
|
159
|
-
"bundle-ctx": "repomix"
|
|
212
|
+
"bundle-ctx": "repomix",
|
|
213
|
+
"setup-hooks": "sh scripts/setup-hooks.sh"
|
|
160
214
|
},
|
|
161
215
|
"peerDependencies": {
|
|
162
216
|
"@angular/core": ">=16.0.0",
|
package/dist/chunk-3774TIGK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function n(t,a){try{t()}catch(e){a?.(e)}}function u(t,a,e){let o=0,r=e.onCallbackError;return async d=>{if(!d)return;let i=++o;n(()=>e.setLoading(!0),r),n(()=>e.setError(t,void 0),r);try{let l=await a(d);if(i!==o)return;n(()=>e.setValue(l.url),r),n(()=>e.setUploadKey(l.key),r),n(()=>e.setError(t,void 0),r)}catch(l){if(i!==o)return;let s=l instanceof Error?l.message:"Upload failed";n(()=>e.setError(t,s),r)}finally{i===o&&n(()=>e.setLoading(!1),r)}}}function p(t,a,e){let o=e.onCallbackError;return async()=>{let r=e.getUploadKey();if(r&&a){try{await a(r)}catch(d){let i=d instanceof Error?d.message:"Delete failed";n(()=>e.setError(t,i),o);return}if(e.getUploadKey()!==r)return}n(()=>e.setValue(null),o),n(()=>e.setUploadKey(null),o),n(()=>e.setError(t,void 0),o)}}export{u as a,p as b};
|
|
2
|
-
//# sourceMappingURL=chunk-3774TIGK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/adapters/upload-kernel.ts"],"sourcesContent":["/**\n * Framework-agnostic upload kernel.\n *\n * Encapsulates the side-effect logic for uploading/removing files so that\n * React, Vue, and Angular adapters share a single implementation and only\n * differ in how they wire reactive state.\n */\n\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../types/upload\";\n\nexport interface UploadKernelCallbacks {\n /** Called with `true` when upload starts and `false` when it finishes. */\n setLoading: (loading: boolean) => void;\n /** Set or clear a field-level error message. */\n setError: (path: string, message: string | undefined) => void;\n /** Set the stored file URL after a successful upload (or `null` on remove). */\n setValue: (value: string | null) => void;\n /** Return the key of the last uploaded file (used when deleting). */\n getUploadKey: () => string | null;\n /** Persist the upload key returned by the upload function. */\n setUploadKey: (key: string | null) => void;\n /**\n * Called when a state-update callback (setValue, setLoading, etc.) throws.\n * Defaults to a no-op if not provided, but callers should route this to the\n * store's `onUnhandledError` to surface issues in observability tools.\n */\n onCallbackError?: (error: unknown) => void;\n}\n\n/**\n * Creates a type-safe `upload` handler for a field.\n *\n * @example\n * ```ts\n * const upload = createUploadHandler(\"avatar\", myUploadFn, {\n * setLoading: (v) => (isUploading.value = v),\n * setError: (p, m) => store.setError(p, m),\n * setValue: (v) => field.setValue(v),\n * getUploadKey: () => uploadKey,\n * setUploadKey: (k) => (uploadKey = k),\n * onCallbackError: (e) => store.config.onUnhandledError(e, \"upload\"),\n * });\n * ```\n */\nfunction safeCallbackExecution(fn: () => void, onError?: (e: unknown) => void): void {\n try {\n fn();\n } catch (error) {\n // Route to the provided handler so observability tools can capture it.\n // Swallowing is intentional only when no handler is given — callers should\n // always provide onCallbackError in production to avoid silent data loss.\n onError?.(error);\n }\n}\n\nexport function createUploadHandler<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n callbacks: UploadKernelCallbacks,\n): (file: File | null | undefined) => Promise<void> {\n let currentGeneration = 0;\n const onError = callbacks.onCallbackError;\n\n return async (file) => {\n if (!file) return;\n\n const myGeneration = ++currentGeneration;\n safeCallbackExecution(() => callbacks.setLoading(true), onError);\n safeCallbackExecution(() => callbacks.setError(fieldPath, undefined), onError);\n\n try {\n const result = await uploadFn(file);\n\n if (myGeneration !== currentGeneration) return;\n safeCallbackExecution(() => callbacks.setValue(result.url), onError);\n safeCallbackExecution(() => callbacks.setUploadKey(result.key), onError);\n safeCallbackExecution(() => callbacks.setError(fieldPath, undefined), onError);\n } catch (error) {\n if (myGeneration !== currentGeneration) return;\n const message = error instanceof Error ? error.message : \"Upload failed\";\n safeCallbackExecution(() => callbacks.setError(fieldPath, message), onError);\n } finally {\n if (myGeneration === currentGeneration) {\n safeCallbackExecution(() => callbacks.setLoading(false), onError);\n }\n }\n };\n}\n\n/**\n * Creates a type-safe `remove` handler for a field.\n */\nexport function createRemoveHandler(\n fieldPath: string,\n deleteFile: BitDeleteUploadFn | undefined,\n callbacks: UploadKernelCallbacks,\n): () => Promise<void> {\n const onError = callbacks.onCallbackError;\n\n return async () => {\n const uploadKey = callbacks.getUploadKey();\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n // Use safeCallbackExecution to mirror createUploadHandler: if the adapter\n // throws inside setError (e.g. component already unmounted), the error is\n // routed to onCallbackError instead of escaping the promise unhandled.\n safeCallbackExecution(() => callbacks.setError(fieldPath, message), onError);\n return;\n }\n\n if (callbacks.getUploadKey() !== uploadKey) {\n return;\n }\n }\n\n safeCallbackExecution(() => callbacks.setValue(null), onError);\n safeCallbackExecution(() => callbacks.setUploadKey(null), onError);\n safeCallbackExecution(() => callbacks.setError(fieldPath, undefined), onError);\n };\n}\n"],"mappings":"AA4CA,SAASA,EAAsBC,EAAgBC,EAAsC,CACnF,GAAI,CACFD,EAAG,CACL,OAASE,EAAO,CAIdD,IAAUC,CAAK,CACjB,CACF,CAEO,SAASC,EAGdC,EACAC,EACAC,EACkD,CAClD,IAAIC,EAAoB,EAClBN,EAAUK,EAAU,gBAE1B,MAAO,OAAOE,GAAS,CACrB,GAAI,CAACA,EAAM,OAEX,IAAMC,EAAe,EAAEF,EACvBR,EAAsB,IAAMO,EAAU,WAAW,EAAI,EAAGL,CAAO,EAC/DF,EAAsB,IAAMO,EAAU,SAASF,EAAW,MAAS,EAAGH,CAAO,EAE7E,GAAI,CACF,IAAMS,EAAS,MAAML,EAASG,CAAI,EAElC,GAAIC,IAAiBF,EAAmB,OACxCR,EAAsB,IAAMO,EAAU,SAASI,EAAO,GAAG,EAAGT,CAAO,EACnEF,EAAsB,IAAMO,EAAU,aAAaI,EAAO,GAAG,EAAGT,CAAO,EACvEF,EAAsB,IAAMO,EAAU,SAASF,EAAW,MAAS,EAAGH,CAAO,CAC/E,OAASC,EAAO,CACd,GAAIO,IAAiBF,EAAmB,OACxC,IAAMI,EAAUT,aAAiB,MAAQA,EAAM,QAAU,gBACzDH,EAAsB,IAAMO,EAAU,SAASF,EAAWO,CAAO,EAAGV,CAAO,CAC7E,QAAE,CACIQ,IAAiBF,GACnBR,EAAsB,IAAMO,EAAU,WAAW,EAAK,EAAGL,CAAO,CAEpE,CACF,CACF,CAKO,SAASW,EACdR,EACAS,EACAP,EACqB,CACrB,IAAML,EAAUK,EAAU,gBAE1B,MAAO,UAAY,CACjB,IAAMQ,EAAYR,EAAU,aAAa,EAEzC,GAAIQ,GAAaD,EAAY,CAC3B,GAAI,CACF,MAAMA,EAAWC,CAAS,CAC5B,OAASZ,EAAO,CACd,IAAMS,EACJT,aAAiB,MAAQA,EAAM,QAAU,gBAI3CH,EAAsB,IAAMO,EAAU,SAASF,EAAWO,CAAO,EAAGV,CAAO,EAC3E,MACF,CAEA,GAAIK,EAAU,aAAa,IAAMQ,EAC/B,MAEJ,CAEAf,EAAsB,IAAMO,EAAU,SAAS,IAAI,EAAGL,CAAO,EAC7DF,EAAsB,IAAMO,EAAU,aAAa,IAAI,EAAGL,CAAO,EACjEF,EAAsB,IAAMO,EAAU,SAASF,EAAW,MAAS,EAAGH,CAAO,CAC/E,CACF","names":["safeCallbackExecution","fn","onError","error","createUploadHandler","fieldPath","uploadFn","callbacks","currentGeneration","file","myGeneration","result","message","createRemoveHandler","deleteFile","uploadKey"]}
|
package/dist/chunk-3KI3GEU3.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});function o(e){let i=e.touched?e.error:void 0,r=!!e.error;return{error:i,touched:e.touched,invalid:!!(e.touched&&e.error),isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:r}}exports.a = o;
|
|
2
|
-
//# sourceMappingURL=chunk-3KI3GEU3.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils/field-meta.ts"],"names":["deriveFieldMeta","state","error","hasError"],"mappings":"AAaO,kFAASA,CAAAA,CACdC,CAAAA,CACqB,CACrB,IAAMC,CAAAA,CAAQD,CAAAA,CAAM,OAAA,CAAUA,CAAAA,CAAM,KAAA,CAAQ,KAAA,CAAA,CACtCE,CAAAA,CAAW,CAAC,CAACF,CAAAA,CAAM,KAAA,CAEzB,MAAO,CACL,KAAA,CAAAC,CAAAA,CACA,OAAA,CAASD,CAAAA,CAAM,OAAA,CACf,OAAA,CAAS,CAAC,CAAA,CAAEA,CAAAA,CAAM,OAAA,EAAWA,CAAAA,CAAM,KAAA,CAAA,CACnC,YAAA,CAAcA,CAAAA,CAAM,YAAA,CACpB,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,UAAA,CAAYA,CAAAA,CAAM,UAAA,CAClB,QAAA,CAAAE,CACF,CACF,CAAA,cAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-3KI3GEU3.cjs","sourcesContent":["import type { BitFieldState } from \"../store/contracts/types\";\n\nexport interface BitDerivedFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport function deriveFieldMeta<T extends object, TValue>(\n state: Readonly<BitFieldState<T, TValue>>,\n): BitDerivedFieldMeta {\n const error = state.touched ? state.error : undefined;\n const hasError = !!state.error;\n\n return {\n error,\n touched: state.touched,\n invalid: !!(state.touched && state.error),\n isValidating: state.isValidating,\n isDirty: state.isDirty,\n isHidden: state.isHidden,\n isRequired: state.isRequired,\n hasError,\n };\n}\n"]}
|
package/dist/chunk-3NUJVIAM.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-77PK7U73.cjs","../src/resolvers/zod.ts"],"names":["zodResolver","schema","_config","values","options","error","errors","ZodError","issue","path","setFirstError","filterErrorsByScope"],"mappings":"AAAA,qoBAA+C,0BCAX,IAKvBA,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,CAAAA,EAEO,KAAA,CACLC,CAAAA,CACAC,CAAAA,CAAAA,EAC0B,CAC1B,GAAI,CACF,OAAA,MAAMH,CAAAA,CAAO,UAAA,CAAWE,CAAM,CAAA,CACvB,CAAC,CACV,CAAA,KAAA,CAASE,CAAAA,CAAgB,CACvB,IAAMC,CAAAA,CAAuB,CAAC,CAAA,CAE9B,EAAA,CAAID,EAAAA,WAAiBE,aAAAA,CACnB,GAAA,CAAA,IAAWC,EAAAA,GAASH,CAAAA,CAAM,MAAA,CAAQ,CAChC,IAAMI,CAAAA,CAAOD,CAAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,CAChCE,iCAAAA,CAAcJ,CAAQG,CAAAA,CAAMD,CAAAA,CAAM,OAAO,CAC3C,CAGF,OAAOG,iCAAAA,CAAoBL,iBAAQF,CAAAA,2BAAS,aAAW,CACzD,CACF,CAAA,CAAA,cAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-77PK7U73.cjs","sourcesContent":[null,"import { ZodError, ZodSchema } from \"zod\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError } from \"./utils\";\nimport { BitResolverScopeOptions, BitZodResolverConfig } from \"./types\";\n\nexport const zodResolver = <T extends object>(\n schema: ZodSchema<T>,\n _config?: BitZodResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n try {\n await schema.parseAsync(values);\n return {};\n } catch (error: unknown) {\n const errors: BitErrors<T> = {};\n\n if (error instanceof ZodError) {\n for (const issue of error.issues) {\n const path = issue.path.join(\".\");\n setFirstError(errors, path, issue.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n };\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-AVUK52JW.cjs","../src/core/bindings/form-meta.ts","../src/core/bindings/persist-meta.ts","../src/core/bindings/array-controller.ts"],"names":["readFormMetaSnapshot","store","state","subscribeFormMetaSnapshot","listener","observeFormMetaSnapshot","readPersistMetaSnapshot","subscribePersistMetaSnapshot","observePersistMetaSnapshot","meta","createArrayBinding","path","warnedTypeMismatch","normalizeItems","value","getIds","length","getDeepValue","items","ids","item","index"],"mappings":"AAAA,qoBAAwC,wDAAgD,SCGxEA,CAAAA,CACdC,CAAAA,CACa,CACb,IAAMC,CAAAA,CAAQD,CAAAA,CAAM,IAAA,CAAK,QAAA,CAAS,CAAA,CAClC,MAAO,CACL,OAAA,CAASC,CAAAA,CAAM,OAAA,CACf,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,YAAA,CAAcA,CAAAA,CAAM,YACtB,CACF,CAEO,SAASC,CAAAA,CACdF,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAOH,CAAAA,CAAM,OAAA,CAAQ,iBAAA,CAAkB,CAAA,CAAA,EAAMG,CAAAA,CAAS,CAAC,CACzD,CAEO,SAASC,CAAAA,CACdJ,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAAA,CAAAA,CAASJ,CAAAA,CAAqBC,CAAK,CAAC,CAAA,CAE7BE,CAAAA,CAA0BF,CAAAA,CAAO,CAAA,CAAA,EAAM,CAC5CG,CAAAA,CAASJ,CAAAA,CAAqBC,CAAK,CAAC,CACtC,CAAC,CACH,CCjBO,SAASK,CAAAA,CAAwBL,CAAAA,CAIjB,CACrB,OAAOA,CAAAA,CAAM,IAAA,CAAK,kBAAA,CAAmB,CACvC,CAEO,SAASM,CAAAA,CACdN,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAOH,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAqB,CAAA,CAAA,EAAMG,CAAAA,CAAS,CAAC,CAC5D,CAEO,SAASI,CAAAA,CACdP,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAAA,CAAAA,CAASE,CAAAA,CAAwBL,CAAK,CAAC,CAAA,CAEhCA,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAsBQ,CAAAA,EAAS,CAClDL,CAAAA,CAASK,CAAI,CACf,CAAC,CACH,CC1BO,SAASC,CAAAA,CAGdT,CAAAA,CAA2BU,CAAAA,CAAoC,CAG/D,IAAIC,CAAAA,CAAqB,CAAA,CAAA,CAEnBC,CAAAA,CAAkBC,CAAAA,EAClB,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACdA,CAAAA,CAGLA,CAAAA,EAAS,IAAA,CACJ,CAAC,CAAA,CAAA,CAAA,CAIR,CAAA,CAAA,OAAO,OAAA,CAAY,GAAA,CAAA,EACf,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,YAAA,CAAA,EAGlB,CAACF,CAAAA,EAAAA,CACZA,CAAAA,CAAqB,CAAA,CAAA,CACrB,OAAA,CAAQ,IAAA,CACN,CAAA,yDAAA,EAA4D,MAAA,CAC1DD,CACF,CAAC,CAAA,eAAA,EAAkB,OAAOG,CAAK,CAAA,2BAAA,CACjC,CAAA,CAAA,CAGK,CAAC,CAAA,CAAA,CAGJC,CAAAA,CAAUC,CAAAA,EACdf,CAAAA,CAAM,OAAA,CAAQ,eAAA,CAAgBU,CAAAA,CAAMK,CAAM,CAAA,CAE5C,MAAO,CACL,SAAA,CAAA,CAAY,CACV,IAAMF,CAAAA,CAAQG,iCAAAA,CACZhB,CAAM,IAAA,CAAK,QAAA,CAAS,CAAA,CAAE,MAAA,CACtBU,CACF,CAAA,CACA,OAAOE,CAAAA,CAAeC,CAAK,CAC7B,CAAA,CAEA,SAAA,CAAUI,CAAAA,CAAO,CACf,IAAMC,CAAAA,CAAMJ,CAAAA,CAAOG,CAAAA,CAAM,MAAM,CAAA,CAC/B,OAAOA,CAAAA,CAAM,GAAA,CAAI,CAACE,CAAAA,CAAMC,CAAAA,CAAAA,EAAAA,CAAW,CACjC,GAAA,CAAKF,CAAAA,CAAIE,CAAK,CAAA,EAAK,CAAA,KAAA,EAAQA,CAAK,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-AVUK52JW.cjs","sourcesContent":[null,"import type { BitFormMeta } from \"../store/contracts/public/meta-types\";\nimport type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\n\nexport function readFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n): BitFormMeta {\n const state = store.read.getState();\n return {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n}\n\nexport function subscribeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: () => void,\n): () => void {\n return store.observe.subscribeFormMeta(() => listener());\n}\n\nexport function observeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: (meta: BitFormMeta) => void,\n): () => void {\n listener(readFormMetaSnapshot(store));\n\n return subscribeFormMetaSnapshot(store, () => {\n listener(readFormMetaSnapshot(store));\n });\n}\n","import type { BitPersistMetadata } from \"../store/contracts/types\";\n\ntype BitPersistMetaReadableStore = {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n observe: {\n subscribePersistMeta(\n listener: (meta: BitPersistMetadata) => void,\n ): () => void;\n };\n};\n\nexport function readPersistMetaSnapshot(store: {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n}): BitPersistMetadata {\n return store.read.getPersistMetadata();\n}\n\nexport function subscribePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: () => void,\n): () => void {\n return store.observe.subscribePersistMeta(() => listener());\n}\n\nexport function observePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: (meta: BitPersistMetadata) => void,\n): () => void {\n listener(readPersistMetaSnapshot(store));\n\n return store.observe.subscribePersistMeta((meta) => {\n listener(meta);\n });\n}\n","import type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\nimport type {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n} from \"../store/contracts/types\";\nimport type { BitArrayBinding, BitArrayBindingField } from \"../types/bindings\";\nimport { getDeepValue } from \"../utils\";\n\nexport type { BitArrayBinding, BitArrayBindingField };\n\nexport function createArrayBinding<\n TForm extends object,\n P extends BitArrayPath<TForm>,\n>(store: BitStoreApi<TForm>, path: P): BitArrayBinding<TForm, P> {\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n let warnedTypeMismatch = false;\n\n const normalizeItems = (value: unknown): Item[] => {\n if (Array.isArray(value)) {\n return value as Item[];\n }\n\n if (value == null) {\n return [];\n }\n\n const isDev =\n typeof process !== \"undefined\"\n ? process.env.NODE_ENV !== \"production\"\n : true;\n\n if (isDev && !warnedTypeMismatch) {\n warnedTypeMismatch = true;\n console.warn(\n `[bit-form] createArrayBinding expected an array at path \"${String(\n path,\n )}\" but received ${typeof value}. Returning an empty array.`,\n );\n }\n\n return [];\n };\n\n const getIds = (length: number) =>\n store.feature.getArrayItemIds(path, length);\n\n return {\n readItems() {\n const value = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P> | undefined;\n return normalizeItems(value);\n },\n\n getFields(items) {\n const ids = getIds(items.length);\n return items.map((item, index) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n }));\n },\n\n append(value) {\n store.feature.pushItem(path, value);\n },\n\n prepend(value) {\n store.feature.prependItem(path, value);\n },\n\n insert(index, value) {\n store.feature.insertItem(path, index, value);\n },\n\n remove(index) {\n store.feature.removeItem(path, index);\n },\n\n move(from, to) {\n store.feature.moveItem(path, from, to);\n },\n\n swap(indexA, indexB) {\n store.feature.swapItems(path, indexA, indexB);\n },\n\n replace(items) {\n store.feature.replaceItems(path, items);\n },\n\n clear() {\n store.feature.clearItems(path);\n },\n };\n}\n"]}
|
package/dist/chunk-CTURHI75.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});function s(r){return r.replace(/\[(\d+)\]/g,".$1").replace(/^\.+/,"").replace(/\.{2,}/g,".")}function a(r,t){return r===t||r.startsWith(`${t}.`)||t.startsWith(`${r}.`)}function l(r,t,i){let e=s(t);!e||!i||r[e]||(r[e]=i)}function g(r,t){if(!t||t.length===0)return r;let i=t.map(n=>s(n)).filter(n=>n.length>0);if(i.length===0)return{};let e={};for(let[n,f]of Object.entries(r)){let c=s(n);if(f&&i.some(o=>a(c,o))){let o=n;e[o]=f}}return e}exports.a = s; exports.b = l; exports.c = g;
|
|
2
|
-
//# sourceMappingURL=chunk-CTURHI75.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolvers/utils.ts"],"names":["normalizeErrorPath","path","matchScopePath","errorPath","scopePath"],"mappings":"AAEO,kFAASA,CAAAA,CAAmBC,CAAAA,CAAsB,CACvD,OAAOA,CAAAA,CACJ,OAAA,CAAQ,YAAA,CAAc,KAAK,CAAA,CAC3B,OAAA,CAAQ,MAAA,CAAQ,EAAE,CAAA,CAClB,OAAA,CAAQ,SAAA,CAAW,GAAG,CAC3B,CAEA,SAASC,CAAAA,CAAeC,CAAAA,CAAmBC,CAAAA,CAA4B,CACrE,OACED,CAAAA,GAAcC,CAAAA,EACdD,CAAAA,CAAU,UAAA,CAAW,CAAA,EAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-CTURHI75.cjs","sourcesContent":["import { BitErrors } from \"../core\";\n\nexport function normalizeErrorPath(path: string): string {\n return path\n .replace(/\\[(\\d+)\\]/g, \".$1\")\n .replace(/^\\.+/, \"\")\n .replace(/\\.{2,}/g, \".\");\n}\n\nfunction matchScopePath(errorPath: string, scopePath: string): boolean {\n return (\n errorPath === scopePath ||\n errorPath.startsWith(`${scopePath}.`) ||\n scopePath.startsWith(`${errorPath}.`)\n );\n}\n\nexport function setFirstError<T extends object>(\n errors: BitErrors<T>,\n path: string,\n message: string | undefined,\n) {\n const normalizedPath = normalizeErrorPath(path);\n\n if (!normalizedPath || !message) {\n return;\n }\n\n if (!errors[normalizedPath as keyof BitErrors<T>]) {\n errors[normalizedPath as keyof BitErrors<T>] = message;\n }\n}\n\nexport function filterErrorsByScope<T extends object>(\n errors: BitErrors<T>,\n scopeFields?: string[],\n): BitErrors<T> {\n if (!scopeFields || scopeFields.length === 0) {\n return errors;\n }\n\n const normalizedScopeFields = scopeFields\n .map((scopeField) => normalizeErrorPath(scopeField))\n .filter((scopeField) => scopeField.length > 0);\n\n if (normalizedScopeFields.length === 0) {\n return {};\n }\n\n const filtered: BitErrors<T> = {};\n\n for (const [key, message] of Object.entries(errors)) {\n const normalizedKey = normalizeErrorPath(key);\n if (\n message &&\n normalizedScopeFields.some((scopeField) =>\n matchScopePath(normalizedKey, scopeField),\n )\n ) {\n const typedKey = key as keyof BitErrors<T>;\n filtered[typedKey] = message as BitErrors<T>[typeof typedKey];\n }\n }\n\n return filtered;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-DD6XWUMR.cjs","../src/resolvers/joi.ts"],"names":["joiResolver","schema","config","values","options","error","errors","detail","path","setFirstError","filterErrorsByScope"],"mappings":"AAAA,yuBAA+C,ICKlCA,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,CAAAA,EAEO,KAAA,CACLC,CAAAA,CACAC,CAAAA,CAAAA,EAC0B,CAC1B,GAAM,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAIJ,CAAAA,CAAO,QAAA,CAASE,CAAAA,CAAQ,CACxC,UAAA,kCAAYD,CAAAA,2BAAQ,YAAA,SAAc,CAAA,GAAA,CAClC,YAAA,kCAAcA,CAAAA,6BAAQ,cAAA,SAAgB,CAAA,GAAA,CACtC,YAAA,kCAAcA,CAAAA,6BAAQ,cAAA,SAAgB,CAAA,GACxC,CAAC,CAAA,CAED,EAAA,CAAI,CAACG,CAAAA,CAAO,MAAO,CAAC,CAAA,CAEpB,IAAMC,CAAAA,CAAuB,CAAC,CAAA,CAE9B,OAAAD,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAASE,CAAAA,EAAW,CAChC,IAAMC,CAAAA,CAAOD,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,CAEjCE,iCAAAA,CAAcH,CAAQE,CAAAA,CAAMD,CAAAA,CAAO,OAAO,CAC5C,CAAC,CAAA,CAEMG,iCAAAA,CAAoBJ,iBAAQF,CAAAA,6BAAS,aAAW,CACzD,CAAA,CAAA,cAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-DD6XWUMR.cjs","sourcesContent":[null,"import { ObjectSchema } from \"joi\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError } from \"./utils\";\nimport { BitJoiResolverConfig, BitResolverScopeOptions } from \"./types\";\n\nexport const joiResolver = <T extends object>(\n schema: ObjectSchema<T>,\n config?: BitJoiResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const { error } = schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n allowUnknown: config?.allowUnknown ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n\n if (!error) return {};\n\n const errors: BitErrors<T> = {};\n\n error.details.forEach((detail) => {\n const path = detail.path.join(\".\");\n\n setFirstError(errors, path, detail.message);\n });\n\n return filterErrorsByScope(errors, options?.scopeFields);\n };\n};\n"]}
|
package/dist/chunk-FGJB4DHQ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as s,c as i}from"./chunk-GUU6EXFN.js";var m=(n,r)=>async(a,l)=>{let{error:o}=n.validate(a,{abortEarly:r?.abortEarly??!1,allowUnknown:r?.allowUnknown??!1,stripUnknown:r?.stripUnknown??!1});if(!o)return{};let e={};return o.details.forEach(t=>{let p=t.path.join(".");s(e,p,t.message)}),i(e,l?.scopeFields)};export{m as a};
|
|
2
|
-
//# sourceMappingURL=chunk-FGJB4DHQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolvers/joi.ts"],"sourcesContent":["import { ObjectSchema } from \"joi\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError } from \"./utils\";\nimport { BitJoiResolverConfig, BitResolverScopeOptions } from \"./types\";\n\nexport const joiResolver = <T extends object>(\n schema: ObjectSchema<T>,\n config?: BitJoiResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const { error } = schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n allowUnknown: config?.allowUnknown ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n\n if (!error) return {};\n\n const errors: BitErrors<T> = {};\n\n error.details.forEach((detail) => {\n const path = detail.path.join(\".\");\n\n setFirstError(errors, path, detail.message);\n });\n\n return filterErrorsByScope(errors, options?.scopeFields);\n };\n};\n"],"mappings":"+CAKO,IAAMA,EAAc,CACzBC,EACAC,IAEO,MACLC,EACAC,IAC0B,CAC1B,GAAM,CAAE,MAAAC,CAAM,EAAIJ,EAAO,SAASE,EAAQ,CACxC,WAAYD,GAAQ,YAAc,GAClC,aAAcA,GAAQ,cAAgB,GACtC,aAAcA,GAAQ,cAAgB,EACxC,CAAC,EAED,GAAI,CAACG,EAAO,MAAO,CAAC,EAEpB,IAAMC,EAAuB,CAAC,EAE9B,OAAAD,EAAM,QAAQ,QAASE,GAAW,CAChC,IAAMC,EAAOD,EAAO,KAAK,KAAK,GAAG,EAEjCE,EAAcH,EAAQE,EAAMD,EAAO,OAAO,CAC5C,CAAC,EAEMG,EAAoBJ,EAAQF,GAAS,WAAW,CACzD","names":["joiResolver","schema","config","values","options","error","errors","detail","path","setFirstError","filterErrorsByScope"]}
|
package/dist/chunk-FTXV2NZO.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function l(e,n=new WeakMap){if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch (e2){}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(n.has(e))return n.get(e);if(e instanceof Map){let t=new Map;return n.set(e,t),e.forEach((o,r)=>{t.set(l(r,n),l(o,n))}),t}if(e instanceof Set){let t=new Set;return n.set(e,t),e.forEach(o=>{t.add(l(o,n))}),t}if(Array.isArray(e)){let t=[];n.set(e,t);for(let o of e)t.push(l(o,n));return t}let s=Object.getPrototypeOf(e);if(!(s===Object.prototype||s===null)){let t=Object.create(s);n.set(e,t);for(let o of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,o);r&&("value"in r&&(r.value=l(r.value,n)),Object.defineProperty(t,o,r))}return t}let c={};n.set(e,c);for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(c[t]=l(e[t],n));return c}function k(e){return l(e)}function R(e,n,s=new WeakMap){if(n===void 0)return k(e);if(n===null||typeof n!="object"||n instanceof Date||n instanceof RegExp||Array.isArray(n))return k(n);let a=n;if(s.has(a))return s.get(a);let c=e&&typeof e=="object"&&!Array.isArray(e)?k(e):{};s.set(a,c);try{for(let t of Object.keys(n)){let o=n[t],r=c[t];if(o!==null&&typeof o=="object"&&!Array.isArray(o)&&!(o instanceof Date)&&!(o instanceof RegExp)){c[t]=R(r,o,s);continue}c[t]=k(o)}}finally{s.delete(a)}return c}function m(e,n){return e===n?!0:e===null||typeof e!="object"||n===null||typeof n!="object"?!1:b(e,n)}function b(e,n){return T(e,n,new WeakMap)}function T(e,n,s){if(e===n)return!0;if(e===null||typeof e!="object"||n===null||typeof n!="object")return!1;let a=s.get(e);if(_optionalChain([a, 'optionalAccess', _ => _.has, 'call', _2 => _2(n)]))return!0;if(a?a.add(n):s.set(e,new WeakSet([n])),Array.isArray(e)!==Array.isArray(n))return!1;if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();let c=Object.keys(e),t=Object.keys(n);if(c.length!==t.length)return!1;for(let o of c)if(!Object.prototype.hasOwnProperty.call(n,o)||!T(e[o],n[o],s))return!1;return!0}function O(e,n,s="",a=new Set,c=new Map){if(m(e,n))return a;if(e===null||typeof e!="object"||n===null||typeof n!="object")return s&&a.add(s),a;let t=c.get(e);if(_optionalChain([t, 'optionalAccess', _3 => _3.has, 'call', _4 => _4(n)]))return a;t?t.add(n):c.set(e,new Set([n]));try{if(Array.isArray(e)||Array.isArray(n))return!m(e,n)&&s&&a.add(s),a;let o=new Set;for(let r of Object.keys(e||{}))o.add(r);for(let r of Object.keys(n||{}))o.add(r);for(let r of o){let i=s?`${s}.${r}`:r;O(_optionalChain([e, 'optionalAccess', _5 => _5[r]]),_optionalChain([n, 'optionalAccess', _6 => _6[r]]),i,a,c)}return a}finally{let o=c.get(e);_optionalChain([o, 'optionalAccess', _7 => _7.delete, 'call', _8 => _8(n)]),o&&o.size===0&&c.delete(e)}}var d=new Map,E=new Set(["__proto__"]);function S(e,n){if(d.has(e))d.delete(e);else if(d.size>=5e3){let s=d.keys().next().value;s!==void 0&&d.delete(s)}d.set(e,n)}function p(e){let n=d.get(e);if(n)return n;let s=e.split(".");return S(e,s),s}function A(e){for(let n=0;n<e.length;n++){let s=e[n];if(E.has(s)||s==="constructor"&&e[n+1]==="prototype")return!0}return!1}function K(e,n){if(!n)return e;let s=p(n);if(A(s))return;let a=e;for(let c of s){if(a==null)return;a=a[c]}return a}function D(e,n,s){if(!n)return s;let a=p(n);if(A(a))return e;let c=Array.isArray(e)?[...e]:{...e},t=c;for(let o=0;o<a.length-1;o++){let r=a[o],i=a[o+1],f=Number(i),y=Number.isInteger(f)&&String(f)===i,u=t[r];u==null?t[r]=y?[]:{}:t[r]=Array.isArray(u)?[...u]:{...u},t=t[r]}return t[a[a.length-1]]=s,c}function N(e,n){if(n.length===0)return e;let s=n.filter(([t])=>{let o=p(t);return!A(o)});if(s.length===0)return e;let a=Array.isArray(e)?[...e]:{...e},c=new WeakSet;a&&typeof a=="object"&&c.add(a);for(let[t,o]of s){let r=p(t),i=a;for(let f=0;f<r.length-1;f++){let y=r[f],u=r[f+1],w=Number(u),x=Number.isInteger(w)&&String(w)===u,g=i[y];g==null?(i[y]=x?[]:{},c.add(i[y])):typeof g=="object"?c.has(g)||(i[y]=Array.isArray(g)?[...g]:{...g},c.add(i[y])):(i[y]=x?[]:{},c.add(i[y])),i=i[y]}i[r[r.length-1]]=o}return a}function P(e,n){if(n.length===0)return e;let s=n.filter(t=>{if(!t)return!0;let o=p(t);return!A(o)});if(s.length===0)return e;let a=Array.isArray(e)?[...e]:{...e},c=new WeakSet;a&&typeof a=="object"&&c.add(a);for(let t of s){if(!t)return Array.isArray(e)?[]:{};let o=p(t),r=a;for(let f=0;f<o.length-1;f++){let y=o[f],u=_optionalChain([r, 'optionalAccess', _9 => _9[y]]);if(u==null){r=void 0;break}if(typeof u=="object")c.has(u)||(r[y]=Array.isArray(u)?[...u]:{...u},c.add(r[y]));else{r=void 0;break}r=r[y]}if(!r)continue;let i=o[o.length-1];if(Array.isArray(r)){let f=Number(i);Number.isInteger(f)&&f>=0&&r.splice(f,1)}else r&&typeof r=="object"&&delete r[i]}return a}function $(e,n){let s={},a=`${n}.`;for(let c in e)c!==n&&!c.startsWith(a)&&(s[c]=e[c]);return s}function j(e,n,s){let a={},c={},t={},o=`${n}.`;for(let r of Object.keys(e.errors)){let i=h(r,o,s);i&&(a[i]=e.errors[r])}for(let r of Object.keys(e.touched)){let i=h(r,o,s);i&&(c[i]=e.touched[r])}for(let r of Object.keys(e.isValidating)){let i=h(r,o,s);i&&(t[i]=e.isValidating[r])}return{errors:a,touched:c,isValidating:t}}function h(e,n,s){if(!e.startsWith(n))return e;let c=e.substring(n.length).split("."),t=Number(c[0]);if(!Number.isInteger(t)||t<0)return e;let o=s(t);if(o===null)return null;let r=c.slice(1).join(".");return r?`${n}${o}.${r}`:`${n}${o}`}function V(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let n=_nullishCoalesce(e.errors, () => (e));if(typeof n!="object"||n===null||Array.isArray(n))return!1;let s=Object.entries(n);return s.length===0?!1:s.every(([a,c])=>a.length>0&&(typeof c=="string"||Array.isArray(c)&&c.every(t=>typeof t=="string")))}function M(e){return V(e)?_nullishCoalesce(e.errors, () => (e)):{}}exports.a = k; exports.b = R; exports.c = m; exports.d = b; exports.e = O; exports.f = K; exports.g = D; exports.h = N; exports.i = P; exports.j = $; exports.k = j; exports.l = h; exports.m = V; exports.n = M;
|
|
2
|
-
//# sourceMappingURL=chunk-FTXV2NZO.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils/clone.ts","../src/core/utils/structural.ts"],"names":["cloneValue","obj","visited","clone","value","key","item","prototype","descriptor","deepClone","deepMerge","target","source","activeMerges","sourceObject","base","sourceValue","baseValue","valueEqual","a","b","deepEqual","deepEqualInner","visitedPairs","visitedTargets","keysA","keysB","collectDirtyPaths","initial","prefix","result","activePairs","activeInitials","allKeys","k","p"],"mappings":"AAAO,0rBAASA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAoC,IAAI,OAAA,CACrC,CACH,EAAA,CAAID,CAAAA,GAAQ,IAAA,EAAQ,OAAOA,CAAAA,EAAQ,QAAA,CACjC,OAAOA,CAAAA,CAGT,EAAA,CAAI,OAAO,eAAA,EAAoB,UAAA,CAC7B,GAAI,CACF,OAAO,eAAA,CAAgBA,CAAG,CAC5B,CAAA,UAAQ,CAGR,CAGF,EAAA,CAAIA,EAAAA,WAAe,IAAA,CACjB,OAAO,IAAI,IAAA,CAAKA,CAAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,CAG/B,EAAA,CAAIA,EAAAA,WAAe,MAAA,CACjB,OAAO,IAAI,MAAA,CAAOA,CAAAA,CAAI,MAAA,CAAQA,CAAAA,CAAI,KAAK,CAAA,CAGzC,EAAA,CAAIC,CAAAA,CAAQ,GAAA,CAAID,CAAa,CAAA,CAC3B,OAAOC,CAAAA,CAAQ,GAAA,CAAID,CAAa,CAAA,CAGlC,EAAA,CAAIA,EAAAA,WAAe,GAAA,CAAK,CACtB,IAAME,CAAAA,CAAQ,IAAI,GAAA,CAClB,OAAAD,CAAAA,CAAQ,GAAA,CAAID,CAAAA,CAAeE,CAAK,CAAA,CAEhCF,CAAAA,CAAI,OAAA,CAAQ,CAACG,CAAAA,CAAOC,CAAAA,CAAAA,EAAQ,CAC1BF,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAWK,CAAAA,CAAKH,CAAO,CAAA,CAAGF,CAAAA,CAAWI,CAAAA,CAAOF,CAAO,CAAC,CAChE,CAAC,CAAA,CAEMC,CACT,CAEA,EAAA,CAAIF,EAAAA,WAAe,GAAA,CAAK,CACtB,IAAME,CAAAA,CAAQ,IAAI,GAAA,CAClB,OAAAD,CAAAA,CAAQ,GAAA,CAAID,CAAAA,CAAeE,CAAK,CAAA,CAEhCF,CAAAA,CAAI,OAAA,CAASG,CAAAA,EAAU,CACrBD,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAWI,CAAAA,CAAOF,CAAO,CAAC,CACtC,CAAC,CAAA,CAEMC,CACT,CAEA,EAAA,CAAI,KAAA,CAAM,OAAA,CAAQF,CAAG,CAAA,CAAG,CACtB,IAAME,CAAAA,CAAmB,CAAC,CAAA,CAC1BD,CAAAA,CAAQ,GAAA,CAAID,CAAAA,CAAeE,CAAK,CAAA,CAEhC,GAAA,CAAA,IAAWG,EAAAA,GAAQL,CAAAA,CACjBE,CAAAA,CAAM,IAAA,CAAKH,CAAAA,CAAWM,CAAAA,CAAMJ,CAAO,CAAC,CAAA,CAGtC,OAAOC,CACT,CAEA,IAAMI,CAAAA,CAAY,MAAA,CAAO,cAAA,CAAeN,CAAG,CAAA,CAG3C,EAAA,CAAI,CAAA,CAFkBM,CAAAA,GAAc,MAAA,CAAO,SAAA,EAAaA,CAAAA,GAAc,IAAA,CAAA,CAElD,CAClB,IAAMJ,CAAAA,CAAQ,MAAA,CAAO,MAAA,CAAOI,CAAS,CAAA,CACrCL,CAAAA,CAAQ,GAAA,CAAID,CAAAA,CAAeE,CAAK,CAAA,CAEhC,GAAA,CAAA,IAAWE,EAAAA,GAAO,OAAA,CAAQ,OAAA,CAAQJ,CAAa,CAAA,CAAG,CAChD,IAAMO,CAAAA,CAAa,MAAA,CAAO,wBAAA,CAAyBP,CAAAA,CAAeI,CAAG,CAAA,CAChEG,CAAAA,EAAAA,CAID,OAAA,GAAWA,CAAAA,EAAAA,CACbA,CAAAA,CAAW,KAAA,CAAQR,CAAAA,CAAWQ,CAAAA,CAAW,KAAA,CAAON,CAAO,CAAA,CAAA,CAGzD,MAAA,CAAO,cAAA,CAAeC,CAAAA,CAAOE,CAAAA,CAAKG,CAAU,CAAA,CAC9C,CAEA,OAAOL,CACT,CAEA,IAAMA,CAAAA,CAAa,CAAC,CAAA,CACpBD,CAAAA,CAAQ,GAAA,CAAID,CAAAA,CAAeE,CAAK,CAAA,CAEhC,GAAA,CAAA,IAAWE,EAAAA,GAAOJ,CAAAA,CACZ,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAKI,CAAG,CAAA,EAAA,CAC/CF,CAAAA,CAAME,CAAG,CAAA,CAAIL,CAAAA,CAAYC,CAAAA,CAAYI,CAAG,CAAA,CAAGH,CAAO,CAAA,CAAA,CAItD,OAAOC,CACT,CC7FO,SAASM,CAAAA,CAAaR,CAAAA,CAAW,CACtC,OAAOD,CAAAA,CAAWC,CAAG,CACvB,CAEO,SAASS,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAyC,IAAI,OAAA,CAC1C,CACH,EAAA,CAAID,CAAAA,GAAW,KAAA,CAAA,CACb,OAAOH,CAAAA,CAAUE,CAAM,CAAA,CAGzB,EAAA,CACEC,CAAAA,GAAW,IAAA,EACX,OAAOA,CAAAA,EAAW,QAAA,EAClBA,EAAAA,WAAkB,IAAA,EAClBA,EAAAA,WAAkB,MAAA,EAClB,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAEpB,OAAOH,CAAAA,CAAUG,CAAW,CAAA,CAG9B,IAAME,CAAAA,CAAeF,CAAAA,CACrB,EAAA,CAAIC,CAAAA,CAAa,GAAA,CAAIC,CAAY,CAAA,CAC/B,OAAOD,CAAAA,CAAa,GAAA,CAAIC,CAAY,CAAA,CAGtC,IAAMC,CAAAA,CACJJ,CAAAA,EAAU,OAAOA,CAAAA,EAAW,QAAA,EAAY,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CACzDF,CAAAA,CAAUE,CAAa,CAAA,CACtB,CAAC,CAAA,CAERE,CAAAA,CAAa,GAAA,CAAIC,CAAAA,CAAcC,CAAI,CAAA,CAEnC,GAAI,CACF,GAAA,CAAA,IAAWV,EAAAA,GAAO,MAAA,CAAO,IAAA,CAAKO,CAAM,CAAA,CAAG,CACrC,IAAMI,CAAAA,CAAcJ,CAAAA,CAAOP,CAAG,CAAA,CACxBY,CAAAA,CAAaF,CAAAA,CAAiCV,CAAG,CAAA,CAEvD,EAAA,CACEW,CAAAA,GAAgB,IAAA,EAChB,OAAOA,CAAAA,EAAgB,QAAA,EACvB,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAW,CAAA,EAC1B,CAAA,CAAEA,EAAAA,WAAuB,IAAA,CAAA,EACzB,CAAA,CAAEA,EAAAA,WAAuB,MAAA,CAAA,CACzB,CACCD,CAAAA,CAAiCV,CAAG,CAAA,CAAIK,CAAAA,CACvCO,CAAAA,CACAD,CAAAA,CACAH,CACF,CAAA,CACA,QACF,CAECE,CAAAA,CAAiCV,CAAG,CAAA,CAAII,CAAAA,CAAUO,CAAW,CAChE,CACF,CAAA,OAAE,CACAH,CAAAA,CAAa,MAAA,CAAOC,CAAY,CAClC,CAEA,OAAOC,CACT,CAEO,SAASG,CAAAA,CAAWC,CAAAA,CAAQC,CAAAA,CAAiB,CAClD,OAAID,CAAAA,GAAMC,CAAAA,CAAU,CAAA,CAAA,CAElBD,CAAAA,GAAM,IAAA,EACN,OAAOA,CAAAA,EAAM,QAAA,EACbC,CAAAA,GAAM,IAAA,EACN,OAAOA,CAAAA,EAAM,QAAA,CAEN,CAAA,CAAA,CAEFC,CAAAA,CAAUF,CAAAA,CAAGC,CAAC,CACvB,CAEO,SAASC,CAAAA,CAAUF,CAAAA,CAAQC,CAAAA,CAAiB,CACjD,OAAOE,CAAAA,CAAeH,CAAAA,CAAGC,CAAAA,CAAG,IAAI,OAAS,CAC3C,CAEA,SAASE,CAAAA,CACPH,CAAAA,CACAC,CAAAA,CACAG,CAAAA,CACS,CACT,EAAA,CAAIJ,CAAAA,GAAMC,CAAAA,CAAG,MAAO,CAAA,CAAA,CACpB,EAAA,CACED,CAAAA,GAAM,IAAA,EACN,OAAOA,CAAAA,EAAM,QAAA,EACbC,CAAAA,GAAM,IAAA,EACN,OAAOA,CAAAA,EAAM,QAAA,CAEb,MAAO,CAAA,CAAA,CAGT,IAAMI,CAAAA,CAAiBD,CAAAA,CAAa,GAAA,CAAIJ,CAAC,CAAA,CACzC,EAAA,iBAAIK,CAAAA,2BAAgB,GAAA,mBAAIJ,CAAC,GAAA,CAAG,MAAO,CAAA,CAAA,CAQnC,EAAA,CANII,CAAAA,CACFA,CAAAA,CAAe,GAAA,CAAIJ,CAAC,CAAA,CAEpBG,CAAAA,CAAa,GAAA,CAAIJ,CAAAA,CAAG,IAAI,OAAA,CAAQ,CAACC,CAAC,CAAC,CAAC,CAAA,CAGlC,KAAA,CAAM,OAAA,CAAQD,CAAC,CAAA,GAAM,KAAA,CAAM,OAAA,CAAQC,CAAC,CAAA,CAAG,MAAO,CAAA,CAAA,CAElD,EAAA,CAAID,EAAAA,WAAa,IAAA,EAAQC,EAAAA,WAAa,IAAA,CACpC,OAAOD,CAAAA,CAAE,OAAA,CAAQ,CAAA,GAAMC,CAAAA,CAAE,OAAA,CAAQ,CAAA,CACnC,EAAA,CAAID,EAAAA,WAAa,MAAA,EAAUC,EAAAA,WAAa,MAAA,CACtC,OAAOD,CAAAA,CAAE,QAAA,CAAS,CAAA,GAAMC,CAAAA,CAAE,QAAA,CAAS,CAAA,CAErC,IAAMK,CAAAA,CAAQ,MAAA,CAAO,IAAA,CAAKN,CAAC,CAAA,CACrBO,CAAAA,CAAQ,MAAA,CAAO,IAAA,CAAKN,CAAC,CAAA,CAE3B,EAAA,CAAIK,CAAAA,CAAM,MAAA,GAAWC,CAAAA,CAAM,MAAA,CAAQ,MAAO,CAAA,CAAA,CAE1C,GAAA,CAAA,IAAWrB,EAAAA,GAAOoB,CAAAA,CAChB,EAAA,CACE,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKL,CAAAA,CAAGf,CAAG,CAAA,EAC5C,CAACiB,CAAAA,CAAeH,CAAAA,CAAEd,CAAG,CAAA,CAAGe,CAAAA,CAAEf,CAAG,CAAA,CAAGkB,CAAY,CAAA,CAE5C,MAAO,CAAA,CAAA,CAIX,MAAO,CAAA,CACT,CAEO,SAASI,CAAAA,CACd1B,CAAAA,CACA2B,CAAAA,CACAC,CAAAA,CAAS,EAAA,CACTC,CAAAA,CAAsB,IAAI,GAAA,CAC1BC,CAAAA,CAAwC,IAAI,GAAA,CAC/B,CACb,EAAA,CAAIb,CAAAA,CAAWjB,CAAAA,CAAK2B,CAAO,CAAA,CAAG,OAAOE,CAAAA,CACrC,EAAA,CACE7B,CAAAA,GAAQ,IAAA,EACR,OAAOA,CAAAA,EAAQ,QAAA,EACf2B,CAAAA,GAAY,IAAA,EACZ,OAAOA,CAAAA,EAAY,QAAA,CAEnB,OAAIC,CAAAA,EAAQC,CAAAA,CAAO,GAAA,CAAID,CAAM,CAAA,CACtBC,CAAAA,CAGT,IAAME,CAAAA,CAAiBD,CAAAA,CAAY,GAAA,CAAI9B,CAAa,CAAA,CACpD,EAAA,iBAAI+B,CAAAA,6BAAgB,GAAA,mBAAIJ,CAAiB,GAAA,CACvC,OAAOE,CAAAA,CAGLE,CAAAA,CACFA,CAAAA,CAAe,GAAA,CAAIJ,CAAiB,CAAA,CAEpCG,CAAAA,CAAY,GAAA,CAAI9B,CAAAA,CAAe,IAAI,GAAA,CAAI,CAAC2B,CAAiB,CAAC,CAAC,CAAA,CAG7D,GAAI,CACF,EAAA,CAAI,KAAA,CAAM,OAAA,CAAQ3B,CAAG,CAAA,EAAK,KAAA,CAAM,OAAA,CAAQ2B,CAAO,CAAA,CAC7C,MAAI,CAACV,CAAAA,CAAWjB,CAAAA,CAAK2B,CAAO,CAAA,EAAKC,CAAAA,EAAQC,CAAAA,CAAO,GAAA,CAAID,CAAM,CAAA,CACnDC,CAAAA,CAET,IAAMG,CAAAA,CAAU,IAAI,GAAA,CACpB,GAAA,CAAA,IAAW5B,EAAAA,GAAO,MAAA,CAAO,IAAA,CAAKJ,CAAAA,EAAO,CAAC,CAAC,CAAA,CACrCgC,CAAAA,CAAQ,GAAA,CAAI5B,CAAG,CAAA,CAEjB,GAAA,CAAA,IAAWA,EAAAA,GAAO,MAAA,CAAO,IAAA,CAAKuB,CAAAA,EAAW,CAAC,CAAC,CAAA,CACzCK,CAAAA,CAAQ,GAAA,CAAI5B,CAAG,CAAA,CAEjB,GAAA,CAAA,IAAW6B,EAAAA,GAAKD,CAAAA,CAAS,CACvB,IAAME,CAAAA,CAAIN,CAAAA,CAAS,CAAA,EAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-FTXV2NZO.cjs","sourcesContent":["export function cloneValue<T>(\n obj: T,\n visited: WeakMap<object, unknown> = new WeakMap(),\n): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (typeof structuredClone === \"function\") {\n try {\n return structuredClone(obj);\n } catch {\n // Alguns runtimes lançam para payloads não suportados (ex.: funções).\n // Nesses casos, seguimos para o clone recursivo para manter fail-open.\n }\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (visited.has(obj as object)) {\n return visited.get(obj as object) as T;\n }\n\n if (obj instanceof Map) {\n const clone = new Map<unknown, unknown>();\n visited.set(obj as object, clone);\n\n obj.forEach((value, key) => {\n clone.set(cloneValue(key, visited), cloneValue(value, visited));\n });\n\n return clone as T;\n }\n\n if (obj instanceof Set) {\n const clone = new Set<unknown>();\n visited.set(obj as object, clone);\n\n obj.forEach((value) => {\n clone.add(cloneValue(value, visited));\n });\n\n return clone as T;\n }\n\n if (Array.isArray(obj)) {\n const clone: unknown[] = [];\n visited.set(obj as object, clone);\n\n for (const item of obj) {\n clone.push(cloneValue(item, visited));\n }\n\n return clone as T;\n }\n\n const prototype = Object.getPrototypeOf(obj);\n const isPlainObject = prototype === Object.prototype || prototype === null;\n\n if (!isPlainObject) {\n const clone = Object.create(prototype) as Record<PropertyKey, unknown>;\n visited.set(obj as object, clone);\n\n for (const key of Reflect.ownKeys(obj as object)) {\n const descriptor = Object.getOwnPropertyDescriptor(obj as object, key);\n if (!descriptor) {\n continue;\n }\n\n if (\"value\" in descriptor) {\n descriptor.value = cloneValue(descriptor.value, visited);\n }\n\n Object.defineProperty(clone, key, descriptor);\n }\n\n return clone as T;\n }\n\n const clone: any = {};\n visited.set(obj as object, clone);\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = cloneValue((obj as any)[key], visited);\n }\n }\n\n return clone as T;\n}\n","import { cloneValue } from \"./clone\";\n\nexport function deepClone<T>(obj: T): T {\n return cloneValue(obj);\n}\n\nexport function deepMerge<T>(\n target: T,\n source: any,\n activeMerges: WeakMap<object, unknown> = new WeakMap(),\n): T {\n if (source === undefined) {\n return deepClone(target);\n }\n\n if (\n source === null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n source instanceof RegExp ||\n Array.isArray(source)\n ) {\n return deepClone(source as T);\n }\n\n const sourceObject = source as object;\n if (activeMerges.has(sourceObject)) {\n return activeMerges.get(sourceObject) as T;\n }\n\n const base =\n target && typeof target === \"object\" && !Array.isArray(target)\n ? deepClone(target as any)\n : ({} as Record<string, unknown>);\n\n activeMerges.set(sourceObject, base);\n\n try {\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const baseValue = (base as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === \"object\" &&\n !Array.isArray(sourceValue) &&\n !(sourceValue instanceof Date) &&\n !(sourceValue instanceof RegExp)\n ) {\n (base as Record<string, unknown>)[key] = deepMerge(\n baseValue,\n sourceValue,\n activeMerges,\n );\n continue;\n }\n\n (base as Record<string, unknown>)[key] = deepClone(sourceValue);\n }\n } finally {\n activeMerges.delete(sourceObject);\n }\n\n return base as T;\n}\n\nexport function valueEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n return deepEqual(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n return deepEqualInner(a, b, new WeakMap());\n}\n\nfunction deepEqualInner(\n a: any,\n b: any,\n visitedPairs: WeakMap<object, WeakSet<object>>,\n): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n\n const visitedTargets = visitedPairs.get(a);\n if (visitedTargets?.has(b)) return true;\n\n if (visitedTargets) {\n visitedTargets.add(b);\n } else {\n visitedPairs.set(a, new WeakSet([b]));\n }\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n if (a instanceof Date && b instanceof Date)\n return a.getTime() === b.getTime();\n if (a instanceof RegExp && b instanceof RegExp)\n return a.toString() === b.toString();\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqualInner(a[key], b[key], visitedPairs)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\n activePairs: Map<object, Set<object>> = new Map(),\n): Set<string> {\n if (valueEqual(obj, initial)) return result;\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n initial === null ||\n typeof initial !== \"object\"\n ) {\n if (prefix) result.add(prefix);\n return result;\n }\n\n const activeInitials = activePairs.get(obj as object);\n if (activeInitials?.has(initial as object)) {\n return result;\n }\n\n if (activeInitials) {\n activeInitials.add(initial as object);\n } else {\n activePairs.set(obj as object, new Set([initial as object]));\n }\n\n try {\n if (Array.isArray(obj) || Array.isArray(initial)) {\n if (!valueEqual(obj, initial) && prefix) result.add(prefix);\n return result;\n }\n const allKeys = new Set<string>();\n for (const key of Object.keys(obj || {})) {\n allKeys.add(key);\n }\n for (const key of Object.keys(initial || {})) {\n allKeys.add(key);\n }\n for (const k of allKeys) {\n const p = prefix ? `${prefix}.${k}` : k;\n collectDirtyPaths(\n (obj as any)?.[k],\n (initial as any)?.[k],\n p,\n result,\n activePairs,\n );\n }\n return result;\n } finally {\n const nextActiveInitials = activePairs.get(obj as object);\n nextActiveInitials?.delete(initial as object);\n\n if (nextActiveInitials && nextActiveInitials.size === 0) {\n activePairs.delete(obj as object);\n }\n }\n}\n"]}
|
package/dist/chunk-G3EHXKOS.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function l(e,n=new WeakMap){if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(n.has(e))return n.get(e);if(e instanceof Map){let t=new Map;return n.set(e,t),e.forEach((o,r)=>{t.set(l(r,n),l(o,n))}),t}if(e instanceof Set){let t=new Set;return n.set(e,t),e.forEach(o=>{t.add(l(o,n))}),t}if(Array.isArray(e)){let t=[];n.set(e,t);for(let o of e)t.push(l(o,n));return t}let s=Object.getPrototypeOf(e);if(!(s===Object.prototype||s===null)){let t=Object.create(s);n.set(e,t);for(let o of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,o);r&&("value"in r&&(r.value=l(r.value,n)),Object.defineProperty(t,o,r))}return t}let c={};n.set(e,c);for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(c[t]=l(e[t],n));return c}function k(e){return l(e)}function R(e,n,s=new WeakMap){if(n===void 0)return k(e);if(n===null||typeof n!="object"||n instanceof Date||n instanceof RegExp||Array.isArray(n))return k(n);let a=n;if(s.has(a))return s.get(a);let c=e&&typeof e=="object"&&!Array.isArray(e)?k(e):{};s.set(a,c);try{for(let t of Object.keys(n)){let o=n[t],r=c[t];if(o!==null&&typeof o=="object"&&!Array.isArray(o)&&!(o instanceof Date)&&!(o instanceof RegExp)){c[t]=R(r,o,s);continue}c[t]=k(o)}}finally{s.delete(a)}return c}function m(e,n){return e===n?!0:e===null||typeof e!="object"||n===null||typeof n!="object"?!1:b(e,n)}function b(e,n){return T(e,n,new WeakMap)}function T(e,n,s){if(e===n)return!0;if(e===null||typeof e!="object"||n===null||typeof n!="object")return!1;let a=s.get(e);if(a?.has(n))return!0;if(a?a.add(n):s.set(e,new WeakSet([n])),Array.isArray(e)!==Array.isArray(n))return!1;if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();let c=Object.keys(e),t=Object.keys(n);if(c.length!==t.length)return!1;for(let o of c)if(!Object.prototype.hasOwnProperty.call(n,o)||!T(e[o],n[o],s))return!1;return!0}function O(e,n,s="",a=new Set,c=new Map){if(m(e,n))return a;if(e===null||typeof e!="object"||n===null||typeof n!="object")return s&&a.add(s),a;let t=c.get(e);if(t?.has(n))return a;t?t.add(n):c.set(e,new Set([n]));try{if(Array.isArray(e)||Array.isArray(n))return!m(e,n)&&s&&a.add(s),a;let o=new Set;for(let r of Object.keys(e||{}))o.add(r);for(let r of Object.keys(n||{}))o.add(r);for(let r of o){let i=s?`${s}.${r}`:r;O(e?.[r],n?.[r],i,a,c)}return a}finally{let o=c.get(e);o?.delete(n),o&&o.size===0&&c.delete(e)}}var d=new Map,E=new Set(["__proto__"]);function S(e,n){if(d.has(e))d.delete(e);else if(d.size>=5e3){let s=d.keys().next().value;s!==void 0&&d.delete(s)}d.set(e,n)}function p(e){let n=d.get(e);if(n)return n;let s=e.split(".");return S(e,s),s}function A(e){for(let n=0;n<e.length;n++){let s=e[n];if(E.has(s)||s==="constructor"&&e[n+1]==="prototype")return!0}return!1}function K(e,n){if(!n)return e;let s=p(n);if(A(s))return;let a=e;for(let c of s){if(a==null)return;a=a[c]}return a}function D(e,n,s){if(!n)return s;let a=p(n);if(A(a))return e;let c=Array.isArray(e)?[...e]:{...e},t=c;for(let o=0;o<a.length-1;o++){let r=a[o],i=a[o+1],f=Number(i),y=Number.isInteger(f)&&String(f)===i,u=t[r];u==null?t[r]=y?[]:{}:t[r]=Array.isArray(u)?[...u]:{...u},t=t[r]}return t[a[a.length-1]]=s,c}function N(e,n){if(n.length===0)return e;let s=n.filter(([t])=>{let o=p(t);return!A(o)});if(s.length===0)return e;let a=Array.isArray(e)?[...e]:{...e},c=new WeakSet;a&&typeof a=="object"&&c.add(a);for(let[t,o]of s){let r=p(t),i=a;for(let f=0;f<r.length-1;f++){let y=r[f],u=r[f+1],w=Number(u),x=Number.isInteger(w)&&String(w)===u,g=i[y];g==null?(i[y]=x?[]:{},c.add(i[y])):typeof g=="object"?c.has(g)||(i[y]=Array.isArray(g)?[...g]:{...g},c.add(i[y])):(i[y]=x?[]:{},c.add(i[y])),i=i[y]}i[r[r.length-1]]=o}return a}function P(e,n){if(n.length===0)return e;let s=n.filter(t=>{if(!t)return!0;let o=p(t);return!A(o)});if(s.length===0)return e;let a=Array.isArray(e)?[...e]:{...e},c=new WeakSet;a&&typeof a=="object"&&c.add(a);for(let t of s){if(!t)return Array.isArray(e)?[]:{};let o=p(t),r=a;for(let f=0;f<o.length-1;f++){let y=o[f],u=r?.[y];if(u==null){r=void 0;break}if(typeof u=="object")c.has(u)||(r[y]=Array.isArray(u)?[...u]:{...u},c.add(r[y]));else{r=void 0;break}r=r[y]}if(!r)continue;let i=o[o.length-1];if(Array.isArray(r)){let f=Number(i);Number.isInteger(f)&&f>=0&&r.splice(f,1)}else r&&typeof r=="object"&&delete r[i]}return a}function $(e,n){let s={},a=`${n}.`;for(let c in e)c!==n&&!c.startsWith(a)&&(s[c]=e[c]);return s}function j(e,n,s){let a={},c={},t={},o=`${n}.`;for(let r of Object.keys(e.errors)){let i=h(r,o,s);i&&(a[i]=e.errors[r])}for(let r of Object.keys(e.touched)){let i=h(r,o,s);i&&(c[i]=e.touched[r])}for(let r of Object.keys(e.isValidating)){let i=h(r,o,s);i&&(t[i]=e.isValidating[r])}return{errors:a,touched:c,isValidating:t}}function h(e,n,s){if(!e.startsWith(n))return e;let c=e.substring(n.length).split("."),t=Number(c[0]);if(!Number.isInteger(t)||t<0)return e;let o=s(t);if(o===null)return null;let r=c.slice(1).join(".");return r?`${n}${o}.${r}`:`${n}${o}`}function V(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let n=e.errors??e;if(typeof n!="object"||n===null||Array.isArray(n))return!1;let s=Object.entries(n);return s.length===0?!1:s.every(([a,c])=>a.length>0&&(typeof c=="string"||Array.isArray(c)&&c.every(t=>typeof t=="string")))}function M(e){return V(e)?e.errors??e:{}}export{k as a,R as b,m as c,b as d,O as e,K as f,D as g,N as h,P as i,$ as j,j as k,h as l,V as m,M as n};
|
|
2
|
-
//# sourceMappingURL=chunk-G3EHXKOS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils/clone.ts","../src/core/utils/structural.ts","../src/core/utils/path-value.ts","../src/core/utils/array-meta.ts","../src/core/utils/server-errors.ts"],"sourcesContent":["export function cloneValue<T>(\n obj: T,\n visited: WeakMap<object, unknown> = new WeakMap(),\n): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (typeof structuredClone === \"function\") {\n try {\n return structuredClone(obj);\n } catch {\n // Alguns runtimes lançam para payloads não suportados (ex.: funções).\n // Nesses casos, seguimos para o clone recursivo para manter fail-open.\n }\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (visited.has(obj as object)) {\n return visited.get(obj as object) as T;\n }\n\n if (obj instanceof Map) {\n const clone = new Map<unknown, unknown>();\n visited.set(obj as object, clone);\n\n obj.forEach((value, key) => {\n clone.set(cloneValue(key, visited), cloneValue(value, visited));\n });\n\n return clone as T;\n }\n\n if (obj instanceof Set) {\n const clone = new Set<unknown>();\n visited.set(obj as object, clone);\n\n obj.forEach((value) => {\n clone.add(cloneValue(value, visited));\n });\n\n return clone as T;\n }\n\n if (Array.isArray(obj)) {\n const clone: unknown[] = [];\n visited.set(obj as object, clone);\n\n for (const item of obj) {\n clone.push(cloneValue(item, visited));\n }\n\n return clone as T;\n }\n\n const prototype = Object.getPrototypeOf(obj);\n const isPlainObject = prototype === Object.prototype || prototype === null;\n\n if (!isPlainObject) {\n const clone = Object.create(prototype) as Record<PropertyKey, unknown>;\n visited.set(obj as object, clone);\n\n for (const key of Reflect.ownKeys(obj as object)) {\n const descriptor = Object.getOwnPropertyDescriptor(obj as object, key);\n if (!descriptor) {\n continue;\n }\n\n if (\"value\" in descriptor) {\n descriptor.value = cloneValue(descriptor.value, visited);\n }\n\n Object.defineProperty(clone, key, descriptor);\n }\n\n return clone as T;\n }\n\n const clone: any = {};\n visited.set(obj as object, clone);\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = cloneValue((obj as any)[key], visited);\n }\n }\n\n return clone as T;\n}\n","import { cloneValue } from \"./clone\";\n\nexport function deepClone<T>(obj: T): T {\n return cloneValue(obj);\n}\n\nexport function deepMerge<T>(\n target: T,\n source: any,\n activeMerges: WeakMap<object, unknown> = new WeakMap(),\n): T {\n if (source === undefined) {\n return deepClone(target);\n }\n\n if (\n source === null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n source instanceof RegExp ||\n Array.isArray(source)\n ) {\n return deepClone(source as T);\n }\n\n const sourceObject = source as object;\n if (activeMerges.has(sourceObject)) {\n return activeMerges.get(sourceObject) as T;\n }\n\n const base =\n target && typeof target === \"object\" && !Array.isArray(target)\n ? deepClone(target as any)\n : ({} as Record<string, unknown>);\n\n activeMerges.set(sourceObject, base);\n\n try {\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const baseValue = (base as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === \"object\" &&\n !Array.isArray(sourceValue) &&\n !(sourceValue instanceof Date) &&\n !(sourceValue instanceof RegExp)\n ) {\n (base as Record<string, unknown>)[key] = deepMerge(\n baseValue,\n sourceValue,\n activeMerges,\n );\n continue;\n }\n\n (base as Record<string, unknown>)[key] = deepClone(sourceValue);\n }\n } finally {\n activeMerges.delete(sourceObject);\n }\n\n return base as T;\n}\n\nexport function valueEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n return deepEqual(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n return deepEqualInner(a, b, new WeakMap());\n}\n\nfunction deepEqualInner(\n a: any,\n b: any,\n visitedPairs: WeakMap<object, WeakSet<object>>,\n): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n\n const visitedTargets = visitedPairs.get(a);\n if (visitedTargets?.has(b)) return true;\n\n if (visitedTargets) {\n visitedTargets.add(b);\n } else {\n visitedPairs.set(a, new WeakSet([b]));\n }\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n if (a instanceof Date && b instanceof Date)\n return a.getTime() === b.getTime();\n if (a instanceof RegExp && b instanceof RegExp)\n return a.toString() === b.toString();\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqualInner(a[key], b[key], visitedPairs)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\n activePairs: Map<object, Set<object>> = new Map(),\n): Set<string> {\n if (valueEqual(obj, initial)) return result;\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n initial === null ||\n typeof initial !== \"object\"\n ) {\n if (prefix) result.add(prefix);\n return result;\n }\n\n const activeInitials = activePairs.get(obj as object);\n if (activeInitials?.has(initial as object)) {\n return result;\n }\n\n if (activeInitials) {\n activeInitials.add(initial as object);\n } else {\n activePairs.set(obj as object, new Set([initial as object]));\n }\n\n try {\n if (Array.isArray(obj) || Array.isArray(initial)) {\n if (!valueEqual(obj, initial) && prefix) result.add(prefix);\n return result;\n }\n const allKeys = new Set<string>();\n for (const key of Object.keys(obj || {})) {\n allKeys.add(key);\n }\n for (const key of Object.keys(initial || {})) {\n allKeys.add(key);\n }\n for (const k of allKeys) {\n const p = prefix ? `${prefix}.${k}` : k;\n collectDirtyPaths(\n (obj as any)?.[k],\n (initial as any)?.[k],\n p,\n result,\n activePairs,\n );\n }\n return result;\n } finally {\n const nextActiveInitials = activePairs.get(obj as object);\n nextActiveInitials?.delete(initial as object);\n\n if (nextActiveInitials && nextActiveInitials.size === 0) {\n activePairs.delete(obj as object);\n }\n }\n}\n","const PATH_CACHE_MAX = 5000;\nconst pathCache = new Map<string, string[]>();\nconst BLOCKED_PATH_SEGMENTS = new Set([\"__proto__\"]);\n\nfunction setPathCacheEntry(path: string, keys: string[]) {\n if (pathCache.has(path)) {\n pathCache.delete(path);\n } else if (pathCache.size >= PATH_CACHE_MAX) {\n const oldestKey = pathCache.keys().next().value;\n if (oldestKey !== undefined) {\n pathCache.delete(oldestKey);\n }\n }\n\n pathCache.set(path, keys);\n}\n\nfunction getPathKeys(path: string): string[] {\n const cached = pathCache.get(path);\n if (cached) {\n return cached;\n }\n\n const keys = path.split(\".\");\n setPathCacheEntry(path, keys);\n return keys;\n}\n\nfunction hasBlockedPathSegment(keys: readonly string[]): boolean {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n if (BLOCKED_PATH_SEGMENTS.has(key)) {\n return true;\n }\n\n if (key === \"constructor\" && keys[i + 1] === \"prototype\") {\n return true;\n }\n }\n\n return false;\n}\n\nexport function getDeepValue(obj: any, path: string): any {\n if (!path) return obj;\n\n const keys = getPathKeys(path);\n if (hasBlockedPathSegment(keys)) return undefined;\n\n let current = obj;\n for (const key of keys) {\n if (current === null || current === undefined) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function setDeepValue(obj: any, path: string, value: any): any {\n if (!path) return value;\n\n const keys = getPathKeys(path);\n if (hasBlockedPathSegment(keys)) return obj;\n\n const result = Array.isArray(obj) ? [...obj] : { ...obj };\n let current = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const nextAsNumber = Number(nextKey);\n const isNextNumeric =\n Number.isInteger(nextAsNumber) && String(nextAsNumber) === nextKey;\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n } else {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return result;\n}\n\nexport function setDeepValues(\n obj: any,\n updates: ReadonlyArray<readonly [path: string, value: any]>,\n): any {\n if (updates.length === 0) {\n return obj;\n }\n\n const safeUpdates = updates.filter(([path]) => {\n const keys = getPathKeys(path);\n return !hasBlockedPathSegment(keys);\n });\n\n if (safeUpdates.length === 0) {\n return obj;\n }\n\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\n const clonedNodes = new WeakSet<object>();\n if (root && typeof root === \"object\") {\n clonedNodes.add(root);\n }\n\n for (const [path, value] of safeUpdates) {\n const keys = getPathKeys(path);\n let current: any = root;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const nextAsNumber = Number(nextKey);\n const isNextNumeric =\n Number.isInteger(nextAsNumber) && String(nextAsNumber) === nextKey;\n\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n clonedNodes.add(current[key]);\n } else if (typeof currentValue === \"object\") {\n if (!clonedNodes.has(currentValue)) {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n clonedNodes.add(current[key]);\n }\n } else {\n current[key] = isNextNumeric ? [] : {};\n clonedNodes.add(current[key]);\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n }\n\n return root;\n}\n\nexport function unsetDeepValue(obj: any, path: string): any {\n if (!path) {\n return Array.isArray(obj) ? [] : {};\n }\n\n const keys = getPathKeys(path);\n if (hasBlockedPathSegment(keys)) {\n return obj;\n }\n\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\n let current: any = root;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const currentValue = current?.[key];\n\n if (currentValue === null || currentValue === undefined) {\n return root;\n }\n\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n\n current = current[key];\n }\n\n const leafKey = keys[keys.length - 1];\n\n if (Array.isArray(current)) {\n const arrayIndex = Number(leafKey);\n // Only splice if leafKey is a valid array index (integer >= 0)\n if (Number.isInteger(arrayIndex) && arrayIndex >= 0) {\n current.splice(arrayIndex, 1);\n }\n } else if (current && typeof current === \"object\") {\n delete current[leafKey];\n }\n\n return root;\n}\n\nexport function unsetDeepValues(obj: any, paths: ReadonlyArray<string>): any {\n if (paths.length === 0) {\n return obj;\n }\n\n const safePaths = paths.filter((path) => {\n if (!path) return true;\n const keys = getPathKeys(path);\n return !hasBlockedPathSegment(keys);\n });\n\n if (safePaths.length === 0) {\n return obj;\n }\n\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\n const clonedNodes = new WeakSet<object>();\n if (root && typeof root === \"object\") {\n clonedNodes.add(root);\n }\n\n for (const path of safePaths) {\n if (!path) {\n return Array.isArray(obj) ? [] : {};\n }\n\n const keys = getPathKeys(path);\n\n let current: any = root;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const currentValue = current?.[key];\n\n if (currentValue === null || currentValue === undefined) {\n current = undefined;\n break;\n }\n\n if (typeof currentValue === \"object\") {\n if (!clonedNodes.has(currentValue)) {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n clonedNodes.add(current[key]);\n }\n } else {\n current = undefined;\n break;\n }\n\n current = current[key];\n }\n\n if (!current) {\n continue;\n }\n\n const leafKey = keys[keys.length - 1];\n\n if (Array.isArray(current)) {\n const arrayIndex = Number(leafKey);\n // Only splice if leafKey is a valid array index (integer >= 0)\n if (Number.isInteger(arrayIndex) && arrayIndex >= 0) {\n current.splice(arrayIndex, 1);\n }\n } else if (current && typeof current === \"object\") {\n delete current[leafKey];\n }\n }\n\n return root;\n}\n","export function cleanPrefixedKeys(\n obj: Record<string, any>,\n prefix: string,\n): Record<string, any> {\n const newObj: Record<string, any> = {};\n const prefixWithDot = `${prefix}.`;\n\n for (const key in obj) {\n if (key !== prefix && !key.startsWith(prefixWithDot)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport const shiftKeys = (\n obj: Record<string, any>,\n path: string,\n removedIndex: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === removedIndex) {\n return null;\n }\n\n return currentIdx > removedIndex ? currentIdx - 1 : currentIdx;\n });\n};\n\nexport const swapKeys = (\n obj: Record<string, any>,\n path: string,\n indexA: number,\n indexB: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === indexA) {\n return indexB;\n }\n\n if (currentIdx === indexB) {\n return indexA;\n }\n\n return currentIdx;\n });\n};\n\nexport const moveKeys = (\n obj: Record<string, any>,\n path: string,\n from: number,\n to: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === from) {\n return to;\n }\n\n if (from < to && currentIdx > from && currentIdx <= to) {\n return currentIdx - 1;\n }\n\n if (from > to && currentIdx >= to && currentIdx < from) {\n return currentIdx + 1;\n }\n\n return currentIdx;\n });\n};\n\nexport function reindexFieldArrayMeta(\n state: {\n errors: Record<string, any>;\n touched: Record<string, any>;\n isValidating: Record<string, any>;\n },\n path: string,\n remapIndex: (index: number) => number | null,\n) {\n const nextErrors: Record<string, any> = {};\n const nextTouched: Record<string, any> = {};\n const nextIsValidating: Record<string, any> = {};\n\n const prefix = `${path}.`;\n\n for (const key of Object.keys(state.errors)) {\n const nextKey = remapIndexedPath(key, prefix, remapIndex);\n if (nextKey) nextErrors[nextKey] = state.errors[key];\n }\n\n for (const key of Object.keys(state.touched)) {\n const nextKey = remapIndexedPath(key, prefix, remapIndex);\n if (nextKey) nextTouched[nextKey] = state.touched[key];\n }\n\n for (const key of Object.keys(state.isValidating)) {\n const nextKey = remapIndexedPath(key, prefix, remapIndex);\n if (nextKey) nextIsValidating[nextKey] = state.isValidating[key];\n }\n\n return {\n errors: nextErrors,\n touched: nextTouched,\n isValidating: nextIsValidating,\n };\n}\n\nexport function remapIndexedPath(\n key: string,\n prefix: string,\n remapIndex: (index: number) => number | null,\n): string | null {\n if (!key.startsWith(prefix)) {\n return key;\n }\n\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = Number(parts[0]);\n if (!Number.isInteger(currentIdx) || currentIdx < 0) {\n return key;\n }\n const nextIdx = remapIndex(currentIdx);\n\n if (nextIdx === null) {\n return null;\n }\n\n const rest = parts.slice(1).join(\".\");\n return rest ? `${prefix}${nextIdx}.${rest}` : `${prefix}${nextIdx}`;\n}\n\nfunction reindexObjectKeys(\n obj: Record<string, any>,\n path: string,\n remapIndex: (index: number) => number | null,\n) {\n const nextObject: Record<string, any> = {};\n const prefix = `${path}.`;\n\n for (const key of Object.keys(obj)) {\n if (!key.startsWith(prefix)) {\n nextObject[key] = obj[key];\n continue;\n }\n\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = Number(parts[0]);\n if (!Number.isInteger(currentIdx) || currentIdx < 0) {\n nextObject[key] = obj[key];\n continue;\n }\n const nextIdx = remapIndex(currentIdx);\n\n if (nextIdx === null) {\n continue;\n }\n\n const rest = parts.slice(1).join(\".\");\n const nextKey = rest\n ? `${prefix}${nextIdx}.${rest}`\n : `${prefix}${nextIdx}`;\n nextObject[nextKey] = obj[key];\n }\n\n return nextObject;\n}\n","export function isValidationErrorShape(\n x: unknown,\n): x is Record<string, string | string[]> {\n if (typeof x !== \"object\" || x === null || Array.isArray(x)) return false;\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj)) {\n return false;\n }\n\n const entries = Object.entries(obj as Record<string, unknown>);\n if (entries.length === 0) {\n return false;\n }\n\n return entries.every(\n ([key, v]) =>\n key.length > 0 &&\n (typeof v === \"string\" ||\n (Array.isArray(v) && v.every((i) => typeof i === \"string\"))),\n );\n}\n\nexport function extractServerErrors(\n x: unknown,\n): Record<string, string | string[]> {\n if (!isValidationErrorShape(x)) return {};\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n return obj as Record<string, string | string[]>;\n}\n"],"mappings":"AAAO,SAASA,EACdC,EACAC,EAAoC,IAAI,QACrC,CACH,GAAID,IAAQ,MAAQ,OAAOA,GAAQ,SACjC,OAAOA,EAGT,GAAI,OAAO,iBAAoB,WAC7B,GAAI,CACF,OAAO,gBAAgBA,CAAG,CAC5B,MAAQ,CAGR,CAGF,GAAIA,aAAe,KACjB,OAAO,IAAI,KAAKA,EAAI,QAAQ,CAAC,EAG/B,GAAIA,aAAe,OACjB,OAAO,IAAI,OAAOA,EAAI,OAAQA,EAAI,KAAK,EAGzC,GAAIC,EAAQ,IAAID,CAAa,EAC3B,OAAOC,EAAQ,IAAID,CAAa,EAGlC,GAAIA,aAAe,IAAK,CACtB,IAAME,EAAQ,IAAI,IAClB,OAAAD,EAAQ,IAAID,EAAeE,CAAK,EAEhCF,EAAI,QAAQ,CAACG,EAAOC,IAAQ,CAC1BF,EAAM,IAAIH,EAAWK,EAAKH,CAAO,EAAGF,EAAWI,EAAOF,CAAO,CAAC,CAChE,CAAC,EAEMC,CACT,CAEA,GAAIF,aAAe,IAAK,CACtB,IAAME,EAAQ,IAAI,IAClB,OAAAD,EAAQ,IAAID,EAAeE,CAAK,EAEhCF,EAAI,QAASG,GAAU,CACrBD,EAAM,IAAIH,EAAWI,EAAOF,CAAO,CAAC,CACtC,CAAC,EAEMC,CACT,CAEA,GAAI,MAAM,QAAQF,CAAG,EAAG,CACtB,IAAME,EAAmB,CAAC,EAC1BD,EAAQ,IAAID,EAAeE,CAAK,EAEhC,QAAWG,KAAQL,EACjBE,EAAM,KAAKH,EAAWM,EAAMJ,CAAO,CAAC,EAGtC,OAAOC,CACT,CAEA,IAAMI,EAAY,OAAO,eAAeN,CAAG,EAG3C,GAAI,EAFkBM,IAAc,OAAO,WAAaA,IAAc,MAElD,CAClB,IAAMJ,EAAQ,OAAO,OAAOI,CAAS,EACrCL,EAAQ,IAAID,EAAeE,CAAK,EAEhC,QAAWE,KAAO,QAAQ,QAAQJ,CAAa,EAAG,CAChD,IAAMO,EAAa,OAAO,yBAAyBP,EAAeI,CAAG,EAChEG,IAID,UAAWA,IACbA,EAAW,MAAQR,EAAWQ,EAAW,MAAON,CAAO,GAGzD,OAAO,eAAeC,EAAOE,EAAKG,CAAU,EAC9C,CAEA,OAAOL,CACT,CAEA,IAAMA,EAAa,CAAC,EACpBD,EAAQ,IAAID,EAAeE,CAAK,EAEhC,QAAWE,KAAOJ,EACZ,OAAO,UAAU,eAAe,KAAKA,EAAKI,CAAG,IAC/CF,EAAME,CAAG,EAAIL,EAAYC,EAAYI,CAAG,EAAGH,CAAO,GAItD,OAAOC,CACT,CC7FO,SAASM,EAAaC,EAAW,CACtC,OAAOC,EAAWD,CAAG,CACvB,CAEO,SAASE,EACdC,EACAC,EACAC,EAAyC,IAAI,QAC1C,CACH,GAAID,IAAW,OACb,OAAOL,EAAUI,CAAM,EAGzB,GACEC,IAAW,MACX,OAAOA,GAAW,UAClBA,aAAkB,MAClBA,aAAkB,QAClB,MAAM,QAAQA,CAAM,EAEpB,OAAOL,EAAUK,CAAW,EAG9B,IAAME,EAAeF,EACrB,GAAIC,EAAa,IAAIC,CAAY,EAC/B,OAAOD,EAAa,IAAIC,CAAY,EAGtC,IAAMC,EACJJ,GAAU,OAAOA,GAAW,UAAY,CAAC,MAAM,QAAQA,CAAM,EACzDJ,EAAUI,CAAa,EACtB,CAAC,EAERE,EAAa,IAAIC,EAAcC,CAAI,EAEnC,GAAI,CACF,QAAWC,KAAO,OAAO,KAAKJ,CAAM,EAAG,CACrC,IAAMK,EAAcL,EAAOI,CAAG,EACxBE,EAAaH,EAAiCC,CAAG,EAEvD,GACEC,IAAgB,MAChB,OAAOA,GAAgB,UACvB,CAAC,MAAM,QAAQA,CAAW,GAC1B,EAAEA,aAAuB,OACzB,EAAEA,aAAuB,QACzB,CACCF,EAAiCC,CAAG,EAAIN,EACvCQ,EACAD,EACAJ,CACF,EACA,QACF,CAECE,EAAiCC,CAAG,EAAIT,EAAUU,CAAW,CAChE,CACF,QAAE,CACAJ,EAAa,OAAOC,CAAY,CAClC,CAEA,OAAOC,CACT,CAEO,SAASI,EAAWC,EAAQC,EAAiB,CAClD,OAAID,IAAMC,EAAU,GAElBD,IAAM,MACN,OAAOA,GAAM,UACbC,IAAM,MACN,OAAOA,GAAM,SAEN,GAEFC,EAAUF,EAAGC,CAAC,CACvB,CAEO,SAASC,EAAUF,EAAQC,EAAiB,CACjD,OAAOE,EAAeH,EAAGC,EAAG,IAAI,OAAS,CAC3C,CAEA,SAASE,EACPH,EACAC,EACAG,EACS,CACT,GAAIJ,IAAMC,EAAG,MAAO,GACpB,GACED,IAAM,MACN,OAAOA,GAAM,UACbC,IAAM,MACN,OAAOA,GAAM,SAEb,MAAO,GAGT,IAAMI,EAAiBD,EAAa,IAAIJ,CAAC,EACzC,GAAIK,GAAgB,IAAIJ,CAAC,EAAG,MAAO,GAQnC,GANII,EACFA,EAAe,IAAIJ,CAAC,EAEpBG,EAAa,IAAIJ,EAAG,IAAI,QAAQ,CAACC,CAAC,CAAC,CAAC,EAGlC,MAAM,QAAQD,CAAC,IAAM,MAAM,QAAQC,CAAC,EAAG,MAAO,GAElD,GAAID,aAAa,MAAQC,aAAa,KACpC,OAAOD,EAAE,QAAQ,IAAMC,EAAE,QAAQ,EACnC,GAAID,aAAa,QAAUC,aAAa,OACtC,OAAOD,EAAE,SAAS,IAAMC,EAAE,SAAS,EAErC,IAAMK,EAAQ,OAAO,KAAKN,CAAC,EACrBO,EAAQ,OAAO,KAAKN,CAAC,EAE3B,GAAIK,EAAM,SAAWC,EAAM,OAAQ,MAAO,GAE1C,QAAWX,KAAOU,EAChB,GACE,CAAC,OAAO,UAAU,eAAe,KAAKL,EAAGL,CAAG,GAC5C,CAACO,EAAeH,EAAEJ,CAAG,EAAGK,EAAEL,CAAG,EAAGQ,CAAY,EAE5C,MAAO,GAIX,MAAO,EACT,CAEO,SAASI,EACdpB,EACAqB,EACAC,EAAS,GACTC,EAAsB,IAAI,IAC1BC,EAAwC,IAAI,IAC/B,CACb,GAAIb,EAAWX,EAAKqB,CAAO,EAAG,OAAOE,EACrC,GACEvB,IAAQ,MACR,OAAOA,GAAQ,UACfqB,IAAY,MACZ,OAAOA,GAAY,SAEnB,OAAIC,GAAQC,EAAO,IAAID,CAAM,EACtBC,EAGT,IAAME,EAAiBD,EAAY,IAAIxB,CAAa,EACpD,GAAIyB,GAAgB,IAAIJ,CAAiB,EACvC,OAAOE,EAGLE,EACFA,EAAe,IAAIJ,CAAiB,EAEpCG,EAAY,IAAIxB,EAAe,IAAI,IAAI,CAACqB,CAAiB,CAAC,CAAC,EAG7D,GAAI,CACF,GAAI,MAAM,QAAQrB,CAAG,GAAK,MAAM,QAAQqB,CAAO,EAC7C,MAAI,CAACV,EAAWX,EAAKqB,CAAO,GAAKC,GAAQC,EAAO,IAAID,CAAM,EACnDC,EAET,IAAMG,EAAU,IAAI,IACpB,QAAWlB,KAAO,OAAO,KAAKR,GAAO,CAAC,CAAC,EACrC0B,EAAQ,IAAIlB,CAAG,EAEjB,QAAWA,KAAO,OAAO,KAAKa,GAAW,CAAC,CAAC,EACzCK,EAAQ,IAAIlB,CAAG,EAEjB,QAAWmB,KAAKD,EAAS,CACvB,IAAME,EAAIN,EAAS,GAAGA,CAAM,IAAIK,CAAC,GAAKA,EACtCP,EACGpB,IAAc2B,CAAC,EACfN,IAAkBM,CAAC,EACpBC,EACAL,EACAC,CACF,CACF,CACA,OAAOD,CACT,QAAE,CACA,IAAMM,EAAqBL,EAAY,IAAIxB,CAAa,EACxD6B,GAAoB,OAAOR,CAAiB,EAExCQ,GAAsBA,EAAmB,OAAS,GACpDL,EAAY,OAAOxB,CAAa,CAEpC,CACF,CC9LA,IAAM8B,EAAY,IAAI,IAChBC,EAAwB,IAAI,IAAI,CAAC,WAAW,CAAC,EAEnD,SAASC,EAAkBC,EAAcC,EAAgB,CACvD,GAAIJ,EAAU,IAAIG,CAAI,EACpBH,EAAU,OAAOG,CAAI,UACZH,EAAU,MAAQ,IAAgB,CAC3C,IAAMK,EAAYL,EAAU,KAAK,EAAE,KAAK,EAAE,MACtCK,IAAc,QAChBL,EAAU,OAAOK,CAAS,CAE9B,CAEAL,EAAU,IAAIG,EAAMC,CAAI,CAC1B,CAEA,SAASE,EAAYH,EAAwB,CAC3C,IAAMI,EAASP,EAAU,IAAIG,CAAI,EACjC,GAAII,EACF,OAAOA,EAGT,IAAMH,EAAOD,EAAK,MAAM,GAAG,EAC3B,OAAAD,EAAkBC,EAAMC,CAAI,EACrBA,CACT,CAEA,SAASI,EAAsBJ,EAAkC,CAC/D,QAASK,EAAI,EAAGA,EAAIL,EAAK,OAAQK,IAAK,CACpC,IAAMC,EAAMN,EAAKK,CAAC,EAMlB,GAJIR,EAAsB,IAAIS,CAAG,GAI7BA,IAAQ,eAAiBN,EAAKK,EAAI,CAAC,IAAM,YAC3C,MAAO,EAEX,CAEA,MAAO,EACT,CAEO,SAASE,EAAaC,EAAUT,EAAmB,CACxD,GAAI,CAACA,EAAM,OAAOS,EAElB,IAAMR,EAAOE,EAAYH,CAAI,EAC7B,GAAIK,EAAsBJ,CAAI,EAAG,OAEjC,IAAIS,EAAUD,EACd,QAAWF,KAAON,EAAM,CACtB,GAAIS,GAAY,KAA+B,OAC/CA,EAAUA,EAAQH,CAAG,CACvB,CACA,OAAOG,CACT,CAEO,SAASC,EAAaF,EAAUT,EAAcY,EAAiB,CACpE,GAAI,CAACZ,EAAM,OAAOY,EAElB,IAAMX,EAAOE,EAAYH,CAAI,EAC7B,GAAIK,EAAsBJ,CAAI,EAAG,OAAOQ,EAExC,IAAMI,EAAS,MAAM,QAAQJ,CAAG,EAAI,CAAC,GAAGA,CAAG,EAAI,CAAE,GAAGA,CAAI,EACpDC,EAAUG,EAEd,QAASP,EAAI,EAAGA,EAAIL,EAAK,OAAS,EAAGK,IAAK,CACxC,IAAMC,EAAMN,EAAKK,CAAC,EACZQ,EAAUb,EAAKK,EAAI,CAAC,EAEpBS,EAAe,OAAOD,CAAO,EAC7BE,EACJ,OAAO,UAAUD,CAAY,GAAK,OAAOA,CAAY,IAAMD,EACvDG,EAAeP,EAAQH,CAAG,EAE5BU,GAAiB,KACnBP,EAAQH,CAAG,EAAIS,EAAgB,CAAC,EAAI,CAAC,EAErCN,EAAQH,CAAG,EAAI,MAAM,QAAQU,CAAY,EACrC,CAAC,GAAGA,CAAY,EAChB,CAAE,GAAGA,CAAa,EAGxBP,EAAUA,EAAQH,CAAG,CACvB,CAEA,OAAAG,EAAQT,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAIW,EAE1BC,CACT,CAEO,SAASK,EACdT,EACAU,EACK,CACL,GAAIA,EAAQ,SAAW,EACrB,OAAOV,EAGT,IAAMW,EAAcD,EAAQ,OAAO,CAAC,CAACnB,CAAI,IAAM,CAC7C,IAAMC,EAAOE,EAAYH,CAAI,EAC7B,MAAO,CAACK,EAAsBJ,CAAI,CACpC,CAAC,EAED,GAAImB,EAAY,SAAW,EACzB,OAAOX,EAGT,IAAMY,EAAO,MAAM,QAAQZ,CAAG,EAAI,CAAC,GAAGA,CAAG,EAAI,CAAE,GAAGA,CAAI,EAChDa,EAAc,IAAI,QACpBD,GAAQ,OAAOA,GAAS,UAC1BC,EAAY,IAAID,CAAI,EAGtB,OAAW,CAACrB,EAAMY,CAAK,IAAKQ,EAAa,CACvC,IAAMnB,EAAOE,EAAYH,CAAI,EACzBU,EAAeW,EAEnB,QAASf,EAAI,EAAGA,EAAIL,EAAK,OAAS,EAAGK,IAAK,CACxC,IAAMC,EAAMN,EAAKK,CAAC,EACZQ,EAAUb,EAAKK,EAAI,CAAC,EAEpBS,EAAe,OAAOD,CAAO,EAC7BE,EACJ,OAAO,UAAUD,CAAY,GAAK,OAAOA,CAAY,IAAMD,EAEvDG,EAAeP,EAAQH,CAAG,EAE5BU,GAAiB,MACnBP,EAAQH,CAAG,EAAIS,EAAgB,CAAC,EAAI,CAAC,EACrCM,EAAY,IAAIZ,EAAQH,CAAG,CAAC,GACnB,OAAOU,GAAiB,SAC5BK,EAAY,IAAIL,CAAY,IAC/BP,EAAQH,CAAG,EAAI,MAAM,QAAQU,CAAY,EACrC,CAAC,GAAGA,CAAY,EAChB,CAAE,GAAGA,CAAa,EACtBK,EAAY,IAAIZ,EAAQH,CAAG,CAAC,IAG9BG,EAAQH,CAAG,EAAIS,EAAgB,CAAC,EAAI,CAAC,EACrCM,EAAY,IAAIZ,EAAQH,CAAG,CAAC,GAG9BG,EAAUA,EAAQH,CAAG,CACvB,CAEAG,EAAQT,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAIW,CACnC,CAEA,OAAOS,CACT,CA6CO,SAASE,EAAgBC,EAAUC,EAAmC,CAC3E,GAAIA,EAAM,SAAW,EACnB,OAAOD,EAGT,IAAME,EAAYD,EAAM,OAAQE,GAAS,CACvC,GAAI,CAACA,EAAM,MAAO,GAClB,IAAMC,EAAOC,EAAYF,CAAI,EAC7B,MAAO,CAACG,EAAsBF,CAAI,CACpC,CAAC,EAED,GAAIF,EAAU,SAAW,EACvB,OAAOF,EAGT,IAAMO,EAAO,MAAM,QAAQP,CAAG,EAAI,CAAC,GAAGA,CAAG,EAAI,CAAE,GAAGA,CAAI,EAChDQ,EAAc,IAAI,QACpBD,GAAQ,OAAOA,GAAS,UAC1BC,EAAY,IAAID,CAAI,EAGtB,QAAWJ,KAAQD,EAAW,CAC5B,GAAI,CAACC,EACH,OAAO,MAAM,QAAQH,CAAG,EAAI,CAAC,EAAI,CAAC,EAGpC,IAAMI,EAAOC,EAAYF,CAAI,EAEzBM,EAAeF,EAEnB,QAASG,EAAI,EAAGA,EAAIN,EAAK,OAAS,EAAGM,IAAK,CACxC,IAAMC,EAAMP,EAAKM,CAAC,EACZE,EAAeH,IAAUE,CAAG,EAElC,GAAIC,GAAiB,KAAoC,CACvDH,EAAU,OACV,KACF,CAEA,GAAI,OAAOG,GAAiB,SACrBJ,EAAY,IAAII,CAAY,IAC/BH,EAAQE,CAAG,EAAI,MAAM,QAAQC,CAAY,EACrC,CAAC,GAAGA,CAAY,EAChB,CAAE,GAAGA,CAAa,EACtBJ,EAAY,IAAIC,EAAQE,CAAG,CAAC,OAEzB,CACLF,EAAU,OACV,KACF,CAEAA,EAAUA,EAAQE,CAAG,CACvB,CAEA,GAAI,CAACF,EACH,SAGF,IAAMI,EAAUT,EAAKA,EAAK,OAAS,CAAC,EAEpC,GAAI,MAAM,QAAQK,CAAO,EAAG,CAC1B,IAAMK,EAAa,OAAOD,CAAO,EAE7B,OAAO,UAAUC,CAAU,GAAKA,GAAc,GAChDL,EAAQ,OAAOK,EAAY,CAAC,CAEhC,MAAWL,GAAW,OAAOA,GAAY,UACvC,OAAOA,EAAQI,CAAO,CAE1B,CAEA,OAAON,CACT,CC5QO,SAASQ,EACdC,EACAC,EACqB,CACrB,IAAMC,EAA8B,CAAC,EAC/BC,EAAgB,GAAGF,CAAM,IAE/B,QAAWG,KAAOJ,EACZI,IAAQH,GAAU,CAACG,EAAI,WAAWD,CAAa,IACjDD,EAAOE,CAAG,EAAIJ,EAAII,CAAG,GAGzB,OAAOF,CACT,CA0DO,SAASG,EACdC,EAKAC,EACAC,EACA,CACA,IAAMC,EAAkC,CAAC,EACnCC,EAAmC,CAAC,EACpCC,EAAwC,CAAC,EAEzCC,EAAS,GAAGL,CAAI,IAEtB,QAAWM,KAAO,OAAO,KAAKP,EAAM,MAAM,EAAG,CAC3C,IAAMQ,EAAUC,EAAiBF,EAAKD,EAAQJ,CAAU,EACpDM,IAASL,EAAWK,CAAO,EAAIR,EAAM,OAAOO,CAAG,EACrD,CAEA,QAAWA,KAAO,OAAO,KAAKP,EAAM,OAAO,EAAG,CAC5C,IAAMQ,EAAUC,EAAiBF,EAAKD,EAAQJ,CAAU,EACpDM,IAASJ,EAAYI,CAAO,EAAIR,EAAM,QAAQO,CAAG,EACvD,CAEA,QAAWA,KAAO,OAAO,KAAKP,EAAM,YAAY,EAAG,CACjD,IAAMQ,EAAUC,EAAiBF,EAAKD,EAAQJ,CAAU,EACpDM,IAASH,EAAiBG,CAAO,EAAIR,EAAM,aAAaO,CAAG,EACjE,CAEA,MAAO,CACL,OAAQJ,EACR,QAASC,EACT,aAAcC,CAChB,CACF,CAEO,SAASI,EACdF,EACAD,EACAJ,EACe,CACf,GAAI,CAACK,EAAI,WAAWD,CAAM,EACxB,OAAOC,EAIT,IAAMG,EADYH,EAAI,UAAUD,EAAO,MAAM,EACrB,MAAM,GAAG,EAC3BK,EAAa,OAAOD,EAAM,CAAC,CAAC,EAClC,GAAI,CAAC,OAAO,UAAUC,CAAU,GAAKA,EAAa,EAChD,OAAOJ,EAET,IAAMK,EAAUV,EAAWS,CAAU,EAErC,GAAIC,IAAY,KACd,OAAO,KAGT,IAAMC,EAAOH,EAAM,MAAM,CAAC,EAAE,KAAK,GAAG,EACpC,OAAOG,EAAO,GAAGP,CAAM,GAAGM,CAAO,IAAIC,CAAI,GAAK,GAAGP,CAAM,GAAGM,CAAO,EACnE,CCnIO,SAASE,EACdC,EACwC,CACxC,GAAI,OAAOA,GAAM,UAAYA,IAAM,MAAQ,MAAM,QAAQA,CAAC,EAAG,MAAO,GAEpE,IAAMC,EAAOD,EAA8B,QAAUA,EACrD,GAAI,OAAOC,GAAQ,UAAYA,IAAQ,MAAQ,MAAM,QAAQA,CAAG,EAC9D,MAAO,GAGT,IAAMC,EAAU,OAAO,QAAQD,CAA8B,EAC7D,OAAIC,EAAQ,SAAW,EACd,GAGFA,EAAQ,MACb,CAAC,CAACC,EAAKC,CAAC,IACND,EAAI,OAAS,IACZ,OAAOC,GAAM,UACX,MAAM,QAAQA,CAAC,GAAKA,EAAE,MAAOC,GAAM,OAAOA,GAAM,QAAQ,EAC/D,CACF,CAEO,SAASC,EACdN,EACmC,CACnC,OAAKD,EAAuBC,CAAC,EAEhBA,EAA8B,QAAUA,EAFd,CAAC,CAI1C","names":["cloneValue","obj","visited","clone","value","key","item","prototype","descriptor","deepClone","obj","cloneValue","deepMerge","target","source","activeMerges","sourceObject","base","key","sourceValue","baseValue","valueEqual","a","b","deepEqual","deepEqualInner","visitedPairs","visitedTargets","keysA","keysB","collectDirtyPaths","initial","prefix","result","activePairs","activeInitials","allKeys","k","p","nextActiveInitials","pathCache","BLOCKED_PATH_SEGMENTS","setPathCacheEntry","path","keys","oldestKey","getPathKeys","cached","hasBlockedPathSegment","i","key","getDeepValue","obj","current","setDeepValue","value","result","nextKey","nextAsNumber","isNextNumeric","currentValue","setDeepValues","updates","safeUpdates","root","clonedNodes","unsetDeepValues","obj","paths","safePaths","path","keys","getPathKeys","hasBlockedPathSegment","root","clonedNodes","current","i","key","currentValue","leafKey","arrayIndex","cleanPrefixedKeys","obj","prefix","newObj","prefixWithDot","key","reindexFieldArrayMeta","state","path","remapIndex","nextErrors","nextTouched","nextIsValidating","prefix","key","nextKey","remapIndexedPath","parts","currentIdx","nextIdx","rest","isValidationErrorShape","x","obj","entries","key","v","i","extractServerErrors"]}
|
package/dist/chunk-GDRNKTHO.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i,b as s,c as l}from"./chunk-GUU6EXFN.js";import{ValidationError as c}from"yup";var u=(a,n)=>async(p,e)=>{let t={};if(e?.scopeFields&&e.scopeFields.length>0)return await Promise.all(e.scopeFields.map(async o=>{try{await a.validateAt(o,p)}catch(r){r instanceof c&&r.path&&s(t,i(r.path),r.message)}})),t;try{return await a.validate(p,{abortEarly:n?.abortEarly??!1,stripUnknown:n?.stripUnknown??!1}),{}}catch(o){if(o instanceof c){for(let r of o.inner??[])r.path&&s(t,i(r.path),r.message);return l(t,e?.scopeFields)}return{}}};export{u as a};
|
|
2
|
-
//# sourceMappingURL=chunk-GDRNKTHO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolvers/yup.ts"],"sourcesContent":["import { ValidationError, Schema } from \"yup\";\nimport { BitErrors } from \"../core\";\nimport {\n filterErrorsByScope,\n normalizeErrorPath,\n setFirstError,\n} from \"./utils\";\nimport { BitResolverScopeOptions, BitYupResolverConfig } from \"./types\";\n\nexport const yupResolver = <T extends object>(\n schema: Schema<T>,\n config?: BitYupResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const errors: BitErrors<T> = {};\n\n if (options?.scopeFields && options.scopeFields.length > 0) {\n await Promise.all(\n options.scopeFields.map(async (field) => {\n try {\n await schema.validateAt(field, values);\n } catch (error: unknown) {\n if (error instanceof ValidationError && error.path) {\n setFirstError(\n errors,\n normalizeErrorPath(error.path),\n error.message,\n );\n }\n }\n }),\n );\n return errors;\n }\n\n try {\n await schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n return {};\n } catch (error: unknown) {\n if (error instanceof ValidationError) {\n for (const item of error.inner ?? []) {\n if (item.path) {\n setFirstError(errors, normalizeErrorPath(item.path), item.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n\n return {};\n }\n };\n};\n"],"mappings":"sDAAA,OAAS,mBAAAA,MAA+B,MASjC,IAAMC,EAAc,CACzBC,EACAC,IAEO,MACLC,EACAC,IAC0B,CAC1B,IAAMC,EAAuB,CAAC,EAE9B,GAAID,GAAS,aAAeA,EAAQ,YAAY,OAAS,EACvD,aAAM,QAAQ,IACZA,EAAQ,YAAY,IAAI,MAAOE,GAAU,CACvC,GAAI,CACF,MAAML,EAAO,WAAWK,EAAOH,CAAM,CACvC,OAASI,EAAgB,CACnBA,aAAiBC,GAAmBD,EAAM,MAC5CE,EACEJ,EACAK,EAAmBH,EAAM,IAAI,EAC7BA,EAAM,OACR,CAEJ,CACF,CAAC,CACH,EACOF,EAGT,GAAI,CACF,aAAMJ,EAAO,SAASE,EAAQ,CAC5B,WAAYD,GAAQ,YAAc,GAClC,aAAcA,GAAQ,cAAgB,EACxC,CAAC,EACM,CAAC,CACV,OAASK,EAAgB,CACvB,GAAIA,aAAiBC,EAAiB,CACpC,QAAWG,KAAQJ,EAAM,OAAS,CAAC,EAC7BI,EAAK,MACPF,EAAcJ,EAAQK,EAAmBC,EAAK,IAAI,EAAGA,EAAK,OAAO,EAIrE,OAAOC,EAAoBP,EAAQD,GAAS,WAAW,CACzD,CAEA,MAAO,CAAC,CACV,CACF","names":["ValidationError","yupResolver","schema","config","values","options","errors","field","error","ValidationError","setFirstError","normalizeErrorPath","item","filterErrorsByScope"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-GKNGJOB3.cjs","../src/core/utils/field-state-snapshot.ts"],"names":["createFieldStateSnapshot","nextState","lastSnapshot","areFieldSnapshotsEqual","snapshotA","snapshotB","deepEqual","areFieldStatesEqual"],"mappings":"AAAA,iIAAwC,SCqCxBA,CAAAA,CACdC,CAAAA,CASAC,CAAAA,CAC0B,CAE1B,OAAIA,CAAAA,EAEAA,CAAAA,CAAa,KAAA,GAAUD,CAAAA,CAAU,KAAA,EACjCC,CAAAA,CAAa,KAAA,GAAUD,CAAAA,CAAU,KAAA,EACjCC,CAAAA,CAAa,OAAA,GAAYD,CAAAA,CAAU,OAAA,EACnCC,CAAAA,CAAa,QAAA,GAAaD,CAAAA,CAAU,QAAA,EACpCC,CAAAA,CAAa,UAAA,GAAeD,CAAAA,CAAU,UAAA,EACtCC,CAAAA,CAAa,OAAA,GAAYD,CAAAA,CAAU,OAAA,EACnCC,CAAAA,CAAa,YAAA,GAAiBD,CAAAA,CAAU,YAAA,CAGjCC,CAAAA,CAIJ,CACL,KAAA,CAAOD,CAAAA,CAAU,KAAA,CACjB,KAAA,CAAOA,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAC1B,CACF,CAUO,SAASE,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OAAID,CAAAA,GAAcC,CAAAA,CAAkB,CAAA,CAAA,CAChC,CAACD,CAAAA,EAAa,CAACC,CAAAA,CAAkB,CAAA,CAAA,CAGnCC,iCAAAA,CAAUF,CAAU,KAAA,CAAOC,CAAAA,CAAU,KAAK,CAAA,EAC1CD,CAAAA,CAAU,KAAA,GAAUC,CAAAA,CAAU,KAAA,EAC9BD,CAAAA,CAAU,OAAA,GAAYC,CAAAA,CAAU,OAAA,EAChCD,CAAAA,CAAU,QAAA,GAAaC,CAAAA,CAAU,QAAA,EACjCD,CAAAA,CAAU,UAAA,GAAeC,CAAAA,CAAU,UAAA,EACnCD,CAAAA,CAAU,OAAA,GAAYC,CAAAA,CAAU,OAAA,EAChCD,CAAAA,CAAU,YAAA,GAAiBC,CAAAA,CAAU,YAEzC,CAEO,IAAME,CAAAA,CAAsBJ,CAAAA,CAAAA,4CAAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-GKNGJOB3.cjs","sourcesContent":[null,"/**\n * Field State Snapshot Utilities\n *\n * Shared utilities for creating and managing field state snapshots across frameworks\n * (React, Vue, Angular). Reduces code duplication while maintaining type safety.\n */\n\nimport type { BitFieldState } from \"../store/contracts/types\";\nimport { deepEqual } from \"../utils\";\n\n/**\n * Represents a stable snapshot of field state that can be compared for equality.\n */\nexport type BitFieldSnapshot<TValue = unknown> = BitFieldState<\n Record<string, unknown>,\n TValue\n>;\n\n/**\n * Creates or reuses a field state snapshot with shallow equality checking.\n *\n * This function prevents unnecessary re-renders in frameworks like React by\n * returning the same object reference when field state hasn't changed.\n *\n * @param nextState - The new field state from the store\n * @param lastSnapshot - The previous snapshot (can be null on first call)\n * @returns A stable snapshot object that can be used for equality comparison\n *\n * @example\n * ```typescript\n * const snapshot = createFieldStateSnapshot(store.getFieldState(\"email\"), lastSnapshot);\n * if (snapshot !== lastSnapshot) {\n * // Field state changed, update component\n * render(snapshot);\n * }\n * ```\n */\nexport function createFieldStateSnapshot<TValue = unknown>(\n nextState: {\n value: TValue;\n error: string | undefined;\n touched: boolean;\n isHidden: boolean;\n isRequired: boolean;\n isDirty: boolean;\n isValidating: boolean;\n },\n lastSnapshot: BitFieldSnapshot<TValue> | null,\n): BitFieldSnapshot<TValue> {\n // Use shallow equality: return cached if all fields are equal by reference\n if (lastSnapshot) {\n const shallowEqual =\n lastSnapshot.value === nextState.value &&\n lastSnapshot.error === nextState.error &&\n lastSnapshot.touched === nextState.touched &&\n lastSnapshot.isHidden === nextState.isHidden &&\n lastSnapshot.isRequired === nextState.isRequired &&\n lastSnapshot.isDirty === nextState.isDirty &&\n lastSnapshot.isValidating === nextState.isValidating;\n\n if (shallowEqual) {\n return lastSnapshot;\n }\n }\n\n return {\n value: nextState.value,\n error: nextState.error,\n touched: nextState.touched,\n isHidden: nextState.isHidden,\n isRequired: nextState.isRequired,\n isDirty: nextState.isDirty,\n isValidating: nextState.isValidating,\n };\n}\n\n/**\n * Deep comparison utility for field state snapshots.\n * Useful for scenarios where shallow comparison isn't sufficient (e.g., object/array values).\n *\n * @param snapshotA - First snapshot\n * @param snapshotB - Second snapshot\n * @returns true if snapshots are deeply equal\n */\nexport function areFieldSnapshotsEqual(\n snapshotA: BitFieldSnapshot | null | undefined,\n snapshotB: BitFieldSnapshot | null | undefined,\n): boolean {\n if (snapshotA === snapshotB) return true;\n if (!snapshotA || !snapshotB) return false;\n\n return (\n deepEqual(snapshotA.value, snapshotB.value) &&\n snapshotA.error === snapshotB.error &&\n snapshotA.touched === snapshotB.touched &&\n snapshotA.isHidden === snapshotB.isHidden &&\n snapshotA.isRequired === snapshotB.isRequired &&\n snapshotA.isDirty === snapshotB.isDirty &&\n snapshotA.isValidating === snapshotB.isValidating\n );\n}\n\nexport const areFieldStatesEqual = areFieldSnapshotsEqual;\n"]}
|
package/dist/chunk-GSZTHF7Z.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as D}from"./chunk-LIHWJJIM.js";import{a as j,b as U,d as V,e as I,g as q,i as L,j as W,k as O}from"./chunk-SYEUXL2E.js";import{b as x}from"./chunk-UIKO6GGW.js";import{a as C}from"./chunk-HE6EQZTH.js";import{c as v,f as A}from"./chunk-G3EHXKOS.js";import{createContext as J,useContext as K}from"react";import{jsx as Q}from"react/jsx-runtime";var _=J(null),bt=({store:t,children:e})=>Q(_.Provider,{value:D(t),children:e}),m=()=>{let t=K(_);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};import{useCallback as d,useMemo as w,useRef as X,useState as $,useSyncExternalStore as Y}from"react";function vt(){let t=m(),[e,r]=$(null),[i,o]=$(null),s=X(null),u=d(p=>U(t,p),[t]),a=d(()=>{let p=j(t);return s.current&&s.current.isValid===p.isValid&&s.current.isDirty===p.isDirty&&s.current.isSubmitting===p.isSubmitting?s.current:(s.current=p,p)},[t]),n=Y(u,a,a),S=w(()=>L(t,{clearSubmissionState:()=>{r(null),o(null)},setSubmissionResult:p=>{o(p)},setSubmissionError:p=>{r(p)}}),[t]),{controller:c,actions:P}=S,F=d(c.submit,[c]),g=d(c.onSubmit,[c]),y=d(c.reset,[c]),l=d(c.getValues,[c]),f=d(c.getErrors,[c]),b=d(c.getTouched,[c]),h=d(c.getDirtyValues,[c]),k=w(()=>({...n,submitError:e,lastResponse:i}),[n,e,i]);return w(()=>({meta:k,getValues:l,getErrors:f,getTouched:b,getDirtyValues:h,submit:F,onSubmit:g,reset:y,...P}),[k,l,f,b,h,F,g,y,P])}import{useCallback as z,useEffect as Z,useMemo as M,useRef as N,useSyncExternalStore as tt}from"react";function wt(t){let e=m(),r=M(()=>q(e,t),[e,t]),i=N(null),o=z(()=>{let n=r.readItems();return i.current&&v(i.current,n)?i.current:(i.current=n,n)},[r]),s=z(n=>e.observe.subscribePath(t,()=>n()),[e,t]),u=tt(s,o,o),a=M(()=>r.getFields(u),[r,u]);return Z(()=>()=>{O(e,`${t}.`)},[e,t]),M(()=>({fields:a,length:u.length,append:r.append,prepend:r.prepend,insert:r.insert,remove:r.remove,move:r.move,swap:r.swap,replace:r.replace,clear:r.clear}),[a,u.length,r])}import{useCallback as R,useMemo as et,useRef as rt,useSyncExternalStore as ot}from"react";function Dt(t){let e=m(),r=rt(null),i=R(()=>{let n=e.read.getScopeStatus(t);return r.current&&x(r.current,n)?r.current:(r.current=n,n)},[e,t]),o=R(n=>e.observe.subscribeScopeStatus(t,()=>n()),[e,t]),s=ot(o,i,i),u=R(async()=>{let n=await e.feature.validate({scope:t}),S=e.read.getScopeErrors(t);return{valid:n,errors:S}},[e,t]),a=R(()=>e.read.getScopeErrors(t),[e,t]);return et(()=>({scopeName:t,status:s,errors:s.errors,validate:u,getErrors:a,isValid:!s.hasErrors,isDirty:s.isDirty}),[t,s,u,a])}import{useCallback as B,useMemo as st,useRef as nt,useState as it,useSyncExternalStore as at}from"react";function Lt(t){let e=m(),[r,i]=it(0),o=t[r]??"",s=nt(null),u=B(()=>{let l=e.read.getScopeStatus(o);return s.current&&x(s.current,l)?s.current:(s.current=l,l)},[e,o]),a=at(B(l=>e.observe.subscribeScopeStatus(o,()=>l()),[e,o]),u,u),n=B(async()=>{let l=await e.feature.validate({scope:o}),f=e.read.getScopeErrors(o);return{valid:l,errors:f}},[e,o]),S=B(()=>e.read.getScopeErrors(o),[e,o]),c=B(async()=>{let l=e.read.getScopeFields(o);if(e.feature.hasValidationsInProgress(l))return!1;let f=await e.feature.validate({scope:o});if(f)i(b=>Math.min(b+1,t.length-1));else{let b=e.read.getScopeErrors(o),h=Object.keys(b);h.length>0&&e.write.markFieldsTouched(h)}return f},[e,o,t.length]),P=B(()=>{i(l=>Math.max(l-1,0))},[]),F=B(l=>{i(Math.max(0,Math.min(l-1,t.length-1)))},[t.length]),g=r===0,y=r>=t.length-1;return st(()=>({step:r+1,stepIndex:r,scope:o,next:c,prev:P,goTo:F,isFirst:g,isLast:y,status:a,errors:a.errors,isValid:!a.hasErrors,isDirty:a.isDirty,validate:n,getErrors:S}),[r,o,c,P,F,g,y,a,n,S])}import{useCallback as G,useSyncExternalStore as ut,useRef as ct}from"react";function Ht(t){let e=m(),r=ct(null),i=G(()=>{let s=A(e.read.getState().values,t);return r.current!==null&&v(r.current,s)?r.current:(r.current=s,s)},[e,t]),o=G(s=>e.observe.subscribePath(t,()=>s()),[e,t]);return ut(o,i,i)}import{useCallback as T,useMemo as H,useSyncExternalStore as lt}from"react";function Yt(){let t=m(),e=T(a=>I(t,a),[t]),r=lt(e,()=>V(t),()=>V(t)),i=T(async()=>t.feature.restorePersisted(),[t]),o=T(async()=>{await t.feature.forceSave()},[t]),s=T(async()=>{await t.feature.clearPersisted()},[t]),u=H(()=>({isSaving:r.isSaving,isRestoring:r.isRestoring,error:r.error}),[r]);return H(()=>({restore:i,save:o,clear:s,meta:u}),[i,o,s,u])}import{useCallback as E,useEffect as mt,useRef as pt,useSyncExternalStore as St}from"react";function ne(t){let e=m(),r=pt(null);mt(()=>()=>W(e,t),[e,t]);let i=E(()=>{let n=e.read.getFieldState(t),S=C(n,r.current);return r.current=S,S},[e,t]),o=E(n=>e.observe.subscribeFieldState(t,()=>n()),[e,t]),s=St(o,i,i),u=E(n=>e.write.setField(t,n),[e,t]),a=E(()=>e.write.blurField(t),[e,t]);return{fieldState:s,setValue:u,setBlur:a,store:e}}export{bt as a,m as b,vt as c,ne as d,wt as e,Dt as f,Lt as g,Ht as h,Yt as i};
|
|
2
|
-
//# sourceMappingURL=chunk-GSZTHF7Z.js.map
|