Files
test-repo/scripts/build/transform/transforms/transform-object-has-own.js
T

34 lines
1014 B
JavaScript

import { createMemberExpression, isIdentifier } from "./utilities.js";
/*
`Object.hasOwn(foo, "bar")` -> `Object.prototype.hasOwnProperty.call(foo, "bar")`
*/
const transformObjectHasOwnCall = {
shouldSkip: (text) => !text.includes("Object.hasOwn("),
/**
* @param {import("@babel/types").Node} node
* @returns {boolean}
*/
test: (node) =>
node.type === "CallExpression" &&
!node.optional &&
node.arguments.length === 2 &&
node.arguments.every(({ type }) => type !== "SpreadElement") &&
node.callee.type === "MemberExpression" &&
!node.callee.optional &&
!node.callee.computed &&
isIdentifier(node.callee.object, "Object") &&
isIdentifier(node.callee.property, "hasOwn"),
/**
* @param {import("@babel/types").CallExpression} node
* @returns {import("@babel/types").CallExpression}
*/
transform: (node) => ({
...node,
callee: createMemberExpression("Object.prototype.hasOwnProperty.call"),
}),
};
export default transformObjectHasOwnCall;