summaryrefslogtreecommitdiff
path: root/node_modules/babel-plugin-transform-property-literals
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-property-literals
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/babel-plugin-transform-property-literals')
-rw-r--r--node_modules/babel-plugin-transform-property-literals/README.md65
-rw-r--r--node_modules/babel-plugin-transform-property-literals/lib/escape-string-literal.js80
-rw-r--r--node_modules/babel-plugin-transform-property-literals/lib/index.js30
-rw-r--r--node_modules/babel-plugin-transform-property-literals/lib/property-name.js50
-rw-r--r--node_modules/babel-plugin-transform-property-literals/package.json17
5 files changed, 242 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-property-literals/README.md b/node_modules/babel-plugin-transform-property-literals/README.md
new file mode 100644
index 00000000..5136e102
--- /dev/null
+++ b/node_modules/babel-plugin-transform-property-literals/README.md
@@ -0,0 +1,65 @@
+# babel-plugin-transform-property-literals
+
+This plugin allows Babel to transform valid identifier property key literals into identifiers.
+
+## Example
+
+**In**
+
+```javascript
+var foo = {
+ // changed
+ "bar": function () {},
+ "1": function () {},
+
+ // not changed
+ "default": 1,
+ [a]: 2,
+ foo: 1
+};
+```
+
+**Out**
+
+```javascript
+var foo = {
+ bar: function () {},
+ 1: function () {},
+
+ "default": 1,
+ [a]: 2,
+ foo: 1
+};
+```
+
+## Installation
+
+```sh
+npm install babel-plugin-transform-property-literals --save-dev
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-property-literals"]
+}
+```
+
+### Via CLI
+
+```sh
+babel --plugins transform-property-literals script.js
+```
+
+### Via Node API
+
+```javascript
+require("@babel/core").transform("code", {
+ plugins: ["transform-property-literals"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-property-literals/lib/escape-string-literal.js b/node_modules/babel-plugin-transform-property-literals/lib/escape-string-literal.js
new file mode 100644
index 00000000..49881711
--- /dev/null
+++ b/node_modules/babel-plugin-transform-property-literals/lib/escape-string-literal.js
@@ -0,0 +1,80 @@
+"use strict";
+/**
+ * Original Source:
+ * https://github.com/shapesecurity/shift-codegen-js/blob/0d09bd8a/src/coderep.js#L122
+ *
+ * The following function is an exact copy of the original implementation
+ *
+ * LICENSE
+
+Copyright 2014 Shape Security, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+ */
+
+module.exports = function escapeStringLiteral(stringValue) {
+ let result = "";
+ let nSingle = 0,
+ nDouble = 0;
+
+ for (let i = 0, l = stringValue.length; i < l; ++i) {
+ let ch = stringValue[i];
+
+ if (ch === '"') {
+ ++nDouble;
+ } else if (ch === "'") {
+ ++nSingle;
+ }
+ }
+
+ let delim = nDouble > nSingle ? "'" : '"';
+ result += delim;
+
+ for (let i = 0; i < stringValue.length; i++) {
+ let ch = stringValue.charAt(i);
+
+ switch (ch) {
+ case delim:
+ result += "\\" + delim;
+ break;
+
+ case "\n":
+ result += "\\n";
+ break;
+
+ case "\r":
+ result += "\\r";
+ break;
+
+ case "\\":
+ result += "\\\\";
+ break;
+
+ case "\u2028":
+ result += "\\u2028";
+ break;
+
+ case "\u2029":
+ result += "\\u2029";
+ break;
+
+ default:
+ result += ch;
+ break;
+ }
+ }
+
+ result += delim;
+ return result;
+}; \ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-property-literals/lib/index.js b/node_modules/babel-plugin-transform-property-literals/lib/index.js
new file mode 100644
index 00000000..964f9096
--- /dev/null
+++ b/node_modules/babel-plugin-transform-property-literals/lib/index.js
@@ -0,0 +1,30 @@
+"use strict";
+
+const _require = require("./property-name"),
+ reduceStaticPropertyNameES5 = _require.reduceStaticPropertyNameES5;
+
+module.exports = function ({
+ types: t
+}) {
+ return {
+ name: "transform-property-literals",
+ visitor: {
+ // { 'foo': 'bar' } -> { foo: 'bar' }
+ ObjectProperty: {
+ exit(path) {
+ const key = path.get("key");
+
+ if (!key.isStringLiteral()) {
+ return;
+ }
+
+ const newNode = t.clone(path.node);
+ newNode.key = reduceStaticPropertyNameES5(t, key.node);
+ newNode.computed = false;
+ path.replaceWith(newNode);
+ }
+
+ }
+ }
+ };
+}; \ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-property-literals/lib/property-name.js b/node_modules/babel-plugin-transform-property-literals/lib/property-name.js
new file mode 100644
index 00000000..794e4dc1
--- /dev/null
+++ b/node_modules/babel-plugin-transform-property-literals/lib/property-name.js
@@ -0,0 +1,50 @@
+"use strict";
+
+const _require = require("esutils"),
+ keyword = _require.keyword;
+
+const escapeStringLiteral = require("./escape-string-literal");
+
+module.exports = {
+ reduceStaticPropertyNameES5
+};
+/**
+ *
+ * Original Source:
+ * https://github.com/shapesecurity/shift-codegen-js/blob/0d09bd8a/src/minimal-codegen.js#L635
+ *
+ * This implementation modifies the original source in the following ways
+ * + Check for ES5 Identifier name instead of ES6 Identifier name
+ * + Use Babel-Types & Babel's AST instead of ShiftAST
+ *
+ * LICENSE
+
+Copyright 2014 Shape Security, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+ */
+
+function reduceStaticPropertyNameES5(t, node) {
+ if (keyword.isIdentifierNameES5(node.value)) {
+ return t.Identifier(node.value);
+ }
+
+ let n = parseFloat(node.value);
+
+ if (n >= 0 && n.toString() === node.value) {
+ return t.NumericLiteral(n);
+ }
+
+ return t.Identifier(escapeStringLiteral(node.value));
+} \ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-property-literals/package.json b/node_modules/babel-plugin-transform-property-literals/package.json
new file mode 100644
index 00000000..a1de52dd
--- /dev/null
+++ b/node_modules/babel-plugin-transform-property-literals/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "babel-plugin-transform-property-literals",
+ "version": "6.9.4",
+ "description": "Turn valid property key literals to plain identifiers",
+ "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-property-literals",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ }
+}