Files
overlookmotel 1f9c115632 test(estree/tokens): add tests for tokens via raw transfer (#19885)
Implement the beginnings of support for tokens in `napi/parser`.

This PR only adds support for tokens via raw transfer, and behind an undocumented `experimentalTokens` option.

Add tests checking that tokens received on JS side via raw transfer match snapshots for all Test262, AcornJSX, and TypeScript test cases. They do!

The tests are the main purpose of this PR, making sure it works before we switch over to tokens via raw transfer in Oxlint.

We can add full tokens support to `napi/parser` (including via JSON transfer) later on.
2026-03-01 20:02:49 +00:00

35 lines
1.0 KiB
TypeScript

/*
* Re-export `parse` and `parseSync` functions with type definitions patched
* to expose hidden `experimentalRawTransfer`, `experimentalLazy`, and `experimentalParent` options.
*/
import * as parser from "../src-js/index.js";
import type { ParserOptions as OriginalParserOptions } from "../src-js/index.js";
export type * from "../src-js/index.js";
interface ExperimentalParserOptions {
experimentalRawTransfer?: boolean;
experimentalParent?: boolean;
experimentalTokens?: boolean;
experimentalLazy?: boolean;
}
export type ParserOptions = OriginalParserOptions & ExperimentalParserOptions;
type OverrideOptions<F extends (...args: any[]) => any> = F extends (
filename: infer A,
sourceText: infer B,
options?: infer C,
) => infer R
? (filename: A, sourceText: B, options?: C & ExperimentalParserOptions) => R
: never;
interface ParseMethods {
parse: OverrideOptions<typeof parser.parse>;
parseSync: OverrideOptions<typeof parser.parseSync>;
}
export const { parse, parseSync }: ParseMethods = parser;