diff --git a/scripts/build/shims/shared.js b/scripts/build/shims/shared.js index 7aaa40ca5..28fee48e6 100644 --- a/scripts/build/shims/shared.js +++ b/scripts/build/shims/shared.js @@ -1,4 +1,4 @@ -const OPTIONAL_OBJECT = 0x01; +const OPTIONAL_OBJECT = 0b01; const createMethodShim = (methodName, getImplementation) => diff --git a/scripts/build/transform/index.js b/scripts/build/transform/index.js index f33b3bde9..d1d51885a 100644 --- a/scripts/build/transform/index.js +++ b/scripts/build/transform/index.js @@ -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), ); diff --git a/scripts/build/transform/transforms/index.js b/scripts/build/transform/transforms/index.js index 4b00a7e87..c12059b57 100644 --- a/scripts/build/transform/transforms/index.js +++ b/scripts/build/transform/transforms/index.js @@ -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";