diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
| commit | efbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch) | |
| tree | 2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/babel-plugin-transform-remove-console | |
| parent | 43acceb75957c880a5ba5a31aae221394a36d5f6 (diff) | |
node fixes, updates
Diffstat (limited to 'node_modules/babel-plugin-transform-remove-console')
3 files changed, 157 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-remove-console/README.md b/node_modules/babel-plugin-transform-remove-console/README.md new file mode 100644 index 00000000..efe5d2be --- /dev/null +++ b/node_modules/babel-plugin-transform-remove-console/README.md @@ -0,0 +1,61 @@ +# babel-plugin-transform-remove-console + +This plugin removes all `console.*` calls. + +## Example + +**In** + +```javascript +console.log("foo"); +console.error("bar"); +``` + +**Out** + +```javascript +``` + +## Installation + +```sh +npm install babel-plugin-transform-remove-console --save-dev +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +// without options +{ + "plugins": ["transform-remove-console"] +} +``` + +```json +// with options +{ + "plugins": [ ["transform-remove-console", { "exclude": [ "error", "warn"] }] ] +} +``` + +### Via CLI + +```sh +babel --plugins transform-remove-console script.js +``` + +### Via Node API + +```javascript +require("@babel/core").transform("code", { + plugins: ["transform-remove-console"] +}); +``` + +## Options + ++ `exclude` - An array of console methods to exclude from removal. diff --git a/node_modules/babel-plugin-transform-remove-console/lib/index.js b/node_modules/babel-plugin-transform-remove-console/lib/index.js new file mode 100644 index 00000000..3d910896 --- /dev/null +++ b/node_modules/babel-plugin-transform-remove-console/lib/index.js @@ -0,0 +1,82 @@ +"use strict"; + +module.exports = function ({ + types: t +}) { + return { + name: "transform-remove-console", + visitor: { + CallExpression(path, state) { + const callee = path.get("callee"); + if (!callee.isMemberExpression()) return; + + if (isIncludedConsole(callee, state.opts.exclude)) { + // console.log() + if (path.parentPath.isExpressionStatement()) { + path.remove(); + } else { + path.replaceWith(createVoid0()); + } + } else if (isIncludedConsoleBind(callee, state.opts.exclude)) { + // console.log.bind() + path.replaceWith(createNoop()); + } + }, + + MemberExpression: { + exit(path, state) { + if (isIncludedConsole(path, state.opts.exclude) && !path.parentPath.isMemberExpression()) { + if (path.parentPath.isAssignmentExpression() && path.parentKey === "left") { + path.parentPath.get("right").replaceWith(createNoop()); + } else { + path.replaceWith(createNoop()); + } + } + } + + } + } + }; + + function isGlobalConsoleId(id) { + const name = "console"; + return id.isIdentifier({ + name + }) && !id.scope.getBinding(name) && id.scope.hasGlobal(name); + } + + function isExcluded(property, excludeArray) { + return excludeArray && excludeArray.some(name => property.isIdentifier({ + name + })); + } + + function isIncludedConsole(memberExpr, excludeArray) { + const object = memberExpr.get("object"); + const property = memberExpr.get("property"); + if (isExcluded(property, excludeArray)) return false; + if (isGlobalConsoleId(object)) return true; + return isGlobalConsoleId(object.get("object")) && (property.isIdentifier({ + name: "call" + }) || property.isIdentifier({ + name: "apply" + })); + } + + function isIncludedConsoleBind(memberExpr, excludeArray) { + const object = memberExpr.get("object"); + if (!object.isMemberExpression()) return false; + if (isExcluded(object.get("property"), excludeArray)) return false; + return isGlobalConsoleId(object.get("object")) && memberExpr.get("property").isIdentifier({ + name: "bind" + }); + } + + function createNoop() { + return t.functionExpression(null, [], t.blockStatement([])); + } + + function createVoid0() { + return t.unaryExpression("void", t.numericLiteral(0)); + } +};
\ No newline at end of file diff --git a/node_modules/babel-plugin-transform-remove-console/package.json b/node_modules/babel-plugin-transform-remove-console/package.json new file mode 100644 index 00000000..ad24d1f5 --- /dev/null +++ b/node_modules/babel-plugin-transform-remove-console/package.json @@ -0,0 +1,14 @@ +{ + "name": "babel-plugin-transform-remove-console", + "version": "6.9.4", + "description": "Remove all console.* calls.", + "keywords": [ + "babel-plugin" + ], + "homepage": "https://github.com/babel/minify#readme", + "bugs": "https://github.com/babel/minify/issues", + "license": "MIT", + "author": "amasad", + "main": "lib/index.js", + "repository": "https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-console" +} |
