summaryrefslogtreecommitdiff
path: root/node_modules/babel-plugin-minify-replace
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babel-plugin-minify-replace')
-rw-r--r--node_modules/babel-plugin-minify-replace/LICENSE22
-rw-r--r--node_modules/babel-plugin-minify-replace/README.md91
-rw-r--r--node_modules/babel-plugin-minify-replace/lib/index.js100
-rw-r--r--node_modules/babel-plugin-minify-replace/package.json15
4 files changed, 228 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-minify-replace/LICENSE b/node_modules/babel-plugin-minify-replace/LICENSE
new file mode 100644
index 00000000..f9f0a7f3
--- /dev/null
+++ b/node_modules/babel-plugin-minify-replace/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2015-2016 Amjad Masad <amjad.masad@gmail.com>
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/babel-plugin-minify-replace/README.md b/node_modules/babel-plugin-minify-replace/README.md
new file mode 100644
index 00000000..1f7cfbbf
--- /dev/null
+++ b/node_modules/babel-plugin-minify-replace/README.md
@@ -0,0 +1,91 @@
+# babel-plugin-minify-replace
+
+Configurable "search and replace" plugin. Replaces matching nodes in the tree with a given replacement node. For example you can replace `process.NODE_ENV` with `"production"`.
+
+## Example
+
+**Options**
+
+```javascript
+[
+ {
+ identifierName: "__DEV__",
+ replacement: {
+ type: "numericLiteral",
+ value: 0,
+ },
+ },
+]
+```
+
+**In**
+
+```javascript
+if (!__DEV__) {
+ foo();
+}
+if (a.__DEV__) {
+ foo();
+}
+```
+
+**Out**
+
+```javascript
+if (!0) {
+ foo();
+}
+if (a.__DEV__) {
+ foo();
+}
+```
+
+## Installation
+
+```sh
+npm install babel-plugin-minify-replace --save-dev
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+// without options
+{
+ "plugins": ["minify-replace"]
+}
+```
+
+```json
+// with options
+{
+ "plugins": [
+ ["minify-replace", {
+ "replacements": [{
+ "identifierName": "__DEV__",
+ "replacement": {
+ "type": "booleanLiteral",
+ "value": true
+ }
+ }]
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+babel --plugins minify-replace script.js
+```
+
+### Via Node API
+
+```javascript
+require("@babel/core").transform("code", {
+ plugins: ["minify-replace"]
+});
+```
diff --git a/node_modules/babel-plugin-minify-replace/lib/index.js b/node_modules/babel-plugin-minify-replace/lib/index.js
new file mode 100644
index 00000000..afc88a25
--- /dev/null
+++ b/node_modules/babel-plugin-minify-replace/lib/index.js
@@ -0,0 +1,100 @@
+"use strict";
+
+module.exports = ({
+ types: t
+}) => {
+ const NO_MEMBER = Symbol("no member");
+ const replaceVisitor = {
+ ReferencedIdentifier(path) {
+ const _path = path,
+ node = _path.node;
+ const optionsMap = this.replacements[node.name];
+
+ if (!optionsMap) {
+ return;
+ }
+
+ let options;
+
+ if (path.parentPath.isMemberExpression({
+ object: node
+ })) {
+ const property = path.parent.property;
+ const key = t.isIdentifier(property) && property.name;
+
+ if (typeof key === "string") {
+ options = optionsMap[key];
+ path = path.parentPath;
+ }
+ }
+
+ if (!options) {
+ options = optionsMap[NO_MEMBER];
+ }
+
+ if (!options) {
+ return;
+ }
+
+ path.replaceWith(options.node);
+ }
+
+ };
+ return {
+ name: "minify-replace",
+ visitor: {
+ Program(path) {
+ /**
+ Replacements is an array of objects like this:
+ {
+ identifierName: 'console',
+ member: 'log', // optional
+ replacement: {
+ type: 'identifier',
+ value: '',
+ },
+ }
+ **/
+ if (!this.opts.replacements) {
+ // No replacements. Bail.
+ return;
+ }
+
+ const map = Object.create(null);
+ this.opts.replacements.forEach(({
+ identifierName,
+ replacement,
+ member
+ }) => {
+ if (path.scope.globals[identifierName]) {
+ // Convert to a node, we only allow identifiers and literals as replacements
+ if (!replacement.type.match(/literal|identifier/i)) {
+ throw new Error("Only literals and identifier are supported as replacements");
+ }
+
+ const node = t[replacement.type](replacement.value);
+ const options = {
+ identifierName,
+ node,
+ member
+ };
+
+ if (!map[identifierName]) {
+ map[identifierName] = {};
+ }
+
+ if (member && map[identifierName][member]) {
+ throw new Error(`Replacement collision ${identifierName}.${member}`);
+ }
+
+ map[identifierName][member || NO_MEMBER] = options;
+ }
+ });
+ path.traverse(replaceVisitor, {
+ replacements: map
+ });
+ }
+
+ }
+ };
+}; \ No newline at end of file
diff --git a/node_modules/babel-plugin-minify-replace/package.json b/node_modules/babel-plugin-minify-replace/package.json
new file mode 100644
index 00000000..6b02ebc4
--- /dev/null
+++ b/node_modules/babel-plugin-minify-replace/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "babel-plugin-minify-replace",
+ "version": "0.5.0",
+ "description": "",
+ "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-minify-replace",
+ "gitHead": "4de390008da4a486b37819109d2021a0957ad405"
+}