Skip to content

Commit aaa84ce

Browse files
committed
update
1 parent d797f73 commit aaa84ce

20 files changed

+383
-140
lines changed

packages/core/__tests__/flextree.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,11 @@ describe("FlexTree类型系统测试", () => {
9797
]
9898
return true
9999
})!
100+
const node = tree.get('123')!
101+
102+
type keyFieldCases = [
103+
Expect<Equal<typeof node.id, string>>,
104+
Expect<Equal<typeof node.treeId, string>>
105+
]
100106
})
101107
})

packages/core/src/errors.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
export class FlexTreeError extends Error {}
2-
export class FlexTreeNotExists extends FlexTreeError {}
3-
export class FlexTreeVerifyError extends Error {}
4-
export class FlexTreeInvalidError extends FlexTreeError {}
1+
export class FlexTreeError extends Error { }
2+
export class FlexTreeNotExists extends FlexTreeError { }
3+
export class FlexTreeVerifyError extends Error { }
4+
export class FlexTreeInvalidError extends FlexTreeError { }
5+
export class FlexTreeAbortError extends FlexTreeError { }
56

6-
export class FlexTreeNotFoundError extends FlexTreeError {}
7-
export class FlexTreeDriverError extends FlexTreeError {}
7+
export class FlexTreeNotFoundError extends FlexTreeError { }
8+
export class FlexTreeDriverError extends FlexTreeError { }
89
// 当树操作没有在update方法内更新时抛出
9-
export class FlexTreeInvalidUpdateError extends FlexTreeError {}
10+
export class FlexTreeInvalidUpdateError extends FlexTreeError { }
1011

1112
// 节点
12-
export class FlexTreeNodeError extends FlexTreeError {}
13-
export class FlexTreeNodeNotFoundError extends FlexTreeNodeError {}
14-
export class FlexTreeNodeInvalidOperationError extends FlexTreeNodeError {}
13+
export class FlexTreeNodeError extends FlexTreeError { }
14+
export class FlexTreeNodeNotFoundError extends FlexTreeNodeError { }
15+
export class FlexTreeNodeInvalidOperationError extends FlexTreeNodeError { }

packages/core/src/manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { mix } from 'ts-mixer'
1010
import mitt from 'mitt'
1111
import type { IFlexTreeAdapter } from './adapter'
1212
import { FlexTreeDriverError, FlexTreeError, FlexTreeInvalidUpdateError } from './errors'
13-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, FlexTreeEvents, IFlexTreeNode, NonUndefined } from './types'
13+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, FlexTreeEvents, IFlexTreeNodeFields, NonUndefined } from './types'
1414
import { MoveNodeMixin } from './mixins/move.mixin'
1515
import { DeleteNodeMixin } from './mixins/delete.mixin'
1616
import { AddNodeMixin } from './mixins/add.mixin'
@@ -39,7 +39,7 @@ export interface FlexTreeManagerOptions<TreeIdType = number> {
3939
export interface FlexTreeManager<
4040
Fields extends Record<string, any> = object,
4141
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
42-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
42+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
4343
NodeId = NonUndefined<KeyFields['id']>[1],
4444
TreeId = NonUndefined<KeyFields['treeId']>[1],
4545
> extends MoveNodeMixin<Fields, KeyFields, TreeNode, NodeId, TreeId>,
@@ -83,7 +83,7 @@ export class FlexTreeManager<
8383
Fields extends Record<string, any> = object,
8484
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
8585
// eslint-disable-next-line unused-imports/no-unused-vars
86-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
86+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
8787
// eslint-disable-next-line unused-imports/no-unused-vars
8888
NodeId = NonUndefined<KeyFields['id']>[1],
8989
TreeId = NonUndefined<KeyFields['treeId']>[1],

packages/core/src/mixins/add.mixin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33
import { FlexNodeRelPosition } from '../types'
44
import { FlexTreeError } from '../errors'
55
import { escapeSqlString } from '../utils/escapeSqlString'
66

77
export class AddNodeMixin<
88
Fields extends Record<string, any> = object,
99
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
10-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
10+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
1111
NodeId = NonUndefined<KeyFields['id']>[1],
1212
TreeId = NonUndefined<KeyFields['treeId']>[1],
1313
> {

packages/core/src/mixins/delete.mixin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33

44
export class DeleteNodeMixin<
55
Fields extends Record<string, any> = object,
66
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
7-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
7+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
88
NodeId = NonUndefined<KeyFields['id']>[1],
99
TreeId = NonUndefined<KeyFields['treeId']>[1],
1010
> {

packages/core/src/mixins/find.mixin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import sqlstring from 'sqlstring'
22
import type { FlexTreeManager } from '../manager'
3-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
3+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
44
import { FlexTreeError, FlexTreeNodeNotFoundError } from '../errors'
55
import { escapeSqlString } from '../utils/escapeSqlString'
66

77
export class FindNodeMixin<
88
Fields extends Record<string, any> = object,
99
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
10-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
10+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
1111
NodeId = NonUndefined<KeyFields['id']>[1],
1212
TreeId = NonUndefined<KeyFields['treeId']>[1],
1313
> {

packages/core/src/mixins/get.mixin.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33
import { FlexTreeError, FlexTreeNodeNotFoundError, FlexTreeNotExists } from '../errors'
44
import { escapeSqlString } from '../utils/escapeSqlString'
55
import { isLikeNode } from '../utils/isLikeNode'
@@ -9,7 +9,7 @@ import { isNull } from '../utils/isNull'
99
export class GetNodeMixin<
1010
Fields extends Record<string, any> = object,
1111
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
12-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
12+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
1313
NodeId = NonUndefined<KeyFields['id']>[1],
1414
TreeId = NonUndefined<KeyFields['treeId']>[1],
1515
> {
@@ -47,9 +47,9 @@ export class GetNodeMixin<
4747
* @param {number} [options.level] 限定返回的层级,0表示不限制,1表示只返回根节点,2表示返回根节点和其子节点, 依次类推
4848
* @returns TreeNode[]
4949
*/
50-
async getNodes(this: FlexTreeManager<Fields, KeyFields, TreeNode, NodeId, TreeId>, options?: { level?: number,fields?:keyof TreeNode }): Promise<TreeNode[]> {
51-
const { level,fields } = Object.assign({ level: 0,fields:[] }, options)
52-
const fieldList = fields.length>0 ? fields.map(f=>`${f}`).join(',') : '*'
50+
async getNodes(this: FlexTreeManager<Fields, KeyFields, TreeNode, NodeId, TreeId>, options?: { level?: number, fields?: keyof TreeNode }): Promise<TreeNode[]> {
51+
const { level, fields } = Object.assign({ level: 0, fields: [] }, options)
52+
const fieldList = fields.length > 0 ? fields.map(f => `${f}`).join(',') : '*'
5353
const sql = this._sql(`SELECT ${fieldList} FROM ${this.tableName}
5454
WHERE {__TREE_ID__} ${this.keyFields.leftValue}>0 AND ${this.keyFields.rightValue}>0
5555
${level > 0 ? `AND ${this.keyFields.level}<=${level}` : ''}
@@ -106,8 +106,8 @@ export class GetNodeMixin<
106106
* @param {number} [options.level] 限制返回的级别
107107
* @param {boolean} [options.includeSelf] 返回结果是否包括自身
108108
*/
109-
async getDescendants(this: FlexTreeManager<Fields, KeyFields, TreeNode, NodeId, TreeId>, nodeId?: NodeId | TreeNode, options?: { level?: number, includeSelf?: boolean }): Promise<IFlexTreeNode<Fields, KeyFields>[]> {
110-
if(isNull(nodeId)) {
109+
async getDescendants(this: FlexTreeManager<Fields, KeyFields, TreeNode, NodeId, TreeId>, nodeId?: NodeId | TreeNode, options?: { level?: number, includeSelf?: boolean }): Promise<IFlexTreeNodeFields<Fields, KeyFields>[]> {
110+
if (isNull(nodeId)) {
111111
return await this.getNodes(options)
112112
}
113113
const { level, includeSelf } = Object.assign({ includeSelf: false, level: 0 }, options)

packages/core/src/mixins/is.mixin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33

44
export class IsNodeMixin<
55
Fields extends Record<string, any> = object,
66
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
7-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
7+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
88
NodeId = NonUndefined<KeyFields['id']>[1],
99
TreeId = NonUndefined<KeyFields['treeId']>[1],
1010
> {

packages/core/src/mixins/move.mixin.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33
import { FlexNodeRelPosition, FlexTreeNodeRelation } from '../types'
44
import { FlexTreeError, FlexTreeNodeInvalidOperationError } from '../errors'
55

66
export class MoveNodeMixin<
77
Fields extends Record<string, any> = object,
88
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
9-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
9+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
1010
NodeId = NonUndefined<KeyFields['id']>[1],
1111
TreeId = NonUndefined<KeyFields['treeId']>[1],
1212
> {
@@ -55,7 +55,7 @@ export class MoveNodeMixin<
5555

5656
const leftValue = fromNode[this.keyFields.leftValue]
5757

58-
const sqls: string[] = [
58+
const sqls: string[] = [
5959
this._sql(`
6060
UPDATE ${this.tableName}
6161
SET
@@ -91,7 +91,7 @@ export class MoveNodeMixin<
9191
WHERE
9292
{__TREE_ID__} ${this.keyFields.rightValue} < 0
9393
`),
94-
]
94+
]
9595

9696
return sqls
9797
}
@@ -138,7 +138,7 @@ export class MoveNodeMixin<
138138
WHERE
139139
{__TREE_ID__} ${this.keyFields.rightValue} < 0
140140
`),
141-
]
141+
]
142142
return sqls
143143
}
144144

@@ -273,10 +273,12 @@ export class MoveNodeMixin<
273273

274274
const sqls: string[] = []
275275
// 1. 将源节点及其子节点标记为已删除, 没有真正删除,只是标记为已删除, 执行后要移动的节点就从树中脱离,但是数据还在,仅是左右值变成负数
276-
await this.deleteNode(srcNode.id, { onlyMark: true, onExecuteBefore: (delSqls) => {
277-
sqls.push(...delSqls)
278-
return false
279-
} })
276+
await this.deleteNode(srcNode.id, {
277+
onlyMark: true, onExecuteBefore: (delSqls) => {
278+
sqls.push(...delSqls)
279+
return false
280+
}
281+
})
280282

281283
if (pos === FlexNodeRelPosition.LastChild) {
282284
sqls.push(...this._moveToLastChild(srcNode, targetNode))

packages/core/src/mixins/relation.mixin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type { FlexTreeManager } from '../manager'
2-
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNode, NonUndefined } from '../types'
2+
import type { CustomTreeKeyFields, DefaultTreeKeyFields, IFlexTreeNodeFields, NonUndefined } from '../types'
33
import { FlexTreeNodeRelation } from '../types'
44

55
export class RelationMixin<
66
Fields extends Record<string, any> = object,
77
KeyFields extends CustomTreeKeyFields = DefaultTreeKeyFields,
8-
TreeNode extends IFlexTreeNode<Fields, KeyFields> = IFlexTreeNode<Fields, KeyFields>,
8+
TreeNode extends IFlexTreeNodeFields<Fields, KeyFields> = IFlexTreeNodeFields<Fields, KeyFields>,
99
NodeId = NonUndefined<KeyFields['id']>[1],
1010
TreeId = NonUndefined<KeyFields['treeId']>[1],
1111
> {

0 commit comments

Comments
 (0)