attaform 0.21.2 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -10
- package/dist/chunks/dev-key-collision-warnings.cjs +0 -33
- package/dist/chunks/dev-key-collision-warnings.cjs.map +1 -1
- package/dist/chunks/dev-key-collision-warnings.mjs +1 -33
- package/dist/chunks/dev-key-collision-warnings.mjs.map +1 -1
- package/dist/chunks/devtools.cjs +3 -5
- package/dist/chunks/devtools.cjs.map +1 -1
- package/dist/chunks/devtools.mjs +3 -5
- package/dist/chunks/devtools.mjs.map +1 -1
- package/dist/chunks/fingerprint2.cjs +1 -1
- package/dist/chunks/fingerprint2.mjs +1 -1
- package/dist/index.cjs +3 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -41
- package/dist/index.d.mts +6 -41
- package/dist/index.d.ts +6 -41
- package/dist/index.mjs +5 -5
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.mts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/runtime/components/AttaformDevtoolsPanel.vue +3 -11
- package/dist/runtime/plugins/attaform.cjs +2 -2
- package/dist/runtime/plugins/attaform.mjs +2 -2
- package/dist/shared/{attaform.BGf_J22U.d.ts → attaform.BGMRvckW.d.ts} +11 -70
- package/dist/shared/{attaform.ory-3WhV.d.mts → attaform.BJnNK75Y.d.cts} +41 -491
- package/dist/shared/{attaform.ory-3WhV.d.ts → attaform.BJnNK75Y.d.mts} +41 -491
- package/dist/shared/{attaform.ory-3WhV.d.cts → attaform.BJnNK75Y.d.ts} +41 -491
- package/dist/shared/{attaform.DP-u7_tk.mjs → attaform.BhI9Icek.mjs} +17 -291
- package/dist/shared/attaform.BhI9Icek.mjs.map +1 -0
- package/dist/shared/{attaform.BwLp9KM7.cjs → attaform.BibT5AS_.cjs} +2 -2
- package/dist/shared/{attaform.BwLp9KM7.cjs.map → attaform.BibT5AS_.cjs.map} +1 -1
- package/dist/shared/{attaform.DkA5J8NW.d.cts → attaform.CO0e7YVY.d.cts} +1 -46
- package/dist/shared/{attaform.DkA5J8NW.d.ts → attaform.CO0e7YVY.d.mts} +1 -46
- package/dist/shared/{attaform.DkA5J8NW.d.mts → attaform.CO0e7YVY.d.ts} +1 -46
- package/dist/shared/{attaform.BwrowMp2.cjs → attaform.CaYj3ZfY.cjs} +3 -3
- package/dist/shared/{attaform.BwrowMp2.cjs.map → attaform.CaYj3ZfY.cjs.map} +1 -1
- package/dist/shared/{attaform.BBDIKtKY.cjs → attaform.Cmb_LCie.cjs} +4 -4
- package/dist/shared/{attaform.BVeLgfEh.mjs.map → attaform.Cmb_LCie.cjs.map} +1 -1
- package/dist/shared/{attaform.CTheKoTc.mjs → attaform.CtJOd7ox.mjs} +446 -525
- package/dist/shared/attaform.CtJOd7ox.mjs.map +1 -0
- package/dist/shared/{attaform.CrD73S4m.mjs → attaform.CzVta5o2.mjs} +116 -47
- package/dist/shared/attaform.CzVta5o2.mjs.map +1 -0
- package/dist/shared/{attaform.CnEl--PF.d.mts → attaform.D52oJiYC.d.cts} +1 -1
- package/dist/shared/{attaform.BoY6RZUl.d.cts → attaform.DCkSNnPr.d.mts} +1 -1
- package/dist/shared/{attaform.B5LNzqQh.cjs → attaform.Db4E4IW6.cjs} +18 -297
- package/dist/shared/attaform.Db4E4IW6.cjs.map +1 -0
- package/dist/shared/{attaform.CcnF1AKJ.cjs → attaform.DbyTD8N2.cjs} +116 -47
- package/dist/shared/attaform.DbyTD8N2.cjs.map +1 -0
- package/dist/shared/{attaform.D6GYGshL.mjs → attaform.Dd1Kmmaj.mjs} +3 -3
- package/dist/shared/{attaform.D6GYGshL.mjs.map → attaform.Dd1Kmmaj.mjs.map} +1 -1
- package/dist/shared/{attaform.BCcrLApm.d.mts → attaform.DrY8srOp.d.mts} +11 -70
- package/dist/shared/{attaform.D2ZuIOCf.cjs → attaform.DsQkXE3o.cjs} +445 -534
- package/dist/shared/attaform.DsQkXE3o.cjs.map +1 -0
- package/dist/shared/{attaform.BkjJfMvJ.d.cts → attaform.DuPneYR0.d.cts} +11 -70
- package/dist/shared/{attaform.C41gjp-a.mjs → attaform.Dx9-QQE2.mjs} +2 -2
- package/dist/shared/{attaform.C41gjp-a.mjs.map → attaform.Dx9-QQE2.mjs.map} +1 -1
- package/dist/shared/{attaform.BYgioWLF.d.ts → attaform.WEwfXcHq.d.ts} +1 -1
- package/dist/shared/{attaform.BVeLgfEh.mjs → attaform.alpG7rT7.mjs} +4 -4
- package/dist/shared/{attaform.BBDIKtKY.cjs.map → attaform.alpG7rT7.mjs.map} +1 -1
- package/dist/zod-v3.cjs +2 -2
- package/dist/zod-v3.d.cts +3 -3
- package/dist/zod-v3.d.mts +3 -3
- package/dist/zod-v3.d.ts +3 -3
- package/dist/zod-v3.mjs +2 -2
- package/dist/zod-v4.cjs +2 -2
- package/dist/zod-v4.d.cts +5 -5
- package/dist/zod-v4.d.mts +5 -5
- package/dist/zod-v4.d.ts +5 -5
- package/dist/zod-v4.mjs +2 -2
- package/dist/zod.cjs +5 -5
- package/dist/zod.d.cts +5 -5
- package/dist/zod.d.mts +5 -5
- package/dist/zod.d.ts +5 -5
- package/dist/zod.mjs +5 -5
- package/package.json +2 -2
- package/dist/chunks/indexeddb.cjs +0 -119
- package/dist/chunks/indexeddb.cjs.map +0 -1
- package/dist/chunks/indexeddb.mjs +0 -117
- package/dist/chunks/indexeddb.mjs.map +0 -1
- package/dist/chunks/local-storage.cjs +0 -58
- package/dist/chunks/local-storage.cjs.map +0 -1
- package/dist/chunks/local-storage.mjs +0 -56
- package/dist/chunks/local-storage.mjs.map +0 -1
- package/dist/chunks/multi-tab-sync.cjs +0 -367
- package/dist/chunks/multi-tab-sync.cjs.map +0 -1
- package/dist/chunks/multi-tab-sync.mjs +0 -364
- package/dist/chunks/multi-tab-sync.mjs.map +0 -1
- package/dist/chunks/session-storage.cjs +0 -58
- package/dist/chunks/session-storage.cjs.map +0 -1
- package/dist/chunks/session-storage.mjs +0 -56
- package/dist/chunks/session-storage.mjs.map +0 -1
- package/dist/chunks/wire-persistence.cjs +0 -396
- package/dist/chunks/wire-persistence.cjs.map +0 -1
- package/dist/chunks/wire-persistence.mjs +0 -394
- package/dist/chunks/wire-persistence.mjs.map +0 -1
- package/dist/shared/attaform.B5LNzqQh.cjs.map +0 -1
- package/dist/shared/attaform.CTheKoTc.mjs.map +0 -1
- package/dist/shared/attaform.CcnF1AKJ.cjs.map +0 -1
- package/dist/shared/attaform.CrD73S4m.mjs.map +0 -1
- package/dist/shared/attaform.D2ZuIOCf.cjs.map +0 -1
- package/dist/shared/attaform.DP-u7_tk.mjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Plugin, App } from 'vue';
|
|
2
|
-
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.
|
|
3
|
-
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.
|
|
4
|
-
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.
|
|
5
|
-
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta,
|
|
6
|
-
export { A as
|
|
2
|
+
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.DuPneYR0.cjs';
|
|
3
|
+
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.DuPneYR0.cjs';
|
|
4
|
+
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.BJnNK75Y.cjs';
|
|
5
|
+
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta, H as HandleSubmit, B as HistoryConfig, I as IsTuple, J as IsUnion, K as JoinSegments, L as KeyofUnion, M as LiftedValueShape, N as MetaTrackerValue, O as NestedReadType, P as NestedType, Q as OnError, S as OnInvalidSubmitPolicy, T as OnSubmit, W as PartialFlatPath, X as Path, Y as PathKey, Z as PendingValidationStatus, _ as Primitive, $ as ROOT_PATH, a0 as ROOT_PATH_KEY, a1 as ReactiveValidationStatus, a2 as RegisterDirective, a3 as RegisterFlatPath, a4 as RegisterOptions, a5 as RegisterSelectModifier, a6 as RegisterTextModifier, a7 as RegisterTransform, a8 as Segment, a9 as SetValueCallback, aa as SetValuePayload, ab as SettledValidationStatus, ac as SlimPrimitiveKind, ad as SlimRuntimeOf, ae as SubmitHandler, af as Unset, ag as ValidateOn, ah as ValidateOnConfig, ai as ValidationResponse, aj as ValidationResponseWithoutValue, ak as ValueOfUnion, al as WriteMeta, am as WriteShape, an as canonicalizePath, ao as isPathPrefix, ap as isUnset, aq as parseDottedPath, ar as unset } from './shared/attaform.BJnNK75Y.cjs';
|
|
6
|
+
export { A as AttaformError, I as InvalidPathError, a as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, b as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.CO0e7YVY.cjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Options for `createAttaform()`.
|
|
@@ -333,41 +333,6 @@ declare function makeDefaultDisplayState({ showDelay, minVisible, }: DisplayTimi
|
|
|
333
333
|
*/
|
|
334
334
|
declare const defaultDisplayState: GetDisplayState;
|
|
335
335
|
|
|
336
|
-
/**
|
|
337
|
-
* The library's built-in conservative set of identifier name stems that
|
|
338
|
-
* flag a path segment as "this looks like data the consumer almost
|
|
339
|
-
* certainly does not want serialised to client-side storage or
|
|
340
|
-
* broadcast across tabs."
|
|
341
|
-
*
|
|
342
|
-
* Each entry is a NAME STEM, not a regex. Matching is case-insensitive
|
|
343
|
-
* and tolerant of separator variants — `'card_number'` matches the
|
|
344
|
-
* segments `'card_number'`, `'card-number'`, `'cardNumber'`, and
|
|
345
|
-
* `'cardnumber'`. Short stems (compact length ≤ 5) get word-boundary
|
|
346
|
-
* anchors to avoid common false positives — `'pin'` matches `'pin'`
|
|
347
|
-
* and `'user_pin'` but not `'pinned'`; `'token'` matches `'token'` but
|
|
348
|
-
* not `'tokenizer'`. Longer stems match anywhere (`'password'` matches
|
|
349
|
-
* `'password'`, `'passwords'`, `'userPassword'`).
|
|
350
|
-
*
|
|
351
|
-
* Consumers extend or replace via per-form or global config:
|
|
352
|
-
*
|
|
353
|
-
* ```ts
|
|
354
|
-
* createAttaform({
|
|
355
|
-
* defaults: { sensitiveNames: [...DEFAULT_SENSITIVE_NAMES, 'mrn', 'tax_id'] }
|
|
356
|
-
* })
|
|
357
|
-
* ```
|
|
358
|
-
*
|
|
359
|
-
* The same resolved predicate gates persistence writes and multi-tab
|
|
360
|
-
* sync broadcasts — one source of truth for "what counts as sensitive"
|
|
361
|
-
* across those surfaces. (DevTools renders raw values by design.)
|
|
362
|
-
*
|
|
363
|
-
* **Non-goals.** This is not a soundness guarantee. Adversarial paths
|
|
364
|
-
* (`'sensitive_data'`, `'CCV'` instead of `'CVV'`) can slip through.
|
|
365
|
-
* The intent is a code-review trigger for the common-case footgun
|
|
366
|
-
* plus a defense-in-depth filter on the cross-tab and DevTools
|
|
367
|
-
* surfaces.
|
|
368
|
-
*/
|
|
369
|
-
declare const DEFAULT_SENSITIVE_NAMES: readonly string[];
|
|
370
|
-
|
|
371
336
|
/**
|
|
372
337
|
* Result of `parseApiErrors`. Branch on `ok` to handle the two cases:
|
|
373
338
|
*
|
|
@@ -494,5 +459,5 @@ declare const PARSE_API_ERRORS_DEFAULTS: {
|
|
|
494
459
|
*/
|
|
495
460
|
declare function parseApiErrors(payload: ApiErrorEnvelope | ApiErrorDetails | null | undefined | unknown, options: ParseApiErrorsOptions): ParseApiErrorsResult;
|
|
496
461
|
|
|
497
|
-
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry,
|
|
462
|
+
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry, DEFAULT_TIMINGS, DEVTOOLS_WINDOW_KEY, DefaultValuesInput, FormKey, GenericForm, GetDisplayState, PARSE_API_ERRORS_DEFAULTS, RegisterValue, SerializedFormData, UseFormConfiguration, UseFormReturnType, ValidationError, assignKey, createAttaform, defaultDisplayState, escapeForInlineScript, hydrateAttaformState, isRegisterValue, makeDefaultDisplayState, parseApiErrors, renderAttaformState, useAbstractForm as useForm, vRegister };
|
|
498
463
|
export type { AttaformDevtoolsBridge, AttaformPluginOptions, DisplayTimings, ParseApiErrorsOptions, ParseApiErrorsResult, SerializedAttaformState };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Plugin, App } from 'vue';
|
|
2
|
-
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.
|
|
3
|
-
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.
|
|
4
|
-
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.
|
|
5
|
-
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta,
|
|
6
|
-
export { A as
|
|
2
|
+
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.DrY8srOp.mjs';
|
|
3
|
+
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.DrY8srOp.mjs';
|
|
4
|
+
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.BJnNK75Y.mjs';
|
|
5
|
+
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta, H as HandleSubmit, B as HistoryConfig, I as IsTuple, J as IsUnion, K as JoinSegments, L as KeyofUnion, M as LiftedValueShape, N as MetaTrackerValue, O as NestedReadType, P as NestedType, Q as OnError, S as OnInvalidSubmitPolicy, T as OnSubmit, W as PartialFlatPath, X as Path, Y as PathKey, Z as PendingValidationStatus, _ as Primitive, $ as ROOT_PATH, a0 as ROOT_PATH_KEY, a1 as ReactiveValidationStatus, a2 as RegisterDirective, a3 as RegisterFlatPath, a4 as RegisterOptions, a5 as RegisterSelectModifier, a6 as RegisterTextModifier, a7 as RegisterTransform, a8 as Segment, a9 as SetValueCallback, aa as SetValuePayload, ab as SettledValidationStatus, ac as SlimPrimitiveKind, ad as SlimRuntimeOf, ae as SubmitHandler, af as Unset, ag as ValidateOn, ah as ValidateOnConfig, ai as ValidationResponse, aj as ValidationResponseWithoutValue, ak as ValueOfUnion, al as WriteMeta, am as WriteShape, an as canonicalizePath, ao as isPathPrefix, ap as isUnset, aq as parseDottedPath, ar as unset } from './shared/attaform.BJnNK75Y.mjs';
|
|
6
|
+
export { A as AttaformError, I as InvalidPathError, a as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, b as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.CO0e7YVY.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Options for `createAttaform()`.
|
|
@@ -333,41 +333,6 @@ declare function makeDefaultDisplayState({ showDelay, minVisible, }: DisplayTimi
|
|
|
333
333
|
*/
|
|
334
334
|
declare const defaultDisplayState: GetDisplayState;
|
|
335
335
|
|
|
336
|
-
/**
|
|
337
|
-
* The library's built-in conservative set of identifier name stems that
|
|
338
|
-
* flag a path segment as "this looks like data the consumer almost
|
|
339
|
-
* certainly does not want serialised to client-side storage or
|
|
340
|
-
* broadcast across tabs."
|
|
341
|
-
*
|
|
342
|
-
* Each entry is a NAME STEM, not a regex. Matching is case-insensitive
|
|
343
|
-
* and tolerant of separator variants — `'card_number'` matches the
|
|
344
|
-
* segments `'card_number'`, `'card-number'`, `'cardNumber'`, and
|
|
345
|
-
* `'cardnumber'`. Short stems (compact length ≤ 5) get word-boundary
|
|
346
|
-
* anchors to avoid common false positives — `'pin'` matches `'pin'`
|
|
347
|
-
* and `'user_pin'` but not `'pinned'`; `'token'` matches `'token'` but
|
|
348
|
-
* not `'tokenizer'`. Longer stems match anywhere (`'password'` matches
|
|
349
|
-
* `'password'`, `'passwords'`, `'userPassword'`).
|
|
350
|
-
*
|
|
351
|
-
* Consumers extend or replace via per-form or global config:
|
|
352
|
-
*
|
|
353
|
-
* ```ts
|
|
354
|
-
* createAttaform({
|
|
355
|
-
* defaults: { sensitiveNames: [...DEFAULT_SENSITIVE_NAMES, 'mrn', 'tax_id'] }
|
|
356
|
-
* })
|
|
357
|
-
* ```
|
|
358
|
-
*
|
|
359
|
-
* The same resolved predicate gates persistence writes and multi-tab
|
|
360
|
-
* sync broadcasts — one source of truth for "what counts as sensitive"
|
|
361
|
-
* across those surfaces. (DevTools renders raw values by design.)
|
|
362
|
-
*
|
|
363
|
-
* **Non-goals.** This is not a soundness guarantee. Adversarial paths
|
|
364
|
-
* (`'sensitive_data'`, `'CCV'` instead of `'CVV'`) can slip through.
|
|
365
|
-
* The intent is a code-review trigger for the common-case footgun
|
|
366
|
-
* plus a defense-in-depth filter on the cross-tab and DevTools
|
|
367
|
-
* surfaces.
|
|
368
|
-
*/
|
|
369
|
-
declare const DEFAULT_SENSITIVE_NAMES: readonly string[];
|
|
370
|
-
|
|
371
336
|
/**
|
|
372
337
|
* Result of `parseApiErrors`. Branch on `ok` to handle the two cases:
|
|
373
338
|
*
|
|
@@ -494,5 +459,5 @@ declare const PARSE_API_ERRORS_DEFAULTS: {
|
|
|
494
459
|
*/
|
|
495
460
|
declare function parseApiErrors(payload: ApiErrorEnvelope | ApiErrorDetails | null | undefined | unknown, options: ParseApiErrorsOptions): ParseApiErrorsResult;
|
|
496
461
|
|
|
497
|
-
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry,
|
|
462
|
+
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry, DEFAULT_TIMINGS, DEVTOOLS_WINDOW_KEY, DefaultValuesInput, FormKey, GenericForm, GetDisplayState, PARSE_API_ERRORS_DEFAULTS, RegisterValue, SerializedFormData, UseFormConfiguration, UseFormReturnType, ValidationError, assignKey, createAttaform, defaultDisplayState, escapeForInlineScript, hydrateAttaformState, isRegisterValue, makeDefaultDisplayState, parseApiErrors, renderAttaformState, useAbstractForm as useForm, vRegister };
|
|
498
463
|
export type { AttaformDevtoolsBridge, AttaformPluginOptions, DisplayTimings, ParseApiErrorsOptions, ParseApiErrorsResult, SerializedAttaformState };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Plugin, App } from 'vue';
|
|
2
|
-
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.
|
|
3
|
-
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.
|
|
4
|
-
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.
|
|
5
|
-
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta,
|
|
6
|
-
export { A as
|
|
2
|
+
import { S as SSRDetectOptions, a as SerializedFormData, A as AttaformRegistry } from './shared/attaform.BGMRvckW.js';
|
|
3
|
+
export { b as AnyForm, c as AttaformErrorCode, C as CompiledStep, F as FormStatus, I as InjectWizardInput, L as LazyMarker, d as StepSlot, U as UseRegisterReturn, e as UseWizardReturnType, W as WizardAggregateError, f as WizardCtx, g as WizardCtxForm, h as WizardOnError, i as WizardOnSubmit, j as WizardOptions, k as WizardPersistFn, l as WizardRestoreFn, m as WizardRestoreState, n as WizardStatusesProxy, o as WizardSubmitContext, p as createRegistry, q as defaultCoercionRules, r as defineCoercion, s as getRegistryFromApp, t as injectForm, u as injectWizard, v as kAttaformRegistry, w as lazy, x as useRegister, y as useRegistry, z as useWizard } from './shared/attaform.BGMRvckW.js';
|
|
4
|
+
import { A as AttaformDefaults, F as FormKey, G as GenericForm, U as UseFormConfiguration, a as AbstractSchema, D as DefaultValuesInput, b as UseFormReturnType, R as RegisterModelDynamicCustomDirective, c as RegisterValue, d as GetDisplayState, V as ValidationError, e as ApiErrorEnvelope, f as ApiErrorDetails } from './shared/attaform.BJnNK75Y.js';
|
|
5
|
+
export { g as ApiErrorEntry, h as ArrayItem, i as ArrayPath, C as CoercionEntry, j as CoercionRegistry, k as CoercionResult, l as CustomDirectiveRegisterAssignerFn, m as DeepPartial, n as DefaultValuesResponse, o as DefaultValuesShape, p as DisplayCtx, q as DisplayMachine, r as DisplayState, E as ErrorsProxyShape, s as FieldMetaPayload, t as FieldState, u as FieldStateMap, v as FieldStateMapEntry, w as FlatPath, x as FormErrorRecord, y as FormErrorsSurface, z as FormMeta, H as HandleSubmit, B as HistoryConfig, I as IsTuple, J as IsUnion, K as JoinSegments, L as KeyofUnion, M as LiftedValueShape, N as MetaTrackerValue, O as NestedReadType, P as NestedType, Q as OnError, S as OnInvalidSubmitPolicy, T as OnSubmit, W as PartialFlatPath, X as Path, Y as PathKey, Z as PendingValidationStatus, _ as Primitive, $ as ROOT_PATH, a0 as ROOT_PATH_KEY, a1 as ReactiveValidationStatus, a2 as RegisterDirective, a3 as RegisterFlatPath, a4 as RegisterOptions, a5 as RegisterSelectModifier, a6 as RegisterTextModifier, a7 as RegisterTransform, a8 as Segment, a9 as SetValueCallback, aa as SetValuePayload, ab as SettledValidationStatus, ac as SlimPrimitiveKind, ad as SlimRuntimeOf, ae as SubmitHandler, af as Unset, ag as ValidateOn, ah as ValidateOnConfig, ai as ValidationResponse, aj as ValidationResponseWithoutValue, ak as ValueOfUnion, al as WriteMeta, am as WriteShape, an as canonicalizePath, ao as isPathPrefix, ap as isUnset, aq as parseDottedPath, ar as unset } from './shared/attaform.BJnNK75Y.js';
|
|
6
|
+
export { A as AttaformError, I as InvalidPathError, a as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, b as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.CO0e7YVY.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Options for `createAttaform()`.
|
|
@@ -333,41 +333,6 @@ declare function makeDefaultDisplayState({ showDelay, minVisible, }: DisplayTimi
|
|
|
333
333
|
*/
|
|
334
334
|
declare const defaultDisplayState: GetDisplayState;
|
|
335
335
|
|
|
336
|
-
/**
|
|
337
|
-
* The library's built-in conservative set of identifier name stems that
|
|
338
|
-
* flag a path segment as "this looks like data the consumer almost
|
|
339
|
-
* certainly does not want serialised to client-side storage or
|
|
340
|
-
* broadcast across tabs."
|
|
341
|
-
*
|
|
342
|
-
* Each entry is a NAME STEM, not a regex. Matching is case-insensitive
|
|
343
|
-
* and tolerant of separator variants — `'card_number'` matches the
|
|
344
|
-
* segments `'card_number'`, `'card-number'`, `'cardNumber'`, and
|
|
345
|
-
* `'cardnumber'`. Short stems (compact length ≤ 5) get word-boundary
|
|
346
|
-
* anchors to avoid common false positives — `'pin'` matches `'pin'`
|
|
347
|
-
* and `'user_pin'` but not `'pinned'`; `'token'` matches `'token'` but
|
|
348
|
-
* not `'tokenizer'`. Longer stems match anywhere (`'password'` matches
|
|
349
|
-
* `'password'`, `'passwords'`, `'userPassword'`).
|
|
350
|
-
*
|
|
351
|
-
* Consumers extend or replace via per-form or global config:
|
|
352
|
-
*
|
|
353
|
-
* ```ts
|
|
354
|
-
* createAttaform({
|
|
355
|
-
* defaults: { sensitiveNames: [...DEFAULT_SENSITIVE_NAMES, 'mrn', 'tax_id'] }
|
|
356
|
-
* })
|
|
357
|
-
* ```
|
|
358
|
-
*
|
|
359
|
-
* The same resolved predicate gates persistence writes and multi-tab
|
|
360
|
-
* sync broadcasts — one source of truth for "what counts as sensitive"
|
|
361
|
-
* across those surfaces. (DevTools renders raw values by design.)
|
|
362
|
-
*
|
|
363
|
-
* **Non-goals.** This is not a soundness guarantee. Adversarial paths
|
|
364
|
-
* (`'sensitive_data'`, `'CCV'` instead of `'CVV'`) can slip through.
|
|
365
|
-
* The intent is a code-review trigger for the common-case footgun
|
|
366
|
-
* plus a defense-in-depth filter on the cross-tab and DevTools
|
|
367
|
-
* surfaces.
|
|
368
|
-
*/
|
|
369
|
-
declare const DEFAULT_SENSITIVE_NAMES: readonly string[];
|
|
370
|
-
|
|
371
336
|
/**
|
|
372
337
|
* Result of `parseApiErrors`. Branch on `ok` to handle the two cases:
|
|
373
338
|
*
|
|
@@ -494,5 +459,5 @@ declare const PARSE_API_ERRORS_DEFAULTS: {
|
|
|
494
459
|
*/
|
|
495
460
|
declare function parseApiErrors(payload: ApiErrorEnvelope | ApiErrorDetails | null | undefined | unknown, options: ParseApiErrorsOptions): ParseApiErrorsResult;
|
|
496
461
|
|
|
497
|
-
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry,
|
|
462
|
+
export { AbstractSchema, ApiErrorDetails, ApiErrorEnvelope, AttaformDefaults, AttaformRegistry, DEFAULT_TIMINGS, DEVTOOLS_WINDOW_KEY, DefaultValuesInput, FormKey, GenericForm, GetDisplayState, PARSE_API_ERRORS_DEFAULTS, RegisterValue, SerializedFormData, UseFormConfiguration, UseFormReturnType, ValidationError, assignKey, createAttaform, defaultDisplayState, escapeForInlineScript, hydrateAttaformState, isRegisterValue, makeDefaultDisplayState, parseApiErrors, renderAttaformState, useAbstractForm as useForm, vRegister };
|
|
498
463
|
export type { AttaformDevtoolsBridge, AttaformPluginOptions, DisplayTimings, ParseApiErrorsOptions, ParseApiErrorsResult, SerializedAttaformState };
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as canonicalizePath, I as InvalidPathError } from './shared/attaform.
|
|
2
|
-
export { A as
|
|
3
|
-
export { D as DEVTOOLS_WINDOW_KEY, h as hydrateAttaformState, r as renderAttaformState } from './shared/attaform.
|
|
4
|
-
import {
|
|
5
|
-
export { A as AttaformErrorCode, D as DEFAULT_TIMINGS,
|
|
1
|
+
import { a as canonicalizePath, I as InvalidPathError } from './shared/attaform.BhI9Icek.mjs';
|
|
2
|
+
export { A as AttaformError, b as InvalidUseFormConfigError, O as OutsideSetupError, R as ROOT_PATH, d as ROOT_PATH_KEY, e as RegistryNotInstalledError, f as ReservedFormKeyError, S as SubmitErrorHandlerError, h as assignKey, c as createAttaform, i as createRegistry, g as getRegistryFromApp, j as isPathPrefix, l as isRegisterValue, m as kAttaformRegistry, p as parseDottedPath, u as useRegistry, v as vRegister } from './shared/attaform.BhI9Icek.mjs';
|
|
3
|
+
export { D as DEVTOOLS_WINDOW_KEY, h as hydrateAttaformState, r as renderAttaformState } from './shared/attaform.Dx9-QQE2.mjs';
|
|
4
|
+
import { n as normalizeNumericOption } from './shared/attaform.CtJOd7ox.mjs';
|
|
5
|
+
export { A as AttaformErrorCode, D as DEFAULT_TIMINGS, e as defaultCoercionRules, f as defaultDisplayState, g as defineCoercion, i as injectForm, a as injectWizard, b as isUnset, l as lazy, m as makeDefaultDisplayState, u as unset, h as useForm, c as useRegister, d as useWizard } from './shared/attaform.CtJOd7ox.mjs';
|
|
6
6
|
|
|
7
7
|
function escapeForInlineScript(json) {
|
|
8
8
|
return json.replace(/[<>&\u2028\u2029]/g, (char) => {
|
package/dist/nuxt.d.cts
CHANGED
package/dist/nuxt.d.mts
CHANGED
package/dist/nuxt.d.ts
CHANGED
|
@@ -143,11 +143,7 @@ import { computed, onUnmounted, ref, watch } from 'vue'
|
|
|
143
143
|
* `src/runtime/core/devtools.ts` so both surfaces have identical
|
|
144
144
|
* semantics:
|
|
145
145
|
* 1. canonicalize the structured path
|
|
146
|
-
* 2.
|
|
147
|
-
* but a defensive check here keeps the contract honest)
|
|
148
|
-
* 3. derive the persist flag from the path's element opt-ins
|
|
149
|
-
* 4. call setValueAtPath with the same write-meta the bound input
|
|
150
|
-
* would have produced
|
|
146
|
+
* 2. call setValueAtPath with that path
|
|
151
147
|
*/
|
|
152
148
|
// Field-state inspector. Click any key in the Form value tree to
|
|
153
149
|
// "select" that path; the Field state section below resolves
|
|
@@ -259,12 +255,8 @@ import { computed, onUnmounted, ref, watch } from 'vue'
|
|
|
259
255
|
const form = activeForm.value
|
|
260
256
|
if (form === null) return
|
|
261
257
|
try {
|
|
262
|
-
const { segments: canonicalPath
|
|
263
|
-
|
|
264
|
-
)
|
|
265
|
-
form.setValueAtPath(canonicalPath, next, {
|
|
266
|
-
persist: form.persistOptIns.hasAnyOptInForPath(canonicalKey),
|
|
267
|
-
})
|
|
258
|
+
const { segments: canonicalPath } = canonicalizePath(rawPath as readonly Segment[])
|
|
259
|
+
form.setValueAtPath(canonicalPath, next)
|
|
268
260
|
// The host's setValueAtPath fires `onFormChange` listeners, which
|
|
269
261
|
// bumps our updateTick (see subscribeForm) — that refreshes the
|
|
270
262
|
// panel's view of the new value on the next microtask.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const app = require('nuxt/app');
|
|
4
|
-
const devtoolsShared = require('../../shared/attaform.
|
|
5
|
-
const paths = require('../../shared/attaform.
|
|
4
|
+
const devtoolsShared = require('../../shared/attaform.BibT5AS_.cjs');
|
|
5
|
+
const paths = require('../../shared/attaform.Db4E4IW6.cjs');
|
|
6
6
|
|
|
7
7
|
var attaform_default = app.defineNuxtPlugin({
|
|
8
8
|
// `enforce: 'pre'` makes the "we run before any component's setup" claim
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineNuxtPlugin, useRuntimeConfig, useRoute } from 'nuxt/app';
|
|
2
|
-
import { r as renderAttaformState, h as hydrateAttaformState, D as DEVTOOLS_WINDOW_KEY } from '../../shared/attaform.
|
|
3
|
-
import { c as createAttaform, k as kAttaformWizardActiveStepResolver, g as getRegistryFromApp } from '../../shared/attaform.
|
|
2
|
+
import { r as renderAttaformState, h as hydrateAttaformState, D as DEVTOOLS_WINDOW_KEY } from '../../shared/attaform.Dx9-QQE2.mjs';
|
|
3
|
+
import { c as createAttaform, k as kAttaformWizardActiveStepResolver, g as getRegistryFromApp } from '../../shared/attaform.BhI9Icek.mjs';
|
|
4
4
|
|
|
5
5
|
var attaform_default = defineNuxtPlugin({
|
|
6
6
|
// `enforce: 'pre'` makes the "we run before any component's setup" claim
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FormKey,
|
|
1
|
+
import { F as FormKey, Y as PathKey, p as DisplayCtx, d as GetDisplayState, q as DisplayMachine, X as Path, ac as SlimPrimitiveKind, C as CoercionEntry, j as CoercionRegistry, G as GenericForm, V as ValidationError, a as AbstractSchema, al as WriteMeta, m as DeepPartial, am as WriteShape, at as TransformAbortHolder, ag as ValidateOn, A as AttaformDefaults, b as UseFormReturnType, c as RegisterValue } from './attaform.BJnNK75Y.js';
|
|
2
2
|
import { Ref, ComputedRef, App, InjectionKey } from 'vue';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -967,17 +967,13 @@ type FormStore<F extends GenericForm, G extends GenericForm = F> = {
|
|
|
967
967
|
/**
|
|
968
968
|
* Replace the form value wholesale. Optional `meta` is forwarded to
|
|
969
969
|
* every `onFormChange` listener so they can decide whether THIS write
|
|
970
|
-
* is one they care about
|
|
971
|
-
* only writes when `meta?.persist === true`. Internal callers that
|
|
972
|
-
* don't pass meta default to no-persist.
|
|
970
|
+
* is one they care about (e.g. history tagging a hydration replay).
|
|
973
971
|
*/
|
|
974
972
|
applyFormReplacement(next: F, meta?: WriteMeta): void;
|
|
975
973
|
/**
|
|
976
974
|
* Set a single path's value. `meta` is forwarded to listeners via
|
|
977
|
-
* `applyFormReplacement` (see above).
|
|
978
|
-
*
|
|
979
|
-
* internal call sites pass `meta.persist = hasAnyOptInForPath(path)`.
|
|
980
|
-
* Public `form.setValue` passes no meta.
|
|
975
|
+
* `applyFormReplacement` (see above). Public `form.setValue` passes no
|
|
976
|
+
* meta.
|
|
981
977
|
*
|
|
982
978
|
* Returns `false` when the slim-primitive gate rejects the write
|
|
983
979
|
* (the value's primitive shape doesn't match the schema's slim
|
|
@@ -1126,7 +1122,7 @@ type FormStore<F extends GenericForm, G extends GenericForm = F> = {
|
|
|
1126
1122
|
} | null;
|
|
1127
1123
|
/**
|
|
1128
1124
|
* Cancel every in-flight field-level validation run — clears timers
|
|
1129
|
-
* for debounced 'change' runs that haven't fired,
|
|
1125
|
+
* for debounced 'change' runs that haven't fired, latches `aborted`
|
|
1130
1126
|
* for runs whose async parse is in flight. Called by `handleSubmit`
|
|
1131
1127
|
* at entry (submit validation is authoritative) and by `reset()`.
|
|
1132
1128
|
*/
|
|
@@ -1191,20 +1187,17 @@ type FormStore<F extends GenericForm, G extends GenericForm = F> = {
|
|
|
1191
1187
|
/**
|
|
1192
1188
|
* Subscribe to every `applyFormReplacement`. Fires synchronously
|
|
1193
1189
|
* after `form.value` has been swapped to `next` and all field /
|
|
1194
|
-
* originals bookkeeping has run. Used by
|
|
1195
|
-
*
|
|
1196
|
-
*
|
|
1197
|
-
*
|
|
1198
|
-
* about meta can ignore the parameter. Returns an unsubscribe
|
|
1199
|
-
* function.
|
|
1190
|
+
* originals bookkeeping has run. Used by undo/redo to hook the single
|
|
1191
|
+
* mutation funnel. The optional `meta` carries the originating call
|
|
1192
|
+
* site's intent; subscribers that don't care about meta can ignore the
|
|
1193
|
+
* parameter. Returns an unsubscribe function.
|
|
1200
1194
|
*/
|
|
1201
1195
|
onFormChange(listener: (next: F, meta?: WriteMeta) => void): () => void;
|
|
1202
1196
|
/**
|
|
1203
1197
|
* Subscribe to successful submissions. Fires after the consumer's
|
|
1204
1198
|
* `onSubmit` callback has resolved — not on validation failure,
|
|
1205
|
-
* not on callback throw.
|
|
1206
|
-
*
|
|
1207
|
-
* server round-trip. Returns an unsubscribe function.
|
|
1199
|
+
* not on callback throw. The DevTools panel rides this to surface a
|
|
1200
|
+
* submit event. Returns an unsubscribe function.
|
|
1208
1201
|
*/
|
|
1209
1202
|
onSubmitSuccess(listener: () => void): () => void;
|
|
1210
1203
|
/**
|
|
@@ -1250,58 +1243,6 @@ type FormStore<F extends GenericForm, G extends GenericForm = F> = {
|
|
|
1250
1243
|
* owned by the caller (e.g. `'history'`).
|
|
1251
1244
|
*/
|
|
1252
1245
|
readonly modules: Map<string, unknown>;
|
|
1253
|
-
/**
|
|
1254
|
-
* Per-element persistence opt-in tracker. Empty by default; the
|
|
1255
|
-
* `v-register` directive populates entries on `mount` for each binding
|
|
1256
|
-
* that passed `register('foo', { persist: true })` and clears them on
|
|
1257
|
-
* `beforeUnmount`. Two SFCs sharing a key share this registry — opt-ins
|
|
1258
|
-
* are per-DOM-element, not per-component. Internal to the persistence
|
|
1259
|
-
* subsystem; not part of the consumer API surface.
|
|
1260
|
-
*/
|
|
1261
|
-
readonly persistOptIns: PersistOptInRegistry;
|
|
1262
|
-
/**
|
|
1263
|
-
* Resolved sensitive-path predicate for THIS form. Honors the
|
|
1264
|
-
* cascade (`useForm({ sensitiveNames })` > global default >
|
|
1265
|
-
* library `DEFAULT_SENSITIVE_NAMES`). Used by:
|
|
1266
|
-
* - the persistence opt-in gate (`allowSensitivePersist`);
|
|
1267
|
-
* - the multi-tab sync module (outbound strip + inbound reject);
|
|
1268
|
-
* - DevTools edit rejection;
|
|
1269
|
-
* - any future surface that needs to flag "this path holds
|
|
1270
|
-
* sensitive data."
|
|
1271
|
-
*
|
|
1272
|
-
* Frozen at FormStore construction. Two callsites sharing a key
|
|
1273
|
-
* share the predicate — consistent with the rest of the per-form
|
|
1274
|
-
* resolved-config surface.
|
|
1275
|
-
*/
|
|
1276
|
-
readonly isSensitivePath: (path: Path | PathKey | string) => boolean;
|
|
1277
|
-
/**
|
|
1278
|
-
* Canonical path keys explicitly opted OUT of multi-tab sync by
|
|
1279
|
-
* `register(path, { multiTab: false })`. The sync module's outbound
|
|
1280
|
-
* broadcaster strips patches at these paths AND the inbound listener
|
|
1281
|
-
* rejects them — symmetric tab-local behaviour for selected fields.
|
|
1282
|
-
*
|
|
1283
|
-
* Read-only Set view; mutate via `incrementNoSyncOptOut` /
|
|
1284
|
-
* `decrementNoSyncOptOut` which maintain a per-path ref count so
|
|
1285
|
-
* multiple bindings on the same path balance correctly across
|
|
1286
|
-
* dynamic conditional renders. Empty by default.
|
|
1287
|
-
*/
|
|
1288
|
-
readonly noSyncPaths: ReadonlySet<PathKey>;
|
|
1289
|
-
/**
|
|
1290
|
-
* Ref-counted "this path is tab-local" registration. Called by
|
|
1291
|
-
* `v-register`'s `created` hook for any binding that declared
|
|
1292
|
-
* `register('x', { multiTab: false })`. The first call for a given
|
|
1293
|
-
* path adds it to `noSyncPaths`; subsequent calls just bump the
|
|
1294
|
-
* ref count. Pair with `decrementNoSyncOptOut`.
|
|
1295
|
-
*/
|
|
1296
|
-
incrementNoSyncOptOut(path: PathKey): void;
|
|
1297
|
-
/**
|
|
1298
|
-
* Symmetric companion to `incrementNoSyncOptOut`. Called by
|
|
1299
|
-
* `v-register`'s `beforeUnmount` hook. When the ref count for a
|
|
1300
|
-
* path drops to zero, the path is removed from `noSyncPaths` —
|
|
1301
|
-
* dynamic toggling (the binding rendered conditionally) restores
|
|
1302
|
-
* full sync to the path when the last opt-out unmounts.
|
|
1303
|
-
*/
|
|
1304
|
-
decrementNoSyncOptOut(path: PathKey): void;
|
|
1305
1246
|
/**
|
|
1306
1247
|
* Resolved schema-coercion index — the merged config from
|
|
1307
1248
|
* `createAttaform({ defaults: { coerce } })` ∪ `useForm({ coerce })`,
|