-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathTypes.ts
More file actions
60 lines (46 loc) · 1.79 KB
/
Copy pathTypes.ts
File metadata and controls
60 lines (46 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import type { ModdleElement } from 'moddle';
import type {
BpmnBaseElement,
BpmnModdleTypeMap
} from '../../moddle-types/bpmn.js';
import type { BpmndiModdleTypeMap } from '../../moddle-types/bpmndi.js';
import type { DcModdleTypeMap } from '../../moddle-types/dc.js';
export type BpmnElement = ModdleElement<BpmnBaseElement>;
export type BpmnTypeName = keyof BpmnModdleTypeMap;
export type BpmnElementFor<Type extends BpmnTypeName> = BpmnModdleTypeMap[Type];
export type BpmndiTypeName = keyof BpmndiModdleTypeMap;
export type BpmndiElementFor<Type extends BpmndiTypeName> =
BpmndiModdleTypeMap[Type];
export type BpmnDiModdleTypeMap = BpmnModdleTypeMap &
BpmndiModdleTypeMap &
DcModdleTypeMap;
export type BpmnDiModdleTypeName = keyof BpmnDiModdleTypeMap;
export type BpmnDiModdleElementFor<Type extends BpmnDiModdleTypeName> =
BpmnDiModdleTypeMap[Type];
export type BpmnDiModdleElementAttributes<
Type extends BpmnDiModdleTypeName
> = Omit<BpmnDiModdleElementFor<Type>, '$instanceOf' | '$parent' | '$type'>;
export type BpmnDiModdleFactory = {
create<Type extends BpmnDiModdleTypeName>(
type: Type,
attributes?: BpmnDiModdleElementAttributes<Type>
): BpmnDiModdleElementFor<Type>;
};
export function isBpmnElement(element: unknown): element is BpmnElement {
return !!element &&
typeof element === 'object' &&
'$instanceOf' in element &&
typeof element.$instanceOf === 'function';
}
export function isBpmnType<Type extends BpmnTypeName>(
element: unknown,
type: Type
): element is BpmnElementFor<Type> {
return isBpmnElement(element) && element.$instanceOf(type);
}
export function isBpmndiType<Type extends BpmndiTypeName>(
element: unknown,
type: Type
): element is BpmndiElementFor<Type> {
return isBpmnElement(element) && element.$instanceOf(type);
}