Refactor syntax transform for packages (#18275)
This commit is contained in:
1 parent
825333221f
commit
7521852351
3 files changed
+60
-61
No files matched your search
@@ -1,4 +1,4 @@
|
||||
const OPTIONAL_OBJECT = 0x01;
|
||||
const OPTIONAL_OBJECT = 0b01;
|
||||
|
||||
const createMethodShim =
|
||||
(methodName, getImplementation) =>
|
||||
|
||||
@@ -4,46 +4,55 @@ import { parse } from "@babel/parser";
|
||||
import { traverseFast as traverse } from "@babel/types";
|
||||
import { outdent } from "outdent";
|
||||
import { PROJECT_ROOT, SOURCE_DIR } from "../../utils/index.js";
|
||||
import allTransforms from "./transforms/index.js";
|
||||
import * as transforms from "./transforms/index.js";
|
||||
|
||||
/* Doesn't work for dependencies */
|
||||
const packageTransforms = new Map([
|
||||
/* spell-checker: disable */
|
||||
[
|
||||
transforms["method-replace-all"],
|
||||
[
|
||||
"@prettier/cli",
|
||||
"@typescript-eslint/typescript-estree",
|
||||
"camelcase",
|
||||
"fast-ignore",
|
||||
"fast-string-truncated-width",
|
||||
"hashery",
|
||||
"hermes-parser",
|
||||
"jest-docblock",
|
||||
"kasi",
|
||||
"meriyah",
|
||||
],
|
||||
],
|
||||
[
|
||||
transforms["method-at"],
|
||||
["@glimmer/syntax", "angular-estree-parser", "espree"],
|
||||
],
|
||||
[transforms["object-has-own"], ["@babel/parser", "meriyah"]],
|
||||
[transforms["string-raw"], ["camelcase"]],
|
||||
/* spell-checker: enable */
|
||||
]);
|
||||
|
||||
function shouldTransform(file, buildOptions) {
|
||||
const allowedDirectories = buildOptions.reuseDocModule
|
||||
? [SOURCE_DIR]
|
||||
: [
|
||||
SOURCE_DIR,
|
||||
...[
|
||||
/* spell-checker: disable */
|
||||
"camelcase",
|
||||
"angular-estree-parser",
|
||||
"jest-docblock",
|
||||
"espree",
|
||||
"@babel/parser",
|
||||
"@typescript-eslint/typescript-estree",
|
||||
"meriyah",
|
||||
"@glimmer",
|
||||
"@prettier/cli",
|
||||
"hermes-parser",
|
||||
"kasi",
|
||||
"fast-string-truncated-width",
|
||||
"fast-ignore",
|
||||
"hashery",
|
||||
/* spell-checker: enable */
|
||||
].map((directory) =>
|
||||
path.join(PROJECT_ROOT, `node_modules/${directory}/`),
|
||||
),
|
||||
];
|
||||
const allTransforms = Object.values(transforms);
|
||||
const isPackageFile = (file, packageName) =>
|
||||
file.startsWith(path.join(PROJECT_ROOT, `node_modules/${packageName}/`));
|
||||
|
||||
return allowedDirectories.some((directory) => file.startsWith(directory));
|
||||
function getTransforms(original, file) {
|
||||
if (file.startsWith(SOURCE_DIR)) {
|
||||
return allTransforms;
|
||||
}
|
||||
|
||||
const transforms = [];
|
||||
for (const [transform, packageNames] of packageTransforms) {
|
||||
if (packageNames.some((packageName) => isPackageFile(file, packageName))) {
|
||||
transforms.push(transform);
|
||||
}
|
||||
}
|
||||
|
||||
return transforms;
|
||||
}
|
||||
|
||||
function transform(original, file, buildOptions) {
|
||||
if (!shouldTransform(file, buildOptions)) {
|
||||
return original;
|
||||
}
|
||||
|
||||
const transforms = allTransforms.filter(
|
||||
const transforms = getTransforms(original, file, buildOptions).filter(
|
||||
(transform) => !transform.shouldSkip(original, file, buildOptions),
|
||||
);
|
||||
|
||||
|
||||
@@ -1,26 +1,16 @@
|
||||
import transformDocModuleImports from "./transform-doc-module-imports.js";
|
||||
import transformMethodAt from "./transform-method-at.js";
|
||||
import transformMethodFindLast from "./transform-method-find-last.js";
|
||||
import transformMethodFindLastIndex from "./transform-method-find-last-index.js";
|
||||
import transformMethodReplaceAll from "./transform-method-replace-all.js";
|
||||
import transformMethodToReversed from "./transform-method-to-reversed.js";
|
||||
import transformObjectHasOwnCall from "./transform-object-has-own.js";
|
||||
import transformStringRaw from "./transform-string-raw.js";
|
||||
|
||||
export default [
|
||||
// Node.js 18.0.0
|
||||
transformMethodFindLast,
|
||||
transformMethodFindLastIndex,
|
||||
// Node.js 16.9.0
|
||||
transformObjectHasOwnCall,
|
||||
// Node.js 16.6.0, and for performance
|
||||
transformMethodAt,
|
||||
// Node.js 15.0.0
|
||||
transformMethodReplaceAll,
|
||||
// Node.js 20
|
||||
transformMethodToReversed,
|
||||
// For performance
|
||||
transformStringRaw,
|
||||
// Replace imports with public doc module if possible
|
||||
transformDocModuleImports,
|
||||
];
|
||||
// Replace imports with public doc module if possible
|
||||
export { default as "doc-module-imports" } from "./transform-doc-module-imports.js";
|
||||
// Node.js 16.6.0, and for performance in Node.js 18
|
||||
export { default as "method-at" } from "./transform-method-at.js";
|
||||
// Node.js 18.0.0
|
||||
export { default as "method-find-last" } from "./transform-method-find-last.js";
|
||||
// Node.js 18.0.0
|
||||
export { default as "method-find-last-index" } from "./transform-method-find-last-index.js";
|
||||
// Node.js 15.0.0
|
||||
export { default as "method-replace-all" } from "./transform-method-replace-all.js";
|
||||
// Node.js 20
|
||||
export { default as "method-to-reversed" } from "./transform-method-to-reversed.js";
|
||||
// Node.js 16.9.0
|
||||
export { default as "object-has-own" } from "./transform-object-has-own.js";
|
||||
// For performance
|
||||
export { default as "string-raw" } from "./transform-string-raw.js";
|
||||
Reference in new issue
Block a user