vome-core 0.3.69 → 0.3.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ui/avatar/Avatar.vue +18 -18
- package/dist/admin/components/ui/avatar/AvatarFallback.vue +21 -21
- package/dist/admin/components/ui/avatar/AvatarImage.vue +16 -16
- package/dist/admin/components/ui/avatar/index.js +1 -1
- package/dist/admin/components/ui/badge/Badge.vue +26 -26
- package/dist/admin/components/ui/button/Button.vue +31 -31
- package/dist/admin/components/ui/button/index.d.ts +1 -1
- package/dist/admin/components/ui/checkbox/Checkbox.vue +35 -35
- package/dist/admin/components/ui/checkbox/index.js +1 -1
- package/dist/admin/components/ui/dialog/Dialog.vue +19 -19
- package/dist/admin/components/ui/dialog/DialogClose.vue +15 -15
- package/dist/admin/components/ui/dialog/DialogContent.vue +267 -267
- package/dist/admin/components/ui/dialog/DialogDescription.vue +23 -23
- package/dist/admin/components/ui/dialog/DialogFooter.vue +27 -27
- package/dist/admin/components/ui/dialog/DialogHeader.vue +17 -17
- package/dist/admin/components/ui/dialog/DialogOverlay.vue +21 -21
- package/dist/admin/components/ui/dialog/DialogScrollContent.vue +60 -60
- package/dist/admin/components/ui/dialog/DialogTitle.vue +23 -23
- package/dist/admin/components/ui/dialog/DialogTrigger.vue +15 -15
- package/dist/admin/components/ui/dialog/index.js +1 -1
- package/dist/admin/components/ui/dropdown-menu/DropdownMenu.vue +19 -19
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +39 -39
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -39
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuGroup.vue +15 -15
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuItem.vue +31 -31
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -23
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -21
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +40 -40
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -23
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -17
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSub.vue +18 -18
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -27
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -31
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -17
- package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
- package/dist/admin/components/ui/input/Input.vue +183 -183
- package/dist/admin/components/ui/input/index.js +1 -1
- package/dist/admin/components/ui/label/Label.vue +26 -26
- package/dist/admin/components/ui/label/index.js +1 -1
- package/dist/admin/components/ui/scroll-area/ScrollArea.vue +33 -33
- package/dist/admin/components/ui/scroll-area/ScrollBar.vue +32 -32
- package/dist/admin/components/ui/scroll-area/index.js +1 -1
- package/dist/admin/components/ui/select/Select.vue +19 -19
- package/dist/admin/components/ui/select/SelectContent.vue +51 -51
- package/dist/admin/components/ui/select/SelectGroup.vue +15 -15
- package/dist/admin/components/ui/select/SelectItem.vue +53 -53
- package/dist/admin/components/ui/select/SelectItemText.vue +15 -15
- package/dist/admin/components/ui/select/SelectLabel.vue +17 -17
- package/dist/admin/components/ui/select/SelectScrollDownButton.vue +26 -26
- package/dist/admin/components/ui/select/SelectScrollUpButton.vue +26 -26
- package/dist/admin/components/ui/select/SelectSeparator.vue +19 -19
- package/dist/admin/components/ui/select/SelectTrigger.vue +44 -44
- package/dist/admin/components/ui/select/SelectValue.vue +15 -15
- package/dist/admin/components/ui/select/index.js +1 -1
- package/dist/admin/components/ui/separator/Separator.vue +29 -29
- package/dist/admin/components/ui/separator/index.js +1 -1
- package/dist/admin/components/ui/sheet/Sheet.vue +19 -19
- package/dist/admin/components/ui/sheet/SheetClose.vue +15 -15
- package/dist/admin/components/ui/sheet/SheetContent.vue +63 -63
- package/dist/admin/components/ui/sheet/SheetDescription.vue +21 -21
- package/dist/admin/components/ui/sheet/SheetFooter.vue +16 -16
- package/dist/admin/components/ui/sheet/SheetHeader.vue +15 -15
- package/dist/admin/components/ui/sheet/SheetOverlay.vue +21 -21
- package/dist/admin/components/ui/sheet/SheetTitle.vue +21 -21
- package/dist/admin/components/ui/sheet/SheetTrigger.vue +15 -15
- package/dist/admin/components/ui/sheet/index.js +1 -1
- package/dist/admin/components/ui/sonner/Toaster.vue +117 -117
- package/dist/admin/components/ui/sonner/index.js +1 -1
- package/dist/admin/components/ui/table/Table.vue +16 -16
- package/dist/admin/components/ui/table/TableBody.vue +17 -17
- package/dist/admin/components/ui/table/TableCaption.vue +17 -17
- package/dist/admin/components/ui/table/TableCell.vue +22 -22
- package/dist/admin/components/ui/table/TableEmpty.vue +34 -34
- package/dist/admin/components/ui/table/TableFooter.vue +17 -17
- package/dist/admin/components/ui/table/TableHead.vue +17 -17
- package/dist/admin/components/ui/table/TableHeader.vue +17 -17
- package/dist/admin/components/ui/table/TableRow.vue +17 -17
- package/dist/admin/components/ui/table/index.js +1 -1
- package/dist/admin/components/ui/tabs/Tabs.vue +24 -24
- package/dist/admin/components/ui/tabs/TabsContent.vue +21 -21
- package/dist/admin/components/ui/tabs/TabsList.vue +24 -24
- package/dist/admin/components/ui/tabs/TabsTrigger.vue +26 -26
- package/dist/admin/components/ui/tabs/index.js +1 -1
- package/dist/admin/components/ui/tooltip/Tooltip.vue +19 -19
- package/dist/admin/components/ui/tooltip/TooltipContent.vue +34 -34
- package/dist/admin/components/ui/tooltip/TooltipProvider.vue +14 -14
- package/dist/admin/components/ui/tooltip/TooltipTrigger.vue +15 -15
- package/dist/admin/components/ui/tooltip/index.js +1 -1
- package/dist/admin/components/vm-action-btn.vue +136 -136
- package/dist/admin/components/vm-aside-list-item.vue +136 -136
- package/dist/admin/components/vm-aside.vue +229 -229
- package/dist/admin/components/vm-auto-perm-dialog.vue +371 -371
- package/dist/admin/components/vm-card-grid.vue +37 -37
- package/dist/admin/components/vm-card-head.vue +45 -45
- package/dist/admin/components/vm-card-meta.vue +22 -22
- package/dist/admin/components/vm-card-title.vue +56 -56
- package/dist/admin/components/vm-card.vue +176 -176
- package/dist/admin/components/vm-check-tree.vue +340 -340
- package/dist/admin/components/vm-clamp-text.vue +39 -39
- package/dist/admin/components/vm-dept-tree.vue +497 -497
- package/dist/admin/components/vm-empty.vue +68 -68
- package/dist/admin/components/vm-eps-perm-picker.vue +123 -123
- package/dist/admin/components/vm-form-dialog.vue +632 -632
- package/dist/admin/components/vm-group-cascader.vue +560 -560
- package/dist/admin/components/vm-icon-btn.vue +88 -88
- package/dist/admin/components/vm-icon-picker.vue +647 -647
- package/dist/admin/components/vm-inline-search.vue +61 -61
- package/dist/admin/components/vm-loading.vue +114 -114
- package/dist/admin/components/vm-markdown.vue +405 -405
- package/dist/admin/components/vm-marquee.vue +265 -265
- package/dist/admin/components/vm-page-tabs.vue +94 -94
- package/dist/admin/components/vm-perm-section.vue +57 -57
- package/dist/admin/components/vm-ri-icon.vue +23 -23
- package/dist/admin/components/vm-role-picker.vue +314 -314
- package/dist/admin/components/vm-split-layout.vue +106 -106
- package/dist/admin/components/vm-thumb.vue +49 -49
- package/dist/admin/components/vm-view-path-picker.vue +59 -59
- package/dist/admin/crud/auto-fields.d.ts +7 -0
- package/dist/admin/crud/auto-fields.js +1 -1
- package/dist/admin/crud/components/vm-avatar.vue +104 -104
- package/dist/admin/crud/components/vm-color-picker.vue +1626 -1626
- package/dist/admin/crud/components/vm-column-custom.vue +193 -193
- package/dist/admin/crud/components/vm-context-menu.vue +105 -105
- package/dist/admin/crud/components/vm-copy-btn.vue +102 -102
- package/dist/admin/crud/components/vm-date-calendar-panel.vue +537 -537
- package/dist/admin/crud/components/vm-date-picker.vue +75 -75
- package/dist/admin/crud/components/vm-date-range.vue +88 -88
- package/dist/admin/crud/components/vm-date-text.vue +42 -42
- package/dist/admin/crud/components/vm-datetime-field.vue +215 -215
- package/dist/admin/crud/components/vm-datetime-picker.vue +9 -9
- package/dist/admin/crud/components/vm-dict-tag.vue +112 -112
- package/dist/admin/crud/components/vm-ellipsis-text.vue +34 -34
- package/dist/admin/crud/components/vm-form-hint.vue +81 -81
- package/dist/admin/crud/components/vm-json-code.vue +41 -41
- package/dist/admin/crud/components/vm-json-editor.vue +161 -161
- package/dist/admin/crud/components/vm-json-kv-editor.vue +318 -318
- package/dist/admin/crud/components/vm-kv-row.vue +51 -51
- package/dist/admin/crud/components/vm-multi-select.vue +279 -279
- package/dist/admin/crud/components/vm-number-range.vue +204 -204
- package/dist/admin/crud/components/vm-preview-viewer.vue +894 -894
- package/dist/admin/crud/components/vm-radio.vue +87 -87
- package/dist/admin/crud/components/vm-richtext.vue +313 -313
- package/dist/admin/crud/components/vm-select.vue +570 -570
- package/dist/admin/crud/components/vm-status-tag.vue +158 -158
- package/dist/admin/crud/components/vm-switch.vue +158 -158
- package/dist/admin/crud/components/vm-tag-list.vue +108 -108
- package/dist/admin/crud/components/vm-text-link.vue +52 -52
- package/dist/admin/crud/components/vm-toggle-switch.vue +84 -84
- package/dist/admin/crud/components/vm-tree-select.vue +450 -450
- package/dist/admin/crud/components/vm-upload-item.vue +298 -298
- package/dist/admin/crud/components/vm-upload.vue +436 -436
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/crud-page-request.js +1 -1
- package/dist/admin/crud/data-i18n.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/export-fetch.js +1 -1
- package/dist/admin/crud/index.d.ts +1 -1
- package/dist/admin/crud/index.js +1 -0
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/crud/vm-add-btn.vue +70 -70
- package/dist/admin/crud/vm-adv-search.vue +83 -83
- package/dist/admin/crud/vm-crud.vue +711 -711
- package/dist/admin/crud/vm-data-i18n-btn.vue +456 -456
- package/dist/admin/crud/vm-data-i18n-lang.vue +183 -183
- package/dist/admin/crud/vm-export-btn.vue +183 -183
- package/dist/admin/crud/vm-flex.vue +14 -14
- package/dist/admin/crud/vm-import-btn.vue +747 -747
- package/dist/admin/crud/vm-multi-delete-btn.vue +49 -49
- package/dist/admin/crud/vm-pagination.vue +212 -212
- package/dist/admin/crud/vm-refresh-btn.vue +35 -35
- package/dist/admin/crud/vm-row.vue +55 -55
- package/dist/admin/crud/vm-search-key.vue +78 -78
- package/dist/admin/crud/vm-search.vue +466 -466
- package/dist/admin/crud/vm-table.vue +1390 -1390
- package/dist/admin/crud/vm-tabs.vue +94 -94
- package/dist/admin/crud/vm-toolbar.vue +357 -357
- package/dist/admin/crud/vm-upsert.vue +765 -765
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/env.d.ts +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/hooks/useVome.d.ts +2 -2
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/micro-locale.js +1 -1
- package/dist/admin/lib/micro-theme.js +1 -1
- package/dist/admin/lib/shell.js +1 -1
- package/dist/admin/lib/theme-color-options.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/admin/router/create.js +1 -1
- package/dist/admin/router/guards.js +1 -1
- package/dist/admin/stores/app.d.ts +13 -1
- package/dist/admin/stores/tags.d.ts +14 -1
- package/dist/admin/stores/user.d.ts +48 -1
- package/dist/admin/styles/base.css +121 -121
- package/dist/admin/vendor/browser-image-compression.js +1144 -1144
- package/dist/admin/vendor/decimal-js.js +12 -12
- package/dist/admin/vendor/xlsx.js +263 -263
- package/dist/ai/index.js +1 -1
- package/dist/client/ai-model-registry.js +1 -1
- package/dist/client/base.js +1 -1
- package/dist/client/configure.js +1 -1
- package/dist/client/dict.js +1 -1
- package/dist/client/eps-payload.js +1 -1
- package/dist/client/eps.d.ts +7 -4
- package/dist/client/eps.js +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/locale-change.js +1 -1
- package/dist/client/locale-store.d.ts +45 -1
- package/dist/client/locale-store.js +1 -1
- package/dist/client/path.js +1 -1
- package/dist/client/service.d.ts +8 -0
- package/dist/client/service.js +1 -1
- package/dist/client/vite-admin.js +1 -1
- package/dist/client/vite-auto-import.js +1 -1
- package/dist/client/vite-micro-proxy.js +1 -1
- package/dist/client/vite-plugin-eps.d.ts +5 -0
- package/dist/client/vite-plugin-eps.js +1 -1
- package/dist/client/vite-resolve.js +1 -1
- package/dist/config/index.js +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/routing/context.d.ts +12 -2
- package/dist/routing/eps.d.ts +4 -1
- package/dist/routing/index.d.ts +2 -1
- package/dist/routing/metadata.d.ts +7 -3
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/decimal.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/dist/typings/routing/eps.d.ts +3 -1
- package/dist/typings/routing/meta.d.ts +15 -0
- package/package.json +1 -1
- package/typings/admin/base/auth.ts +24 -24
- package/typings/admin/base/permission.ts +19 -19
- package/typings/admin/comm/cascader.ts +7 -7
- package/typings/admin/comm/check-tree.ts +7 -7
- package/typings/admin/comm/crud.ts +427 -427
- package/typings/admin/comm/eps.ts +88 -86
- package/typings/admin/comm/request.ts +16 -16
- package/typings/admin/comm/service.ts +43 -43
- package/typings/admin/comm/upload.ts +39 -39
- package/typings/admin/theme.ts +10 -10
- package/typings/admin/vome/browser.ts +11 -11
- package/typings/admin/vome/module.ts +13 -13
- package/typings/admin/vome/tags.ts +9 -9
- package/typings/comm/crud.ts +83 -83
- package/typings/comm/page.ts +18 -18
- package/typings/comm/scan.ts +6 -6
- package/typings/common.ts +4 -4
- package/typings/context/data.ts +10 -10
- package/typings/ext/market-seat.ts +42 -42
- package/typings/ext/market.ts +55 -55
- package/typings/ext/module.ts +64 -64
- package/typings/ext/plugin.ts +38 -38
- package/typings/ioc/metadata.ts +34 -34
- package/typings/logger/config.ts +6 -6
- package/typings/routing/crud.ts +199 -199
- package/typings/routing/eps.ts +90 -88
- package/typings/routing/meta.ts +80 -63
- package/typings/routing/register.ts +21 -21
- package/typings/routing/scan-context.ts +7 -7
package/typings/routing/crud.ts
CHANGED
|
@@ -1,199 +1,199 @@
|
|
|
1
|
-
import type { ClassToken } from '../ioc/metadata'
|
|
2
|
-
|
|
3
|
-
/** 快速 CRUD 接口名(含回收站) */
|
|
4
|
-
export type CrudApi =
|
|
5
|
-
| 'add'
|
|
6
|
-
| 'delete'
|
|
7
|
-
| 'update'
|
|
8
|
-
| 'info'
|
|
9
|
-
| 'list'
|
|
10
|
-
| 'page'
|
|
11
|
-
| 'restore'
|
|
12
|
-
/** 声明业务数据多语言(非 HTTP 接口;与 restore 一样写在 api 里) */
|
|
13
|
-
| 'dataI18n'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 字段引用(fieldEq / fieldLike / fieldArray / keyWordLikeFields)。
|
|
17
|
-
* - 裸名 `status` → `a.status`,请求参数名 = `status`
|
|
18
|
-
* - `b.providerId` → 参数名 = `providerId`
|
|
19
|
-
* - `e.id as roleId` → 筛 `e.id`,参数名 = `roleId`(短名冲突用 as,不用 requestParam)
|
|
20
|
-
*/
|
|
21
|
-
export type QueryFieldRef =
|
|
22
|
-
| string
|
|
23
|
-
| {
|
|
24
|
-
/** 如 `status` / `b.providerId` / `e.id as roleId` */
|
|
25
|
-
column: string
|
|
26
|
-
/** 筛选项展示名;缺省用实体 columnComments / EPS comment */
|
|
27
|
-
label?: string
|
|
28
|
-
/** 业务字典 type.key;筛选项用其拉 options */
|
|
29
|
-
dict?: string
|
|
30
|
-
/** 有 dict 时默认 true(下拉多选);false 为单选 */
|
|
31
|
-
multiple?: boolean
|
|
32
|
-
/** true:后端仍按本字段筛选,admin 不自动构建筛控件 */
|
|
33
|
-
none?: boolean
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/** 区间筛选精度 / 数字类型(告诉 admin 用什么控件) */
|
|
37
|
-
export type FieldRangeType =
|
|
38
|
-
| 'int'
|
|
39
|
-
| 'float'
|
|
40
|
-
| 'year'
|
|
41
|
-
| 'month'
|
|
42
|
-
| 'day'
|
|
43
|
-
| 'datetime'
|
|
44
|
-
|
|
45
|
-
/** 价格 / 时间等区间;min/max 为请求体参数名 */
|
|
46
|
-
export type QueryFieldRange = {
|
|
47
|
-
column: string
|
|
48
|
-
min: string
|
|
49
|
-
max: string
|
|
50
|
-
type: FieldRangeType
|
|
51
|
-
/** 覆盖实体注释,用于搜索 label / placeholder 前缀 */
|
|
52
|
-
label?: string
|
|
53
|
-
/** true:后端支持区间,admin 不自动出控件 */
|
|
54
|
-
none?: boolean
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/** join 类型 */
|
|
58
|
-
export type QueryJoinType = 'join' | 'leftJoin' | 'innerJoin'
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Join 配置(Drizzle pgTable)。
|
|
62
|
-
* - 主表固定别名 `a`
|
|
63
|
-
* - 联表必须显式:`entity` + `alias` + `type` + `condition`
|
|
64
|
-
*/
|
|
65
|
-
export type QueryJoin = {
|
|
66
|
-
/** Drizzle pgTable */
|
|
67
|
-
entity: unknown
|
|
68
|
-
/** 联表别名,如 b / c / f;不可为 a */
|
|
69
|
-
alias: string
|
|
70
|
-
type: QueryJoinType
|
|
71
|
-
/** 等值条件,如 `a.skinId = b.id` */
|
|
72
|
-
condition: string
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/** where / extend 上下文 */
|
|
76
|
-
export type QueryOpCtx = {
|
|
77
|
-
body: Record<string, unknown>
|
|
78
|
-
request: Request
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** where 返回:单条 SQL,或列表(undefined/false/null 自动丢弃) */
|
|
82
|
-
export type QueryWhereResult =
|
|
83
|
-
| unknown
|
|
84
|
-
| Array<unknown | undefined | false | null>
|
|
85
|
-
|
|
86
|
-
export type QueryWhereFn = (
|
|
87
|
-
ctx: QueryOpCtx,
|
|
88
|
-
) => QueryWhereResult | Promise<QueryWhereResult>
|
|
89
|
-
|
|
90
|
-
/** extend 可改的查询句柄 */
|
|
91
|
-
export type QueryExtendQb = {
|
|
92
|
-
andWhere: (condition: unknown) => void
|
|
93
|
-
orderBy: (...orders: unknown[]) => void
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export type QueryExtendFn = (
|
|
97
|
-
qb: QueryExtendQb,
|
|
98
|
-
ctx: QueryOpCtx,
|
|
99
|
-
) => void | Promise<void>
|
|
100
|
-
|
|
101
|
-
/** page / list 查询配置 */
|
|
102
|
-
export type QueryOp = {
|
|
103
|
-
keyWordLikeFields?: string[]
|
|
104
|
-
fieldEq?: QueryFieldRef[]
|
|
105
|
-
fieldLike?: QueryFieldRef[]
|
|
106
|
-
/** PG 数组列包含查询(body 单值或数组);admin 筛选用输入框 */
|
|
107
|
-
fieldArray?: QueryFieldRef[]
|
|
108
|
-
/** 数字 / 时间区间(与 fieldEq 等并存,勿再在 where 里拆参) */
|
|
109
|
-
fieldRange?: QueryFieldRange[]
|
|
110
|
-
addOrderBy?: Record<string, 'asc' | 'desc'>
|
|
111
|
-
/**
|
|
112
|
-
* 声明式投影(有 join 时建议显式配置)。
|
|
113
|
-
* - `a.*`:主表全部列,结果键 = 驼峰字段名
|
|
114
|
-
* - `b.userName`:结果键 = `userName`(无需 as)
|
|
115
|
-
* - `e.name as roleName`:结果键 = `roleName`
|
|
116
|
-
*/
|
|
117
|
-
select?: string[]
|
|
118
|
-
join?: QueryJoin[]
|
|
119
|
-
where?: QueryWhereFn
|
|
120
|
-
extend?: QueryExtendFn
|
|
121
|
-
/**
|
|
122
|
-
* page / list 响应剔除字段(如 password),与 admin `ignoreFields` 同名。
|
|
123
|
-
* `a.*` 展开时跳过;未配 select 时也会走投影剔除。
|
|
124
|
-
*/
|
|
125
|
-
ignoreFields?: string[]
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export type InsertParamFn = (ctx: {
|
|
129
|
-
body?: unknown
|
|
130
|
-
request?: Request
|
|
131
|
-
}) => Record<string, unknown> | Promise<Record<string, unknown>>
|
|
132
|
-
|
|
133
|
-
/** 写操作前钩子(add / update / delete / restore) */
|
|
134
|
-
export type CrudBeforeFn = (ctx: {
|
|
135
|
-
body: Record<string, unknown>
|
|
136
|
-
request: Request
|
|
137
|
-
api: string
|
|
138
|
-
}) => void | Promise<void>
|
|
139
|
-
|
|
140
|
-
/** 控制器 / 路由中间件(Elysia onBeforeHandle) */
|
|
141
|
-
export type RouteMiddleware = (
|
|
142
|
-
ctx: Record<string, unknown>,
|
|
143
|
-
) => unknown | Promise<unknown>
|
|
144
|
-
|
|
145
|
-
export type DataI18nRefDecl = {
|
|
146
|
-
sourceTable: string
|
|
147
|
-
joinField: string
|
|
148
|
-
sourceJoinField?: string
|
|
149
|
-
sourceField?: string
|
|
150
|
-
sourcePkField?: string
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* 参考字段种子(翻译时直接用同行另一列,不调 AI)
|
|
155
|
-
* @example { skinName: 'marketHashName', language: 'en' } // en / en-US 均命中
|
|
156
|
-
*/
|
|
157
|
-
export type DataI18nSeedItem = {
|
|
158
|
-
/** 适用语种:`en` 匹配 `en`、`en-US`、`en-GB` */
|
|
159
|
-
language: string
|
|
160
|
-
/** 目标字段 → 参考列,如 skinName: 'marketHashName' */
|
|
161
|
-
[fieldName: string]: string
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* @Controller 快速 CRUD 选项(Drizzle 适配)
|
|
166
|
-
*/
|
|
167
|
-
export type ControllerCrudOptions = {
|
|
168
|
-
api?: CrudApi[]
|
|
169
|
-
/** Drizzle pgTable,宿主挂载 Repository */
|
|
170
|
-
entity?: unknown
|
|
171
|
-
/** 业务 Service 类(须 @Provide,建议 extends BaseService) */
|
|
172
|
-
service?: ClassToken
|
|
173
|
-
/** 把 Service 方法挂成 POST /methodName */
|
|
174
|
-
serviceApis?: string[]
|
|
175
|
-
/** 写操作前改 body(add/update/delete/restore) */
|
|
176
|
-
before?: CrudBeforeFn
|
|
177
|
-
pageQueryOp?: QueryOp
|
|
178
|
-
listQueryOp?: QueryOp
|
|
179
|
-
insertParam?: InsertParamFn
|
|
180
|
-
/**
|
|
181
|
-
* api 含 dataI18n 时:本表 direct 翻译字段;缺省推断 varchar/text 列
|
|
182
|
-
*/
|
|
183
|
-
dataI18nFields?: string[]
|
|
184
|
-
/**
|
|
185
|
-
* api 含 dataI18n 时:冗余列走源表 pack(源表也须声明 dataI18n)
|
|
186
|
-
* @example skinName: { sourceTable: 'game_skin', joinField: 'steamId' }
|
|
187
|
-
*/
|
|
188
|
-
dataI18nRef?: Record<string, DataI18nRefDecl>
|
|
189
|
-
/**
|
|
190
|
-
* 翻译种子:单条或数组。`language: 'en'` 时可用同行 `marketHashName` 作为 `skinName` 译文。
|
|
191
|
-
* @example [{ skinName: 'marketHashName', language: 'en' }]
|
|
192
|
-
*/
|
|
193
|
-
dataI18nSeed?: DataI18nSeedItem | DataI18nSeedItem[]
|
|
194
|
-
/**
|
|
195
|
-
* 导入 upsert 唯一键(字段名数组)。
|
|
196
|
-
* 未配置时自动取实体 uniqueIndex / unique 约束。
|
|
197
|
-
*/
|
|
198
|
-
importUniqueKeys?: string[]
|
|
199
|
-
}
|
|
1
|
+
import type { ClassToken } from '../ioc/metadata'
|
|
2
|
+
|
|
3
|
+
/** 快速 CRUD 接口名(含回收站) */
|
|
4
|
+
export type CrudApi =
|
|
5
|
+
| 'add'
|
|
6
|
+
| 'delete'
|
|
7
|
+
| 'update'
|
|
8
|
+
| 'info'
|
|
9
|
+
| 'list'
|
|
10
|
+
| 'page'
|
|
11
|
+
| 'restore'
|
|
12
|
+
/** 声明业务数据多语言(非 HTTP 接口;与 restore 一样写在 api 里) */
|
|
13
|
+
| 'dataI18n'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 字段引用(fieldEq / fieldLike / fieldArray / keyWordLikeFields)。
|
|
17
|
+
* - 裸名 `status` → `a.status`,请求参数名 = `status`
|
|
18
|
+
* - `b.providerId` → 参数名 = `providerId`
|
|
19
|
+
* - `e.id as roleId` → 筛 `e.id`,参数名 = `roleId`(短名冲突用 as,不用 requestParam)
|
|
20
|
+
*/
|
|
21
|
+
export type QueryFieldRef =
|
|
22
|
+
| string
|
|
23
|
+
| {
|
|
24
|
+
/** 如 `status` / `b.providerId` / `e.id as roleId` */
|
|
25
|
+
column: string
|
|
26
|
+
/** 筛选项展示名;缺省用实体 columnComments / EPS comment */
|
|
27
|
+
label?: string
|
|
28
|
+
/** 业务字典 type.key;筛选项用其拉 options */
|
|
29
|
+
dict?: string
|
|
30
|
+
/** 有 dict 时默认 true(下拉多选);false 为单选 */
|
|
31
|
+
multiple?: boolean
|
|
32
|
+
/** true:后端仍按本字段筛选,admin 不自动构建筛控件 */
|
|
33
|
+
none?: boolean
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** 区间筛选精度 / 数字类型(告诉 admin 用什么控件) */
|
|
37
|
+
export type FieldRangeType =
|
|
38
|
+
| 'int'
|
|
39
|
+
| 'float'
|
|
40
|
+
| 'year'
|
|
41
|
+
| 'month'
|
|
42
|
+
| 'day'
|
|
43
|
+
| 'datetime'
|
|
44
|
+
|
|
45
|
+
/** 价格 / 时间等区间;min/max 为请求体参数名 */
|
|
46
|
+
export type QueryFieldRange = {
|
|
47
|
+
column: string
|
|
48
|
+
min: string
|
|
49
|
+
max: string
|
|
50
|
+
type: FieldRangeType
|
|
51
|
+
/** 覆盖实体注释,用于搜索 label / placeholder 前缀 */
|
|
52
|
+
label?: string
|
|
53
|
+
/** true:后端支持区间,admin 不自动出控件 */
|
|
54
|
+
none?: boolean
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** join 类型 */
|
|
58
|
+
export type QueryJoinType = 'join' | 'leftJoin' | 'innerJoin'
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Join 配置(Drizzle pgTable)。
|
|
62
|
+
* - 主表固定别名 `a`
|
|
63
|
+
* - 联表必须显式:`entity` + `alias` + `type` + `condition`
|
|
64
|
+
*/
|
|
65
|
+
export type QueryJoin = {
|
|
66
|
+
/** Drizzle pgTable */
|
|
67
|
+
entity: unknown
|
|
68
|
+
/** 联表别名,如 b / c / f;不可为 a */
|
|
69
|
+
alias: string
|
|
70
|
+
type: QueryJoinType
|
|
71
|
+
/** 等值条件,如 `a.skinId = b.id` */
|
|
72
|
+
condition: string
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** where / extend 上下文 */
|
|
76
|
+
export type QueryOpCtx = {
|
|
77
|
+
body: Record<string, unknown>
|
|
78
|
+
request: Request
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** where 返回:单条 SQL,或列表(undefined/false/null 自动丢弃) */
|
|
82
|
+
export type QueryWhereResult =
|
|
83
|
+
| unknown
|
|
84
|
+
| Array<unknown | undefined | false | null>
|
|
85
|
+
|
|
86
|
+
export type QueryWhereFn = (
|
|
87
|
+
ctx: QueryOpCtx,
|
|
88
|
+
) => QueryWhereResult | Promise<QueryWhereResult>
|
|
89
|
+
|
|
90
|
+
/** extend 可改的查询句柄 */
|
|
91
|
+
export type QueryExtendQb = {
|
|
92
|
+
andWhere: (condition: unknown) => void
|
|
93
|
+
orderBy: (...orders: unknown[]) => void
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type QueryExtendFn = (
|
|
97
|
+
qb: QueryExtendQb,
|
|
98
|
+
ctx: QueryOpCtx,
|
|
99
|
+
) => void | Promise<void>
|
|
100
|
+
|
|
101
|
+
/** page / list 查询配置 */
|
|
102
|
+
export type QueryOp = {
|
|
103
|
+
keyWordLikeFields?: string[]
|
|
104
|
+
fieldEq?: QueryFieldRef[]
|
|
105
|
+
fieldLike?: QueryFieldRef[]
|
|
106
|
+
/** PG 数组列包含查询(body 单值或数组);admin 筛选用输入框 */
|
|
107
|
+
fieldArray?: QueryFieldRef[]
|
|
108
|
+
/** 数字 / 时间区间(与 fieldEq 等并存,勿再在 where 里拆参) */
|
|
109
|
+
fieldRange?: QueryFieldRange[]
|
|
110
|
+
addOrderBy?: Record<string, 'asc' | 'desc'>
|
|
111
|
+
/**
|
|
112
|
+
* 声明式投影(有 join 时建议显式配置)。
|
|
113
|
+
* - `a.*`:主表全部列,结果键 = 驼峰字段名
|
|
114
|
+
* - `b.userName`:结果键 = `userName`(无需 as)
|
|
115
|
+
* - `e.name as roleName`:结果键 = `roleName`
|
|
116
|
+
*/
|
|
117
|
+
select?: string[]
|
|
118
|
+
join?: QueryJoin[]
|
|
119
|
+
where?: QueryWhereFn
|
|
120
|
+
extend?: QueryExtendFn
|
|
121
|
+
/**
|
|
122
|
+
* page / list 响应剔除字段(如 password),与 admin `ignoreFields` 同名。
|
|
123
|
+
* `a.*` 展开时跳过;未配 select 时也会走投影剔除。
|
|
124
|
+
*/
|
|
125
|
+
ignoreFields?: string[]
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export type InsertParamFn = (ctx: {
|
|
129
|
+
body?: unknown
|
|
130
|
+
request?: Request
|
|
131
|
+
}) => Record<string, unknown> | Promise<Record<string, unknown>>
|
|
132
|
+
|
|
133
|
+
/** 写操作前钩子(add / update / delete / restore) */
|
|
134
|
+
export type CrudBeforeFn = (ctx: {
|
|
135
|
+
body: Record<string, unknown>
|
|
136
|
+
request: Request
|
|
137
|
+
api: string
|
|
138
|
+
}) => void | Promise<void>
|
|
139
|
+
|
|
140
|
+
/** 控制器 / 路由中间件(Elysia onBeforeHandle) */
|
|
141
|
+
export type RouteMiddleware = (
|
|
142
|
+
ctx: Record<string, unknown>,
|
|
143
|
+
) => unknown | Promise<unknown>
|
|
144
|
+
|
|
145
|
+
export type DataI18nRefDecl = {
|
|
146
|
+
sourceTable: string
|
|
147
|
+
joinField: string
|
|
148
|
+
sourceJoinField?: string
|
|
149
|
+
sourceField?: string
|
|
150
|
+
sourcePkField?: string
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* 参考字段种子(翻译时直接用同行另一列,不调 AI)
|
|
155
|
+
* @example { skinName: 'marketHashName', language: 'en' } // en / en-US 均命中
|
|
156
|
+
*/
|
|
157
|
+
export type DataI18nSeedItem = {
|
|
158
|
+
/** 适用语种:`en` 匹配 `en`、`en-US`、`en-GB` */
|
|
159
|
+
language: string
|
|
160
|
+
/** 目标字段 → 参考列,如 skinName: 'marketHashName' */
|
|
161
|
+
[fieldName: string]: string
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @Controller 快速 CRUD 选项(Drizzle 适配)
|
|
166
|
+
*/
|
|
167
|
+
export type ControllerCrudOptions = {
|
|
168
|
+
api?: CrudApi[]
|
|
169
|
+
/** Drizzle pgTable,宿主挂载 Repository */
|
|
170
|
+
entity?: unknown
|
|
171
|
+
/** 业务 Service 类(须 @Provide,建议 extends BaseService) */
|
|
172
|
+
service?: ClassToken
|
|
173
|
+
/** 把 Service 方法挂成 POST /methodName */
|
|
174
|
+
serviceApis?: string[]
|
|
175
|
+
/** 写操作前改 body(add/update/delete/restore) */
|
|
176
|
+
before?: CrudBeforeFn
|
|
177
|
+
pageQueryOp?: QueryOp
|
|
178
|
+
listQueryOp?: QueryOp
|
|
179
|
+
insertParam?: InsertParamFn
|
|
180
|
+
/**
|
|
181
|
+
* api 含 dataI18n 时:本表 direct 翻译字段;缺省推断 varchar/text 列
|
|
182
|
+
*/
|
|
183
|
+
dataI18nFields?: string[]
|
|
184
|
+
/**
|
|
185
|
+
* api 含 dataI18n 时:冗余列走源表 pack(源表也须声明 dataI18n)
|
|
186
|
+
* @example skinName: { sourceTable: 'game_skin', joinField: 'steamId' }
|
|
187
|
+
*/
|
|
188
|
+
dataI18nRef?: Record<string, DataI18nRefDecl>
|
|
189
|
+
/**
|
|
190
|
+
* 翻译种子:单条或数组。`language: 'en'` 时可用同行 `marketHashName` 作为 `skinName` 译文。
|
|
191
|
+
* @example [{ skinName: 'marketHashName', language: 'en' }]
|
|
192
|
+
*/
|
|
193
|
+
dataI18nSeed?: DataI18nSeedItem | DataI18nSeedItem[]
|
|
194
|
+
/**
|
|
195
|
+
* 导入 upsert 唯一键(字段名数组)。
|
|
196
|
+
* 未配置时自动取实体 uniqueIndex / unique 约束。
|
|
197
|
+
*/
|
|
198
|
+
importUniqueKeys?: string[]
|
|
199
|
+
}
|
package/typings/routing/eps.ts
CHANGED
|
@@ -1,88 +1,90 @@
|
|
|
1
|
-
import type { QueryFieldRange, QueryFieldRef } from './crud'
|
|
2
|
-
import type { ControllerSide } from './meta'
|
|
3
|
-
|
|
4
|
-
/** EPS:单条 API */
|
|
5
|
-
export type EpsApiItem = {
|
|
6
|
-
method: string
|
|
7
|
-
path: string
|
|
8
|
-
summary: string
|
|
9
|
-
dts: Record<string, unknown>
|
|
10
|
-
tag: string
|
|
11
|
-
prefix: string
|
|
12
|
-
ignoreToken: boolean
|
|
13
|
-
/** 强化:登录但免权限码 */
|
|
14
|
-
ignorePerms: boolean
|
|
15
|
-
/** 强化:推导/显式权限码 */
|
|
16
|
-
perms: string[]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** EPS:字段列 */
|
|
20
|
-
export type EpsColumn = {
|
|
21
|
-
propertyName: string
|
|
22
|
-
/** drizzle dataType:string / number / boolean / date(兼容旧逻辑) */
|
|
23
|
-
type: string
|
|
24
|
-
/** drizzle columnType:PgVarchar / PgText / PgInteger / PgNumeric … */
|
|
25
|
-
columnType?: string
|
|
26
|
-
/** getSQLType():varchar(100) / text / numeric(10, 2) … */
|
|
27
|
-
sqlType?: string
|
|
28
|
-
length?: string
|
|
29
|
-
precision?: number
|
|
30
|
-
scale?: number
|
|
31
|
-
comment?: string
|
|
32
|
-
nullable?: boolean
|
|
33
|
-
/** 列有 DB default / $defaultFn / serial */
|
|
34
|
-
hasDefault?: boolean
|
|
35
|
-
defaultValue?: unknown
|
|
36
|
-
source?: string
|
|
37
|
-
dict?: string | string[]
|
|
38
|
-
/** 物理表名(i18n_pack),供 field.{table}.{prop} 翻译 */
|
|
39
|
-
table?: string
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** EPS:单个控制器/实体描述 */
|
|
43
|
-
export type EpsEntity = {
|
|
44
|
-
module: string
|
|
45
|
-
/** 强化:admin | app */
|
|
46
|
-
side: ControllerSide
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
1
|
+
import type { QueryFieldRange, QueryFieldRef } from './crud'
|
|
2
|
+
import type { AppChannel, ControllerSide } from './meta'
|
|
3
|
+
|
|
4
|
+
/** EPS:单条 API */
|
|
5
|
+
export type EpsApiItem = {
|
|
6
|
+
method: string
|
|
7
|
+
path: string
|
|
8
|
+
summary: string
|
|
9
|
+
dts: Record<string, unknown>
|
|
10
|
+
tag: string
|
|
11
|
+
prefix: string
|
|
12
|
+
ignoreToken: boolean
|
|
13
|
+
/** 强化:登录但免权限码 */
|
|
14
|
+
ignorePerms: boolean
|
|
15
|
+
/** 强化:推导/显式权限码 */
|
|
16
|
+
perms: string[]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** EPS:字段列 */
|
|
20
|
+
export type EpsColumn = {
|
|
21
|
+
propertyName: string
|
|
22
|
+
/** drizzle dataType:string / number / boolean / date(兼容旧逻辑) */
|
|
23
|
+
type: string
|
|
24
|
+
/** drizzle columnType:PgVarchar / PgText / PgInteger / PgNumeric … */
|
|
25
|
+
columnType?: string
|
|
26
|
+
/** getSQLType():varchar(100) / text / numeric(10, 2) … */
|
|
27
|
+
sqlType?: string
|
|
28
|
+
length?: string
|
|
29
|
+
precision?: number
|
|
30
|
+
scale?: number
|
|
31
|
+
comment?: string
|
|
32
|
+
nullable?: boolean
|
|
33
|
+
/** 列有 DB default / $defaultFn / serial */
|
|
34
|
+
hasDefault?: boolean
|
|
35
|
+
defaultValue?: unknown
|
|
36
|
+
source?: string
|
|
37
|
+
dict?: string | string[]
|
|
38
|
+
/** 物理表名(i18n_pack),供 field.{table}.{prop} 翻译 */
|
|
39
|
+
table?: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** EPS:单个控制器/实体描述 */
|
|
43
|
+
export type EpsEntity = {
|
|
44
|
+
module: string
|
|
45
|
+
/** 强化:admin | app */
|
|
46
|
+
side: ControllerSide
|
|
47
|
+
/** 仅 app:shared | store | front */
|
|
48
|
+
channel?: AppChannel
|
|
49
|
+
prefix: string
|
|
50
|
+
name?: string
|
|
51
|
+
info: { type: { name: string; description: string } }
|
|
52
|
+
api: EpsApiItem[]
|
|
53
|
+
columns: EpsColumn[]
|
|
54
|
+
pageQueryOp: {
|
|
55
|
+
keyWordLikeFields: string[]
|
|
56
|
+
fieldEq: Array<string | QueryFieldRef>
|
|
57
|
+
fieldLike: Array<string | QueryFieldRef>
|
|
58
|
+
fieldArray: Array<string | QueryFieldRef>
|
|
59
|
+
fieldRange: QueryFieldRange[]
|
|
60
|
+
ignoreFields: string[]
|
|
61
|
+
}
|
|
62
|
+
pageColumns: EpsColumn[]
|
|
63
|
+
/** Controller api 含 dataI18n:本实体参与业务数据翻译 */
|
|
64
|
+
dataI18n?: boolean
|
|
65
|
+
/** direct 字段名(语言 Tab 列) */
|
|
66
|
+
dataI18nFields?: string[]
|
|
67
|
+
/** 全局:已声明 dataI18n 的业务表(供 join 发现源表) */
|
|
68
|
+
dataI18nTables?: string[]
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** EPS:按模块分组 */
|
|
72
|
+
export type EpsModuleMap = Record<string, EpsEntity[]>
|
|
73
|
+
|
|
74
|
+
/** EPS 开放接口完整载荷(实体 + 全部字典扁平数据) */
|
|
75
|
+
export type EpsDictFlatRow = {
|
|
76
|
+
id: number
|
|
77
|
+
name: string
|
|
78
|
+
typeId: number
|
|
79
|
+
parentId?: number | null
|
|
80
|
+
orderNum?: number
|
|
81
|
+
value?: unknown
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type EpsPayload = {
|
|
85
|
+
/** 服务端 vome.eps;写入打包 eps.json,生产仅 true 时前端可再请求 */
|
|
86
|
+
eps?: boolean
|
|
87
|
+
modules: EpsModuleMap
|
|
88
|
+
/** 字典类型 key → 扁平条目(前端组树后当本地缓存) */
|
|
89
|
+
dict: Record<string, EpsDictFlatRow[]>
|
|
90
|
+
}
|