summaryrefslogtreecommitdiffstats
path: root/node_modules/babel-plugin-transform-es2015-duplicate-keys
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/babel-plugin-transform-es2015-duplicate-keys
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/babel-plugin-transform-es2015-duplicate-keys')
-rw-r--r--node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore3
-rw-r--r--node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md61
-rw-r--r--node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js88
-rw-r--r--node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json46
4 files changed, 198 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore b/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore
new file mode 100644
index 0000000..246c4aa
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md b/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md
new file mode 100644
index 0000000..aa502cc
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md
@@ -0,0 +1,61 @@
+# babel-plugin-transform-es2015-duplicate-keys
+
+> Compile objects with duplicate keys to valid strict ES5.
+
+This plugin actually converts duplicate keys in objects to be computed properties, which then must be handled by the [transform-es2015-computed-properties](http://babeljs.io/docs/plugins/transform-es2015-computed-properties) plugin. The final result won't contain any object literals with duplicate keys.
+
+## Example
+
+**In**
+
+```javascript
+var x = { a: 5, a: 6 };
+var y = {
+ get a() {},
+ set a(x) {},
+ a: 3
+};
+```
+
+**Out**
+
+```javascript
+var x = { a: 5, ["a"]: 6 };
+var y = {
+ get a() {},
+ set a(x) {},
+ ["a"]: 3
+};
+```
+
+## Installation
+
+```sh
+npm install --save-dev babel-plugin-transform-es2015-duplicate-keys
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-duplicate-keys"]
+}
+```
+
+### Via CLI
+
+```sh
+babel --plugins transform-es2015-duplicate-keys script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-duplicate-keys"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js b/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js
new file mode 100644
index 0000000..77fcd43
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js
@@ -0,0 +1,88 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _getIterator2 = require("babel-runtime/core-js/get-iterator");
+
+var _getIterator3 = _interopRequireDefault(_getIterator2);
+
+var _create = require("babel-runtime/core-js/object/create");
+
+var _create2 = _interopRequireDefault(_create);
+
+exports.default = function () {
+ return {
+ visitor: {
+ ObjectExpression: function ObjectExpression(path) {
+ var node = path.node;
+
+ var plainProps = node.properties.filter(function (prop) {
+ return !t.isSpreadProperty(prop) && !prop.computed;
+ });
+
+ var alreadySeenData = (0, _create2.default)(null);
+ var alreadySeenGetters = (0, _create2.default)(null);
+ var alreadySeenSetters = (0, _create2.default)(null);
+
+ for (var _iterator = plainProps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var prop = _ref;
+
+ var name = getName(prop.key);
+ var isDuplicate = false;
+ switch (prop.kind) {
+ case "get":
+ if (alreadySeenData[name] || alreadySeenGetters[name]) {
+ isDuplicate = true;
+ }
+ alreadySeenGetters[name] = true;
+ break;
+ case "set":
+ if (alreadySeenData[name] || alreadySeenSetters[name]) {
+ isDuplicate = true;
+ }
+ alreadySeenSetters[name] = true;
+ break;
+ default:
+ if (alreadySeenData[name] || alreadySeenGetters[name] || alreadySeenSetters[name]) {
+ isDuplicate = true;
+ }
+ alreadySeenData[name] = true;
+ }
+
+ if (isDuplicate) {
+ prop.computed = true;
+ prop.key = t.stringLiteral(name);
+ }
+ }
+ }
+ }
+ };
+};
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function getName(key) {
+ if (t.isIdentifier(key)) {
+ return key.name;
+ }
+ return key.value.toString();
+}
+
+module.exports = exports["default"]; \ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json b/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json
new file mode 100644
index 0000000..3518504
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json
@@ -0,0 +1,46 @@
+{
+ "_from": "babel-plugin-transform-es2015-duplicate-keys@^6.24.1",
+ "_id": "babel-plugin-transform-es2015-duplicate-keys@6.24.1",
+ "_inBundle": false,
+ "_integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "_location": "/babel-plugin-transform-es2015-duplicate-keys",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "babel-plugin-transform-es2015-duplicate-keys@^6.24.1",
+ "name": "babel-plugin-transform-es2015-duplicate-keys",
+ "escapedName": "babel-plugin-transform-es2015-duplicate-keys",
+ "rawSpec": "^6.24.1",
+ "saveSpec": null,
+ "fetchSpec": "^6.24.1"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "_shasum": "73eb3d310ca969e3ef9ec91c53741a6f1576423e",
+ "_spec": "babel-plugin-transform-es2015-duplicate-keys@^6.24.1",
+ "_where": "/home/pruss/Dev/3-minute-website/node_modules/babel-preset-es2015",
+ "bundleDependencies": false,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ },
+ "deprecated": false,
+ "description": "Compile objects with duplicate keys to valid strict ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.24.1"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "name": "babel-plugin-transform-es2015-duplicate-keys",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-duplicate-keys"
+ },
+ "version": "6.24.1"
+}