attaform 0.22.0 → 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.
Files changed (101) hide show
  1. package/README.md +7 -10
  2. package/dist/chunks/dev-key-collision-warnings.cjs +0 -33
  3. package/dist/chunks/dev-key-collision-warnings.cjs.map +1 -1
  4. package/dist/chunks/dev-key-collision-warnings.mjs +1 -33
  5. package/dist/chunks/dev-key-collision-warnings.mjs.map +1 -1
  6. package/dist/chunks/devtools.cjs +3 -5
  7. package/dist/chunks/devtools.cjs.map +1 -1
  8. package/dist/chunks/devtools.mjs +3 -5
  9. package/dist/chunks/devtools.mjs.map +1 -1
  10. package/dist/chunks/fingerprint2.cjs +1 -1
  11. package/dist/chunks/fingerprint2.mjs +1 -1
  12. package/dist/index.cjs +3 -5
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +6 -41
  15. package/dist/index.d.mts +6 -41
  16. package/dist/index.d.ts +6 -41
  17. package/dist/index.mjs +5 -5
  18. package/dist/nuxt.d.cts +1 -1
  19. package/dist/nuxt.d.mts +1 -1
  20. package/dist/nuxt.d.ts +1 -1
  21. package/dist/runtime/components/AttaformDevtoolsPanel.vue +3 -11
  22. package/dist/runtime/plugins/attaform.cjs +2 -2
  23. package/dist/runtime/plugins/attaform.mjs +2 -2
  24. package/dist/shared/{attaform.BGwNZ9GV.d.cts → attaform.BGMRvckW.d.ts} +10 -77
  25. package/dist/shared/{attaform.DvUH4a3o.d.ts → attaform.BJnNK75Y.d.cts} +45 -670
  26. package/dist/shared/{attaform.DvUH4a3o.d.mts → attaform.BJnNK75Y.d.mts} +45 -670
  27. package/dist/shared/{attaform.DvUH4a3o.d.cts → attaform.BJnNK75Y.d.ts} +45 -670
  28. package/dist/shared/{attaform.BKFwekY2.mjs → attaform.BhI9Icek.mjs} +3 -287
  29. package/dist/shared/attaform.BhI9Icek.mjs.map +1 -0
  30. package/dist/shared/{attaform.CRzpFCjV.cjs → attaform.BibT5AS_.cjs} +2 -2
  31. package/dist/shared/{attaform.CRzpFCjV.cjs.map → attaform.BibT5AS_.cjs.map} +1 -1
  32. package/dist/shared/{attaform.DkA5J8NW.d.cts → attaform.CO0e7YVY.d.cts} +1 -46
  33. package/dist/shared/{attaform.DkA5J8NW.d.ts → attaform.CO0e7YVY.d.mts} +1 -46
  34. package/dist/shared/{attaform.DkA5J8NW.d.mts → attaform.CO0e7YVY.d.ts} +1 -46
  35. package/dist/shared/{attaform.Q3eAD2wD.cjs → attaform.CaYj3ZfY.cjs} +3 -3
  36. package/dist/shared/{attaform.Q3eAD2wD.cjs.map → attaform.CaYj3ZfY.cjs.map} +1 -1
  37. package/dist/shared/{attaform.AyujQoHp.cjs → attaform.Cmb_LCie.cjs} +4 -4
  38. package/dist/shared/{attaform.DNuiFCXG.mjs.map → attaform.Cmb_LCie.cjs.map} +1 -1
  39. package/dist/shared/{attaform.CsB-iKbU.mjs → attaform.CtJOd7ox.mjs} +81 -591
  40. package/dist/shared/attaform.CtJOd7ox.mjs.map +1 -0
  41. package/dist/shared/{attaform.DgCfLqay.mjs → attaform.CzVta5o2.mjs} +4 -4
  42. package/dist/shared/attaform.CzVta5o2.mjs.map +1 -0
  43. package/dist/shared/{attaform.FN0vaQAg.d.mts → attaform.D52oJiYC.d.cts} +1 -1
  44. package/dist/shared/{attaform.aekT7mMx.d.cts → attaform.DCkSNnPr.d.mts} +1 -1
  45. package/dist/shared/{attaform.01iKS_lz.cjs → attaform.Db4E4IW6.cjs} +2 -294
  46. package/dist/shared/attaform.Db4E4IW6.cjs.map +1 -0
  47. package/dist/shared/{attaform.C-RtnCJM.cjs → attaform.DbyTD8N2.cjs} +4 -4
  48. package/dist/shared/attaform.DbyTD8N2.cjs.map +1 -0
  49. package/dist/shared/{attaform.DCjgGir_.mjs → attaform.Dd1Kmmaj.mjs} +3 -3
  50. package/dist/shared/{attaform.DCjgGir_.mjs.map → attaform.Dd1Kmmaj.mjs.map} +1 -1
  51. package/dist/shared/{attaform.D4XYaasQ.d.ts → attaform.DrY8srOp.d.mts} +10 -77
  52. package/dist/shared/{attaform.CjMcwV7W.cjs → attaform.DsQkXE3o.cjs} +79 -599
  53. package/dist/shared/attaform.DsQkXE3o.cjs.map +1 -0
  54. package/dist/shared/{attaform.CCCeEPwa.d.mts → attaform.DuPneYR0.d.cts} +10 -77
  55. package/dist/shared/{attaform.6xE0Lcfd.mjs → attaform.Dx9-QQE2.mjs} +2 -2
  56. package/dist/shared/{attaform.6xE0Lcfd.mjs.map → attaform.Dx9-QQE2.mjs.map} +1 -1
  57. package/dist/shared/{attaform.DUMWQefY.d.ts → attaform.WEwfXcHq.d.ts} +1 -1
  58. package/dist/shared/{attaform.DNuiFCXG.mjs → attaform.alpG7rT7.mjs} +4 -4
  59. package/dist/shared/{attaform.AyujQoHp.cjs.map → attaform.alpG7rT7.mjs.map} +1 -1
  60. package/dist/zod-v3.cjs +2 -2
  61. package/dist/zod-v3.d.cts +3 -3
  62. package/dist/zod-v3.d.mts +3 -3
  63. package/dist/zod-v3.d.ts +3 -3
  64. package/dist/zod-v3.mjs +2 -2
  65. package/dist/zod-v4.cjs +2 -2
  66. package/dist/zod-v4.d.cts +5 -5
  67. package/dist/zod-v4.d.mts +5 -5
  68. package/dist/zod-v4.d.ts +5 -5
  69. package/dist/zod-v4.mjs +2 -2
  70. package/dist/zod.cjs +5 -5
  71. package/dist/zod.d.cts +5 -5
  72. package/dist/zod.d.mts +5 -5
  73. package/dist/zod.d.ts +5 -5
  74. package/dist/zod.mjs +5 -5
  75. package/package.json +1 -1
  76. package/dist/chunks/indexeddb.cjs +0 -119
  77. package/dist/chunks/indexeddb.cjs.map +0 -1
  78. package/dist/chunks/indexeddb.mjs +0 -117
  79. package/dist/chunks/indexeddb.mjs.map +0 -1
  80. package/dist/chunks/local-storage.cjs +0 -58
  81. package/dist/chunks/local-storage.cjs.map +0 -1
  82. package/dist/chunks/local-storage.mjs +0 -56
  83. package/dist/chunks/local-storage.mjs.map +0 -1
  84. package/dist/chunks/multi-tab-sync.cjs +0 -367
  85. package/dist/chunks/multi-tab-sync.cjs.map +0 -1
  86. package/dist/chunks/multi-tab-sync.mjs +0 -364
  87. package/dist/chunks/multi-tab-sync.mjs.map +0 -1
  88. package/dist/chunks/session-storage.cjs +0 -58
  89. package/dist/chunks/session-storage.cjs.map +0 -1
  90. package/dist/chunks/session-storage.mjs +0 -56
  91. package/dist/chunks/session-storage.mjs.map +0 -1
  92. package/dist/chunks/wire-persistence.cjs +0 -396
  93. package/dist/chunks/wire-persistence.cjs.map +0 -1
  94. package/dist/chunks/wire-persistence.mjs +0 -394
  95. package/dist/chunks/wire-persistence.mjs.map +0 -1
  96. package/dist/shared/attaform.01iKS_lz.cjs.map +0 -1
  97. package/dist/shared/attaform.BKFwekY2.mjs.map +0 -1
  98. package/dist/shared/attaform.C-RtnCJM.cjs.map +0 -1
  99. package/dist/shared/attaform.CjMcwV7W.cjs.map +0 -1
  100. package/dist/shared/attaform.CsB-iKbU.mjs.map +0 -1
  101. package/dist/shared/attaform.DgCfLqay.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.BGwNZ9GV.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.BGwNZ9GV.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.DvUH4a3o.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, B as FormStorage, H as FormStorageKind, I as HandleSubmit, J as HistoryConfig, K as IsTuple, L as IsUnion, M as JoinSegments, N as KeyofUnion, O as LiftedValueShape, P as MetaTrackerValue, Q as NestedReadType, S as NestedType, T as OnChangeConfig, W as OnChangeContext, X as OnChangeErrorContext, Y as OnChangeErrorHandler, Z as OnChangeHandler, _ as OnChangeOptions, $ as OnChangeSource, a0 as OnError, a1 as OnInvalidSubmitPolicy, a2 as OnSubmit, a3 as PartialFlatPath, a4 as Path, a5 as PathKey, a6 as PendingValidationStatus, a7 as PersistConfig, a8 as PersistConfigOptions, a9 as PersistIncludeMode, aa as Primitive, ab as ROOT_PATH, ac as ROOT_PATH_KEY, ad as ReactiveValidationStatus, ae as RegisterDirective, af as RegisterFlatPath, ag as RegisterOptions, ah as RegisterSelectModifier, ai as RegisterTextModifier, aj as RegisterTransform, ak as Segment, al as SetValueCallback, am as SetValueOptions, an as SetValuePayload, ao as SettledValidationStatus, ap as SlimPrimitiveKind, aq as SlimRuntimeOf, ar as SubmitHandler, as as Unset, at as ValidateOn, au as ValidateOnConfig, av as ValidationResponse, aw as ValidationResponseWithoutValue, ax as ValueOfUnion, ay as WriteMeta, az as WriteShape, aA as canonicalizePath, aB as isPathPrefix, aC as isUnset, aD as parseDottedPath, aE as unset } from './shared/attaform.DvUH4a3o.cjs';
6
- export { A as AnonPersistError, a as AttaformError, I as InvalidPathError, b as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, c as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.DkA5J8NW.cjs';
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, DEFAULT_SENSITIVE_NAMES, 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 };
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.CCCeEPwa.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.CCCeEPwa.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.DvUH4a3o.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, B as FormStorage, H as FormStorageKind, I as HandleSubmit, J as HistoryConfig, K as IsTuple, L as IsUnion, M as JoinSegments, N as KeyofUnion, O as LiftedValueShape, P as MetaTrackerValue, Q as NestedReadType, S as NestedType, T as OnChangeConfig, W as OnChangeContext, X as OnChangeErrorContext, Y as OnChangeErrorHandler, Z as OnChangeHandler, _ as OnChangeOptions, $ as OnChangeSource, a0 as OnError, a1 as OnInvalidSubmitPolicy, a2 as OnSubmit, a3 as PartialFlatPath, a4 as Path, a5 as PathKey, a6 as PendingValidationStatus, a7 as PersistConfig, a8 as PersistConfigOptions, a9 as PersistIncludeMode, aa as Primitive, ab as ROOT_PATH, ac as ROOT_PATH_KEY, ad as ReactiveValidationStatus, ae as RegisterDirective, af as RegisterFlatPath, ag as RegisterOptions, ah as RegisterSelectModifier, ai as RegisterTextModifier, aj as RegisterTransform, ak as Segment, al as SetValueCallback, am as SetValueOptions, an as SetValuePayload, ao as SettledValidationStatus, ap as SlimPrimitiveKind, aq as SlimRuntimeOf, ar as SubmitHandler, as as Unset, at as ValidateOn, au as ValidateOnConfig, av as ValidationResponse, aw as ValidationResponseWithoutValue, ax as ValueOfUnion, ay as WriteMeta, az as WriteShape, aA as canonicalizePath, aB as isPathPrefix, aC as isUnset, aD as parseDottedPath, aE as unset } from './shared/attaform.DvUH4a3o.mjs';
6
- export { A as AnonPersistError, a as AttaformError, I as InvalidPathError, b as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, c as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.DkA5J8NW.mjs';
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, DEFAULT_SENSITIVE_NAMES, 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 };
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.D4XYaasQ.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.D4XYaasQ.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.DvUH4a3o.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, B as FormStorage, H as FormStorageKind, I as HandleSubmit, J as HistoryConfig, K as IsTuple, L as IsUnion, M as JoinSegments, N as KeyofUnion, O as LiftedValueShape, P as MetaTrackerValue, Q as NestedReadType, S as NestedType, T as OnChangeConfig, W as OnChangeContext, X as OnChangeErrorContext, Y as OnChangeErrorHandler, Z as OnChangeHandler, _ as OnChangeOptions, $ as OnChangeSource, a0 as OnError, a1 as OnInvalidSubmitPolicy, a2 as OnSubmit, a3 as PartialFlatPath, a4 as Path, a5 as PathKey, a6 as PendingValidationStatus, a7 as PersistConfig, a8 as PersistConfigOptions, a9 as PersistIncludeMode, aa as Primitive, ab as ROOT_PATH, ac as ROOT_PATH_KEY, ad as ReactiveValidationStatus, ae as RegisterDirective, af as RegisterFlatPath, ag as RegisterOptions, ah as RegisterSelectModifier, ai as RegisterTextModifier, aj as RegisterTransform, ak as Segment, al as SetValueCallback, am as SetValueOptions, an as SetValuePayload, ao as SettledValidationStatus, ap as SlimPrimitiveKind, aq as SlimRuntimeOf, ar as SubmitHandler, as as Unset, at as ValidateOn, au as ValidateOnConfig, av as ValidationResponse, aw as ValidationResponseWithoutValue, ax as ValueOfUnion, ay as WriteMeta, az as WriteShape, aA as canonicalizePath, aB as isPathPrefix, aC as isUnset, aD as parseDottedPath, aE as unset } from './shared/attaform.DvUH4a3o.js';
6
- export { A as AnonPersistError, a as AttaformError, I as InvalidPathError, b as InvalidUseFormConfigError, O as OutsideSetupError, R as RegistryNotInstalledError, c as ReservedFormKeyError, S as SubmitErrorHandlerError } from './shared/attaform.DkA5J8NW.js';
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, DEFAULT_SENSITIVE_NAMES, 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 };
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.BKFwekY2.mjs';
2
- export { A as AnonPersistError, b as AttaformError, D as DEFAULT_SENSITIVE_NAMES, d as InvalidUseFormConfigError, O as OutsideSetupError, R as ROOT_PATH, e as ROOT_PATH_KEY, f as RegistryNotInstalledError, h as ReservedFormKeyError, S as SubmitErrorHandlerError, i as assignKey, c as createAttaform, j as createRegistry, g as getRegistryFromApp, l as isPathPrefix, m as isRegisterValue, n as kAttaformRegistry, p as parseDottedPath, u as useRegistry, v as vRegister } from './shared/attaform.BKFwekY2.mjs';
3
- export { D as DEVTOOLS_WINDOW_KEY, h as hydrateAttaformState, r as renderAttaformState } from './shared/attaform.6xE0Lcfd.mjs';
4
- import { k as normalizeNumericOption } from './shared/attaform.CsB-iKbU.mjs';
5
- export { A as AttaformErrorCode, D as DEFAULT_TIMINGS, m as defaultCoercionRules, o as defaultDisplayState, p as defineCoercion, i as injectForm, a as injectWizard, b as isUnset, l as lazy, q as makeDefaultDisplayState, u as unset, r as useForm, c as useRegister, d as useWizard } from './shared/attaform.CsB-iKbU.mjs';
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
@@ -1,5 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
- import { A as AttaformDefaults } from './shared/attaform.DvUH4a3o.cjs';
2
+ import { A as AttaformDefaults } from './shared/attaform.BJnNK75Y.cjs';
3
3
  import 'vue';
4
4
 
5
5
  /**
package/dist/nuxt.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
- import { A as AttaformDefaults } from './shared/attaform.DvUH4a3o.mjs';
2
+ import { A as AttaformDefaults } from './shared/attaform.BJnNK75Y.mjs';
3
3
  import 'vue';
4
4
 
5
5
  /**
package/dist/nuxt.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
- import { A as AttaformDefaults } from './shared/attaform.DvUH4a3o.js';
2
+ import { A as AttaformDefaults } from './shared/attaform.BJnNK75Y.js';
3
3
  import 'vue';
4
4
 
5
5
  /**
@@ -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. refuse sensitive-name paths (the tree already gates the UI,
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, key: canonicalKey } = canonicalizePath(
263
- rawPath as readonly Segment[]
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.CRzpFCjV.cjs');
5
- const paths = require('../../shared/attaform.01iKS_lz.cjs');
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.6xE0Lcfd.mjs';
3
- import { c as createAttaform, k as kAttaformWizardActiveStepResolver, g as getRegistryFromApp } from '../../shared/attaform.BKFwekY2.mjs';
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, a5 as PathKey, p as DisplayCtx, d as GetDisplayState, q as DisplayMachine, a4 as Path, ap as SlimPrimitiveKind, C as CoercionEntry, j as CoercionRegistry, G as GenericForm, V as ValidationError, a as AbstractSchema, ay as WriteMeta, m as DeepPartial, az as WriteShape, aG as TransformAbortHolder, at as ValidateOn, $ as OnChangeSource, Z as OnChangeHandler, _ as OnChangeOptions, aH as PersistOptInRegistry, A as AttaformDefaults, b as UseFormReturnType, c as RegisterValue } from './attaform.DvUH4a3o.cjs';
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 most importantly, the persistence layer
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). The directive's input handler
978
- * computes `meta.persist` from the per-element opt-in registry; other
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
@@ -1191,28 +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 persistence + undo/redo
1195
- * to hook the single mutation funnel. The optional `meta` carries
1196
- * the originating call site's intent the persistence subscription
1197
- * filters on `meta?.persist === true`; subscribers that don't care
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
- /**
1203
- * Register a `form.onChange` side-channel handler. `source === undefined`
1204
- * is the whole form (root); `getForm` lazily resolves the public form
1205
- * handle for `ctx.form`. Returns an idempotent `stop()`. A no-op on SSR.
1206
- * The public `form.onChange` overloads and `useForm({ onChange })` wire
1207
- * through here; dispatch happens in `commitWritePatches`.
1208
- */
1209
- registerOnChange(source: OnChangeSource | undefined, handler: OnChangeHandler, options: OnChangeOptions | undefined, getForm: () => unknown): () => void;
1210
1196
  /**
1211
1197
  * Subscribe to successful submissions. Fires after the consumer's
1212
1198
  * `onSubmit` callback has resolved — not on validation failure,
1213
- * not on callback throw. Used by persistence's `clearOnSubmitSuccess`
1214
- * to drop the stored payload once the form is safely through the
1215
- * 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.
1216
1201
  */
1217
1202
  onSubmitSuccess(listener: () => void): () => void;
1218
1203
  /**
@@ -1258,58 +1243,6 @@ type FormStore<F extends GenericForm, G extends GenericForm = F> = {
1258
1243
  * owned by the caller (e.g. `'history'`).
1259
1244
  */
1260
1245
  readonly modules: Map<string, unknown>;
1261
- /**
1262
- * Per-element persistence opt-in tracker. Empty by default; the
1263
- * `v-register` directive populates entries on `mount` for each binding
1264
- * that passed `register('foo', { persist: true })` and clears them on
1265
- * `beforeUnmount`. Two SFCs sharing a key share this registry — opt-ins
1266
- * are per-DOM-element, not per-component. Internal to the persistence
1267
- * subsystem; not part of the consumer API surface.
1268
- */
1269
- readonly persistOptIns: PersistOptInRegistry;
1270
- /**
1271
- * Resolved sensitive-path predicate for THIS form. Honors the
1272
- * cascade (`useForm({ sensitiveNames })` > global default >
1273
- * library `DEFAULT_SENSITIVE_NAMES`). Used by:
1274
- * - the persistence opt-in gate (`allowSensitivePersist`);
1275
- * - the multi-tab sync module (outbound strip + inbound reject);
1276
- * - DevTools edit rejection;
1277
- * - any future surface that needs to flag "this path holds
1278
- * sensitive data."
1279
- *
1280
- * Frozen at FormStore construction. Two callsites sharing a key
1281
- * share the predicate — consistent with the rest of the per-form
1282
- * resolved-config surface.
1283
- */
1284
- readonly isSensitivePath: (path: Path | PathKey | string) => boolean;
1285
- /**
1286
- * Canonical path keys explicitly opted OUT of multi-tab sync by
1287
- * `register(path, { multiTab: false })`. The sync module's outbound
1288
- * broadcaster strips patches at these paths AND the inbound listener
1289
- * rejects them — symmetric tab-local behaviour for selected fields.
1290
- *
1291
- * Read-only Set view; mutate via `incrementNoSyncOptOut` /
1292
- * `decrementNoSyncOptOut` which maintain a per-path ref count so
1293
- * multiple bindings on the same path balance correctly across
1294
- * dynamic conditional renders. Empty by default.
1295
- */
1296
- readonly noSyncPaths: ReadonlySet<PathKey>;
1297
- /**
1298
- * Ref-counted "this path is tab-local" registration. Called by
1299
- * `v-register`'s `created` hook for any binding that declared
1300
- * `register('x', { multiTab: false })`. The first call for a given
1301
- * path adds it to `noSyncPaths`; subsequent calls just bump the
1302
- * ref count. Pair with `decrementNoSyncOptOut`.
1303
- */
1304
- incrementNoSyncOptOut(path: PathKey): void;
1305
- /**
1306
- * Symmetric companion to `incrementNoSyncOptOut`. Called by
1307
- * `v-register`'s `beforeUnmount` hook. When the ref count for a
1308
- * path drops to zero, the path is removed from `noSyncPaths` —
1309
- * dynamic toggling (the binding rendered conditionally) restores
1310
- * full sync to the path when the last opt-out unmounts.
1311
- */
1312
- decrementNoSyncOptOut(path: PathKey): void;
1313
1246
  /**
1314
1247
  * Resolved schema-coercion index — the merged config from
1315
1248
  * `createAttaform({ defaults: { coerce } })` ∪ `useForm({ coerce })`,