Open ariya opened 7 years ago
Are ES Modules going to be a part of this release?
@ariya Any progress on this? Seems to be soon 2 years behind schedule. In the docs it is stated that Esprima should be updated every year.
@ariya Hi, anything I can do to help 5.0 get to the finish line? I'm knee deep in a project depending rather heavily on it, with zero desire to switch, so I'm rather motivated...
OK, this is awkward, but it turns out that moving to acorn was straightforward. Obviously I have just started using acorn, but so far it seems to cover my use case equally well, with the addition of support for newer syntax. Still interested in understanding this ecosystem and learning which use cases might still be stronger in esprima.
Acorn is written in Javascript though, whereas Esprima seems to have upgraded to Typescript since V4, so I'd really like to use Esprima if possible.
Esprima seems to have upgraded to Typescript since V4
Actually I was wrong on two counts:
V4 already uses Typescript but unfortunately they don't generate and ship type definitions (.d.ts
files), even though it's really easy - just add --declaration
to the tsc
command and then move all the .d.ts
files into dist
(and I guess add them to package.json:files
.
Although it technically is written in Typescript, they unfortunately haven't enabled the noImplicitAny
option so loads of the code is like this:
const program = isModule ? parser.parseModule() : parser.parseScript();
const ast = program as any;
if (collectComment && commentHandler) {
ast.comments = commentHandler.comments;
}
And the main generated types are kind of useless:
export declare function parse(code: string, options: any, delegate: any): any;
export declare function parseModule(code: string, options: any, delegate: any): any;
export declare function parseScript(code: string, options: any, delegate: any): any;
export declare function tokenize(code: string, options: any, delegate: any): any;
I made a task to fix that: #2066
(Only placeholder for now. More TBD)
What goes into this release? New ES2018 syntax support:
Release workflow: