vome-core 0.1.50 → 0.1.52

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 (37) hide show
  1. package/dist/admin/config/plugin-dev.js +1 -1
  2. package/dist/admin/crud/components/vm-color-picker.vue +14 -14
  3. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  4. package/dist/admin/crud/config.js +1 -1
  5. package/dist/admin/crud/confirm.js +1 -1
  6. package/dist/admin/crud/dict.js +1 -1
  7. package/dist/admin/crud/key.js +1 -1
  8. package/dist/admin/crud/mitt.js +1 -1
  9. package/dist/admin/crud/plugins.js +1 -1
  10. package/dist/admin/crud/span.js +1 -1
  11. package/dist/admin/crud/style.js +1 -1
  12. package/dist/admin/crud/validate.js +1 -1
  13. package/dist/admin/crud/vm-crud.vue +28 -10
  14. package/dist/admin/crud/vm-search.vue +44 -5
  15. package/dist/admin/crud/vm-table.vue +14 -2
  16. package/dist/admin/directives/perm.js +1 -1
  17. package/dist/admin/hooks/useUpload.js +1 -1
  18. package/dist/admin/lib/browser.js +1 -1
  19. package/dist/admin/lib/cn.js +1 -1
  20. package/dist/admin/lib/dialog-float.js +1 -1
  21. package/dist/admin/lib/export-excel.js +1 -1
  22. package/dist/admin/lib/import-excel.js +1 -1
  23. package/dist/admin/lib/json.js +1 -1
  24. package/dist/admin/lib/menu.js +1 -1
  25. package/dist/admin/lib/tree.js +1 -1
  26. package/dist/admin/lib/upload.js +1 -1
  27. package/dist/admin/lib/video-frame.js +1 -1
  28. package/dist/index.js +1 -1
  29. package/dist/server/index.js +1 -1
  30. package/dist/shared/datetime-picker.js +1 -1
  31. package/dist/shared/excel.js +1 -1
  32. package/dist/shared/index.js +1 -1
  33. package/dist/shared/locale-json.js +1 -1
  34. package/dist/shared/tree.js +1 -1
  35. package/package.json +1 -1
  36. package/typings/admin/comm/crud.d.ts +11 -1
  37. package/typings/admin/comm/crud.ts +245 -211
@@ -1,320 +1,354 @@
1
- import type { Component, InjectionKey, MaybeRefOrGetter, Ref } from 'vue'
1
+ import type { Component, InjectionKey, MaybeRefOrGetter, Ref } from "vue";
2
2
 
3
3
  /** 标准 CRUD service */
4
4
  export type CrudService = {
5
- namespace?: string
5
+ namespace?: string;
6
6
  page?: (data: Record<string, unknown>) => Promise<{
7
- list: Record<string, unknown>[]
8
- pagination: { page: number; size: number; total: number }
9
- }>
10
- list?: (data?: Record<string, unknown>) => Promise<Record<string, unknown>[]>
11
- info?: (data: { id: number | string }) => Promise<Record<string, unknown>>
12
- add?: (data: Record<string, unknown>) => Promise<unknown>
13
- update?: (data: Record<string, unknown>) => Promise<unknown>
7
+ list: Record<string, unknown>[];
8
+ pagination: { page: number; size: number; total: number };
9
+ }>;
10
+ list?: (data?: Record<string, unknown>) => Promise<Record<string, unknown>[]>;
11
+ info?: (data: { id: number | string }) => Promise<Record<string, unknown>>;
12
+ add?: (data: Record<string, unknown>) => Promise<unknown>;
13
+ update?: (data: Record<string, unknown>) => Promise<unknown>;
14
14
  delete?: (data: {
15
- ids: Array<number | string>
16
- force?: boolean
17
- }) => Promise<unknown>
18
- restore?: (data: { ids: Array<number | string> }) => Promise<unknown>
15
+ ids: Array<number | string>;
16
+ force?: boolean;
17
+ }) => Promise<unknown>;
18
+ restore?: (data: { ids: Array<number | string> }) => Promise<unknown>;
19
19
  /** 权限码字符串 map */
20
- permission?: Partial<CrudPermission> | Record<string, string>
20
+ permission?: Partial<CrudPermission> | Record<string, string>;
21
21
  /** 当前用户是否具备对应权限 */
22
- _permission?: Partial<CrudPermission> & Record<string, boolean>
22
+ _permission?: Partial<CrudPermission> & Record<string, boolean>;
23
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- request?: (options?: any) => Promise<unknown>
25
- [key: string]: unknown
26
- }
24
+ request?: (options?: any) => Promise<unknown>;
25
+ [key: string]: unknown;
26
+ };
27
27
 
28
28
  export type CrudPermission = {
29
- page: boolean
30
- list: boolean
31
- info: boolean
32
- add: boolean
33
- delete: boolean
34
- update: boolean
29
+ page: boolean;
30
+ list: boolean;
31
+ info: boolean;
32
+ add: boolean;
33
+ delete: boolean;
34
+ update: boolean;
35
35
  /** 有则显示回收站;与 Controller `api` 含 restore 对齐 */
36
- restore: boolean
37
- }
36
+ restore: boolean;
37
+ };
38
38
 
39
39
  export type CrudDict = {
40
- primaryId: string
40
+ primaryId: string;
41
41
  api: {
42
- list: string
43
- add: string
44
- update: string
45
- delete: string
46
- info: string
47
- page: string
48
- }
49
- pagination: { page: string; size: string }
50
- search: { keyWord: string; query: string }
51
- sort: { order: string; prop: string }
52
- label: Record<string, string>
53
- }
42
+ list: string;
43
+ add: string;
44
+ update: string;
45
+ delete: string;
46
+ info: string;
47
+ page: string;
48
+ };
49
+ pagination: { page: string; size: string };
50
+ search: { keyWord: string; query: string };
51
+ sort: { order: string; prop: string };
52
+ label: Record<string, string>;
53
+ };
54
54
 
55
55
  export type CrudFormComponent = {
56
- name?: string | Component
57
- props?: Record<string, unknown>
58
- }
56
+ name?: string | Component;
57
+ props?: Record<string, unknown>;
58
+ };
59
59
 
60
60
  export type CrudSearchItem = {
61
- prop: string
62
- label: string
63
- type?: 'input' | 'select' | 'date' | 'daterange' | 'number-range'
64
- placeholder?: string
65
- options?: MaybeRefOrGetter<Array<{ label: string; value: string | number | boolean }>>
61
+ prop: string;
62
+ label: string;
63
+ type?: "input" | "select" | "date" | "daterange" | "number-range";
64
+ placeholder?: string;
65
+ options?: MaybeRefOrGetter<
66
+ Array<{ label: string; value: string | number | boolean }>
67
+ >;
66
68
  /** 业务字典 type.key;有则拉 options */
67
- dict?: string
69
+ dict?: string;
68
70
  /** 下拉多选 */
69
- multiple?: boolean
71
+ multiple?: boolean;
70
72
  /** 区间:提交时拆成 min/max 请求参数 */
71
73
  range?: {
72
- min: string
73
- max: string
74
- rangeType: 'int' | 'float' | 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second'
75
- }
74
+ min: string;
75
+ max: string;
76
+ rangeType:
77
+ | "int"
78
+ | "float"
79
+ | "year"
80
+ | "month"
81
+ | "day"
82
+ | "hour"
83
+ | "minute"
84
+ | "second";
85
+ };
76
86
  /** component.name 走 registry */
77
- component?: CrudFormComponent
87
+ component?: CrudFormComponent;
88
+ /**初始化值(写入 search form;重置亦回到此值)*/
89
+ value?: unknown;
78
90
  /** i18n:field.{table}.{prop},运行时解析占位符 */
79
- fieldKey?: string
91
+ fieldKey?: string;
80
92
  /** 无翻译时的字段中文名(EPS comment) */
81
- nameFallback?: string
93
+ nameFallback?: string;
82
94
  /** 占位符模式:搜索 / 选择 / 关键字 / 区间 */
83
- phMode?: 'search' | 'select' | 'keyword' | 'range'
95
+ phMode?: "search" | "select" | "keyword" | "range";
84
96
  /** keyword 多字段 fieldKey 列表 */
85
- keywordParts?: string[]
86
- }
97
+ keywordParts?: string[];
98
+ };
87
99
 
88
100
  export type CrudOpButton =
89
- | 'edit'
90
- | 'delete'
91
- | 'info'
101
+ | "edit"
102
+ | "delete"
103
+ | "info"
92
104
  | {
93
- label: string
94
- hidden?: boolean
95
- disabled?: boolean
96
- variant?: 'softPrimary' | 'softDestructive' | 'softSuccess' | 'ghost' | 'outline'
97
- onClick: (row: Record<string, unknown>) => void
98
- }
105
+ label: string;
106
+ hidden?: boolean;
107
+ disabled?: boolean;
108
+ variant?:
109
+ | "softPrimary"
110
+ | "softDestructive"
111
+ | "softSuccess"
112
+ | "ghost"
113
+ | "outline";
114
+ onClick: (row: Record<string, unknown>) => void;
115
+ };
99
116
 
100
117
  export type CrudColumn = {
101
- prop?: string
102
- label?: string
118
+ prop?: string;
119
+ label?: string;
103
120
  /** i18n 完整 key,优先于 field.*(如 i18n.langName) */
104
- labelKey?: string
121
+ labelKey?: string;
105
122
  /** 显式 field.{table}.{prop};缺省时按 EPS 推断 */
106
- fieldKey?: string
123
+ fieldKey?: string;
107
124
  /** selection | index | op | expand */
108
- type?: 'selection' | 'index' | 'op' | 'expand'
109
- width?: string | number
110
- minWidth?: string | number
111
- align?: 'left' | 'center' | 'right'
125
+ type?: "selection" | "index" | "op" | "expand";
126
+ width?: string | number;
127
+ minWidth?: string | number;
128
+ align?: "left" | "center" | "right";
112
129
  /** 横向滚动时固定列;`type: 'op'` 未写时默认 `right` */
113
- fixed?: 'left' | 'right'
114
- hidden?: boolean
130
+ fixed?: "left" | "right";
131
+ hidden?: boolean;
115
132
  /** true / custom 可点排序;asc|desc 表示默认方向 */
116
- sortable?: boolean | 'custom' | 'asc' | 'desc' | 'ascending' | 'descending'
117
- slot?: string
118
- formatter?: (row: Record<string, unknown>, value: unknown) => string
133
+ sortable?: boolean | "custom" | "asc" | "desc" | "ascending" | "descending";
134
+ slot?: string;
135
+ formatter?: (row: Record<string, unknown>, value: unknown) => string;
119
136
  /** op 列:edit/delete/info 或自定义按钮对象 */
120
- buttons?: CrudOpButton[] | ((row: Record<string, unknown>) => CrudOpButton[])
137
+ buttons?: CrudOpButton[] | ((row: Record<string, unknown>) => CrudOpButton[]);
121
138
  /** 单元格组件:name 为注册名或直接组件 */
122
139
  component?: {
123
- name?: string | Component
124
- props?: Record<string, unknown>
125
- }
140
+ name?: string | Component;
141
+ props?: Record<string, unknown>;
142
+ };
126
143
  /** dict.get / dict.options(支持 ComputedRef) */
127
144
  dict?: MaybeRefOrGetter<
128
- Array<{ label: string; value: string | number; type?: string; color?: string }>
129
- >
130
- children?: CrudColumn[]
131
- }
145
+ Array<{
146
+ label: string;
147
+ value: string | number;
148
+ type?: string;
149
+ color?: string;
150
+ }>
151
+ >;
152
+ children?: CrudColumn[];
153
+ };
132
154
 
133
155
  export type CrudFormItem = {
134
- prop: string
135
- label: string
136
- type?: 'input' | 'textarea' | 'select' | 'switch' | 'radio'
137
- required?: boolean
138
- placeholder?: string
156
+ prop: string;
157
+ label: string;
158
+ type?: "input" | "textarea" | "select" | "switch" | "radio";
159
+ required?: boolean;
160
+ placeholder?: string;
139
161
  /** 控件禁用 */
140
- disabled?: boolean
162
+ disabled?: boolean;
141
163
  /** 扁平或树;options: dict.get('x') */
142
164
  options?: MaybeRefOrGetter<
143
165
  Array<{
144
- label: string
145
- value: string | number | boolean
166
+ label: string;
167
+ value: string | number | boolean;
146
168
  children?: Array<{
147
- label: string
148
- value: string | number | boolean
149
- children?: unknown[]
150
- }>
169
+ label: string;
170
+ value: string | number | boolean;
171
+ children?: unknown[];
172
+ }>;
151
173
  }>
152
- >
174
+ >;
153
175
  /** 按桌面 24 栅格配置(全宽 24);移动端自动映射到 12 列 */
154
- span?: number
155
- hidden?: boolean | ((form: Record<string, unknown>) => boolean)
176
+ span?: number;
177
+ hidden?: boolean | ((form: Record<string, unknown>) => boolean);
156
178
  /** 用 component 描述控件 */
157
- component?: CrudFormComponent
158
- value?: unknown
159
- rules?: unknown
160
- }
179
+ component?: CrudFormComponent;
180
+ /**
181
+ * 新增表单初始化值(rowAdd / openUpsert add 时写入;`:add-data` 同名字段优先)。
182
+ * 勿写在 component.props。
183
+ */
184
+ value?: unknown;
185
+ rules?: unknown;
186
+ };
161
187
 
162
- export type CrudTrashMode = 'default' | 'onlyTrashed' | 'withTrashed'
188
+ export type CrudTrashMode = "default" | "onlyTrashed" | "withTrashed";
163
189
 
164
190
  export type CrudRefreshHelpers = {
165
- next: (params: Record<string, unknown>) => Promise<unknown>
166
- done: () => void
191
+ next: (params: Record<string, unknown>) => Promise<unknown>;
192
+ done: () => void;
167
193
  render: (
168
- list: Record<string, unknown>[] | { list: Record<string, unknown>[]; pagination?: unknown },
194
+ list:
195
+ | Record<string, unknown>[]
196
+ | { list: Record<string, unknown>[]; pagination?: unknown },
169
197
  pagination?: { page?: number; size?: number; total?: number },
170
- ) => void
171
- }
198
+ ) => void;
199
+ };
172
200
 
173
201
  export type CrudDeleteHelpers = {
174
- next: (params?: Record<string, unknown>) => Promise<unknown>
175
- }
202
+ next: (params?: Record<string, unknown>) => Promise<unknown>;
203
+ };
176
204
 
177
205
  export type CrudOptions = {
178
206
  /** EPS service 对象,如 service.base.user */
179
- service: CrudService
180
- dict?: Partial<CrudDict>
181
- permission?: Partial<CrudPermission>
207
+ service: CrudService;
208
+ dict?: Partial<CrudDict>;
209
+ permission?: Partial<CrudPermission>;
182
210
  onRefresh?: (
183
211
  params: Record<string, unknown>,
184
212
  helpers: CrudRefreshHelpers,
185
- ) => void | Promise<void>
213
+ ) => void | Promise<void>;
186
214
  onDelete?: (
187
215
  selection: Record<string, unknown>[],
188
216
  helpers: CrudDeleteHelpers,
189
- ) => void | Promise<void>
190
- }
217
+ ) => void | Promise<void>;
218
+ };
191
219
 
192
220
  export type CrudUpsertOptions = {
193
- items?: CrudFormItem[]
194
- props?: Record<string, unknown>
221
+ items?: CrudFormItem[];
222
+ props?: Record<string, unknown>;
195
223
  dialog?: {
196
- title?: string
224
+ title?: string;
197
225
  /** 显式 false 强制隐藏确定;未设时仍按 info 模式自动隐藏 */
198
- confirm?: boolean
226
+ confirm?: boolean;
199
227
  /** 显式 false 隐藏关闭;默认 true */
200
- close?: boolean
228
+ close?: boolean;
201
229
  /** 弹窗高度,如 800 / '800px';最高 800px */
202
- height?: string | number
203
- confirmText?: string
204
- closeText?: string
205
- }
206
- sync?: boolean
207
- onOpen?: (data: Record<string, unknown>) => void
208
- onOpened?: (data: Record<string, unknown>) => void
209
- onClose?: (action: 'close' | 'submit', done: () => void) => void
230
+ height?: string | number;
231
+ confirmText?: string;
232
+ closeText?: string;
233
+ };
234
+ sync?: boolean;
235
+ onOpen?: (data: Record<string, unknown>) => void;
236
+ onOpened?: (data: Record<string, unknown>) => void;
237
+ onClose?: (action: "close" | "submit", done: () => void) => void;
210
238
  onInfo?: (
211
239
  data: Record<string, unknown>,
212
240
  helpers: {
213
- next: (data?: Record<string, unknown>) => Promise<Record<string, unknown>>
214
- done: (data: Record<string, unknown>) => void
215
- close: () => void
241
+ next: (
242
+ data?: Record<string, unknown>,
243
+ ) => Promise<Record<string, unknown>>;
244
+ done: (data: Record<string, unknown>) => void;
245
+ close: () => void;
216
246
  },
217
- ) => void | Promise<void>
247
+ ) => void | Promise<void>;
218
248
  onSubmit?: (
219
249
  data: Record<string, unknown>,
220
250
  helpers: {
221
- next: (data?: Record<string, unknown>) => Promise<unknown>
222
- done: () => void
223
- close: () => void
251
+ next: (data?: Record<string, unknown>) => Promise<unknown>;
252
+ done: () => void;
253
+ close: () => void;
224
254
  },
225
- ) => void | Promise<void | unknown>
226
- }
255
+ ) => void | Promise<void | unknown>;
256
+ };
227
257
 
228
258
  export type CrudTableOptions = {
229
- columns?: CrudColumn[]
230
- autoHeight?: boolean
231
- border?: boolean
232
- contextMenu?: boolean | string[]
233
- rowKey?: string
259
+ columns?: CrudColumn[];
260
+ autoHeight?: boolean;
261
+ border?: boolean;
262
+ contextMenu?: boolean | string[];
263
+ rowKey?: string;
234
264
  /** 树表:list 含 children 时缩进展开 */
235
- tree?: boolean
236
- treeLazy?: boolean
265
+ tree?: boolean;
266
+ treeLazy?: boolean;
237
267
  /** 树表默认全部展开(为 true 时忽略 defaultExpandLevel) */
238
- defaultExpandAll?: boolean
268
+ defaultExpandAll?: boolean;
239
269
  /** 树表默认展开到第几级(1=仅根、不展开;默认 1) */
240
- defaultExpandLevel?: number
270
+ defaultExpandLevel?: number;
241
271
  /** 默认排序;请求键由 dict.sort 决定 */
242
272
  defaultSort?: {
243
- prop: string
244
- order: 'asc' | 'desc' | 'ascending' | 'descending'
245
- }
273
+ prop: string;
274
+ order: "asc" | "desc" | "ascending" | "descending";
275
+ };
246
276
  /** 排序变化时是否 refresh,默认 true */
247
- sortRefresh?: boolean
248
- plugins?: unknown[]
249
- }
277
+ sortRefresh?: boolean;
278
+ plugins?: unknown[];
279
+ };
250
280
 
251
281
  export type CrudSearchOptions = {
252
- items?: CrudSearchItem[]
253
- }
282
+ items?: CrudSearchItem[];
283
+ };
254
284
 
255
285
  export type CrudContext = {
256
- service: CrudService
257
- loading: Ref<boolean>
258
- list: Ref<Record<string, unknown>[]>
259
- selection: Ref<Record<string, unknown>[]>
260
- pagination: Ref<{ page: number; size: number; total: number }>
261
- params: Ref<Record<string, unknown>>
262
- trashMode: Ref<CrudTrashMode>
263
- permission: Ref<CrudPermission>
264
- dict: CrudDict
265
- refresh: (extra?: Record<string, unknown>) => Promise<unknown>
266
- setParams: (p: Record<string, unknown>, doRefresh?: boolean) => void
267
- resetParams: () => void
268
- setSelection: (rows: Record<string, unknown>[]) => void
269
- getPermission: (key?: keyof CrudPermission) => boolean | CrudPermission
270
- getParams: () => Record<string, unknown>
271
- rowAdd: (defaults?: Record<string, unknown>) => void
272
- rowAppend: (data?: Record<string, unknown>) => void
273
- rowEdit: (row: Record<string, unknown>) => Promise<void>
274
- rowInfo: (row: Record<string, unknown>) => Promise<void>
275
- rowClose: () => void
286
+ service: CrudService;
287
+ loading: Ref<boolean>;
288
+ list: Ref<Record<string, unknown>[]>;
289
+ selection: Ref<Record<string, unknown>[]>;
290
+ pagination: Ref<{ page: number; size: number; total: number }>;
291
+ params: Ref<Record<string, unknown>>;
292
+ trashMode: Ref<CrudTrashMode>;
293
+ permission: Ref<CrudPermission>;
294
+ dict: CrudDict;
295
+ refresh: (extra?: Record<string, unknown>) => Promise<unknown>;
296
+ setParams: (p: Record<string, unknown>, doRefresh?: boolean) => void;
297
+ /** doRefresh=false 时只清 params 不拉列表(供 search 重置后带初始值再 search) */
298
+ resetParams: (doRefresh?: boolean) => void;
299
+ setSelection: (rows: Record<string, unknown>[]) => void;
300
+ getPermission: (key?: keyof CrudPermission) => boolean | CrudPermission;
301
+ getParams: () => Record<string, unknown>;
302
+ rowAdd: (defaults?: Record<string, unknown>) => void;
303
+ rowAppend: (data?: Record<string, unknown>) => void;
304
+ rowEdit: (row: Record<string, unknown>) => Promise<void>;
305
+ rowInfo: (row: Record<string, unknown>) => Promise<void>;
306
+ rowClose: () => void;
276
307
  /** 打开 upsert,不校验 add 权限 */
277
308
  openUpsert: (
278
309
  form?: Record<string, unknown>,
279
- mode?: 'add' | 'update' | 'info',
280
- ) => void
281
- rowDelete: (rows?: Record<string, unknown>[], force?: boolean) => Promise<void>
282
- rowRestore: (rows?: Record<string, unknown>[]) => Promise<void>
283
- upsertVisible: Ref<boolean>
284
- upsertMode: Ref<'add' | 'update' | 'info'>
285
- upsertForm: Ref<Record<string, unknown>>
286
- upsertSubmit: () => Promise<void>
287
- upsertClose: () => void
288
- patchUpsertForm: (patch: Record<string, unknown>) => void
289
- getUpsertForm: () => Record<string, unknown>
310
+ mode?: "add" | "update" | "info",
311
+ ) => void;
312
+ rowDelete: (
313
+ rows?: Record<string, unknown>[],
314
+ force?: boolean,
315
+ ) => Promise<void>;
316
+ rowRestore: (rows?: Record<string, unknown>[]) => Promise<void>;
317
+ upsertVisible: Ref<boolean>;
318
+ upsertMode: Ref<"add" | "update" | "info">;
319
+ upsertForm: Ref<Record<string, unknown>>;
320
+ upsertSubmit: () => Promise<void>;
321
+ upsertClose: () => void;
322
+ patchUpsertForm: (patch: Record<string, unknown>) => void;
323
+ getUpsertForm: () => Record<string, unknown>;
290
324
  /** vm-search 注册;vm-toolbar 搜索/重置读取 */
291
- searchActions: import('vue').ShallowRef<{
292
- search: () => void
293
- reset: () => void
294
- } | null>
325
+ searchActions: import("vue").ShallowRef<{
326
+ search: () => void;
327
+ reset: () => void;
328
+ } | null>;
295
329
  /** vm-search 是否有筛选项;无配置时不显示 toolbar 搜索/重置 */
296
- hasSearchFilters: Ref<boolean>
297
- }
330
+ hasSearchFilters: Ref<boolean>;
331
+ };
298
332
 
299
333
  /** 表格右键菜单项 */
300
334
  export type CtxMenuItem = {
301
- key: string
302
- label: string
303
- disabled?: boolean
304
- }
335
+ key: string;
336
+ label: string;
337
+ disabled?: boolean;
338
+ };
305
339
 
306
340
  /** 树形下拉选项 */
307
341
  export type TreeSelectOption = {
308
- label?: string
309
- value?: string | number | boolean
310
- children?: TreeSelectOption[]
311
- [key: string]: unknown
312
- }
342
+ label?: string;
343
+ value?: string | number | boolean;
344
+ children?: TreeSelectOption[];
345
+ [key: string]: unknown;
346
+ };
313
347
 
314
348
  /** CRUD Table 插件标记 */
315
349
  export type TablePlugin = {
316
- __plugin: string
317
- [key: string]: unknown
318
- }
350
+ __plugin: string;
351
+ [key: string]: unknown;
352
+ };
319
353
 
320
- export type { InjectionKey, Ref }
354
+ export type { InjectionKey, Ref };