auto-gen-crud 0.1.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 (62) hide show
  1. package/API.md +130 -0
  2. package/README.md +234 -0
  3. package/dist/adapters/ant-design-vue.d.ts +8 -0
  4. package/dist/adapters/element-plus.d.ts +8 -0
  5. package/dist/adapters/index.d.ts +4 -0
  6. package/dist/adapters/index.js +7 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/adapters/naive.d.ts +8 -0
  9. package/dist/adapters/types.d.ts +162 -0
  10. package/dist/components/AutoCrud.vue.d.ts +398 -0
  11. package/dist/components/CopyText.vue.d.ts +6 -0
  12. package/dist/components/CrudModal.vue.d.ts +47 -0
  13. package/dist/components/DecodeText.vue.d.ts +8 -0
  14. package/dist/components/DynamicForm.vue.d.ts +63 -0
  15. package/dist/components/DynamicFormItem.vue.d.ts +20 -0
  16. package/dist/components/DynamicTable.vue.d.ts +30 -0
  17. package/dist/context.d.ts +36 -0
  18. package/dist/core/date-format-utils.d.ts +8 -0
  19. package/dist/core/form-runtime-cache.d.ts +27 -0
  20. package/dist/core/form-utils.d.ts +51 -0
  21. package/dist/core/object-utils.d.ts +43 -0
  22. package/dist/core/table-utils.d.ts +19 -0
  23. package/dist/core/types.d.ts +443 -0
  24. package/dist/generator/fields.d.ts +27 -0
  25. package/dist/generator/index.d.ts +14 -0
  26. package/dist/generator/index.js +740 -0
  27. package/dist/generator/index.js.map +1 -0
  28. package/dist/generator/openapi.d.ts +10 -0
  29. package/dist/generator/operations.d.ts +8 -0
  30. package/dist/generator/schema.d.ts +32 -0
  31. package/dist/generator/string-utils.d.ts +11 -0
  32. package/dist/generator/templates.d.ts +6 -0
  33. package/dist/generator/types.d.ts +185 -0
  34. package/dist/generator/writer.d.ts +8 -0
  35. package/dist/hooks/index.d.ts +3 -0
  36. package/dist/hooks/index.js +7 -0
  37. package/dist/hooks/index.js.map +1 -0
  38. package/dist/hooks/useModalForm.d.ts +11 -0
  39. package/dist/hooks/useSearchForm.d.ts +10 -0
  40. package/dist/hooks/useTable.d.ts +11 -0
  41. package/dist/index-Dc-solHn.js +299 -0
  42. package/dist/index-Dc-solHn.js.map +1 -0
  43. package/dist/index.d.ts +12 -0
  44. package/dist/index.js +985 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/plugin.d.ts +17 -0
  47. package/dist/style.css +1 -0
  48. package/dist/useTable-BwDSqD1q.js +214 -0
  49. package/dist/useTable-BwDSqD1q.js.map +1 -0
  50. package/dist/utils/clipboard.d.ts +16 -0
  51. package/dist/utils/index.d.ts +4 -0
  52. package/dist/utils/index.js +532 -0
  53. package/dist/utils/index.js.map +1 -0
  54. package/dist/utils/message.d.ts +9 -0
  55. package/dist/utils/request.d.ts +8 -0
  56. package/dist/utils/sm4-core.d.ts +12 -0
  57. package/dist/utils/sm4.d.ts +29 -0
  58. package/docs/AI_AGENT_GUIDE.md +210 -0
  59. package/mcp/auto-crud-mcp.mjs +502 -0
  60. package/mcp/auto-gen-crud-mcp.mjs +586 -0
  61. package/package.json +93 -0
  62. package/skills/auto-gen-crud-agent/SKILL.md +114 -0
@@ -0,0 +1,398 @@
1
+ import { AutoCrudProps, CrudFormItem } from '../core/types';
2
+ /** AutoCrud 是组合容器,只负责把搜索表单、表格、弹窗表单三块配置串起来。 */
3
+ type __VLS_Props = AutoCrudProps<any>;
4
+ /** 弹窗 footer 的提交入口,最终会走 DynamicForm 校验,再触发 modalFormConfig.submit。 */
5
+ declare function handleModalSubmit(): Promise<void>;
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: {
9
+ searchButtonToolbar?(_: {}): any;
10
+ tableToolbar?(_: {}): any;
11
+ modalFooter?(_: {
12
+ modalForm: import('..').CrudModalFormConfig<any>;
13
+ submit: typeof handleModalSubmit;
14
+ close: () => void;
15
+ }): any;
16
+ };
17
+ refs: {
18
+ searchFormRef: ({
19
+ $: import('vue').ComponentInternalInstance;
20
+ $data: {};
21
+ $props: {
22
+ readonly formType?: "search" | "modal" | undefined;
23
+ readonly columns: CrudFormItem[];
24
+ readonly modelValue: Record<string, unknown>;
25
+ readonly layout?: import('..').CrudFormLayout | undefined;
26
+ readonly disabled?: boolean | undefined;
27
+ readonly onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
28
+ readonly onReset?: (() => any) | undefined;
29
+ readonly "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
30
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
31
+ $attrs: import('vue').Attrs;
32
+ $refs: {
33
+ [x: string]: unknown;
34
+ } & {
35
+ formRef: unknown;
36
+ };
37
+ $slots: Readonly<{
38
+ [name: string]: import('vue').Slot<any> | undefined;
39
+ }>;
40
+ $root: import('vue').ComponentPublicInstance | null;
41
+ $parent: import('vue').ComponentPublicInstance | null;
42
+ $host: Element | null;
43
+ $emit: ((event: "submit", value: Record<string, unknown>) => void) & ((event: "reset") => void) & ((event: "update:modelValue", value: Record<string, unknown>) => void);
44
+ $el: any;
45
+ $options: import('vue').ComponentOptionsBase<Readonly<{
46
+ formType?: "search" | "modal";
47
+ columns: CrudFormItem[];
48
+ modelValue: Record<string, unknown>;
49
+ layout?: import('..').CrudFormLayout;
50
+ disabled?: boolean;
51
+ }> & Readonly<{
52
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
53
+ onReset?: (() => any) | undefined;
54
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
55
+ }>, {
56
+ validate: () => Promise<boolean>;
57
+ clearValidate: () => void;
58
+ submit: () => Promise<void>;
59
+ reset: () => void;
60
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
61
+ submit: (value: Record<string, unknown>) => any;
62
+ reset: () => any;
63
+ "update:modelValue": (value: Record<string, unknown>) => any;
64
+ }, string, {
65
+ disabled: boolean;
66
+ formType: "search" | "modal";
67
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
68
+ beforeCreate?: (() => void) | (() => void)[];
69
+ created?: (() => void) | (() => void)[];
70
+ beforeMount?: (() => void) | (() => void)[];
71
+ mounted?: (() => void) | (() => void)[];
72
+ beforeUpdate?: (() => void) | (() => void)[];
73
+ updated?: (() => void) | (() => void)[];
74
+ activated?: (() => void) | (() => void)[];
75
+ deactivated?: (() => void) | (() => void)[];
76
+ beforeDestroy?: (() => void) | (() => void)[];
77
+ beforeUnmount?: (() => void) | (() => void)[];
78
+ destroyed?: (() => void) | (() => void)[];
79
+ unmounted?: (() => void) | (() => void)[];
80
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
81
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
82
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
83
+ };
84
+ $forceUpdate: () => void;
85
+ $nextTick: typeof import('vue').nextTick;
86
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
87
+ } & Readonly<{
88
+ disabled: boolean;
89
+ formType: "search" | "modal";
90
+ }> & Omit<Readonly<{
91
+ formType?: "search" | "modal";
92
+ columns: CrudFormItem[];
93
+ modelValue: Record<string, unknown>;
94
+ layout?: import('..').CrudFormLayout;
95
+ disabled?: boolean;
96
+ }> & Readonly<{
97
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
98
+ onReset?: (() => any) | undefined;
99
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
100
+ }>, "validate" | "submit" | "reset" | "clearValidate" | ("disabled" | "formType")> & {
101
+ validate: () => Promise<boolean>;
102
+ clearValidate: () => void;
103
+ submit: () => Promise<void>;
104
+ reset: () => void;
105
+ } & {} & import('vue').ComponentCustomProperties & {} & {
106
+ $slots: {
107
+ searchButtonToolbar?(_: {}): any;
108
+ };
109
+ }) | null;
110
+ modalFormRef: ({
111
+ $: import('vue').ComponentInternalInstance;
112
+ $data: {};
113
+ $props: {
114
+ readonly formType?: "search" | "modal" | undefined;
115
+ readonly columns: CrudFormItem[];
116
+ readonly modelValue: Record<string, unknown>;
117
+ readonly layout?: import('..').CrudFormLayout | undefined;
118
+ readonly disabled?: boolean | undefined;
119
+ readonly onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
120
+ readonly onReset?: (() => any) | undefined;
121
+ readonly "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
122
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
123
+ $attrs: import('vue').Attrs;
124
+ $refs: {
125
+ [x: string]: unknown;
126
+ } & {
127
+ formRef: unknown;
128
+ };
129
+ $slots: Readonly<{
130
+ [name: string]: import('vue').Slot<any> | undefined;
131
+ }>;
132
+ $root: import('vue').ComponentPublicInstance | null;
133
+ $parent: import('vue').ComponentPublicInstance | null;
134
+ $host: Element | null;
135
+ $emit: ((event: "submit", value: Record<string, unknown>) => void) & ((event: "reset") => void) & ((event: "update:modelValue", value: Record<string, unknown>) => void);
136
+ $el: any;
137
+ $options: import('vue').ComponentOptionsBase<Readonly<{
138
+ formType?: "search" | "modal";
139
+ columns: CrudFormItem[];
140
+ modelValue: Record<string, unknown>;
141
+ layout?: import('..').CrudFormLayout;
142
+ disabled?: boolean;
143
+ }> & Readonly<{
144
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
145
+ onReset?: (() => any) | undefined;
146
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
147
+ }>, {
148
+ validate: () => Promise<boolean>;
149
+ clearValidate: () => void;
150
+ submit: () => Promise<void>;
151
+ reset: () => void;
152
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
153
+ submit: (value: Record<string, unknown>) => any;
154
+ reset: () => any;
155
+ "update:modelValue": (value: Record<string, unknown>) => any;
156
+ }, string, {
157
+ disabled: boolean;
158
+ formType: "search" | "modal";
159
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
160
+ beforeCreate?: (() => void) | (() => void)[];
161
+ created?: (() => void) | (() => void)[];
162
+ beforeMount?: (() => void) | (() => void)[];
163
+ mounted?: (() => void) | (() => void)[];
164
+ beforeUpdate?: (() => void) | (() => void)[];
165
+ updated?: (() => void) | (() => void)[];
166
+ activated?: (() => void) | (() => void)[];
167
+ deactivated?: (() => void) | (() => void)[];
168
+ beforeDestroy?: (() => void) | (() => void)[];
169
+ beforeUnmount?: (() => void) | (() => void)[];
170
+ destroyed?: (() => void) | (() => void)[];
171
+ unmounted?: (() => void) | (() => void)[];
172
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
173
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
174
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
175
+ };
176
+ $forceUpdate: () => void;
177
+ $nextTick: typeof import('vue').nextTick;
178
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
179
+ } & Readonly<{
180
+ disabled: boolean;
181
+ formType: "search" | "modal";
182
+ }> & Omit<Readonly<{
183
+ formType?: "search" | "modal";
184
+ columns: CrudFormItem[];
185
+ modelValue: Record<string, unknown>;
186
+ layout?: import('..').CrudFormLayout;
187
+ disabled?: boolean;
188
+ }> & Readonly<{
189
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
190
+ onReset?: (() => any) | undefined;
191
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
192
+ }>, "validate" | "submit" | "reset" | "clearValidate" | ("disabled" | "formType")> & {
193
+ validate: () => Promise<boolean>;
194
+ clearValidate: () => void;
195
+ submit: () => Promise<void>;
196
+ reset: () => void;
197
+ } & {} & import('vue').ComponentCustomProperties & {} & {
198
+ $slots: {
199
+ searchButtonToolbar?(_: {}): any;
200
+ };
201
+ }) | null;
202
+ };
203
+ rootEl: HTMLDivElement;
204
+ };
205
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
206
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
207
+ searchFormRef: ({
208
+ $: import('vue').ComponentInternalInstance;
209
+ $data: {};
210
+ $props: {
211
+ readonly formType?: "search" | "modal" | undefined;
212
+ readonly columns: CrudFormItem[];
213
+ readonly modelValue: Record<string, unknown>;
214
+ readonly layout?: import('..').CrudFormLayout | undefined;
215
+ readonly disabled?: boolean | undefined;
216
+ readonly onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
217
+ readonly onReset?: (() => any) | undefined;
218
+ readonly "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
219
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
220
+ $attrs: import('vue').Attrs;
221
+ $refs: {
222
+ [x: string]: unknown;
223
+ } & {
224
+ formRef: unknown;
225
+ };
226
+ $slots: Readonly<{
227
+ [name: string]: import('vue').Slot<any> | undefined;
228
+ }>;
229
+ $root: import('vue').ComponentPublicInstance | null;
230
+ $parent: import('vue').ComponentPublicInstance | null;
231
+ $host: Element | null;
232
+ $emit: ((event: "submit", value: Record<string, unknown>) => void) & ((event: "reset") => void) & ((event: "update:modelValue", value: Record<string, unknown>) => void);
233
+ $el: any;
234
+ $options: import('vue').ComponentOptionsBase<Readonly<{
235
+ formType?: "search" | "modal";
236
+ columns: CrudFormItem[];
237
+ modelValue: Record<string, unknown>;
238
+ layout?: import('..').CrudFormLayout;
239
+ disabled?: boolean;
240
+ }> & Readonly<{
241
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
242
+ onReset?: (() => any) | undefined;
243
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
244
+ }>, {
245
+ validate: () => Promise<boolean>;
246
+ clearValidate: () => void;
247
+ submit: () => Promise<void>;
248
+ reset: () => void;
249
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
250
+ submit: (value: Record<string, unknown>) => any;
251
+ reset: () => any;
252
+ "update:modelValue": (value: Record<string, unknown>) => any;
253
+ }, string, {
254
+ disabled: boolean;
255
+ formType: "search" | "modal";
256
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
257
+ beforeCreate?: (() => void) | (() => void)[];
258
+ created?: (() => void) | (() => void)[];
259
+ beforeMount?: (() => void) | (() => void)[];
260
+ mounted?: (() => void) | (() => void)[];
261
+ beforeUpdate?: (() => void) | (() => void)[];
262
+ updated?: (() => void) | (() => void)[];
263
+ activated?: (() => void) | (() => void)[];
264
+ deactivated?: (() => void) | (() => void)[];
265
+ beforeDestroy?: (() => void) | (() => void)[];
266
+ beforeUnmount?: (() => void) | (() => void)[];
267
+ destroyed?: (() => void) | (() => void)[];
268
+ unmounted?: (() => void) | (() => void)[];
269
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
270
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
271
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
272
+ };
273
+ $forceUpdate: () => void;
274
+ $nextTick: typeof import('vue').nextTick;
275
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
276
+ } & Readonly<{
277
+ disabled: boolean;
278
+ formType: "search" | "modal";
279
+ }> & Omit<Readonly<{
280
+ formType?: "search" | "modal";
281
+ columns: CrudFormItem[];
282
+ modelValue: Record<string, unknown>;
283
+ layout?: import('..').CrudFormLayout;
284
+ disabled?: boolean;
285
+ }> & Readonly<{
286
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
287
+ onReset?: (() => any) | undefined;
288
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
289
+ }>, "validate" | "submit" | "reset" | "clearValidate" | ("disabled" | "formType")> & {
290
+ validate: () => Promise<boolean>;
291
+ clearValidate: () => void;
292
+ submit: () => Promise<void>;
293
+ reset: () => void;
294
+ } & {} & import('vue').ComponentCustomProperties & {} & {
295
+ $slots: {
296
+ searchButtonToolbar?(_: {}): any;
297
+ };
298
+ }) | null;
299
+ modalFormRef: ({
300
+ $: import('vue').ComponentInternalInstance;
301
+ $data: {};
302
+ $props: {
303
+ readonly formType?: "search" | "modal" | undefined;
304
+ readonly columns: CrudFormItem[];
305
+ readonly modelValue: Record<string, unknown>;
306
+ readonly layout?: import('..').CrudFormLayout | undefined;
307
+ readonly disabled?: boolean | undefined;
308
+ readonly onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
309
+ readonly onReset?: (() => any) | undefined;
310
+ readonly "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
311
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
312
+ $attrs: import('vue').Attrs;
313
+ $refs: {
314
+ [x: string]: unknown;
315
+ } & {
316
+ formRef: unknown;
317
+ };
318
+ $slots: Readonly<{
319
+ [name: string]: import('vue').Slot<any> | undefined;
320
+ }>;
321
+ $root: import('vue').ComponentPublicInstance | null;
322
+ $parent: import('vue').ComponentPublicInstance | null;
323
+ $host: Element | null;
324
+ $emit: ((event: "submit", value: Record<string, unknown>) => void) & ((event: "reset") => void) & ((event: "update:modelValue", value: Record<string, unknown>) => void);
325
+ $el: any;
326
+ $options: import('vue').ComponentOptionsBase<Readonly<{
327
+ formType?: "search" | "modal";
328
+ columns: CrudFormItem[];
329
+ modelValue: Record<string, unknown>;
330
+ layout?: import('..').CrudFormLayout;
331
+ disabled?: boolean;
332
+ }> & Readonly<{
333
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
334
+ onReset?: (() => any) | undefined;
335
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
336
+ }>, {
337
+ validate: () => Promise<boolean>;
338
+ clearValidate: () => void;
339
+ submit: () => Promise<void>;
340
+ reset: () => void;
341
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
342
+ submit: (value: Record<string, unknown>) => any;
343
+ reset: () => any;
344
+ "update:modelValue": (value: Record<string, unknown>) => any;
345
+ }, string, {
346
+ disabled: boolean;
347
+ formType: "search" | "modal";
348
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
349
+ beforeCreate?: (() => void) | (() => void)[];
350
+ created?: (() => void) | (() => void)[];
351
+ beforeMount?: (() => void) | (() => void)[];
352
+ mounted?: (() => void) | (() => void)[];
353
+ beforeUpdate?: (() => void) | (() => void)[];
354
+ updated?: (() => void) | (() => void)[];
355
+ activated?: (() => void) | (() => void)[];
356
+ deactivated?: (() => void) | (() => void)[];
357
+ beforeDestroy?: (() => void) | (() => void)[];
358
+ beforeUnmount?: (() => void) | (() => void)[];
359
+ destroyed?: (() => void) | (() => void)[];
360
+ unmounted?: (() => void) | (() => void)[];
361
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
362
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
363
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
364
+ };
365
+ $forceUpdate: () => void;
366
+ $nextTick: typeof import('vue').nextTick;
367
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
368
+ } & Readonly<{
369
+ disabled: boolean;
370
+ formType: "search" | "modal";
371
+ }> & Omit<Readonly<{
372
+ formType?: "search" | "modal";
373
+ columns: CrudFormItem[];
374
+ modelValue: Record<string, unknown>;
375
+ layout?: import('..').CrudFormLayout;
376
+ disabled?: boolean;
377
+ }> & Readonly<{
378
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
379
+ onReset?: (() => any) | undefined;
380
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
381
+ }>, "validate" | "submit" | "reset" | "clearValidate" | ("disabled" | "formType")> & {
382
+ validate: () => Promise<boolean>;
383
+ clearValidate: () => void;
384
+ submit: () => Promise<void>;
385
+ reset: () => void;
386
+ } & {} & import('vue').ComponentCustomProperties & {} & {
387
+ $slots: {
388
+ searchButtonToolbar?(_: {}): any;
389
+ };
390
+ }) | null;
391
+ }, HTMLDivElement>;
392
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
393
+ export default _default;
394
+ type __VLS_WithTemplateSlots<T, S> = T & {
395
+ new (): {
396
+ $slots: S;
397
+ };
398
+ };
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ /** 要展示和复制的文本。 */
3
+ value: unknown;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
6
+ export default _default;
@@ -0,0 +1,47 @@
1
+ import { CrudModalMode, CrudModalType } from '../core/types';
2
+ type __VLS_Props = {
3
+ /** 弹窗是否显示。 */
4
+ visible: boolean;
5
+ /** 弹窗标题。 */
6
+ title: string;
7
+ /** 弹窗模式,查看模式会隐藏提交按钮。 */
8
+ mode: CrudModalMode;
9
+ /** drawer 或 modal。 */
10
+ modalType?: CrudModalType;
11
+ /** 弹窗宽度。 */
12
+ width?: string | number;
13
+ /** 提交按钮文案。 */
14
+ submitText?: string;
15
+ /** 关闭按钮文案。 */
16
+ cancelText?: string;
17
+ };
18
+ declare function __VLS_template(): {
19
+ attrs: Partial<{}>;
20
+ slots: {
21
+ default?(_: {}): any;
22
+ default?(_: {}): any;
23
+ };
24
+ refs: {};
25
+ rootEl: any;
26
+ };
27
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
28
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
29
+ "update:visible": (value: boolean) => any;
30
+ submit: () => any;
31
+ close: () => any;
32
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
33
+ "onUpdate:visible"?: ((value: boolean) => any) | undefined;
34
+ onSubmit?: (() => any) | undefined;
35
+ onClose?: (() => any) | undefined;
36
+ }>, {
37
+ cancelText: string;
38
+ modalType: CrudModalType;
39
+ submitText: string;
40
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
41
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
42
+ export default _default;
43
+ type __VLS_WithTemplateSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ /** 原始敏感值,通常是手机号、证件号等密文或脱敏文本。 */
3
+ value: unknown;
4
+ /** 当前行数据,传给用户注入的 decode/decodeLog 函数。 */
5
+ row?: Record<string, unknown>;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
8
+ export default _default;
@@ -0,0 +1,63 @@
1
+ import { CrudFormItem, CrudFormLayout } from '../core/types';
2
+ type __VLS_Props = {
3
+ /** 当前表单用途:搜索表单会显示搜索/重置按钮,弹窗表单只暴露 submit 给外部 footer 调用。 */
4
+ formType?: "search" | "modal";
5
+ /** 表单字段 schema。 */
6
+ columns: CrudFormItem[];
7
+ /** 表单数据,支持 v-model。 */
8
+ modelValue: Record<string, unknown>;
9
+ /** 表单布局配置。 */
10
+ layout?: CrudFormLayout;
11
+ /** 是否整体禁用,查看模式会传 true。 */
12
+ disabled?: boolean;
13
+ };
14
+ /**
15
+ * 校验表单。
16
+ *
17
+ * 校验方法由 adapter 调用当前 UI 的真实表单实例,
18
+ * 因此这里不需要知道 `ElForm`、`NForm`、`AForm` 的方法细节。
19
+ */
20
+ declare function validate(): Promise<boolean>;
21
+ /** 清空表单校验状态。 */
22
+ declare function clearValidate(): void;
23
+ /** 提交表单。 */
24
+ declare function submit(): Promise<void>;
25
+ /** 重置表单。 */
26
+ declare function reset(): void;
27
+ declare function __VLS_template(): {
28
+ attrs: Partial<{}>;
29
+ slots: {
30
+ searchButtonToolbar?(_: {}): any;
31
+ };
32
+ refs: {
33
+ formRef: unknown;
34
+ };
35
+ rootEl: any;
36
+ };
37
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
38
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
39
+ validate: typeof validate;
40
+ clearValidate: typeof clearValidate;
41
+ submit: typeof submit;
42
+ reset: typeof reset;
43
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
44
+ submit: (value: Record<string, unknown>) => any;
45
+ reset: () => any;
46
+ "update:modelValue": (value: Record<string, unknown>) => any;
47
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
48
+ onSubmit?: ((value: Record<string, unknown>) => any) | undefined;
49
+ onReset?: (() => any) | undefined;
50
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
51
+ }>, {
52
+ disabled: boolean;
53
+ formType: "search" | "modal";
54
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
55
+ formRef: unknown;
56
+ }, any>;
57
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
58
+ export default _default;
59
+ type __VLS_WithTemplateSlots<T, S> = T & {
60
+ new (): {
61
+ $slots: S;
62
+ };
63
+ };
@@ -0,0 +1,20 @@
1
+ import { CrudFormItem } from '../core/types';
2
+ import { FormRuntimeCache } from '../core/form-runtime-cache';
3
+ type __VLS_Props = {
4
+ /** 当前字段配置。 */
5
+ item: CrudFormItem;
6
+ /** 整个表单数据,字段函数仍可读取其它字段。 */
7
+ modelValue: Record<string, unknown>;
8
+ /** 表单动态值缓存,由父组件统一创建并在搜索表单/弹窗表单间复用同一套逻辑。 */
9
+ runtimeCache: FormRuntimeCache;
10
+ /** 当前字段校验规则,父组件按字段预先聚合后传入。 */
11
+ rules?: unknown[];
12
+ /** 是否整体禁用,查看模式会传 true。 */
13
+ disabled?: boolean;
14
+ };
15
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
+ "update:modelValue": (value: Record<string, unknown>) => any;
17
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ "onUpdate:modelValue"?: ((value: Record<string, unknown>) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
20
+ export default _default;
@@ -0,0 +1,30 @@
1
+ import { CrudTableConfig } from '../core/types';
2
+ type __VLS_Props = {
3
+ /** useTable 返回的表格配置,包含列、数据、分页、加载状态和列表操作方法。 */
4
+ tableConfig: CrudTableConfig<any>;
5
+ };
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: {
9
+ tableToolbar?(_: {}): any;
10
+ };
11
+ refs: {
12
+ tableRootRef: HTMLDivElement;
13
+ tableBodyRef: HTMLDivElement;
14
+ paginationRef: HTMLDivElement;
15
+ };
16
+ rootEl: any;
17
+ };
18
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
19
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
20
+ tableRootRef: HTMLDivElement;
21
+ tableBodyRef: HTMLDivElement;
22
+ paginationRef: HTMLDivElement;
23
+ }, any>;
24
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
25
+ export default _default;
26
+ type __VLS_WithTemplateSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -0,0 +1,36 @@
1
+ import { AutoCrudInstallOptions, CrudDecodeHandler, CrudDecodeLogHandler, CrudRequestHandler } from './core/types';
2
+ import { CrudUIAdapter } from './adapters/types';
3
+ /** Auto CRUD 全局上下文。 */
4
+ export interface AutoCrudContext {
5
+ /** 当前项目初始化时选择的 UI Adapter。 */
6
+ adapter: CrudUIAdapter;
7
+ /** 用户注入的请求函数,供 decode、日志等能力使用。 */
8
+ request?: CrudRequestHandler;
9
+ /** 用户注入的敏感信息解密函数。 */
10
+ decode?: CrudDecodeHandler;
11
+ /** 用户注入的敏感信息查看日志函数。 */
12
+ decodeLog?: CrudDecodeLogHandler;
13
+ /** 默认 SM4 密钥。 */
14
+ sm4Key?: string;
15
+ }
16
+ export declare const AUTO_CRUD_CONTEXT_KEY: unique symbol;
17
+ /**
18
+ * 设置全局上下文。
19
+ *
20
+ * 插件安装时会调用它。额外保留模块级 globalContext,
21
+ * 是为了让内部工具或没有处在组件 setup 注入链里的代码也能读取默认配置。
22
+ */
23
+ export declare function setAutoCrudContext(context: AutoCrudContext): void;
24
+ /** 获取模块级全局上下文。 */
25
+ export declare function getAutoCrudContext(): AutoCrudContext;
26
+ /** 在组件树中注入上下文。 */
27
+ export declare function provideAutoCrudContext(context: AutoCrudContext): void;
28
+ /**
29
+ * 在组件中读取 Auto CRUD 上下文。
30
+ *
31
+ * 如果使用者忘记 `app.use(createAutoCrud())`,这里也会返回默认 Element Plus 配置,
32
+ * 确保“默认 Element Plus”这个约定稳定可用。
33
+ */
34
+ export declare function useAutoCrudContext(): AutoCrudContext;
35
+ /** 根据初始化参数合并上下文。 */
36
+ export declare function createAutoCrudContext(options: AutoCrudInstallOptions | undefined, adapter: CrudUIAdapter): AutoCrudContext;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 把业务侧常见的 dayjs / Element Plus 日期格式转换成 date-fns 兼容格式。
3
+ *
4
+ * 设计边界:
5
+ * - 这里只处理当前 CRUD 配置里高频出现、且会直接导致 Naive UI 报错的 token。
6
+ * - 不做完整日期格式编译器,避免把大小写语义相近但业务含义不同的 token 误改掉。
7
+ */
8
+ export declare function normalizeDateFnsFormat(format: unknown): unknown;
@@ -0,0 +1,27 @@
1
+ import { CrudFormItem, CrudFormRule, CrudOption } from './types';
2
+ /**
3
+ * 表单运行时缓存对外暴露的能力。
4
+ *
5
+ * DynamicForm / DynamicFormItem 不直接调用 form-utils 中的动态计算函数,
6
+ * 而是统一通过这个对象读取结果。这样可以把“是否缓存、如何缓存、如何统计”
7
+ * 全部收敛在本文件里。
8
+ */
9
+ export interface FormRuntimeCache {
10
+ getShow: (item: CrudFormItem, formData: Record<string, unknown>) => boolean;
11
+ getDisabled: (item: CrudFormItem, formData: Record<string, unknown>, forceDisabled?: boolean) => boolean;
12
+ getRules: (item: CrudFormItem, formData: Record<string, unknown>) => CrudFormRule[];
13
+ getOptions: (item: CrudFormItem, formData: Record<string, unknown>) => CrudOption[];
14
+ getLabel: (item: CrudFormItem, formData: Record<string, unknown>) => string;
15
+ getPlaceholder: (item: CrudFormItem, formData: Record<string, unknown>) => string;
16
+ clear: () => void;
17
+ }
18
+ /**
19
+ * 创建表单运行时缓存。
20
+ *
21
+ * 设计说明:
22
+ * - 只缓存声明了 deps 的字段,避免没有依赖信息时错误复用旧结果。
23
+ * - deps 表示动态配置依赖哪些字段;无关字段变化不会改变缓存 key。
24
+ * - scope 用于区分搜索表单、弹窗表单等不同缓存域,避免同 prop 字段共用缓存时互相覆盖。
25
+ * - 该工具只负责动态配置计算结果缓存,不改变现有 CrudFormItem 配置写法。
26
+ */
27
+ export declare function createFormRuntimeCache(scope?: string): FormRuntimeCache;