File tree Expand file tree Collapse file tree 2 files changed +15
-7
lines changed
Expand file tree Collapse file tree 2 files changed +15
-7
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,6 @@ export { useConnection } from './composables/useConnection'
7373export { useHandleConnections } from './composables/useHandleConnections'
7474export { useNodesData } from './composables/useNodesData'
7575
76- export { VueFlowError , ErrorCode } from './utils/errors'
76+ export { VueFlowError , ErrorCode , isErrorOfType } from './utils/errors'
7777
7878export * from './types'
Original file line number Diff line number Diff line change @@ -35,15 +35,23 @@ const messages = {
3535 [ ErrorCode . EDGE_NOT_FOUND ] : ( id : string ) => `Edge not found\nEdge: ${ id } ` ,
3636} as const
3737
38- export class VueFlowError < T extends ErrorCode = ErrorCode > extends Error {
38+ type ErrorArgs < T extends ErrorCode > = ( typeof messages ) [ T ] extends ( ...args : any [ ] ) => string
39+ ? Parameters < ( typeof messages ) [ T ] >
40+ : never
41+
42+ export class VueFlowError < T extends ErrorCode = ErrorCode , Args extends ErrorArgs < T > = ErrorArgs < T > > extends Error {
43+ name = 'VueFlowError'
3944 code : T
40- constructor (
41- code : T ,
42- ...args : ( typeof messages ) [ T ] extends ( ...args : any [ ] ) => string ? Parameters < ( typeof messages ) [ T ] > : never
43- ) {
45+ args : Args
46+
47+ constructor ( code : T , ...args : Args ) {
4448 // @ts -expect-error - TS doesn't know that the message is a key of messages
4549 super ( messages [ code ] ?.( ...args ) )
46-
4750 this . code = code
51+ this . args = args
4852 }
4953}
54+
55+ export function isErrorOfType < T extends ErrorCode > ( error : VueFlowError , code : T ) : error is VueFlowError < T > {
56+ return error . code === code
57+ }
You can’t perform that action at this time.
0 commit comments