summaryrefslogtreecommitdiff
path: root/node_modules/babel-plugin-transform-regexp-constructors
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
commitefbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch)
tree2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/babel-plugin-transform-regexp-constructors
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/babel-plugin-transform-regexp-constructors')
-rw-r--r--node_modules/babel-plugin-transform-regexp-constructors/README.md51
-rw-r--r--node_modules/babel-plugin-transform-regexp-constructors/lib/index.js53
-rw-r--r--node_modules/babel-plugin-transform-regexp-constructors/package.json14
3 files changed, 118 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-regexp-constructors/README.md b/node_modules/babel-plugin-transform-regexp-constructors/README.md
new file mode 100644
index 00000000..037522e6
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regexp-constructors/README.md
@@ -0,0 +1,51 @@
+# babel-plugin-transform-regexp-constructors
+
+This changes RegExp constructors into literals if the RegExp arguments are strings.
+
+## Example
+
+**In**
+
+```javascript
+const foo = 'ab+';
+var a = new RegExp(foo+'c', 'i');
+```
+
+**Out**
+
+```javascript
+const foo = 'ab+';
+var a = /ab+c/i;
+```
+
+## Installation
+
+```sh
+npm install babel-plugin-transform-regexp-constructors --save-dev
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-regexp-constructors"]
+}
+```
+
+### Via CLI
+
+```sh
+babel --plugins transform-regexp-constructors script.js
+```
+
+### Via Node API
+
+```javascript
+require("@babel/core").transform("code", {
+ plugins: ["transform-regexp-constructors"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-regexp-constructors/lib/index.js b/node_modules/babel-plugin-transform-regexp-constructors/lib/index.js
new file mode 100644
index 00000000..be79d8df
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regexp-constructors/lib/index.js
@@ -0,0 +1,53 @@
+"use strict";
+
+function createRegExpLiteral(args, prettify, t) {
+ const evaluatedArgs = args.map(a => a.evaluate());
+
+ if (!evaluatedArgs.every(a => a.confident && typeof a.value === "string")) {
+ return;
+ }
+
+ let pattern = evaluatedArgs.length >= 1 && evaluatedArgs[0].value !== "" ? evaluatedArgs[0].value : "(?:)";
+ const flags = evaluatedArgs.length >= 2 ? evaluatedArgs[1].value : "";
+ pattern = new RegExp(pattern).source;
+
+ if (prettify) {
+ pattern = pattern.replace(/\n/g, "\\n").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/[\b]/g, "[\\b]").replace(/\v/g, "\\v").replace(/\f/g, "\\f").replace(/\r/g, "\\r");
+ }
+
+ pattern = pattern.replace(/\0/g, "\\0");
+ return t.regExpLiteral(pattern, flags);
+}
+
+function maybeReplaceWithRegExpLiteral(path, t) {
+ if (!t.isIdentifier(path.node.callee, {
+ name: "RegExp"
+ })) {
+ return;
+ }
+
+ const regExpLiteral = createRegExpLiteral(path.get("arguments"), true, t);
+
+ if (regExpLiteral) {
+ path.replaceWith(regExpLiteral);
+ }
+}
+
+module.exports = function ({
+ types: t
+}) {
+ return {
+ name: "transform-regexp-constructors",
+ visitor: {
+ NewExpression(path) {
+ maybeReplaceWithRegExpLiteral(path, t);
+ },
+
+ CallExpression(path) {
+ // equivalent to `new RegExp()` according to ยง21.2.3
+ maybeReplaceWithRegExpLiteral(path, t);
+ }
+
+ }
+ };
+}; \ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regexp-constructors/package.json b/node_modules/babel-plugin-transform-regexp-constructors/package.json
new file mode 100644
index 00000000..6942db3e
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regexp-constructors/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "babel-plugin-transform-regexp-constructors",
+ "version": "0.4.3",
+ "description": "This changes RegExp constructors into literals if the RegExp arguments are strings.",
+ "keywords": [
+ "babel-plugin"
+ ],
+ "homepage": "https://github.com/babel/minify#readme",
+ "bugs": "https://github.com/babel/minify/issues",
+ "license": "MIT",
+ "author": "shinew",
+ "main": "lib/index.js",
+ "repository": "https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-regexp-constructors"
+}