@@ -6,7 +6,7 @@ export const NODE_DEFINITION_SYMBOL = Symbol("nodeDefinition");
6
6
7
7
export type PackageDescription = {
8
8
name : string ,
9
- nodes : { [ name : string ] : new ( ...args : any [ ] ) => Node }
9
+ nodes : { [ name : string ] : abstract new ( ...args : any [ ] ) => Node }
10
10
} ;
11
11
export const NODE_TYPES : { [ name : string ] : PackageDescription } = {
12
12
"" : { name : "" , nodes : { } }
@@ -29,7 +29,7 @@ export type PropertyDefinition = {
29
29
arrayType ?: any
30
30
}
31
31
32
- export function getNodeDefinition ( node : Node | ( new ( ...args : any [ ] ) => Node ) ) : NodeDefinition {
32
+ export function getNodeDefinition ( node : Node | ( abstract new ( ...args : any [ ] ) => Node ) ) : NodeDefinition {
33
33
const target = typeof node === "function" ? node : node . constructor ;
34
34
let definition : NodeDefinition ;
35
35
if ( Object . prototype . hasOwnProperty . call ( target , NODE_DEFINITION_SYMBOL ) ) {
@@ -378,12 +378,14 @@ export function ensurePackage(packageName: string): PackageDescription {
378
378
}
379
379
380
380
export function errorOnRedefinition < T > (
381
- name : string , target : { new ( ...args : any [ ] ) : T } , existingTarget : { new ( ...args : any [ ] ) : Node } ) : void {
381
+ name : string , target : abstract new ( ...args : any [ ] ) => T , existingTarget : abstract new ( ...args : any [ ] ) => Node
382
+ ) : void {
382
383
throw new Error ( `${ name } (${ target } ) is already defined as ${ existingTarget } ` ) ;
383
384
}
384
385
385
386
export function warnOnRedefinition < T > (
386
- name : string , target : { new ( ...args : any [ ] ) : T } , existingTarget : { new ( ...args : any [ ] ) : Node } ) : void {
387
+ name : string , target : abstract new ( ...args : any [ ] ) => T , existingTarget : abstract new ( ...args : any [ ] ) => Node
388
+ ) : void {
387
389
console . warn ( `Redefining ${ name } from` , existingTarget , 'to' , target ) ;
388
390
}
389
391
@@ -394,7 +396,7 @@ export function setNodeRedefinitionStrategy(strategy: typeof errorOnRedefinition
394
396
}
395
397
396
398
export function registerNodeDefinition < T extends Node > (
397
- target : { new ( ...args : any [ ] ) : T } , pkg ?: string , name ?: string ) : NodeDefinition {
399
+ target : abstract new ( ...args : any [ ] ) => T , pkg ?: string , name ?: string ) : NodeDefinition {
398
400
let def : NodeDefinition ;
399
401
if ( pkg !== undefined ) {
400
402
if ( ! name ) {
@@ -484,7 +486,7 @@ export function registerNodeReference<T extends Node & PossiblyNamed>(
484
486
//------------//
485
487
486
488
export function ASTNode < T extends Node > ( pkg : string , name : string ) {
487
- return function ( target : new ( ...args : any [ ] ) => T ) : void {
489
+ return function ( target : abstract new ( ...args : any [ ] ) => T ) : void {
488
490
registerNodeDefinition ( target , pkg , name ) ;
489
491
} ;
490
492
}
0 commit comments