Browse Source

chore: update deps

main
K 7 months ago
parent
commit
f12b717118
  1. 30
      package.json
  2. 1460
      pnpm-lock.yaml
  3. 2
      src/components/Tree/src/BasicTree.vue
  4. 7
      src/components/Tree/src/types/tree.ts
  5. 159
      src/utils/props.ts

30
package.json

@ -32,15 +32,15 @@
"@codemirror/state": "^6.4.1",
"@codemirror/theme-one-dark": "^6.1.2",
"@codemirror/view": "^6.28.4",
"@vueuse/core": "^10.11.0",
"@vueuse/core": "^11.2.0",
"@zxcvbn-ts/core": "^3.0.4",
"ant-design-vue": "^4.2.3",
"axios": "^1.7.2",
"ant-design-vue": "^4.2.5",
"axios": "^1.7.7",
"codemirror": "^6.0.1",
"cron-parser": "^4.9.0",
"cropperjs": "^1.6.2",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
"dayjs": "^1.11.13",
"echarts": "^5.5.1",
"lodash-es": "^4.17.21",
"nprogress": "^0.2.0",
@ -54,17 +54,17 @@
"tinymce": "^5.10.9",
"vditor": "^3.10.4",
"vite-plugin-html": "^3.2.2",
"vue": "^3.4.31",
"vue": "^3.5.12",
"vue-i18n": "^9.13.1",
"vue-json-pretty": "^2.4.0",
"vue-router": "^4.4.0",
"vue-router": "^4.4.5",
"vue-types": "^5.1.3",
"vuedraggable": "^4.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@antfu/eslint-config": "^3.8.0",
"@iconify/json": "^2.2.228",
"@iconify/json": "^2.2.268",
"@types/codemirror": "^5.60.15",
"@types/crypto-js": "^4.2.2",
"@types/fs-extra": "^11.0.4",
@ -74,9 +74,9 @@
"@types/qs": "^6.9.15",
"@types/sortablejs": "^1.15.8",
"@unocss/eslint-config": "^0.63.6",
"@vitejs/plugin-vue": "^4.6.2",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"@vue/compiler-sfc": "^3.4.31",
"@vitejs/plugin-vue": "^5.1.4",
"@vitejs/plugin-vue-jsx": "^4.0.1",
"@vue/compiler-sfc": "^3.5.12",
"bumpp": "^9.4.1",
"cross-env": "^7.0.3",
"dotenv": "^16.4.5",
@ -94,15 +94,15 @@
"rollup-plugin-visualizer": "^5.12.0",
"simple-git-hooks": "^2.11.1",
"terser": "^5.31.2",
"typescript": "^5.5.3",
"unocss": "^0.61.3",
"unplugin-auto-import": "^0.18.0",
"vite": "^5.3.3",
"typescript": "^5.6.3",
"unocss": "^0.63.6",
"unplugin-auto-import": "^0.18.3",
"vite": "^5.4.10",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-pwa": "^0.17.5",
"vite-plugin-svg-icons": "^2.0.1",
"vite-vue-plugin-html": "^1.0.5",
"vue-tsc": "^2.0.26"
"vue-tsc": "^2.1.10"
},
"simple-git-hooks": {
"pre-commit": "pnpm lint-staged && pnpm type:check",

1460
pnpm-lock.yaml

File diff suppressed because it is too large Load Diff

2
src/components/Tree/src/BasicTree.vue

@ -399,7 +399,7 @@ export default defineComponent({
async function loadData(node: TreeItem) {
const parentNode = findNode(treeDataRef.value, item => item.key === node.key)
try {
parentNode.children = await props.loadData(node)
parentNode.children = await props.loadData?.(node)
}
catch {}
}

7
src/components/Tree/src/types/tree.ts

@ -1,8 +1,6 @@
import type { TreeDataItem } from 'ant-design-vue/es/tree/Tree'
import type { ExtractPropTypes, Ref } from 'vue'
import { buildProps } from '@/utils/props'
export enum ToolbarEnum {
SELECT_ALL,
UN_SELECT_ALL,
@ -33,7 +31,7 @@ export type CheckKeys = KeyType[] | { checked: string[] | number[], halfChecked:
export type TreeNode = (Omit<TreeDataItem, 'key'> & { key?: string | number })
export const treeProps = buildProps({
export const treeProps = {
value: {
type: [Object, Array] as PropType<KeyType[] | CheckKeys>,
},
@ -89,6 +87,7 @@ export const treeProps = buildProps({
expandedKeys: {
type: Array as PropType<KeyType[]>,
default: () => [],
},
selectedKeys: {
@ -134,7 +133,7 @@ export const treeProps = buildProps({
loadData: {
type: Function as PropType<(node: TreeNode) => Promise<TreeNode[]>>,
},
})
}
export type TreeProps = ExtractPropTypes<typeof treeProps>

159
src/utils/props.ts

@ -1,159 +0,0 @@
// copy from element-plus
import type { Mutable } from '@/types/utils'
import type { ExtractPropTypes } from 'vue'
import { isObject } from '@/utils/is'
import { fromPairs } from 'lodash-es'
import { warn } from 'vue'
const wrapperKey = Symbol('wrapperKey')
export interface PropWrapper<T> { [wrapperKey]: T }
export const propKey = Symbol('propKey')
type ResolveProp<T> = ExtractPropTypes<{
key: { type: T, required: true }
}>['key']
type ResolvePropType<T> = ResolveProp<T> extends { type: infer V } ? V : ResolveProp<T>
type ResolvePropTypeWithReadonly<T> = Readonly<T> extends Readonly<Array<infer A>> ? ResolvePropType<A[]> : ResolvePropType<T>
type IfUnknown<T, V> = [unknown] extends [T] ? V : T
export interface BuildPropOption<T, D extends BuildPropType<T, V, C>, R, V, C> {
type?: T
values?: readonly V[]
required?: R
default?: R extends true ? never : D extends Record<string, unknown> | Array<any> ? () => D : (() => D) | D
validator?: ((val: any) => val is C) | ((val: any) => boolean)
}
type _BuildPropType<T, V, C> =
| (T extends PropWrapper<unknown> ? T[typeof wrapperKey] : [V] extends [never] ? ResolvePropTypeWithReadonly<T> : never)
| V
| C
export type BuildPropType<T, V, C> = _BuildPropType<IfUnknown<T, never>, IfUnknown<V, never>, IfUnknown<C, never>>
type _BuildPropDefault<T, D> = [T] extends [
Record<string, unknown> | Array<any> | Fn,
]
? D
: D extends () => T
? ReturnType<D>
: D
export type BuildPropDefault<T, D, R> = R extends true
? { readonly default?: undefined }
: {
readonly default: Exclude<D, undefined> extends never ? undefined : Exclude<_BuildPropDefault<T, D>, undefined>
}
export type BuildPropReturn<T, D, R, V, C> = {
readonly type: PropType<BuildPropType<T, V, C>>
readonly required: IfUnknown<R, false>
readonly validator: ((val: unknown) => boolean) | undefined
[propKey]: true
} & BuildPropDefault<BuildPropType<T, V, C>, IfUnknown<D, never>, IfUnknown<R, false>>
/**
* @description Build prop. It can better optimize prop types
* @description prop
* @example
// limited options
// the type will be PropType<'light' | 'dark'>
buildProp({
type: String,
values: ['light', 'dark'],
} as const)
* @example
// limited options and other types
// the type will be PropType<'small' | 'medium' | number>
buildProp({
type: [String, Number],
values: ['small', 'medium'],
validator: (val: unknown): val is number => typeof val === 'number',
} as const)
@link see more: https://github.com/element-plus/element-plus/pull/3341
*/
export function buildProp<T = never, D extends BuildPropType<T, V, C> = never, R extends boolean = false, V = never, C = never>(
option: BuildPropOption<T, D, R, V, C>,
key?: string,
): BuildPropReturn<T, D, R, V, C> {
// filter native prop type and nested prop, e.g `null`, `undefined` (from `buildProps`)
if (!isObject(option) || !!option[propKey])
return option as any
const { values, required, default: defaultValue, type, validator } = option
const _validator
= values || validator
? (val: unknown) => {
let valid = false
let allowedValues: unknown[] = []
if (values) {
allowedValues = [...values, defaultValue]
valid ||= allowedValues.includes(val)
}
if (validator)
valid ||= validator(val)
if (!valid && allowedValues.length > 0) {
const allowValuesText = [...new Set(allowedValues)].map(value => JSON.stringify(value)).join(', ')
warn(
`Invalid prop: validation failed${
key ? ` for prop "${key}"` : ''
}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`,
)
}
return valid
}
: undefined
return {
type: typeof type === 'object' && type && Object.getOwnPropertySymbols(type).includes(wrapperKey) && type ? type[wrapperKey] : type,
required: !!required,
default: defaultValue,
validator: _validator,
[propKey]: true,
} as unknown as BuildPropReturn<T, D, R, V, C>
}
type NativePropType = [((...args: any) => any) | { new (...args: any): any } | undefined | null]
export function buildProps<
O extends {
[K in keyof O]: O[K] extends BuildPropReturn<any, any, any, any, any>
? O[K]
: [O[K]] extends NativePropType
? O[K]
: O[K] extends BuildPropOption<infer T, infer D, infer R, infer V, infer C>
? D extends BuildPropType<T, V, C>
? BuildPropOption<T, D, R, V, C>
: never
: never
},
>(props: O) {
return fromPairs(Object.entries(props).map(([key, option]) => [key, buildProp(option as any, key)])) as unknown as {
[K in keyof O]: O[K] extends { [propKey]: boolean }
? O[K]
: [O[K]] extends NativePropType
? O[K]
: O[K] extends BuildPropOption<
infer T,
infer _D,
infer R,
infer V,
infer C
>
? BuildPropReturn<T, O[K]['default'], R, V, C>
: never
}
}
export const definePropType = <T>(val: any) => ({ [wrapperKey]: val }) as PropWrapper<T>
export const keyOf = <T extends object>(arr: T) => Object.keys(arr) as Array<keyof T>
export const mutable = <T extends readonly any[] | Record<string, unknown>>(val: T) => val as Mutable<typeof val>
export const componentSize = ['large', 'medium', 'small', 'mini'] as const
Loading…
Cancel
Save