Merge branch 'main' into next

This commit is contained in:
Sosuke Suzuki committed 2024-06-18 07:33:15 +09:00
commit 1b981ad6e9
4089 files changed
+56849 -46553

No files matched your search

+132 -127
View File
@@ -3,12 +3,14 @@ import path from "node:path";
import url from "node:url";
import createEsmUtils from "esm-utils";
import { outdent } from "outdent";
import { copyFile, DIST_DIR, PROJECT_ROOT } from "../utils/index.js";
import buildJavascriptModule from "./build-javascript-module.js";
import buildLicense from "./build-license.js";
import buildPackageJson from "./build-package-json.js";
import buildTypes from "./build-types.js";
import esmifyTypescriptEslint from "./esmify-typescript-eslint.js";
import modifyTypescriptModule from "./modify-typescript-module.js";
import { getPackageFile } from "./utils.js";
@@ -69,18 +71,6 @@ function getTypesFileConfig({ input: jsFileInput, outputBaseName, isPlugin }) {
* @property {boolean?} addDefaultExport - add default export to bundle
*/
/*
`diff` use deprecated folder mapping "./" in the "exports" field,
so we can't `import("diff/lib/diff/array.js")` directly.
To reduce the bundle size, replace the entry with smaller files.
We can switch to deep import once https://github.com/kpdecker/jsdiff/pull/351 get merged
*/
const replaceDiffPackageEntry = (file) => ({
module: getPackageFile("diff/lib/index.mjs"),
path: getPackageFile(`diff/${file}`),
});
const extensions = {
esm: ".mjs",
umd: ".js",
@@ -136,64 +126,6 @@ const pluginFiles = [
"@typescript-eslint/typescript-estree/dist/parser.js",
),
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parser.js",
),
process(text) {
text = text
.replace('require("./create-program/createDefaultProgram")', "{}")
.replace('require("./create-program/createIsolatedProgram")', "{}")
.replace('require("./create-program/createProjectProgram")', "{}")
.replace('require("./create-program/useProvidedPrograms")', "{}");
return text;
},
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parseSettings/createParseSettings.js",
),
process(text) {
return text
.replace('require("./resolveProjectList")', "{}")
.replace(
'require("../create-program/shared")',
"{ensureAbsolutePath: path => path}",
)
.replace(
"process.cwd()",
JSON.stringify("/prettier-security-dirname-placeholder"),
)
.replace(
"parseSettings.projects = ",
"parseSettings.projects = [] || ",
);
},
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parseSettings/inferSingleRun.js",
),
text: "exports.inferSingleRun = () => false;",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parseSettings/ExpiringCache.js",
),
text: "exports.ExpiringCache = class {};",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parseSettings/getProjectConfigFiles.js",
),
text: "exports.resolveProjectList = () => [];",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js",
),
text: "exports.warnAboutTSVersion = () => {};",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/create-program/getScriptKind.js",
@@ -206,54 +138,115 @@ const pluginFiles = [
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/version-check.js",
"@typescript-eslint/typescript-estree/dist/parseSettings/createParseSettings.js",
),
text: "exports.typescriptVersionIsAtLeast = new Proxy({}, {get: () => true})",
process(text) {
return text
.replace(
"process.cwd()",
JSON.stringify("/prettier-security-dirname-placeholder"),
)
.replace(
"parseSettings.projects = ",
"parseSettings.projects = true ? new Map() : ",
);
},
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/jsx/xhtml-entities.js",
),
text: "exports.xhtmlEntities = {};",
module: "*",
process: esmifyTypescriptEslint,
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/create-program/createProjectService.js",
),
text: "",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js",
),
text: "",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/create-program/describeFilePath.js",
),
text: "",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js",
),
text: "",
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/useProgramFromProjectService.js",
),
text: "",
module: "*",
process(text, file) {
if (/require\(["'](?:typescript|ts-api-utils)["']\)/.test(text)) {
throw new Error(`Unexpected \`require("typescript")\` in ${file}.`);
}
return text;
},
},
...[
{
file: "@typescript-eslint/typescript-estree/dist/parseSettings/inferSingleRun.js",
text: "export const inferSingleRun = () => false;",
},
{
file: "@typescript-eslint/typescript-estree/dist/parseSettings/ExpiringCache.js",
text: outdent`
export const DEFAULT_TSCONFIG_CACHE_DURATION_SECONDS = undefined;
export const ExpiringCache = class {};
`,
},
{
file: "@typescript-eslint/typescript-estree/dist/parseSettings/getProjectConfigFiles.js",
text: "export const resolveProjectList = () => [];",
},
{
file: "@typescript-eslint/typescript-estree/dist/parseSettings/resolveProjectList.js",
text: "export const resolveProjectList = () => [];",
},
{
file: "@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js",
text: "export const warnAboutTSVersion = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/version-check.js",
text: "export const typescriptVersionIsAtLeast = new Proxy({}, {get: () => true})",
},
{
file: "@typescript-eslint/typescript-estree/dist/jsx/xhtml-entities.js",
text: "export const xhtmlEntities = {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/simple-traverse.js",
text: "export const simpleTraverse = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/create-program/shared.js",
text: "export const ensureAbsolutePath = path => path;",
},
{
file: "@typescript-eslint/typescript-estree/dist/create-program/createIsolatedProgram.js",
text: "export const createIsolatedProgram = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/create-program/useProvidedPrograms.js",
text: outdent`
export const useProvidedPrograms = () => {};
export const createProgramFromConfigFile = () => {};
`,
},
{
file: "@typescript-eslint/typescript-estree/dist/create-program/createProjectService.js",
text: "export const createProjectService = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js",
text: "export const getWatchProgramsForProjects = () => {};",
},
"@typescript-eslint/typescript-estree/dist/create-program/describeFilePath.js",
{
file: "@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js",
text: "export const createProjectProgram = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/useProgramFromProjectService.js",
text: "export const useProgramFromProjectService = () => {};",
},
{
file: "@typescript-eslint/typescript-estree/dist/semantic-or-syntactic-errors.js",
text: "export const getFirstSemanticOrSyntacticError = () => {};",
},
].map((options) => {
options = typeof options === "string" ? { file: options } : options;
return {
module: getPackageFile(options.file),
text: options.text || "export {};",
};
}),
// Only needed if `range`/`loc` in parse options is `false`
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/ast-converter.js",
),
process: (text) => text.replace('require("./simple-traverse")', "{}"),
},
{
module: getPackageFile("debug/src/browser.js"),
path: path.join(dirname, "./shims/debug.js"),
@@ -268,12 +261,35 @@ const pluginFiles = [
},
{
module: getPackageFile(
"@typescript-eslint/typescript-estree/dist/convert-comments.js",
"@typescript-eslint/types/dist/generated/ast-spec.js",
),
text: outdent`
const TYPE_STORE = new Proxy({}, {get: (_, type) => type});
export { TYPE_STORE as AST_TOKEN_TYPES, TYPE_STORE as AST_NODE_TYPES};
`,
},
// Use named import from `typescript`
{
module: getPackageFile("ts-api-utils/lib/index.js"),
process(text) {
text = text.replace(
'const tsutils = __importStar(require("ts-api-utils"));',
'import * as tsutils from "ts-api-utils";',
const typescriptVariables = [
...text.matchAll(
/import (?<variable>\w+) from ["']typescript["']/g,
),
].map((match) => match.groups.variable);
// Remove `'property' in typescript` check
text = text.replaceAll(
new RegExp(
`".*?" in (?:${typescriptVariables.join("|")})(?=\\W)`,
"g",
),
"true",
);
text = text.replaceAll(
/(?<=import )(?=\w+ from ["']typescript["'])/g,
"* as ",
);
return text;
},
@@ -353,7 +369,7 @@ const pluginFiles = [
...[
"expression_parser/lexer.mjs",
"expression_parser/parser.mjs",
"ml_parser/interpolation_config.mjs",
"ml_parser/defaults.mjs",
].map((file) => ({
module: getPackageFile(`@angular/compiler/esm2022/src/${file}`),
process: (text) =>
@@ -506,18 +522,9 @@ const nonPluginUniversalFiles = [
path: path.join(dirname, "./shims/babel-highlight.js"),
},
{
module: require.resolve("chalk", {
paths: [require.resolve("@babel/code-frame")],
}),
module: require.resolve("chalk"),
path: path.join(dirname, "./shims/chalk.cjs"),
},
{
module: require.resolve("chalk", {
paths: [require.resolve("vnopts")],
}),
path: path.join(dirname, "./shims/chalk.cjs"),
},
replaceDiffPackageEntry("lib/diff/array.js"),
],
},
].map((file) => {
@@ -597,7 +604,6 @@ const nodejsFiles = [
find: "const readBuffer = new Buffer(this.options.readChunk);",
replacement: "const readBuffer = Buffer.alloc(this.options.readChunk);",
},
replaceDiffPackageEntry("lib/diff/array.js"),
// `@babel/code-frame` and `@babel/highlight` use compatible `chalk`, but they installed separately
{
module: require.resolve("chalk", {
@@ -647,7 +653,6 @@ const nodejsFiles = [
input: "src/cli/index.js",
outputBaseName: "internal/cli",
external: ["benchmark"],
replaceModule: [replaceDiffPackageEntry("lib/patch/create.js")],
},
].flatMap((file) => {
let { input, output, outputBaseName, ...buildOptions } = file;