attaform 0.27.6 → 0.29.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 (192) hide show
  1. package/dist/abstract.d.mts +5 -4
  2. package/dist/abstract.mjs +4 -3
  3. package/dist/chunks/fingerprint.mjs +1 -2
  4. package/dist/chunks/fingerprint2.mjs +2 -3
  5. package/dist/dev/abstract.mjs +4 -0
  6. package/dist/{chunks → dev/chunks}/dev-key-collision-warnings.mjs +0 -1
  7. package/dist/{chunks → dev/chunks}/devtools.mjs +5 -6
  8. package/dist/{chunks/fingerprint.cjs → dev/chunks/fingerprint.mjs} +7 -10
  9. package/dist/{chunks/fingerprint2.cjs → dev/chunks/fingerprint2.mjs} +32 -35
  10. package/dist/dev/directive.mjs +1 -0
  11. package/dist/dev/history.mjs +89 -0
  12. package/dist/dev/index.mjs +5 -0
  13. package/dist/dev/runtime/plugins/attaform.mjs +40 -0
  14. package/dist/dev/shared/attaform-dev.A-TpJW0B.mjs +207 -0
  15. package/dist/dev/shared/attaform-dev.BO-71R54.mjs +820 -0
  16. package/dist/{shared/attaform.D6tk90Rc.cjs → dev/shared/attaform-dev.BgM6FdtA.mjs} +324 -73
  17. package/dist/dev/shared/attaform-dev.ButTkwHd.mjs +375 -0
  18. package/dist/{shared/attaform.BJGA_UOS.mjs → dev/shared/attaform-dev.BxfsuwBR.mjs} +8 -1
  19. package/dist/{shared/attaform.nMaz2C5P.mjs → dev/shared/attaform-dev.D8aoKb89.mjs} +190 -400
  20. package/dist/dev/shared/attaform-dev.DD5m2W51.mjs +220 -0
  21. package/dist/{shared/attaform.CKH2lGdL.mjs → dev/shared/attaform-dev.DHuydLAC.mjs} +3867 -4731
  22. package/dist/{shared/attaform.DYEr28Pt.mjs → dev/shared/attaform-dev.DrzObAZo.mjs} +6 -7
  23. package/dist/{shared/attaform.B1ZYt2Li.mjs → dev/shared/attaform-dev.q6UutkCx.mjs} +274 -672
  24. package/dist/dev/zod-v3.mjs +17 -0
  25. package/dist/dev/zod-v4.mjs +16 -0
  26. package/dist/dev/zod.mjs +5 -0
  27. package/dist/directive.d.mts +20 -0
  28. package/dist/directive.mjs +1 -0
  29. package/dist/esbuild.mjs +0 -1
  30. package/dist/history.d.mts +59 -0
  31. package/dist/history.mjs +89 -0
  32. package/dist/index.d.mts +14 -6
  33. package/dist/index.mjs +5 -4
  34. package/dist/nuxt.d.mts +10 -10
  35. package/dist/nuxt.mjs +5 -2
  36. package/dist/rollup.mjs +0 -1
  37. package/dist/rspack.d.mts +6 -1
  38. package/dist/rspack.mjs +0 -1
  39. package/dist/runtime/components/AttaformDevtoolsPanel.vue +9 -8
  40. package/dist/runtime/plugins/attaform.mjs +1 -2
  41. package/dist/shared/{attaform.CoR4mWfv.mjs → attaform.B0dKL8ST.mjs} +309 -46
  42. package/dist/shared/{attaform.Cs2Rbdlo.mjs → attaform.BK0cgu2K.mjs} +123 -140
  43. package/dist/shared/{attaform.B9Wyhfro.cjs → attaform.BndjUUYX.mjs} +11 -16
  44. package/dist/shared/{attaform.CQN9R62B.cjs → attaform.BxfsuwBR.mjs} +9 -4
  45. package/dist/shared/attaform.C2MVyuxC.mjs +811 -0
  46. package/dist/shared/{attaform.Fp3sCrVs.d.ts → attaform.CIWLMY-R.d.mts} +2 -2
  47. package/dist/shared/attaform.CZMAYwSK.mjs +6383 -0
  48. package/dist/shared/attaform.CZYt_5N_.mjs +207 -0
  49. package/dist/shared/{attaform.DniawQLP.d.cts → attaform.CsoeRi3P.d.mts} +490 -98
  50. package/dist/shared/attaform.Cvao8bW5.mjs +358 -0
  51. package/dist/shared/attaform.D0x-qSXm.mjs +197 -0
  52. package/dist/shared/{attaform.D8kliaKw.cjs → attaform.D1fnTifF.mjs} +279 -692
  53. package/dist/shared/{attaform.CHlJLAiv.d.mts → attaform.DDtqHYv1.d.mts} +155 -184
  54. package/dist/shared/{attaform.Biytrv0-.cjs → attaform.DffRL5pP.mjs} +215 -547
  55. package/dist/shared/attaform.DhnPb6nK.mjs +0 -1
  56. package/dist/shared/attaform.KvlEedlF.mjs +0 -1
  57. package/dist/shared/attaform.axHXVQO7.d.mts +44 -0
  58. package/dist/shared/attaform.v0fQtWyA.mjs +0 -1
  59. package/dist/transforms.d.mts +0 -22
  60. package/dist/transforms.mjs +1 -2
  61. package/dist/vite.d.mts +30 -9
  62. package/dist/vite.mjs +27 -4
  63. package/dist/webpack.d.mts +6 -1
  64. package/dist/webpack.mjs +0 -1
  65. package/dist/zod-v3.d.mts +13 -6
  66. package/dist/zod-v3.mjs +17 -4
  67. package/dist/zod-v4.d.mts +19 -26
  68. package/dist/zod-v4.mjs +16 -4
  69. package/dist/zod.d.mts +4 -3
  70. package/dist/zod.mjs +5 -4
  71. package/package.json +38 -20
  72. package/skills/attaform/SKILL.md +6 -2
  73. package/skills/attaform/references/custom-components.md +7 -2
  74. package/skills/attaform/references/errors.md +8 -3
  75. package/skills/attaform/references/saving.md +77 -0
  76. package/skills/attaform/references/wizards.md +10 -8
  77. package/dist/abstract.cjs +0 -48
  78. package/dist/abstract.cjs.map +0 -1
  79. package/dist/abstract.d.cts +0 -42
  80. package/dist/abstract.d.ts +0 -42
  81. package/dist/abstract.mjs.map +0 -1
  82. package/dist/chunks/dev-key-collision-warnings.cjs +0 -25
  83. package/dist/chunks/dev-key-collision-warnings.cjs.map +0 -1
  84. package/dist/chunks/dev-key-collision-warnings.mjs.map +0 -1
  85. package/dist/chunks/devtools.cjs +0 -157
  86. package/dist/chunks/devtools.cjs.map +0 -1
  87. package/dist/chunks/devtools.mjs.map +0 -1
  88. package/dist/chunks/fingerprint.cjs.map +0 -1
  89. package/dist/chunks/fingerprint.mjs.map +0 -1
  90. package/dist/chunks/fingerprint2.cjs.map +0 -1
  91. package/dist/chunks/fingerprint2.mjs.map +0 -1
  92. package/dist/esbuild.cjs +0 -28
  93. package/dist/esbuild.cjs.map +0 -1
  94. package/dist/esbuild.d.cts +0 -56
  95. package/dist/esbuild.d.ts +0 -56
  96. package/dist/esbuild.mjs.map +0 -1
  97. package/dist/index.cjs +0 -51
  98. package/dist/index.cjs.map +0 -1
  99. package/dist/index.d.cts +0 -249
  100. package/dist/index.d.ts +0 -249
  101. package/dist/index.mjs.map +0 -1
  102. package/dist/nuxt.cjs +0 -84
  103. package/dist/nuxt.cjs.map +0 -1
  104. package/dist/nuxt.d.cts +0 -66
  105. package/dist/nuxt.d.ts +0 -66
  106. package/dist/nuxt.mjs.map +0 -1
  107. package/dist/rollup.cjs +0 -24
  108. package/dist/rollup.cjs.map +0 -1
  109. package/dist/rollup.d.cts +0 -35
  110. package/dist/rollup.d.ts +0 -35
  111. package/dist/rollup.mjs.map +0 -1
  112. package/dist/rspack.cjs +0 -10
  113. package/dist/rspack.cjs.map +0 -1
  114. package/dist/rspack.d.cts +0 -40
  115. package/dist/rspack.d.ts +0 -40
  116. package/dist/rspack.mjs.map +0 -1
  117. package/dist/runtime/components/AttaformDevtoolsPanel.vue.d.ts +0 -7
  118. package/dist/runtime/components/DevtoolsValueTree.vue.d.ts +0 -35
  119. package/dist/runtime/plugins/attaform.cjs +0 -43
  120. package/dist/runtime/plugins/attaform.cjs.map +0 -1
  121. package/dist/runtime/plugins/attaform.d.cts +0 -5
  122. package/dist/runtime/plugins/attaform.d.ts +0 -5
  123. package/dist/runtime/plugins/attaform.mjs.map +0 -1
  124. package/dist/shared/attaform.B1ZYt2Li.mjs.map +0 -1
  125. package/dist/shared/attaform.B9Wyhfro.cjs.map +0 -1
  126. package/dist/shared/attaform.BGDV42hI.d.cts +0 -232
  127. package/dist/shared/attaform.BJGA_UOS.mjs.map +0 -1
  128. package/dist/shared/attaform.Biytrv0-.cjs.map +0 -1
  129. package/dist/shared/attaform.Bn0IzhD_.cjs +0 -800
  130. package/dist/shared/attaform.Bn0IzhD_.cjs.map +0 -1
  131. package/dist/shared/attaform.C9fPTxjB.d.cts +0 -41
  132. package/dist/shared/attaform.C9fPTxjB.d.ts +0 -41
  133. package/dist/shared/attaform.CKH2lGdL.mjs.map +0 -1
  134. package/dist/shared/attaform.CQN9R62B.cjs.map +0 -1
  135. package/dist/shared/attaform.CoR4mWfv.mjs.map +0 -1
  136. package/dist/shared/attaform.Cs2Rbdlo.mjs.map +0 -1
  137. package/dist/shared/attaform.D6tk90Rc.cjs.map +0 -1
  138. package/dist/shared/attaform.D8kliaKw.cjs.map +0 -1
  139. package/dist/shared/attaform.DLknk9nF.d.mts +0 -232
  140. package/dist/shared/attaform.DMxM2kol.mjs +0 -1275
  141. package/dist/shared/attaform.DMxM2kol.mjs.map +0 -1
  142. package/dist/shared/attaform.DRUT703x.d.cts +0 -56
  143. package/dist/shared/attaform.DRUT703x.d.ts +0 -56
  144. package/dist/shared/attaform.DYEr28Pt.mjs.map +0 -1
  145. package/dist/shared/attaform.DdQN7sgN.cjs +0 -1302
  146. package/dist/shared/attaform.DdQN7sgN.cjs.map +0 -1
  147. package/dist/shared/attaform.DhnPb6nK.mjs.map +0 -1
  148. package/dist/shared/attaform.DniawQLP.d.mts +0 -4763
  149. package/dist/shared/attaform.DniawQLP.d.ts +0 -4763
  150. package/dist/shared/attaform.DoQm_Vkd.cjs +0 -58
  151. package/dist/shared/attaform.DoQm_Vkd.cjs.map +0 -1
  152. package/dist/shared/attaform.DrvMscNX.cjs +0 -7697
  153. package/dist/shared/attaform.DrvMscNX.cjs.map +0 -1
  154. package/dist/shared/attaform.F2Q8iv38.d.ts +0 -2494
  155. package/dist/shared/attaform.FmqKO1Ex.d.cts +0 -2494
  156. package/dist/shared/attaform.KvlEedlF.mjs.map +0 -1
  157. package/dist/shared/attaform.RaTzp1WF.cjs +0 -26
  158. package/dist/shared/attaform.RaTzp1WF.cjs.map +0 -1
  159. package/dist/shared/attaform.nMaz2C5P.mjs.map +0 -1
  160. package/dist/shared/attaform.v0fQtWyA.mjs.map +0 -1
  161. package/dist/shared/attaform.yUrz7C2z.cjs +0 -29
  162. package/dist/shared/attaform.yUrz7C2z.cjs.map +0 -1
  163. package/dist/transforms.cjs +0 -12
  164. package/dist/transforms.cjs.map +0 -1
  165. package/dist/transforms.d.cts +0 -73
  166. package/dist/transforms.d.ts +0 -73
  167. package/dist/transforms.mjs.map +0 -1
  168. package/dist/vite.cjs +0 -363
  169. package/dist/vite.cjs.map +0 -1
  170. package/dist/vite.d.cts +0 -133
  171. package/dist/vite.d.ts +0 -133
  172. package/dist/vite.mjs.map +0 -1
  173. package/dist/webpack.cjs +0 -10
  174. package/dist/webpack.cjs.map +0 -1
  175. package/dist/webpack.d.cts +0 -37
  176. package/dist/webpack.d.ts +0 -37
  177. package/dist/webpack.mjs.map +0 -1
  178. package/dist/zod-v3.cjs +0 -53
  179. package/dist/zod-v3.cjs.map +0 -1
  180. package/dist/zod-v3.d.cts +0 -246
  181. package/dist/zod-v3.d.ts +0 -246
  182. package/dist/zod-v3.mjs.map +0 -1
  183. package/dist/zod-v4.cjs +0 -55
  184. package/dist/zod-v4.cjs.map +0 -1
  185. package/dist/zod-v4.d.cts +0 -172
  186. package/dist/zod-v4.d.ts +0 -172
  187. package/dist/zod-v4.mjs.map +0 -1
  188. package/dist/zod.cjs +0 -51
  189. package/dist/zod.cjs.map +0 -1
  190. package/dist/zod.d.cts +0 -7
  191. package/dist/zod.d.ts +0 -7
  192. package/dist/zod.mjs.map +0 -1
@@ -0,0 +1,207 @@
1
+ class AttaformError extends Error {
2
+ constructor(message, options) {
3
+ super(message, options);
4
+ this.name = new.target.name;
5
+ }
6
+ }
7
+ class InvalidPathError extends AttaformError {
8
+ }
9
+ class InvalidUseFormConfigError extends AttaformError {
10
+ constructor() {
11
+ super(
12
+ "[attaform] AF04 attaform.dev/e/af04"
13
+ );
14
+ }
15
+ }
16
+ class SubmitErrorHandlerError extends AttaformError {
17
+ }
18
+ function toError(value) {
19
+ if (value instanceof Error) return value;
20
+ const message = typeof value === "string" && value.length > 0 ? value : `Submit callback threw a non-Error value (${typeof value})`;
21
+ return new Error(message, { cause: value });
22
+ }
23
+ function normalizeErrorInput(item, scope, defaultCode) {
24
+ if (item instanceof Error) {
25
+ return {
26
+ message: item.message.length > 0 ? item.message : "Unknown error",
27
+ path: scope !== void 0 ? [...scope] : [],
28
+ code: defaultCode
29
+ };
30
+ }
31
+ const entry = {
32
+ message: typeof item.message === "string" && item.message.length > 0 ? item.message : "Unknown error",
33
+ path: scope !== void 0 ? [...scope] : Array.isArray(item.path) ? [...item.path] : [],
34
+ code: typeof item.code === "string" && item.code.length > 0 ? item.code : defaultCode
35
+ };
36
+ if (item.data !== void 0) entry.data = item.data;
37
+ return entry;
38
+ }
39
+ function normalizeErrorInputs(input, scope, defaultCode) {
40
+ const items = Array.isArray(input) ? input : [input];
41
+ return items.map((item) => normalizeErrorInput(item, scope, defaultCode));
42
+ }
43
+ function* cellEntriesFor(cells, side) {
44
+ for (const [key, cell] of cells) {
45
+ const list = cell[side];
46
+ if (list.length > 0) yield [key, list];
47
+ }
48
+ }
49
+ class RegistryNotInstalledError extends AttaformError {
50
+ constructor() {
51
+ super(
52
+ "[attaform] AF07 attaform.dev/e/af07"
53
+ );
54
+ }
55
+ }
56
+ class OutsideSetupError extends AttaformError {
57
+ constructor() {
58
+ super(
59
+ "[attaform] AF06 attaform.dev/e/af06"
60
+ );
61
+ }
62
+ }
63
+ class ReservedFormKeyError extends AttaformError {
64
+ constructor(key) {
65
+ super(
66
+ `[attaform] AF05 attaform.dev/e/af05 "${key}"`
67
+ );
68
+ }
69
+ }
70
+ function groupErrorsByKey(entries) {
71
+ const grouped = /* @__PURE__ */ new Map();
72
+ for (const raw of entries) {
73
+ const { key } = canonicalizePath(raw.path);
74
+ const list = grouped.get(key);
75
+ if (list === void 0) grouped.set(key, [raw]);
76
+ else list.push(raw);
77
+ }
78
+ return grouped;
79
+ }
80
+
81
+ const INTEGER_SEGMENT = /^(?:0|[1-9]\d*)$/;
82
+ const SET_MEMBER_SEGMENT = "__atta:member";
83
+ function mapSegmentKeys(value) {
84
+ const keys = [];
85
+ for (const key of value.keys()) {
86
+ if (typeof key === "string") keys.push(key);
87
+ else if (typeof key === "number" && Number.isInteger(key) && key >= 0) keys.push(key);
88
+ else return null;
89
+ }
90
+ return keys;
91
+ }
92
+ function normalizeSegment(raw) {
93
+ if (typeof raw === "number") {
94
+ if (!Number.isInteger(raw) || raw < 0) {
95
+ throw new InvalidPathError(
96
+ `[attaform] AF08 attaform.dev/e/af08 ${String(raw)}`
97
+ );
98
+ }
99
+ return raw;
100
+ }
101
+ if (INTEGER_SEGMENT.test(raw)) return Number(raw);
102
+ return raw;
103
+ }
104
+ function parseDottedPath(path) {
105
+ if (path.length === 0) return [""];
106
+ const rawSegments = path.split(".");
107
+ const segments = [];
108
+ for (const raw of rawSegments) {
109
+ if (raw.length === 0) {
110
+ throw new InvalidPathError(
111
+ `[attaform] AF09 attaform.dev/e/af09 '${path}'`
112
+ );
113
+ }
114
+ segments.push(normalizeSegment(raw));
115
+ }
116
+ return segments;
117
+ }
118
+ const CANONICAL_STRING_CACHE_MAX = 128;
119
+ const canonicalStringCache = /* @__PURE__ */ new Map();
120
+ const PATHKEY_TO_SEGMENTS_MAX = 4096;
121
+ const pathKeyToSegments = /* @__PURE__ */ new Map();
122
+ function rememberSegmentsForPathKey(key, segments) {
123
+ if (!pathKeyToSegments.has(key) && pathKeyToSegments.size >= PATHKEY_TO_SEGMENTS_MAX) {
124
+ const oldest = pathKeyToSegments.keys().next().value;
125
+ if (oldest !== void 0) pathKeyToSegments.delete(oldest);
126
+ }
127
+ pathKeyToSegments.set(key, segments);
128
+ }
129
+ function segmentsForPathKey(key) {
130
+ const cached = pathKeyToSegments.get(key);
131
+ if (cached !== void 0) return cached;
132
+ let parsed;
133
+ try {
134
+ parsed = JSON.parse(key);
135
+ } catch {
136
+ return null;
137
+ }
138
+ if (!Array.isArray(parsed)) return null;
139
+ const segments = [];
140
+ for (const raw of parsed) {
141
+ if (typeof raw !== "string" && typeof raw !== "number") return null;
142
+ segments.push(normalizeSegment(raw));
143
+ }
144
+ rememberSegmentsForPathKey(key, segments);
145
+ return segments;
146
+ }
147
+ function canonicalizePath(input) {
148
+ if (typeof input === "string") {
149
+ const cached = canonicalStringCache.get(input);
150
+ if (cached !== void 0) return cached;
151
+ const segments = parseDottedPath(input);
152
+ const key = JSON.stringify(segments);
153
+ const entry = { segments, key };
154
+ if (canonicalStringCache.size >= CANONICAL_STRING_CACHE_MAX) {
155
+ const oldest = canonicalStringCache.keys().next().value;
156
+ if (oldest !== void 0) canonicalStringCache.delete(oldest);
157
+ }
158
+ canonicalStringCache.set(input, entry);
159
+ rememberSegmentsForPathKey(key, segments);
160
+ return entry;
161
+ }
162
+ return keyForSegments(input);
163
+ }
164
+ function keyForSegments(input) {
165
+ const segments = Array.from(input).map(normalizeSegment);
166
+ const key = JSON.stringify(segments);
167
+ rememberSegmentsForPathKey(key, segments);
168
+ return { segments, key };
169
+ }
170
+ function segmentsToDotted(segments) {
171
+ return segments.join(".");
172
+ }
173
+ function pathKeyToDotted(key) {
174
+ const segments = segmentsForPathKey(key);
175
+ if (segments === null) return null;
176
+ return segmentsToDotted(segments);
177
+ }
178
+ function coerceToPathKey(input) {
179
+ if (input.length > 0 && input.charCodeAt(0) === 91) {
180
+ try {
181
+ const parsed = JSON.parse(input);
182
+ if (Array.isArray(parsed) && parsed.every((s) => typeof s === "string" || typeof s === "number")) {
183
+ return input;
184
+ }
185
+ } catch {
186
+ }
187
+ }
188
+ return canonicalizePath(input).key;
189
+ }
190
+ const ROOT_PATH = Object.freeze([]);
191
+ const ROOT_PATH_KEY = "[]";
192
+ function isPathPrefix(prefix, path) {
193
+ if (path.length < prefix.length) return false;
194
+ for (let i = 0; i < prefix.length; i++) {
195
+ if (path[i] !== prefix[i]) return false;
196
+ }
197
+ return true;
198
+ }
199
+ function pathsEqual(a, b) {
200
+ if (a.length !== b.length) return false;
201
+ for (let i = 0; i < a.length; i++) {
202
+ if (a[i] !== b[i]) return false;
203
+ }
204
+ return true;
205
+ }
206
+
207
+ export { AttaformError as A, InvalidPathError as I, OutsideSetupError as O, ROOT_PATH as R, SubmitErrorHandlerError as S, InvalidUseFormConfigError as a, ROOT_PATH_KEY as b, RegistryNotInstalledError as c, ReservedFormKeyError as d, canonicalizePath as e, pathsEqual as f, pathKeyToDotted as g, SET_MEMBER_SEGMENT as h, isPathPrefix as i, cellEntriesFor as j, keyForSegments as k, groupErrorsByKey as l, mapSegmentKeys as m, normalizeErrorInput as n, normalizeErrorInputs as o, parseDottedPath as p, coerceToPathKey as q, segmentsForPathKey as s, toError as t };