diff options
Diffstat (limited to 'node_modules/babel-plugin-transform-es2015-duplicate-keys')
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" +} |