Socket
Socket
Sign inDemoInstall

eslint-plugin-import

Package Overview
Dependencies
Maintainers
1
Versions
130
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-import - npm Package Compare versions

Comparing version 1.3.0 to 1.4.0

memo-parser/package.json

19

CHANGELOG.md

@@ -6,3 +6,13 @@ # Change Log

## [Unreleased]
## [1.4.0] - 2016-03-25
### Added
- Resolver plugin interface v2: more explicit response format that more clearly covers the found-but-core-module case, where there is no path.
Still backwards-compatible with the original version of the resolver spec.
- [Resolver documentation](./resolvers/README.md)
### Changed
- using `package.json/files` instead of `.npmignore` for package file inclusion ([#228], thanks [@mathieudutour])
- using `es6-*` ponyfills instead of `babel-runtime`
## [1.3.0] - 2016-03-20
Major perf improvements. Between parsing only once and ignoring gigantic, non-module `node_modules`,

@@ -122,2 +132,3 @@ there is very little added time.

[#228]: https://github.com/benmosher/eslint-plugin-import/pull/228
[#211]: https://github.com/benmosher/eslint-plugin-import/pull/211

@@ -137,3 +148,5 @@ [#157]: https://github.com/benmosher/eslint-plugin-import/pull/157

[Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v1.2.0...HEAD
[Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v1.4.0...HEAD
[1.4.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.3.0...v1.4.0
[1.3.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.1.0...v1.2.0

@@ -152,1 +165,3 @@ [1.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.4...v1.1.0

[0.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.10.1...v0.11.0
[@mathieudutour]: https://github.com/mathieudutour

6

lib/core/declaredScope.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
exports.default = declaredScope;

@@ -18,2 +16,2 @@ function declaredScope(context, name) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvZGVjbGFyZWRTY29wZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztrQkFBd0I7QUFBVCxTQUFTLGFBQVQsQ0FBdUIsT0FBdkIsRUFBZ0MsSUFBaEMsRUFBc0M7QUFDbkQsTUFBSSxhQUFhLFFBQVEsUUFBUixHQUFtQixVQUFuQjtNQUNiLFVBREosQ0FEbUQ7QUFHbkQsT0FBSyxJQUFJLENBQUosRUFBTyxJQUFJLFdBQVcsTUFBWCxFQUFtQixHQUFuQyxFQUF3QztBQUN0QyxRQUFJLFdBQVcsQ0FBWCxFQUFjLFVBQWQsQ0FBeUIsSUFBekIsS0FBa0MsSUFBbEMsRUFBd0M7QUFDMUMsWUFEMEM7S0FBNUM7R0FERjtBQUtBLE1BQUksQ0FBQyxXQUFXLENBQVgsQ0FBRCxFQUFnQixPQUFPLFNBQVAsQ0FBcEI7QUFDQSxTQUFPLFdBQVcsQ0FBWCxFQUFjLFFBQWQsQ0FBdUIsS0FBdkIsQ0FBNkIsSUFBN0IsQ0FUNEM7Q0FBdEMiLCJmaWxlIjoiY29yZS9kZWNsYXJlZFNjb3BlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVjbGFyZWRTY29wZShjb250ZXh0LCBuYW1lKSB7XG4gIGxldCByZWZlcmVuY2VzID0gY29udGV4dC5nZXRTY29wZSgpLnJlZmVyZW5jZXNcbiAgICAsIGlcbiAgZm9yIChpID0gMDsgaSA8IHJlZmVyZW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVmZXJlbmNlc1tpXS5pZGVudGlmaWVyLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGlmICghcmVmZXJlbmNlc1tpXSkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gcmVmZXJlbmNlc1tpXS5yZXNvbHZlZC5zY29wZS50eXBlXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvZGVjbGFyZWRTY29wZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7a0JBQXdCO0FBQVQsU0FBUyxhQUFULENBQXVCLE9BQXZCLEVBQWdDLElBQWhDLEVBQXNDO0FBQ25ELE1BQUksYUFBYSxRQUFRLFFBQVIsR0FBbUIsVUFBbkI7TUFDYixVQURKLENBRG1EO0FBR25ELE9BQUssSUFBSSxDQUFKLEVBQU8sSUFBSSxXQUFXLE1BQVgsRUFBbUIsR0FBbkMsRUFBd0M7QUFDdEMsUUFBSSxXQUFXLENBQVgsRUFBYyxVQUFkLENBQXlCLElBQXpCLEtBQWtDLElBQWxDLEVBQXdDO0FBQzFDLFlBRDBDO0tBQTVDO0dBREY7QUFLQSxNQUFJLENBQUMsV0FBVyxDQUFYLENBQUQsRUFBZ0IsT0FBTyxTQUFQLENBQXBCO0FBQ0EsU0FBTyxXQUFXLENBQVgsRUFBYyxRQUFkLENBQXVCLEtBQXZCLENBQTZCLElBQTdCLENBVDRDO0NBQXRDIiwiZmlsZSI6ImNvcmUvZGVjbGFyZWRTY29wZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlY2xhcmVkU2NvcGUoY29udGV4dCwgbmFtZSkge1xuICBsZXQgcmVmZXJlbmNlcyA9IGNvbnRleHQuZ2V0U2NvcGUoKS5yZWZlcmVuY2VzXG4gICAgLCBpXG4gIGZvciAoaSA9IDA7IGkgPCByZWZlcmVuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlZmVyZW5jZXNbaV0uaWRlbnRpZmllci5uYW1lID09PSBuYW1lKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICBpZiAoIXJlZmVyZW5jZXNbaV0pIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIHJlZmVyZW5jZXNbaV0ucmVzb2x2ZWQuc2NvcGUudHlwZVxufVxuIl19
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _typeof3 = _interopRequireDefault(_typeof2);
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
exports.recursivePatternCapture = recursivePatternCapture;
var _getIterator3 = _interopRequireDefault(_getIterator2);
require('es6-symbol/implement');
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _es6Map = require('es6-map');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _es6Map2 = _interopRequireDefault(_es6Map);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
exports.recursivePatternCapture = recursivePatternCapture;
var _fs = require('fs');

@@ -57,4 +45,6 @@

var exportCache = new _map2.default();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var exportCache = new _es6Map2.default();
/**

@@ -70,364 +60,341 @@ * detect exports without a full parse.

function ExportMap(path) {
(0, _classCallCheck3.default)(this, ExportMap);
_classCallCheck(this, ExportMap);
this.path = path;
this.namespace = new _map2.default();
this.namespace = new _es6Map2.default();
// todo: restructure to key on path, value is resolver + map of names
this.reexports = new _map2.default();
this.dependencies = new _map2.default();
this.reexports = new _es6Map2.default();
this.dependencies = new _es6Map2.default();
this.errors = [];
}
(0, _createClass3.default)(ExportMap, [{
key: 'has',
ExportMap.get = function get(source, context) {
var path = (0, _resolve2.default)(source, context);
if (path == null) return null;
/**
* Note that this does not check explicitly re-exported names for existence
* in the base namespace, but it will expand all `export * from '...'` exports
* if not found in the explicit namespace.
* @param {string} name
* @return {Boolean} true if `name` is exported by this module.
*/
value: function has(name) {
if (this.namespace.has(name)) return true;
if (this.reexports.has(name)) return true;
return ExportMap.for(path, context);
};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
ExportMap.for = function _for(path, context) {
var exportMap = void 0;
try {
for (var _iterator = (0, _getIterator3.default)(this.dependencies.values()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var dep = _step.value;
var cacheKey = (0, _hash.hashObject)((0, _crypto.createHash)('sha256'), {
settings: context.settings,
parserPath: context.parserPath,
parserOptions: context.parserOptions,
path: path
}).digest('hex');
var innerMap = dep();
exportMap = exportCache.get(cacheKey);
// todo: report as unresolved?
if (!innerMap) continue;
// return cached ignore
if (exportMap === null) return null;
if (innerMap.has(name)) return true;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
var stats = fs.statSync(path);
if (exportMap != null) {
// date equality check
if (exportMap.mtime - stats.mtime === 0) {
return exportMap;
}
// future: check content equality?
}
var content = fs.readFileSync(path, { encoding: 'utf8' });
// check for and cache ignore
if ((0, _ignore2.default)(path, context) && !hasExports.test(content)) {
exportCache.set(cacheKey, null);
return null;
}
exportMap = ExportMap.parse(path, content, context);
exportMap.mtime = stats.mtime;
exportCache.set(cacheKey, exportMap);
return exportMap;
};
ExportMap.parse = function parse(path, content, context) {
var m = new ExportMap(path);
try {
var ast = (0, _parse3.default)(content, context);
} catch (err) {
m.errors.push(err);
return m; // can't continue
}
// attempt to collect module doc
ast.comments.some(function (c) {
if (c.type !== 'Block') return false;
try {
var doc = doctrine.parse(c.value, { unwrap: true });
if (doc.tags.some(function (t) {
return t.title === 'module';
})) {
m.doc = doc;
return true;
}
} catch (err) {/* ignore */}
return false;
});
var namespaces = new _es6Map2.default();
function remotePath(node) {
return _resolve2.default.relative(node.source.value, path, context.settings);
}
}, {
key: 'get',
value: function get(name) {
if (this.namespace.has(name)) return this.namespace.get(name);
if (this.reexports.has(name)) {
var _reexports$get = this.reexports.get(name);
function resolveImport(node) {
var rp = remotePath(node);
if (rp == null) return null;
return ExportMap.for(rp, context);
}
var local = _reexports$get.local;
var getImport = _reexports$get.getImport;
var imported = getImport();
if (imported == null) return undefined;
function getNamespace(identifier) {
if (!namespaces.has(identifier.name)) return;
// safeguard against cycles, only if name matches
if (imported.path === this.path && local === name) return undefined;
return function () {
return resolveImport(namespaces.get(identifier.name));
};
}
return imported.get(local);
function addNamespace(object, identifier) {
var nsfn = getNamespace(identifier);
if (nsfn) {
Object.defineProperty(object, 'namespace', { get: nsfn });
}
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
return object;
}
try {
for (var _iterator2 = (0, _getIterator3.default)(this.dependencies.values()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var dep = _step2.value;
ast.body.forEach(function (n) {
var innerMap = dep();
// todo: report as unresolved?
if (!innerMap) continue;
if (n.type === 'ExportDefaultDeclaration') {
var exportMeta = captureDoc(n);
if (n.declaration.type === 'Identifier') {
addNamespace(exportMeta, n.declaration);
}
m.namespace.set('default', exportMeta);
return;
}
// safeguard against cycles
if (innerMap.path === this.path) continue;
if (n.type === 'ExportAllDeclaration') {
var _ret = function () {
var remoteMap = remotePath(n);
if (remoteMap == null) return {
v: void 0
};
m.dependencies.set(remoteMap, function () {
return ExportMap.for(remoteMap, context);
});
return {
v: void 0
};
}();
var innerValue = innerMap.get(name);
if (innerValue !== undefined) return innerValue;
if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
}
// capture namespaces in case of later export
if (n.type === 'ImportDeclaration') {
var ns = void 0;
if (n.specifiers.some(function (s) {
return s.type === 'ImportNamespaceSpecifier' && (ns = s);
})) {
namespaces.set(ns.local.name, n);
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
return;
}
if (n.type === 'ExportNamedDeclaration') {
// capture declaration
if (n.declaration != null) {
switch (n.declaration.type) {
case 'FunctionDeclaration':
case 'ClassDeclaration':
case 'TypeAlias':
// flowtype with babel-eslint parser
m.namespace.set(n.declaration.id.name, captureDoc(n));
break;
case 'VariableDeclaration':
n.declaration.declarations.forEach(function (d) {
return recursivePatternCapture(d.id, function (id) {
return m.namespace.set(id.name, captureDoc(d, n));
});
});
break;
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return undefined;
}
}, {
key: 'forEach',
value: function forEach(callback, thisArg) {
var _this = this;
n.specifiers.forEach(function (s) {
var exportMeta = {};
var local = void 0;
this.namespace.forEach(function (v, n) {
return callback.call(thisArg, v, n, _this);
});
switch (s.type) {
case 'ExportDefaultSpecifier':
if (!n.source) return;
local = 'default';
break;
case 'ExportNamespaceSpecifier':
m.namespace.set(s.exported.name, Object.defineProperty(exportMeta, 'namespace', {
get: function get() {
return resolveImport(n);
}
}));
return;
case 'ExportSpecifier':
if (!n.source) {
m.namespace.set(s.exported.name, addNamespace(exportMeta, s.local));
return;
}
// else falls through
default:
local = s.local.name;
break;
}
this.reexports.forEach(function (_ref, name) {
var getImport = _ref.getImport;
var local = _ref.local;
return callback.call(thisArg, getImport().get(local), name, _this);
});
this.dependencies.forEach(function (dep) {
return dep().forEach(function (v, n) {
return callback.call(thisArg, v, n, _this);
// todo: JSDoc
m.reexports.set(s.exported.name, { local: local, getImport: function getImport() {
return resolveImport(n);
} });
});
});
}
}
});
// todo: keys, values, entries?
return m;
};
}, {
key: 'reportErrors',
value: function reportErrors(context, declaration) {
context.report({
node: declaration.source,
message: 'Parse errors in imported module \'' + declaration.source.value + '\': ' + ('' + this.errors.map(function (e) {
return e.message + ' (' + e.lineNumber + ':' + e.column + ')';
}).join(', '))
});
}
}, {
key: 'hasDefault',
get: function get() {
return this.get('default') != null;
} // stronger than this.has
/**
* Note that this does not check explicitly re-exported names for existence
* in the base namespace, but it will expand all `export * from '...'` exports
* if not found in the explicit namespace.
* @param {string} name
* @return {Boolean} true if `name` is exported by this module.
*/
}, {
key: 'size',
get: function get() {
var size = this.namespace.size + this.reexports.size;
this.dependencies.forEach(function (dep) {
return size += dep().size;
});
return size;
}
}], [{
key: 'get',
value: function get(source, context) {
var path = (0, _resolve2.default)(source, context);
if (path == null) return null;
ExportMap.prototype.has = function has(name) {
if (this.namespace.has(name)) return true;
if (this.reexports.has(name)) return true;
return ExportMap.for(path, context);
}
}, {
key: 'for',
value: function _for(path, context) {
var exportMap = void 0;
for (var _iterator = this.dependencies.values(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
var cacheKey = (0, _hash.hashObject)((0, _crypto.createHash)('sha256'), {
settings: context.settings,
parserPath: context.parserPath,
parserOptions: context.parserOptions,
path: path
}).digest('hex');
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
exportMap = exportCache.get(cacheKey);
var dep = _ref;
// return cached ignore
if (exportMap === null) return null;
var innerMap = dep();
var stats = fs.statSync(path);
if (exportMap != null) {
// date equality check
if (exportMap.mtime - stats.mtime === 0) {
return exportMap;
}
// future: check content equality?
}
// todo: report as unresolved?
if (!innerMap) continue;
var content = fs.readFileSync(path, { encoding: 'utf8' });
if (innerMap.has(name)) return true;
}
// check for and cache ignore
if ((0, _ignore2.default)(path, context) && !hasExports.test(content)) {
exportCache.set(cacheKey, null);
return null;
}
return false;
};
exportMap = ExportMap.parse(path, content, context);
exportMap.mtime = stats.mtime;
ExportMap.prototype.get = function get(name) {
if (this.namespace.has(name)) return this.namespace.get(name);
exportCache.set(cacheKey, exportMap);
return exportMap;
}
}, {
key: 'parse',
value: function parse(path, content, context) {
var m = new ExportMap(path);
if (this.reexports.has(name)) {
var _reexports$get = this.reexports.get(name);
try {
var ast = (0, _parse3.default)(content, context);
} catch (err) {
m.errors.push(err);
return m; // can't continue
}
var local = _reexports$get.local;
var getImport = _reexports$get.getImport;
var imported = getImport();
if (imported == null) return undefined;
// attempt to collect module doc
ast.comments.some(function (c) {
if (c.type !== 'Block') return false;
try {
var doc = doctrine.parse(c.value, { unwrap: true });
if (doc.tags.some(function (t) {
return t.title === 'module';
})) {
m.doc = doc;
return true;
}
} catch (err) {/* ignore */}
return false;
});
// safeguard against cycles, only if name matches
if (imported.path === this.path && local === name) return undefined;
var namespaces = new _map2.default();
return imported.get(local);
}
function remotePath(node) {
return _resolve2.default.relative(node.source.value, path, context.settings);
}
for (var _iterator2 = this.dependencies.values(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
function resolveImport(node) {
var rp = remotePath(node);
if (rp == null) return null;
return ExportMap.for(rp, context);
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
function getNamespace(identifier) {
if (!namespaces.has(identifier.name)) return;
var dep = _ref2;
return function () {
return resolveImport(namespaces.get(identifier.name));
};
}
var innerMap = dep();
// todo: report as unresolved?
if (!innerMap) continue;
function addNamespace(object, identifier) {
var nsfn = getNamespace(identifier);
if (nsfn) {
Object.defineProperty(object, 'namespace', { get: nsfn });
}
// safeguard against cycles
if (innerMap.path === this.path) continue;
return object;
}
var innerValue = innerMap.get(name);
if (innerValue !== undefined) return innerValue;
}
ast.body.forEach(function (n) {
return undefined;
};
if (n.type === 'ExportDefaultDeclaration') {
var exportMeta = captureDoc(n);
if (n.declaration.type === 'Identifier') {
addNamespace(exportMeta, n.declaration);
}
m.namespace.set('default', exportMeta);
return;
}
ExportMap.prototype.forEach = function forEach(callback, thisArg) {
var _this = this;
if (n.type === 'ExportAllDeclaration') {
var _ret = function () {
var remoteMap = remotePath(n);
if (remoteMap == null) return {
v: void 0
};
m.dependencies.set(remoteMap, function () {
return ExportMap.for(remoteMap, context);
});
return {
v: void 0
};
}();
this.namespace.forEach(function (v, n) {
return callback.call(thisArg, v, n, _this);
});
if ((typeof _ret === 'undefined' ? 'undefined' : (0, _typeof3.default)(_ret)) === "object") return _ret.v;
}
this.reexports.forEach(function (_ref3, name) {
var getImport = _ref3.getImport;
var local = _ref3.local;
return callback.call(thisArg, getImport().get(local), name, _this);
});
// capture namespaces in case of later export
if (n.type === 'ImportDeclaration') {
var ns = void 0;
if (n.specifiers.some(function (s) {
return s.type === 'ImportNamespaceSpecifier' && (ns = s);
})) {
namespaces.set(ns.local.name, n);
}
return;
}
this.dependencies.forEach(function (dep) {
return dep().forEach(function (v, n) {
return callback.call(thisArg, v, n, _this);
});
});
};
if (n.type === 'ExportNamedDeclaration') {
// capture declaration
if (n.declaration != null) {
switch (n.declaration.type) {
case 'FunctionDeclaration':
case 'ClassDeclaration':
case 'TypeAlias':
// flowtype with babel-eslint parser
m.namespace.set(n.declaration.id.name, captureDoc(n));
break;
case 'VariableDeclaration':
n.declaration.declarations.forEach(function (d) {
return recursivePatternCapture(d.id, function (id) {
return m.namespace.set(id.name, captureDoc(d, n));
});
});
break;
}
}
// todo: keys, values, entries?
n.specifiers.forEach(function (s) {
var exportMeta = {};
var local = void 0;
ExportMap.prototype.reportErrors = function reportErrors(context, declaration) {
context.report({
node: declaration.source,
message: 'Parse errors in imported module \'' + declaration.source.value + '\': ' + ('' + this.errors.map(function (e) {
return e.message + ' (' + e.lineNumber + ':' + e.column + ')';
}).join(', '))
});
};
switch (s.type) {
case 'ExportDefaultSpecifier':
if (!n.source) return;
local = 'default';
break;
case 'ExportNamespaceSpecifier':
m.namespace.set(s.exported.name, Object.defineProperty(exportMeta, 'namespace', {
get: function get() {
return resolveImport(n);
}
}));
return;
case 'ExportSpecifier':
if (!n.source) {
m.namespace.set(s.exported.name, addNamespace(exportMeta, s.local));
return;
}
// else falls through
default:
local = s.local.name;
break;
}
_createClass(ExportMap, [{
key: 'hasDefault',
get: function get() {
return this.get('default') != null;
} // stronger than this.has
// todo: JSDoc
m.reexports.set(s.exported.name, { local: local, getImport: function getImport() {
return resolveImport(n);
} });
});
}
}, {
key: 'size',
get: function get() {
var size = this.namespace.size + this.reexports.size;
this.dependencies.forEach(function (dep) {
return size += dep().size;
});
return m;
return size;
}
}]);
return ExportMap;

@@ -487,4 +454,4 @@ }();

case 'ObjectPattern':
pattern.properties.forEach(function (_ref2) {
var value = _ref2.value;
pattern.properties.forEach(function (_ref4) {
var value = _ref4.value;

@@ -503,2 +470,2 @@ recursivePatternCapture(value, callback);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvZ2V0RXhwb3J0cy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQXVVZ0I7O0FBdlVoQjs7SUFBWTs7QUFFWjs7QUFDQTs7SUFBWTs7QUFFWjs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0FBRUEsSUFBTSxjQUFjLG1CQUFkOzs7Ozs7OztBQVFOLElBQU0sYUFBYSxJQUFJLE1BQUosQ0FBVyxnQ0FBWCxDQUFiOztJQUVlO0FBQ25CLFdBRG1CLFNBQ25CLENBQVksSUFBWixFQUFrQjt3Q0FEQyxXQUNEOztBQUNoQixTQUFLLElBQUwsR0FBWSxJQUFaLENBRGdCO0FBRWhCLFNBQUssU0FBTCxHQUFpQixtQkFBakI7O0FBRmdCLFFBSWhCLENBQUssU0FBTCxHQUFpQixtQkFBakIsQ0FKZ0I7QUFLaEIsU0FBSyxZQUFMLEdBQW9CLG1CQUFwQixDQUxnQjtBQU1oQixTQUFLLE1BQUwsR0FBYyxFQUFkLENBTmdCO0dBQWxCOzs2QkFEbUI7Ozs7Ozs7Ozs7O3dCQTBNZixNQUFNO0FBQ1IsVUFBSSxLQUFLLFNBQUwsQ0FBZSxHQUFmLENBQW1CLElBQW5CLENBQUosRUFBOEIsT0FBTyxJQUFQLENBQTlCO0FBQ0EsVUFBSSxLQUFLLFNBQUwsQ0FBZSxHQUFmLENBQW1CLElBQW5CLENBQUosRUFBOEIsT0FBTyxJQUFQLENBQTlCOzsyQ0FGUTs7Ozs7QUFJUix3REFBZ0IsS0FBSyxZQUFMLENBQWtCLE1BQWxCLFVBQWhCLG9HQUE0QztjQUFuQyxrQkFBbUM7O0FBQzFDLGNBQUksV0FBVyxLQUFYOzs7QUFEc0MsY0FJdEMsQ0FBQyxRQUFELEVBQVcsU0FBZjs7QUFFQSxjQUFJLFNBQVMsR0FBVCxDQUFhLElBQWIsQ0FBSixFQUF3QixPQUFPLElBQVAsQ0FBeEI7U0FORjs7Ozs7Ozs7Ozs7Ozs7T0FKUTs7QUFhUixhQUFPLEtBQVAsQ0FiUTs7Ozt3QkFnQk4sTUFBTTtBQUNSLFVBQUksS0FBSyxTQUFMLENB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LENBQXBCLEVBQXVCLENBQXZCLE1BQThCLE9BQTlCLEVBQXVDLE9BQTNDO0FBQ0EsVUFBSTtBQUNGLGlCQUFTLEdBQVQsR0FBZSxTQUFTLEtBQVQsQ0FBZSxRQUFRLEtBQVIsRUFBZSxFQUFFLFFBQVEsSUFBUixFQUFoQyxDQUFmLENBREU7T0FBSixDQUVFLE9BQU8sR0FBUCxFQUFZOztPQUFaO0tBTHNCLENBQTFCLENBSmM7QUFhZCxXQUFPLElBQVAsQ0FiYztHQUFMLENBQVgsQ0FKNEI7O0FBb0I1QixTQUFPLFFBQVAsQ0FwQjRCO0NBQTlCOzs7Ozs7Ozs7QUE4Qk8sU0FBUyx1QkFBVCxDQUFpQyxPQUFqQyxFQUEwQyxRQUExQyxFQUFvRDtBQUN6RCxVQUFRLFFBQVEsSUFBUjtBQUNOLFNBQUssWUFBTDs7QUFDRSxlQUFTLE9BQVQsRUFERjtBQUVFLFlBRkY7O0FBREYsU0FLTyxlQUFMO0FBQ0UsY0FBUSxVQUFSLENBQW1CLE9BQW5CLENBQTJCLGlCQUFlO1lBQVosb0JBQVk7O0FBQ3hDLGdDQUF3QixLQUF4QixFQUErQixRQUEvQixFQUR3QztPQUFmLENBQTNCLENBREY7QUFJRSxZQUpGOztBQUxGLFNBV08sY0FBTDtBQUNFLGNBQVEsUUFBUixDQUFpQixPQUFqQixDQUF5QixVQUFDLE9BQUQsRUFBYTtBQUNwQyxZQUFJLFdBQVcsSUFBWCxFQUFpQixPQUFyQjtBQUNBLGdDQUF3QixPQUF4QixFQUFpQyxRQUFqQyxFQUZvQztPQUFiLENBQXpCLENBREY7QUFLRSxZQUxGO0FBWEYsR0FEeUQ7Q0FBcEQiLCJmaWxlIjoiY29yZS9nZXRFeHBvcnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nXG5pbXBvcnQgKiBhcyBkb2N0cmluZSBmcm9tICdkb2N0cmluZSdcblxuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgcmVzb2x2ZSBmcm9tICcuL3Jlc29sdmUnXG5pbXBvcnQgaXNJZ25vcmVkIGZyb20gJy4vaWdub3JlJ1xuXG5pbXBvcnQgeyBoYXNoT2JqZWN0IH0gZnJvbSAnLi9oYXNoJ1xuXG5jb25zdCBleHBvcnRDYWNoZSA9IG5ldyBNYXAoKVxuXG4vKipcbiAqIGRldGVjdCBleHBvcnRzIHdpdGhvdXQgYSBmdWxsIHBhcnNlLlxuICogdXNlZCBwcmltYXJpbHkgdG8gaWdub3JlIHRoZSBpbXBvcnQvaWdub3JlIHNldHRpbmcsIGlpZiBpdCBsb29rcyBsaWtlXG4gKiB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgdGhlcmUgKGkuZS4sIGpzbmV4dDptYWluIGlzIHNldCkuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBoYXNFeHBvcnRzID0gbmV3IFJlZ0V4cCgnKF58W1xcXFxuO10pXFxcXHMqZXhwb3J0XFxcXHNbXFxcXHd7Kl0nKVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvcnRNYXAge1xuICBjb25zdHJ1Y3RvcihwYXRoKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aFxuICAgIHRoaXMubmFtZXNwYWNlID0gbmV3IE1hcCgpXG4gICAgLy8gdG9kbzogcmVzdHJ1Y3R1cmUgdG8ga2V5IG9uIHBhdGgsIHZhbHVlIGlzIHJlc29sdmVyICsgbWFwIG9mIG5hbWVzXG4gICAgdGhpcy5yZWV4cG9ydHMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IG5ldyBNYXAoKVxuICAgIHRoaXMuZXJyb3JzID0gW11cbiAgfVxuXG4gIGdldCBoYXNEZWZhdWx0KCkgeyByZXR1cm4gdGhpcy5nZXQoJ2RlZmF1bHQnKSAhPSBudWxsIH0gLy8gc3Ryb25nZXIgdGhhbiB0aGlzLmhhc1xuXG4gIGdldCBzaXplKCkge1xuICAgIGxldCBzaXplID0gdGhpcy5uYW1lc3BhY2Uuc2l6ZSArIHRoaXMucmVleHBvcnRzLnNpemVcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiBzaXplICs9IGRlcCgpLnNpemUpXG4gICAgcmV0dXJuIHNpemVcbiAgfVxuXG4gIHN0YXRpYyBnZXQoc291cmNlLCBjb250ZXh0KSB7XG5cbiAgICB2YXIgcGF0aCA9IHJlc29sdmUoc291cmNlLCBjb250ZXh0KVxuICAgIGlmIChwYXRoID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gRXhwb3J0TWFwLmZvcihwYXRoLCBjb250ZXh0KVxuICB9XG5cbiAgc3RhdGljIGZvcihwYXRoLCBjb250ZXh0KSB7XG4gICAgbGV0IGV4cG9ydE1hcFxuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBoYXNoT2JqZWN0KGNyZWF0ZUhhc2goJ3NoYTI1NicpLCB7XG4gICAgICBzZXR0aW5nczogY29udGV4dC5zZXR0aW5ncyxcbiAgICAgIHBhcnNlclBhdGg6IGNvbnRleHQucGFyc2VyUGF0aCxcbiAgICAgIHBhcnNlck9wdGlvbnM6IGNvbnRleHQucGFyc2VyT3B0aW9ucyxcbiAgICAgIHBhdGgsXG4gICAgfSkuZGlnZXN0KCdoZXgnKVxuXG4gICAgZXhwb3J0TWFwID0gZXhwb3J0Q2FjaGUuZ2V0KGNhY2hlS2V5KVxuXG4gICAgLy8gcmV0dXJuIGNhY2hlZCBpZ25vcmVcbiAgICBpZiAoZXhwb3J0TWFwID09PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoKVxuICAgIGlmIChleHBvcnRNYXAgIT0gbnVsbCkge1xuICAgICAgLy8gZGF0ZSBlcXVhbGl0eSBjaGVja1xuICAgICAgaWYgKGV4cG9ydE1hcC5tdGltZSAtIHN0YXRzLm10aW1lID09PSAwKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRNYXBcbiAgICAgIH1cbiAgICAgIC8vIGZ1dHVyZTogY2hlY2sgY29udGVudCBlcXVhbGl0eT9cbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KVxuXG4gICAgLy8gY2hlY2sgZm9yIGFuZCBjYWNoZSBpZ25vcmVcbiAgICBpZiAoaXNJZ25vcmVkKHBhdGgsIGNvbnRleHQpICYmICFoYXNFeHBvcnRzLnRlc3QoY29udGVudCkpIHtcbiAgICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgZXhwb3J0TWFwID0gRXhwb3J0TWFwLnBhcnNlKHBhdGgsIGNvbnRlbnQsIGNvbnRleHQpXG4gICAgZXhwb3J0TWFwLm10aW1lID0gc3RhdHMubXRpbWVcblxuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgZXhwb3J0TWFwKVxuICAgIHJldHVybiBleHBvcnRNYXBcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIG0gPSBuZXcgRXhwb3J0TWFwKHBhdGgpXG5cbiAgICB0cnkge1xuICAgICAgdmFyIGFzdCA9IHBhcnNlKGNvbnRlbnQsIGNvbnRleHQpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBtLmVycm9ycy5wdXNoKGVycilcbiAgICAgIHJldHVybiBtIC8vIGNhbid0IGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gYXR0ZW1wdCB0byBjb2xsZWN0IG1vZHVsZSBkb2NcbiAgICBhc3QuY29tbWVudHMuc29tZShjID0+IHtcbiAgICAgIGlmIChjLnR5cGUgIT09ICdCbG9jaycpIHJldHVybiBmYWxzZVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG9jID0gZG9jdHJpbmUucGFyc2UoYy52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSlcbiAgICAgICAgaWYgKGRvYy50YWdzLnNvbWUodCA9PiB0LnRpdGxlID09PSAnbW9kdWxlJykpIHtcbiAgICAgICAgICBtLmRvYyA9IGRvY1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikgeyAvKiBpZ25vcmUgKi8gfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcblxuICAgIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgTWFwKClcblxuICAgIGZ1bmN0aW9uIHJlbW90ZVBhdGgobm9kZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmUucmVsYXRpdmUobm9kZS5zb3VyY2UudmFsdWUsIHBhdGgsIGNvbnRleHQuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydChub2RlKSB7XG4gICAgICBjb25zdCBycCA9IHJlbW90ZVBhdGgobm9kZSlcbiAgICAgIGlmIChycCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIEV4cG9ydE1hcC5mb3IocnAsIGNvbnRleHQpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKGlkZW50aWZpZXIpIHtcbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoaWRlbnRpZmllci5uYW1lKSkgcmV0dXJuXG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSW1wb3J0KG5hbWVzcGFjZXMuZ2V0KGlkZW50aWZpZXIubmFtZSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTmFtZXNwYWNlKG9iamVjdCwgaWRlbnRpZmllcikge1xuICAgICAgY29uc3QgbnNmbiA9IGdldE5hbWVzcGFjZShpZGVudGlmaWVyKVxuICAgICAgaWYgKG5zZm4pIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ25hbWVzcGFjZScsIHsgZ2V0OiBuc2ZuIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmplY3RcbiAgICB9XG5cblxuICAgIGFzdC5ib2R5LmZvckVhY2goZnVuY3Rpb24gKG4pIHtcblxuICAgICAgaWYgKG4udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IGNhcHR1cmVEb2MobilcbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24udHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgZXhwb3J0TWV0YSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicpIHtcbiAgICAgICAgbGV0IHJlbW90ZU1hcCA9IHJlbW90ZVBhdGgobilcbiAgICAgICAgaWYgKHJlbW90ZU1hcCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgbS5kZXBlbmRlbmNpZXMuc2V0KHJlbW90ZU1hcCwgKCkgPT4gRXhwb3J0TWFwLmZvcihyZW1vdGVNYXAsIGNvbnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gY2FwdHVyZSBuYW1lc3BhY2VzIGluIGNhc2Ugb2YgbGF0ZXIgZXhwb3J0XG4gICAgICBpZiAobi50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGxldCBuc1xuICAgICAgICBpZiAobi5zcGVjaWZpZXJzLnNvbWUocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInICYmIChucyA9IHMpKSkge1xuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KG5zLmxvY2FsLm5hbWUsIG4pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyl7XG4gICAgICAgIC8vIGNhcHR1cmUgZGVjbGFyYXRpb25cbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHN3aXRjaCAobi5kZWNsYXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkRlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnVHlwZUFsaWFzJzogLy8gZmxvd3R5cGUgd2l0aCBiYWJlbC1lc2xpbnQgcGFyc2VyXG4gICAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChuLmRlY2xhcmF0aW9uLmlkLm5hbWUsIGNhcHR1cmVEb2MobikpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdWYXJpYWJsZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgbi5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMuZm9yRWFjaCgoZCkgPT5cbiAgICAgICAgICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShkLmlkLCBpZCA9PiBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhkLCBuKSkpKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG4uc3BlY2lmaWVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IHt9XG4gICAgICAgICAgbGV0IGxvY2FsXG5cbiAgICAgICAgICBzd2l0Y2ggKHMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnRXhwb3J0RGVmYXVsdFNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGlmICghbi5zb3VyY2UpIHJldHVyblxuICAgICAgICAgICAgICBsb2NhbCA9ICdkZWZhdWx0J1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KHMuZXhwb3J0ZWQubmFtZSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydE1ldGEsICduYW1lc3BhY2UnLCB7XG4gICAgICAgICAgICAgICAgZ2V0KCkgeyByZXR1cm4gcmVzb2x2ZUltcG9ydChuKSB9LFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBjYXNlICdFeHBvcnRTcGVjaWZpZXInOlxuICAgICAgICAgICAgICBpZiAoIW4uc291cmNlKSB7XG4gICAgICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KHMuZXhwb3J0ZWQubmFtZSwgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIHMubG9jYWwpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIGVsc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgbG9jYWwgPSBzLmxvY2FsLm5hbWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0b2RvOiBKU0RvY1xuICAgICAgICAgIG0ucmVleHBvcnRzLnNldChzLmV4cG9ydGVkLm5hbWUsIHsgbG9jYWwsIGdldEltcG9ydDogKCkgPT4gcmVzb2x2ZUltcG9ydChuKSB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgbmFtZXMgZm9yIGV4aXN0ZW5jZVxuICAgKiBpbiB0aGUgYmFzZSBuYW1lc3BhY2UsIGJ1dCBpdCB3aWxsIGV4cGFuZCBhbGwgYGV4cG9ydCAqIGZyb20gJy4uLidgIGV4cG9ydHNcbiAgICogaWYgbm90IGZvdW5kIGluIHRoZSBleHBsaWNpdCBuYW1lc3BhY2UuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWVcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBgbmFtZWAgaXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuXG4gICAqL1xuICBoYXMobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0cnVlXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcblxuICAgIGZvciAobGV0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcy52YWx1ZXMoKSkge1xuICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcblxuICAgICAgLy8gdG9kbzogcmVwb3J0IGFzIHVucmVzb2x2ZWQ/XG4gICAgICBpZiAoIWlubmVyTWFwKSBjb250aW51ZVxuXG4gICAgICBpZiAoaW5uZXJNYXAuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2UuaGFzKG5hbWUpKSByZXR1cm4gdGhpcy5uYW1lc3BhY2UuZ2V0KG5hbWUpXG5cbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSB7XG4gICAgICBjb25zdCB7IGxvY2FsLCBnZXRJbXBvcnQgfSA9IHRoaXMucmVleHBvcnRzLmdldChuYW1lKVxuICAgICAgICAgICwgaW1wb3J0ZWQgPSBnZXRJbXBvcnQoKVxuICAgICAgaWYgKGltcG9ydGVkID09IG51bGwpIHJldHVybiB1bmRlZmluZWRcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiBsb2NhbCA9PT0gbmFtZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZ2V0KGxvY2FsKVxuICAgIH1cblxuICAgIGZvciAobGV0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcy52YWx1ZXMoKSkge1xuICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcbiAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgaWYgKCFpbm5lck1hcCkgY29udGludWVcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzXG4gICAgICBpZiAoaW5uZXJNYXAucGF0aCA9PT0gdGhpcy5wYXRoKSBjb250aW51ZVxuXG4gICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKVxuICAgICAgaWYgKGlubmVyVmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlubmVyVmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgdGhpcy5uYW1lc3BhY2UuZm9yRWFjaCgodiwgbikgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdiwgbiwgdGhpcykpXG5cbiAgICB0aGlzLnJlZXhwb3J0cy5mb3JFYWNoKCh7IGdldEltcG9ydCwgbG9jYWwgfSwgbmFtZSkgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgZ2V0SW1wb3J0KCkuZ2V0KGxvY2FsKSwgbmFtZSwgdGhpcykpXG5cbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiBkZXAoKS5mb3JFYWNoKCh2LCBuKSA9PlxuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSkpXG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBgJHtlLm1lc3NhZ2V9ICgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pYClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIEpTRG9jIGZyb20gdGhlIGZpcnN0IG5vZGUgdGhhdCBoYXMgbGVhZGluZyBjb21tZW50c1xuICogQHBhcmFtICB7Li4uW3R5cGVdfSBub2RlcyBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHt7ZG9jOiBvYmplY3R9fVxuICovXG5mdW5jdGlvbiBjYXB0dXJlRG9jKC4uLm5vZGVzKSB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge31cblxuICAvLyAnc29tZScgc2hvcnQtY2lyY3VpdHMgb24gZmlyc3QgJ3RydWUnXG4gIG5vZGVzLnNvbWUobiA9PiB7XG4gICAgaWYgKCFuLmxlYWRpbmdDb21tZW50cykgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBjYXB0dXJlIFhTRG9jXG4gICAgbi5sZWFkaW5nQ29tbWVudHMuZm9yRWFjaChjb21tZW50ID0+IHtcbiAgICAgIC8vIHNraXAgbm9uLWJsb2NrIGNvbW1lbnRzXG4gICAgICBpZiAoY29tbWVudC52YWx1ZS5zbGljZSgwLCA0KSAhPT0gXCIqXFxuICpcIikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBtZXRhZGF0YS5kb2MgPSBkb2N0cmluZS5wYXJzZShjb21tZW50LnZhbHVlLCB7IHVud3JhcDogdHJ1ZSB9KVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8qIGRvbid0IGNhcmUsIGZvciBub3c/IG1heWJlIGFkZCB0byBgZXJyb3JzP2AgKi9cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgcmV0dXJuIG1ldGFkYXRhXG59XG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gICAgY2FzZSAnSWRlbnRpZmllcic6IC8vIGJhc2UgY2FzZVxuICAgICAgY2FsbGJhY2socGF0dGVybilcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICAgIHBhdHRlcm4ucHJvcGVydGllcy5mb3JFYWNoKCh7IHZhbHVlIH0pID0+IHtcbiAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUodmFsdWUsIGNhbGxiYWNrKVxuICAgICAgfSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxuICAgICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHJldHVyblxuICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShlbGVtZW50LCBjYWxsYmFjaylcbiAgICAgIH0pXG4gICAgICBicmVha1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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LEtBQVIsQ0FBYyxLQUFkLENBQW9CLENBQXBCLEVBQXVCLENBQXZCLE1BQThCLE9BQTlCLEVBQXVDLE9BQTNDO0FBQ0EsVUFBSTtBQUNGLGlCQUFTLEdBQVQsR0FBZSxTQUFTLEtBQVQsQ0FBZSxRQUFRLEtBQVIsRUFBZSxFQUFFLFFBQVEsSUFBUixFQUFoQyxDQUFmLENBREU7T0FBSixDQUVFLE9BQU8sR0FBUCxFQUFZOztPQUFaO0tBTHNCLENBQTFCLENBSmM7QUFhZCxXQUFPLElBQVAsQ0FiYztHQUFMLENBQVgsQ0FKNEI7O0FBb0I1QixTQUFPLFFBQVAsQ0FwQjRCO0NBQTlCOzs7Ozs7Ozs7QUE4Qk8sU0FBUyx1QkFBVCxDQUFpQyxPQUFqQyxFQUEwQyxRQUExQyxFQUFvRDtBQUN6RCxVQUFRLFFBQVEsSUFBUjtBQUNOLFNBQUssWUFBTDs7QUFDRSxlQUFTLE9BQVQsRUFERjtBQUVFLFlBRkY7O0FBREYsU0FLTyxlQUFMO0FBQ0UsY0FBUSxVQUFSLENBQW1CLE9BQW5CLENBQTJCLGlCQUFlO1lBQVosb0JBQVk7O0FBQ3hDLGdDQUF3QixLQUF4QixFQUErQixRQUEvQixFQUR3QztPQUFmLENBQTNCLENBREY7QUFJRSxZQUpGOztBQUxGLFNBV08sY0FBTDtBQUNFLGNBQVEsUUFBUixDQUFpQixPQUFqQixDQUF5QixVQUFDLE9BQUQsRUFBYTtBQUNwQyxZQUFJLFdBQVcsSUFBWCxFQUFpQixPQUFyQjtBQUNBLGdDQUF3QixPQUF4QixFQUFpQyxRQUFqQyxFQUZvQztPQUFiLENBQXpCLENBREY7QUFLRSxZQUxGO0FBWEYsR0FEeUQ7Q0FBcEQiLCJmaWxlIjoiY29yZS9nZXRFeHBvcnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdlczYtc3ltYm9sL2ltcGxlbWVudCdcbmltcG9ydCBNYXAgZnJvbSAnZXM2LW1hcCdcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nXG5pbXBvcnQgKiBhcyBkb2N0cmluZSBmcm9tICdkb2N0cmluZSdcblxuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgcmVzb2x2ZSBmcm9tICcuL3Jlc29sdmUnXG5pbXBvcnQgaXNJZ25vcmVkIGZyb20gJy4vaWdub3JlJ1xuXG5pbXBvcnQgeyBoYXNoT2JqZWN0IH0gZnJvbSAnLi9oYXNoJ1xuXG5jb25zdCBleHBvcnRDYWNoZSA9IG5ldyBNYXAoKVxuXG4vKipcbiAqIGRldGVjdCBleHBvcnRzIHdpdGhvdXQgYSBmdWxsIHBhcnNlLlxuICogdXNlZCBwcmltYXJpbHkgdG8gaWdub3JlIHRoZSBpbXBvcnQvaWdub3JlIHNldHRpbmcsIGlpZiBpdCBsb29rcyBsaWtlXG4gKiB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgdGhlcmUgKGkuZS4sIGpzbmV4dDptYWluIGlzIHNldCkuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBoYXNFeHBvcnRzID0gbmV3IFJlZ0V4cCgnKF58W1xcXFxuO10pXFxcXHMqZXhwb3J0XFxcXHNbXFxcXHd7Kl0nKVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvcnRNYXAge1xuICBjb25zdHJ1Y3RvcihwYXRoKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aFxuICAgIHRoaXMubmFtZXNwYWNlID0gbmV3IE1hcCgpXG4gICAgLy8gdG9kbzogcmVzdHJ1Y3R1cmUgdG8ga2V5IG9uIHBhdGgsIHZhbHVlIGlzIHJlc29sdmVyICsgbWFwIG9mIG5hbWVzXG4gICAgdGhpcy5yZWV4cG9ydHMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IG5ldyBNYXAoKVxuICAgIHRoaXMuZXJyb3JzID0gW11cbiAgfVxuXG4gIGdldCBoYXNEZWZhdWx0KCkgeyByZXR1cm4gdGhpcy5nZXQoJ2RlZmF1bHQnKSAhPSBudWxsIH0gLy8gc3Ryb25nZXIgdGhhbiB0aGlzLmhhc1xuXG4gIGdldCBzaXplKCkge1xuICAgIGxldCBzaXplID0gdGhpcy5uYW1lc3BhY2Uuc2l6ZSArIHRoaXMucmVleHBvcnRzLnNpemVcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiBzaXplICs9IGRlcCgpLnNpemUpXG4gICAgcmV0dXJuIHNpemVcbiAgfVxuXG4gIHN0YXRpYyBnZXQoc291cmNlLCBjb250ZXh0KSB7XG5cbiAgICB2YXIgcGF0aCA9IHJlc29sdmUoc291cmNlLCBjb250ZXh0KVxuICAgIGlmIChwYXRoID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gRXhwb3J0TWFwLmZvcihwYXRoLCBjb250ZXh0KVxuICB9XG5cbiAgc3RhdGljIGZvcihwYXRoLCBjb250ZXh0KSB7XG4gICAgbGV0IGV4cG9ydE1hcFxuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBoYXNoT2JqZWN0KGNyZWF0ZUhhc2goJ3NoYTI1NicpLCB7XG4gICAgICBzZXR0aW5nczogY29udGV4dC5zZXR0aW5ncyxcbiAgICAgIHBhcnNlclBhdGg6IGNvbnRleHQucGFyc2VyUGF0aCxcbiAgICAgIHBhcnNlck9wdGlvbnM6IGNvbnRleHQucGFyc2VyT3B0aW9ucyxcbiAgICAgIHBhdGgsXG4gICAgfSkuZGlnZXN0KCdoZXgnKVxuXG4gICAgZXhwb3J0TWFwID0gZXhwb3J0Q2FjaGUuZ2V0KGNhY2hlS2V5KVxuXG4gICAgLy8gcmV0dXJuIGNhY2hlZCBpZ25vcmVcbiAgICBpZiAoZXhwb3J0TWFwID09PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoKVxuICAgIGlmIChleHBvcnRNYXAgIT0gbnVsbCkge1xuICAgICAgLy8gZGF0ZSBlcXVhbGl0eSBjaGVja1xuICAgICAgaWYgKGV4cG9ydE1hcC5tdGltZSAtIHN0YXRzLm10aW1lID09PSAwKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRNYXBcbiAgICAgIH1cbiAgICAgIC8vIGZ1dHVyZTogY2hlY2sgY29udGVudCBlcXVhbGl0eT9cbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KVxuXG4gICAgLy8gY2hlY2sgZm9yIGFuZCBjYWNoZSBpZ25vcmVcbiAgICBpZiAoaXNJZ25vcmVkKHBhdGgsIGNvbnRleHQpICYmICFoYXNFeHBvcnRzLnRlc3QoY29udGVudCkpIHtcbiAgICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgZXhwb3J0TWFwID0gRXhwb3J0TWFwLnBhcnNlKHBhdGgsIGNvbnRlbnQsIGNvbnRleHQpXG4gICAgZXhwb3J0TWFwLm10aW1lID0gc3RhdHMubXRpbWVcblxuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgZXhwb3J0TWFwKVxuICAgIHJldHVybiBleHBvcnRNYXBcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIG0gPSBuZXcgRXhwb3J0TWFwKHBhdGgpXG5cbiAgICB0cnkge1xuICAgICAgdmFyIGFzdCA9IHBhcnNlKGNvbnRlbnQsIGNvbnRleHQpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBtLmVycm9ycy5wdXNoKGVycilcbiAgICAgIHJldHVybiBtIC8vIGNhbid0IGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gYXR0ZW1wdCB0byBjb2xsZWN0IG1vZHVsZSBkb2NcbiAgICBhc3QuY29tbWVudHMuc29tZShjID0+IHtcbiAgICAgIGlmIChjLnR5cGUgIT09ICdCbG9jaycpIHJldHVybiBmYWxzZVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG9jID0gZG9jdHJpbmUucGFyc2UoYy52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSlcbiAgICAgICAgaWYgKGRvYy50YWdzLnNvbWUodCA9PiB0LnRpdGxlID09PSAnbW9kdWxlJykpIHtcbiAgICAgICAgICBtLmRvYyA9IGRvY1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikgeyAvKiBpZ25vcmUgKi8gfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcblxuICAgIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgTWFwKClcblxuICAgIGZ1bmN0aW9uIHJlbW90ZVBhdGgobm9kZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmUucmVsYXRpdmUobm9kZS5zb3VyY2UudmFsdWUsIHBhdGgsIGNvbnRleHQuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydChub2RlKSB7XG4gICAgICBjb25zdCBycCA9IHJlbW90ZVBhdGgobm9kZSlcbiAgICAgIGlmIChycCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIEV4cG9ydE1hcC5mb3IocnAsIGNvbnRleHQpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKGlkZW50aWZpZXIpIHtcbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoaWRlbnRpZmllci5uYW1lKSkgcmV0dXJuXG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSW1wb3J0KG5hbWVzcGFjZXMuZ2V0KGlkZW50aWZpZXIubmFtZSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTmFtZXNwYWNlKG9iamVjdCwgaWRlbnRpZmllcikge1xuICAgICAgY29uc3QgbnNmbiA9IGdldE5hbWVzcGFjZShpZGVudGlmaWVyKVxuICAgICAgaWYgKG5zZm4pIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ25hbWVzcGFjZScsIHsgZ2V0OiBuc2ZuIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmplY3RcbiAgICB9XG5cblxuICAgIGFzdC5ib2R5LmZvckVhY2goZnVuY3Rpb24gKG4pIHtcblxuICAgICAgaWYgKG4udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IGNhcHR1cmVEb2MobilcbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24udHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgZXhwb3J0TWV0YSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicpIHtcbiAgICAgICAgbGV0IHJlbW90ZU1hcCA9IHJlbW90ZVBhdGgobilcbiAgICAgICAgaWYgKHJlbW90ZU1hcCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgbS5kZXBlbmRlbmNpZXMuc2V0KHJlbW90ZU1hcCwgKCkgPT4gRXhwb3J0TWFwLmZvcihyZW1vdGVNYXAsIGNvbnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gY2FwdHVyZSBuYW1lc3BhY2VzIGluIGNhc2Ugb2YgbGF0ZXIgZXhwb3J0XG4gICAgICBpZiAobi50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGxldCBuc1xuICAgICAgICBpZiAobi5zcGVjaWZpZXJzLnNvbWUocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInICYmIChucyA9IHMpKSkge1xuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KG5zLmxvY2FsLm5hbWUsIG4pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyl7XG4gICAgICAgIC8vIGNhcHR1cmUgZGVjbGFyYXRpb25cbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHN3aXRjaCAobi5kZWNsYXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkRlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnVHlwZUFsaWFzJzogLy8gZmxvd3R5cGUgd2l0aCBiYWJlbC1lc2xpbnQgcGFyc2VyXG4gICAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChuLmRlY2xhcmF0aW9uLmlkLm5hbWUsIGNhcHR1cmVEb2MobikpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdWYXJpYWJsZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgbi5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMuZm9yRWFjaCgoZCkgPT5cbiAgICAgICAgICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShkLmlkLCBpZCA9PiBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhkLCBuKSkpKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG4uc3BlY2lmaWVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IHt9XG4gICAgICAgICAgbGV0IGxvY2FsXG5cbiAgICAgICAgICBzd2l0Y2ggKHMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnRXhwb3J0RGVmYXVsdFNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGlmICghbi5zb3VyY2UpIHJldHVyblxuICAgICAgICAgICAgICBsb2NhbCA9ICdkZWZhdWx0J1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KHMuZXhwb3J0ZWQubmFtZSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydE1ldGEsICduYW1lc3BhY2UnLCB7XG4gICAgICAgICAgICAgICAgZ2V0KCkgeyByZXR1cm4gcmVzb2x2ZUltcG9ydChuKSB9LFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBjYXNlICdFeHBvcnRTcGVjaWZpZXInOlxuICAgICAgICAgICAgICBpZiAoIW4uc291cmNlKSB7XG4gICAgICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KHMuZXhwb3J0ZWQubmFtZSwgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIHMubG9jYWwpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIGVsc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgbG9jYWwgPSBzLmxvY2FsLm5hbWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0b2RvOiBKU0RvY1xuICAgICAgICAgIG0ucmVleHBvcnRzLnNldChzLmV4cG9ydGVkLm5hbWUsIHsgbG9jYWwsIGdldEltcG9ydDogKCkgPT4gcmVzb2x2ZUltcG9ydChuKSB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgbmFtZXMgZm9yIGV4aXN0ZW5jZVxuICAgKiBpbiB0aGUgYmFzZSBuYW1lc3BhY2UsIGJ1dCBpdCB3aWxsIGV4cGFuZCBhbGwgYGV4cG9ydCAqIGZyb20gJy4uLidgIGV4cG9ydHNcbiAgICogaWYgbm90IGZvdW5kIGluIHRoZSBleHBsaWNpdCBuYW1lc3BhY2UuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWVcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBgbmFtZWAgaXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuXG4gICAqL1xuICBoYXMobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0cnVlXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcblxuICAgIGZvciAobGV0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcy52YWx1ZXMoKSkge1xuICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcblxuICAgICAgLy8gdG9kbzogcmVwb3J0IGFzIHVucmVzb2x2ZWQ/XG4gICAgICBpZiAoIWlubmVyTWFwKSBjb250aW51ZVxuXG4gICAgICBpZiAoaW5uZXJNYXAuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2UuaGFzKG5hbWUpKSByZXR1cm4gdGhpcy5uYW1lc3BhY2UuZ2V0KG5hbWUpXG5cbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSB7XG4gICAgICBjb25zdCB7IGxvY2FsLCBnZXRJbXBvcnQgfSA9IHRoaXMucmVleHBvcnRzLmdldChuYW1lKVxuICAgICAgICAgICwgaW1wb3J0ZWQgPSBnZXRJbXBvcnQoKVxuICAgICAgaWYgKGltcG9ydGVkID09IG51bGwpIHJldHVybiB1bmRlZmluZWRcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiBsb2NhbCA9PT0gbmFtZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZ2V0KGxvY2FsKVxuICAgIH1cblxuICAgIGZvciAobGV0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcy52YWx1ZXMoKSkge1xuICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcbiAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgaWYgKCFpbm5lck1hcCkgY29udGludWVcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzXG4gICAgICBpZiAoaW5uZXJNYXAucGF0aCA9PT0gdGhpcy5wYXRoKSBjb250aW51ZVxuXG4gICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKVxuICAgICAgaWYgKGlubmVyVmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlubmVyVmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgdGhpcy5uYW1lc3BhY2UuZm9yRWFjaCgodiwgbikgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdiwgbiwgdGhpcykpXG5cbiAgICB0aGlzLnJlZXhwb3J0cy5mb3JFYWNoKCh7IGdldEltcG9ydCwgbG9jYWwgfSwgbmFtZSkgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgZ2V0SW1wb3J0KCkuZ2V0KGxvY2FsKSwgbmFtZSwgdGhpcykpXG5cbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiBkZXAoKS5mb3JFYWNoKCh2LCBuKSA9PlxuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSkpXG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBgJHtlLm1lc3NhZ2V9ICgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pYClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIEpTRG9jIGZyb20gdGhlIGZpcnN0IG5vZGUgdGhhdCBoYXMgbGVhZGluZyBjb21tZW50c1xuICogQHBhcmFtICB7Li4uW3R5cGVdfSBub2RlcyBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHt7ZG9jOiBvYmplY3R9fVxuICovXG5mdW5jdGlvbiBjYXB0dXJlRG9jKC4uLm5vZGVzKSB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge31cblxuICAvLyAnc29tZScgc2hvcnQtY2lyY3VpdHMgb24gZmlyc3QgJ3RydWUnXG4gIG5vZGVzLnNvbWUobiA9PiB7XG4gICAgaWYgKCFuLmxlYWRpbmdDb21tZW50cykgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBjYXB0dXJlIFhTRG9jXG4gICAgbi5sZWFkaW5nQ29tbWVudHMuZm9yRWFjaChjb21tZW50ID0+IHtcbiAgICAgIC8vIHNraXAgbm9uLWJsb2NrIGNvbW1lbnRzXG4gICAgICBpZiAoY29tbWVudC52YWx1ZS5zbGljZSgwLCA0KSAhPT0gXCIqXFxuICpcIikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBtZXRhZGF0YS5kb2MgPSBkb2N0cmluZS5wYXJzZShjb21tZW50LnZhbHVlLCB7IHVud3JhcDogdHJ1ZSB9KVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8qIGRvbid0IGNhcmUsIGZvciBub3c/IG1heWJlIGFkZCB0byBgZXJyb3JzP2AgKi9cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgcmV0dXJuIG1ldGFkYXRhXG59XG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gICAgY2FzZSAnSWRlbnRpZmllcic6IC8vIGJhc2UgY2FzZVxuICAgICAgY2FsbGJhY2socGF0dGVybilcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICAgIHBhdHRlcm4ucHJvcGVydGllcy5mb3JFYWNoKCh7IHZhbHVlIH0pID0+IHtcbiAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUodmFsdWUsIGNhbGxiYWNrKVxuICAgICAgfSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxuICAgICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHJldHVyblxuICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShlbGVtZW50LCBjYWxsYmFjaylcbiAgICAgIH0pXG4gICAgICBicmVha1xuICB9XG59XG4iXX0=
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
exports.__esModule = true;
exports.default = hashify;
exports.hashArray = hashArray;
exports.hashObject = hashObject;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -26,3 +12,3 @@ * utilities for hashing config objects.

var stringify = _stringify2.default;
var stringify = JSON.stringify;

@@ -54,3 +40,3 @@ function hashify(hash, value) {

hash.update("{");
(0, _keys2.default)(object).sort().forEach(function (key) {
Object.keys(object).sort().forEach(function (key) {
hash.update(stringify(key));

@@ -65,2 +51,2 @@ hash.update(':');

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaGFzaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztrQkFPd0I7UUFZUjtRQVdBOzs7Ozs7Ozs7QUF6QmhCLElBQU0sK0JBQU47O0FBRWUsU0FBUyxPQUFULENBQWlCLElBQWpCLEVBQXVCLEtBQXZCLEVBQThCO0FBQzNDLE1BQUksaUJBQWlCLEtBQWpCLEVBQXdCO0FBQzFCLGNBQVUsSUFBVixFQUFnQixLQUFoQixFQUQwQjtHQUE1QixNQUVPLElBQUksaUJBQWlCLE1BQWpCLEVBQXlCO0FBQ2xDLGVBQVcsSUFBWCxFQUFpQixLQUFqQixFQURrQztHQUE3QixNQUVBO0FBQ0wsU0FBSyxNQUFMLENBQVksVUFBVSxLQUFWLEtBQW9CLFdBQXBCLENBQVosQ0FESztHQUZBOztBQU1QLFNBQU8sSUFBUCxDQVQyQztDQUE5Qjs7QUFZUixTQUFTLFNBQVQsQ0FBbUIsSUFBbkIsRUFBeUIsS0FBekIsRUFBZ0M7QUFDckMsT0FBSyxNQUFMLENBQVksR0FBWixFQURxQztBQUVyQyxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxNQUFNLE1BQU4sRUFBYyxHQUFsQyxFQUF1QztBQUNyQyxZQUFRLElBQVIsRUFBYyxNQUFNLENBQU4sQ0FBZCxFQURxQztBQUVyQyxTQUFLLE1BQUwsQ0FBWSxHQUFaLEVBRnFDO0dBQXZDO0FBSUEsT0FBSyxNQUFMLENBQVksR0FBWixFQU5xQzs7QUFRckMsU0FBTyxJQUFQLENBUnFDO0NBQWhDOztBQVdBLFNBQVMsVUFBVCxDQUFvQixJQUFwQixFQUEwQixNQUExQixFQUFrQztBQUN2QyxPQUFLLE1BQUwsQ0FBWSxHQUFaLEVBRHVDO0FBRXZDLHNCQUFZLE1BQVosRUFBb0IsSUFBcEIsR0FBMkIsT0FBM0IsQ0FBbUMsZUFBTztBQUN4QyxTQUFLLE1BQUwsQ0FBWSxVQUFVLEdBQVYsQ0FBWixFQUR3QztBQUV4QyxTQUFLLE1BQUwsQ0FBWSxHQUFaLEVBRndDO0FBR3hDLFlBQVEsSUFBUixFQUFjLE9BQU8sR0FBUCxDQUFkLEVBSHdDO0FBSXhDLFNBQUssTUFBTCxDQUFZLEdBQVosRUFKd0M7R0FBUCxDQUFuQyxDQUZ1QztBQVF2QyxPQUFLLE1BQUwsQ0FBWSxHQUFaLEVBUnVDOztBQVV2QyxTQUFPLElBQVAsQ0FWdUM7Q0FBbEMiLCJmaWxlIjoiY29yZS9oYXNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB1dGlsaXRpZXMgZm9yIGhhc2hpbmcgY29uZmlnIG9iamVjdHMuXG4gKiBiYXNpY2FsbHkgaXRlcmF0aXZlbHkgdXBkYXRlcyBoYXNoIHdpdGggYSBKU09OLWxpa2UgZm9ybWF0XG4gKi9cblxuY29uc3Qgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFzaGlmeShoYXNoLCB2YWx1ZSkge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIGhhc2hBcnJheShoYXNoLCB2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIGhhc2hPYmplY3QoaGFzaCwgdmFsdWUpXG4gIH0gZWxzZSB7XG4gICAgaGFzaC51cGRhdGUoc3RyaW5naWZ5KHZhbHVlKSB8fCAndW5kZWZpbmVkJylcbiAgfVxuXG4gIHJldHVybiBoYXNoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQXJyYXkoaGFzaCwgYXJyYXkpIHtcbiAgaGFzaC51cGRhdGUoJ1snKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaGFzaGlmeShoYXNoLCBhcnJheVtpXSlcbiAgICBoYXNoLnVwZGF0ZSgnLCcpXG4gIH1cbiAgaGFzaC51cGRhdGUoJ10nKVxuXG4gIHJldHVybiBoYXNoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoT2JqZWN0KGhhc2gsIG9iamVjdCkge1xuICBoYXNoLnVwZGF0ZShcIntcIilcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5zb3J0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGhhc2gudXBkYXRlKHN0cmluZ2lmeShrZXkpKVxuICAgIGhhc2gudXBkYXRlKCc6JylcbiAgICBoYXNoaWZ5KGhhc2gsIG9iamVjdFtrZXldKVxuICAgIGhhc2gudXBkYXRlKFwiLFwiKVxuICB9KVxuICBoYXNoLnVwZGF0ZShcIn1cIilcblxuICByZXR1cm4gaGFzaFxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaGFzaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7a0JBT3dCO1FBWVI7UUFXQTs7Ozs7O0FBekJoQixJQUFNLFlBQVksS0FBSyxTQUFMOztBQUVILFNBQVMsT0FBVCxDQUFpQixJQUFqQixFQUF1QixLQUF2QixFQUE4QjtBQUMzQyxNQUFJLGlCQUFpQixLQUFqQixFQUF3QjtBQUMxQixjQUFVLElBQVYsRUFBZ0IsS0FBaEIsRUFEMEI7R0FBNUIsTUFFTyxJQUFJLGlCQUFpQixNQUFqQixFQUF5QjtBQUNsQyxlQUFXLElBQVgsRUFBaUIsS0FBakIsRUFEa0M7R0FBN0IsTUFFQTtBQUNMLFNBQUssTUFBTCxDQUFZLFVBQVUsS0FBVixLQUFvQixXQUFwQixDQUFaLENBREs7R0FGQTs7QUFNUCxTQUFPLElBQVAsQ0FUMkM7Q0FBOUI7O0FBWVIsU0FBUyxTQUFULENBQW1CLElBQW5CLEVBQXlCLEtBQXpCLEVBQWdDO0FBQ3JDLE9BQUssTUFBTCxDQUFZLEdBQVosRUFEcUM7QUFFckMsT0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBTSxNQUFOLEVBQWMsR0FBbEMsRUFBdUM7QUFDckMsWUFBUSxJQUFSLEVBQWMsTUFBTSxDQUFOLENBQWQsRUFEcUM7QUFFckMsU0FBSyxNQUFMLENBQVksR0FBWixFQUZxQztHQUF2QztBQUlBLE9BQUssTUFBTCxDQUFZLEdBQVosRUFOcUM7O0FBUXJDLFNBQU8sSUFBUCxDQVJxQztDQUFoQzs7QUFXQSxTQUFTLFVBQVQsQ0FBb0IsSUFBcEIsRUFBMEIsTUFBMUIsRUFBa0M7QUFDdkMsT0FBSyxNQUFMLENBQVksR0FBWixFQUR1QztBQUV2QyxTQUFPLElBQVAsQ0FBWSxNQUFaLEVBQW9CLElBQXBCLEdBQTJCLE9BQTNCLENBQW1DLGVBQU87QUFDeEMsU0FBSyxNQUFMLENBQVksVUFBVSxHQUFWLENBQVosRUFEd0M7QUFFeEMsU0FBSyxNQUFMLENBQVksR0FBWixFQUZ3QztBQUd4QyxZQUFRLElBQVIsRUFBYyxPQUFPLEdBQVAsQ0FBZCxFQUh3QztBQUl4QyxTQUFLLE1BQUwsQ0FBWSxHQUFaLEVBSndDO0dBQVAsQ0FBbkMsQ0FGdUM7QUFRdkMsT0FBSyxNQUFMLENBQVksR0FBWixFQVJ1Qzs7QUFVdkMsU0FBTyxJQUFQLENBVnVDO0NBQWxDIiwiZmlsZSI6ImNvcmUvaGFzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogdXRpbGl0aWVzIGZvciBoYXNoaW5nIGNvbmZpZyBvYmplY3RzLlxuICogYmFzaWNhbGx5IGl0ZXJhdGl2ZWx5IHVwZGF0ZXMgaGFzaCB3aXRoIGEgSlNPTi1saWtlIGZvcm1hdFxuICovXG5cbmNvbnN0IHN0cmluZ2lmeSA9IEpTT04uc3RyaW5naWZ5XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc2hpZnkoaGFzaCwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBoYXNoQXJyYXkoaGFzaCwgdmFsdWUpXG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICBoYXNoT2JqZWN0KGhhc2gsIHZhbHVlKVxuICB9IGVsc2Uge1xuICAgIGhhc2gudXBkYXRlKHN0cmluZ2lmeSh2YWx1ZSkgfHwgJ3VuZGVmaW5lZCcpXG4gIH1cblxuICByZXR1cm4gaGFzaFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEFycmF5KGhhc2gsIGFycmF5KSB7XG4gIGhhc2gudXBkYXRlKCdbJylcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGhhc2hpZnkoaGFzaCwgYXJyYXlbaV0pXG4gICAgaGFzaC51cGRhdGUoJywnKVxuICB9XG4gIGhhc2gudXBkYXRlKCddJylcblxuICByZXR1cm4gaGFzaFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaE9iamVjdChoYXNoLCBvYmplY3QpIHtcbiAgaGFzaC51cGRhdGUoXCJ7XCIpXG4gIE9iamVjdC5rZXlzKG9iamVjdCkuc29ydCgpLmZvckVhY2goa2V5ID0+IHtcbiAgICBoYXNoLnVwZGF0ZShzdHJpbmdpZnkoa2V5KSlcbiAgICBoYXNoLnVwZGF0ZSgnOicpXG4gICAgaGFzaGlmeShoYXNoLCBvYmplY3Rba2V5XSlcbiAgICBoYXNoLnVwZGF0ZShcIixcIilcbiAgfSlcbiAgaGFzaC51cGRhdGUoXCJ9XCIpXG5cbiAgcmV0dXJuIGhhc2hcbn1cbiJdfQ==
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
exports.default = ignore;

@@ -20,2 +18,2 @@ function ignore(path, context) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaWdub3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUF3QjtBQUFULFNBQVMsTUFBVCxDQUFnQixJQUFoQixFQUFzQixPQUF0QixFQUErQjs7QUFFNUMsTUFBSSxnQkFBZ0IsUUFBUSxRQUFSLENBQWlCLGVBQWpCLElBQ2hCLEdBQUcsTUFBSCxDQUFVLFFBQVEsUUFBUixDQUFpQixlQUFqQixDQUFWLENBRGdCLEdBRWhCLENBQUMsY0FBRCxDQUZnQixDQUZ3Qjs7QUFNNUMsTUFBSSxjQUFjLE1BQWQsS0FBeUIsQ0FBekIsRUFBNEIsT0FBTyxLQUFQLENBQWhDOztBQUVBLE9BQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLGNBQWMsTUFBZCxFQUFzQixHQUExQyxFQUErQztBQUM3QyxRQUFJLFFBQVEsSUFBSSxNQUFKLENBQVcsY0FBYyxDQUFkLENBQVgsQ0FBUixDQUR5QztBQUU3QyxRQUFJLE1BQU0sSUFBTixDQUFXLElBQVgsQ0FBSixFQUFzQixPQUFPLElBQVAsQ0FBdEI7R0FGRjs7QUFLQSxTQUFPLEtBQVAsQ0FiNEM7Q0FBL0IiLCJmaWxlIjoiY29yZS9pZ25vcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpZ25vcmUocGF0aCwgY29udGV4dCkge1xuICAvLyBpZ25vcmUgbm9kZV9tb2R1bGVzIGJ5IGRlZmF1bHRcbiAgdmFyIGlnbm9yZVN0cmluZ3MgPSBjb250ZXh0LnNldHRpbmdzWydpbXBvcnQvaWdub3JlJ11cbiAgICA/IFtdLmNvbmNhdChjb250ZXh0LnNldHRpbmdzWydpbXBvcnQvaWdub3JlJ10pXG4gICAgOiBbJ25vZGVfbW9kdWxlcyddXG5cbiAgaWYgKGlnbm9yZVN0cmluZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlnbm9yZVN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKGlnbm9yZVN0cmluZ3NbaV0pXG4gICAgaWYgKHJlZ2V4LnRlc3QocGF0aCkpIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaWdub3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztrQkFBd0I7QUFBVCxTQUFTLE1BQVQsQ0FBZ0IsSUFBaEIsRUFBc0IsT0FBdEIsRUFBK0I7O0FBRTVDLE1BQUksZ0JBQWdCLFFBQVEsUUFBUixDQUFpQixlQUFqQixJQUNoQixHQUFHLE1BQUgsQ0FBVSxRQUFRLFFBQVIsQ0FBaUIsZUFBakIsQ0FBVixDQURnQixHQUVoQixDQUFDLGNBQUQsQ0FGZ0IsQ0FGd0I7O0FBTTVDLE1BQUksY0FBYyxNQUFkLEtBQXlCLENBQXpCLEVBQTRCLE9BQU8sS0FBUCxDQUFoQzs7QUFFQSxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxjQUFjLE1BQWQsRUFBc0IsR0FBMUMsRUFBK0M7QUFDN0MsUUFBSSxRQUFRLElBQUksTUFBSixDQUFXLGNBQWMsQ0FBZCxDQUFYLENBQVIsQ0FEeUM7QUFFN0MsUUFBSSxNQUFNLElBQU4sQ0FBVyxJQUFYLENBQUosRUFBc0IsT0FBTyxJQUFQLENBQXRCO0dBRkY7O0FBS0EsU0FBTyxLQUFQLENBYjRDO0NBQS9CIiwiZmlsZSI6ImNvcmUvaWdub3JlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaWdub3JlKHBhdGgsIGNvbnRleHQpIHtcbiAgLy8gaWdub3JlIG5vZGVfbW9kdWxlcyBieSBkZWZhdWx0XG4gIHZhciBpZ25vcmVTdHJpbmdzID0gY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2lnbm9yZSddXG4gICAgPyBbXS5jb25jYXQoY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2lnbm9yZSddKVxuICAgIDogWydub2RlX21vZHVsZXMnXVxuXG4gIGlmIChpZ25vcmVTdHJpbmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZ25vcmVTdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChpZ25vcmVTdHJpbmdzW2ldKVxuICAgIGlmIChyZWdleC50ZXN0KHBhdGgpKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iXX0=
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
exports.default = moduleRequire;

@@ -44,2 +42,2 @@

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvbW9kdWxlLXJlcXVpcmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7a0JBV3dCOztBQVh4Qjs7OztBQUNBOztJQUFZOzs7Ozs7O0FBR1osU0FBUyxZQUFULENBQXNCLFFBQXRCLEVBQWdDO0FBQzlCLE1BQUksTUFBTSxxQkFBVyxRQUFYLENBQU4sQ0FEMEI7QUFFOUIsTUFBSSxRQUFKLEdBQWUsUUFBZixDQUY4QjtBQUc5QixNQUFJLEtBQUosR0FBWSxpQkFBTyxnQkFBUCxDQUF3QixLQUFLLE9BQUwsQ0FBYSxRQUFiLENBQXhCLENBQVosQ0FIOEI7QUFJOUIsU0FBTyxHQUFQLENBSjhCO0NBQWhDOztBQU9lLFNBQVMsYUFBVCxDQUF1QixDQUF2QixFQUEwQjtBQUN2QyxNQUFJOztBQUVGLFFBQU0sYUFBYSxRQUFRLE9BQVIsQ0FBZ0IsUUFBaEIsQ0FBYixDQUZKO0FBR0YsUUFBTSxlQUFlLGFBQWEsVUFBYixDQUFmLENBSEo7QUFJRixXQUFPLFFBQVEsaUJBQU8sZ0JBQVAsQ0FBd0IsQ0FBeEIsRUFBMkIsWUFBM0IsQ0FBUixDQUFQLENBSkU7R0FBSixDQUtFLE9BQU0sR0FBTixFQUFXLGNBQVg7O0FBRUYsTUFBSTs7QUFFRixXQUFPLFFBQVEsSUFBUixDQUFhLE9BQWIsQ0FBcUIsQ0FBckIsQ0FBUCxDQUZFO0dBQUosQ0FHRSxPQUFNLEdBQU4sRUFBVzs7O0FBQVgsU0FHSyxRQUFRLENBQVIsQ0FBUCxDQWR1QztDQUExQiIsImZpbGUiOiJjb3JlL21vZHVsZS1yZXF1aXJlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vZHVsZSBmcm9tICdtb2R1bGUnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5cbi8vIGJvcnJvd2VkIGZyb20gYmFiZWwtZXNsaW50XG5mdW5jdGlvbiBjcmVhdGVNb2R1bGUoZmlsZW5hbWUpIHtcbiAgdmFyIG1vZCA9IG5ldyBNb2R1bGUoZmlsZW5hbWUpXG4gIG1vZC5maWxlbmFtZSA9IGZpbGVuYW1lXG4gIG1vZC5wYXRocyA9IE1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzKHBhdGguZGlybmFtZShmaWxlbmFtZSkpXG4gIHJldHVybiBtb2Rcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kdWxlUmVxdWlyZShwKSB7XG4gIHRyeSB7XG4gICAgLy8gYXR0ZW1wdCB0byBnZXQgZXNwcmVlIHJlbGF0aXZlIHRvIGVzbGludFxuICAgIGNvbnN0IGVzbGludFBhdGggPSByZXF1aXJlLnJlc29sdmUoJ2VzbGludCcpXG4gICAgY29uc3QgZXNsaW50TW9kdWxlID0gY3JlYXRlTW9kdWxlKGVzbGludFBhdGgpXG4gICAgcmV0dXJuIHJlcXVpcmUoTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUocCwgZXNsaW50TW9kdWxlKSlcbiAgfSBjYXRjaChlcnIpIHsgLyogaWdub3JlICovIH1cblxuICB0cnkge1xuICAgIC8vIHRyeSByZWxhdGl2ZSB0byBlbnRyeSBwb2ludFxuICAgIHJldHVybiByZXF1aXJlLm1haW4ucmVxdWlyZShwKVxuICB9IGNhdGNoKGVycikgeyAvKiBpZ25vcmUgKi8gfVxuXG4gIC8vIGZpbmFsbHksIHRyeSBmcm9tIGhlcmVcbiAgcmV0dXJuIHJlcXVpcmUocClcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvbW9kdWxlLXJlcXVpcmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2tCQVd3Qjs7QUFYeEI7Ozs7QUFDQTs7SUFBWTs7Ozs7OztBQUdaLFNBQVMsWUFBVCxDQUFzQixRQUF0QixFQUFnQztBQUM5QixNQUFJLE1BQU0scUJBQVcsUUFBWCxDQUFOLENBRDBCO0FBRTlCLE1BQUksUUFBSixHQUFlLFFBQWYsQ0FGOEI7QUFHOUIsTUFBSSxLQUFKLEdBQVksaUJBQU8sZ0JBQVAsQ0FBd0IsS0FBSyxPQUFMLENBQWEsUUFBYixDQUF4QixDQUFaLENBSDhCO0FBSTlCLFNBQU8sR0FBUCxDQUo4QjtDQUFoQzs7QUFPZSxTQUFTLGFBQVQsQ0FBdUIsQ0FBdkIsRUFBMEI7QUFDdkMsTUFBSTs7QUFFRixRQUFNLGFBQWEsUUFBUSxPQUFSLENBQWdCLFFBQWhCLENBQWIsQ0FGSjtBQUdGLFFBQU0sZUFBZSxhQUFhLFVBQWIsQ0FBZixDQUhKO0FBSUYsV0FBTyxRQUFRLGlCQUFPLGdCQUFQLENBQXdCLENBQXhCLEVBQTJCLFlBQTNCLENBQVIsQ0FBUCxDQUpFO0dBQUosQ0FLRSxPQUFNLEdBQU4sRUFBVyxjQUFYOztBQUVGLE1BQUk7O0FBRUYsV0FBTyxRQUFRLElBQVIsQ0FBYSxPQUFiLENBQXFCLENBQXJCLENBQVAsQ0FGRTtHQUFKLENBR0UsT0FBTSxHQUFOLEVBQVc7OztBQUFYLFNBR0ssUUFBUSxDQUFSLENBQVAsQ0FkdUM7Q0FBMUIiLCJmaWxlIjoiY29yZS9tb2R1bGUtcmVxdWlyZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb2R1bGUgZnJvbSAnbW9kdWxlJ1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJ1xuXG4vLyBib3Jyb3dlZCBmcm9tIGJhYmVsLWVzbGludFxuZnVuY3Rpb24gY3JlYXRlTW9kdWxlKGZpbGVuYW1lKSB7XG4gIHZhciBtb2QgPSBuZXcgTW9kdWxlKGZpbGVuYW1lKVxuICBtb2QuZmlsZW5hbWUgPSBmaWxlbmFtZVxuICBtb2QucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhwYXRoLmRpcm5hbWUoZmlsZW5hbWUpKVxuICByZXR1cm4gbW9kXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vZHVsZVJlcXVpcmUocCkge1xuICB0cnkge1xuICAgIC8vIGF0dGVtcHQgdG8gZ2V0IGVzcHJlZSByZWxhdGl2ZSB0byBlc2xpbnRcbiAgICBjb25zdCBlc2xpbnRQYXRoID0gcmVxdWlyZS5yZXNvbHZlKCdlc2xpbnQnKVxuICAgIGNvbnN0IGVzbGludE1vZHVsZSA9IGNyZWF0ZU1vZHVsZShlc2xpbnRQYXRoKVxuICAgIHJldHVybiByZXF1aXJlKE1vZHVsZS5fcmVzb2x2ZUZpbGVuYW1lKHAsIGVzbGludE1vZHVsZSkpXG4gIH0gY2F0Y2goZXJyKSB7IC8qIGlnbm9yZSAqLyB9XG5cbiAgdHJ5IHtcbiAgICAvLyB0cnkgcmVsYXRpdmUgdG8gZW50cnkgcG9pbnRcbiAgICByZXR1cm4gcmVxdWlyZS5tYWluLnJlcXVpcmUocClcbiAgfSBjYXRjaChlcnIpIHsgLyogaWdub3JlICovIH1cblxuICAvLyBmaW5hbGx5LCB0cnkgZnJvbSBoZXJlXG4gIHJldHVybiByZXF1aXJlKHApXG59XG4iXX0=

@@ -1,11 +0,5 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
var _assign = require("babel-runtime/core-js/object/assign");
var _assign2 = _interopRequireDefault(_assign);
exports.default = function (content, context) {

@@ -22,4 +16,4 @@

// hack: espree blows up with frozen options
parserOptions = (0, _assign2.default)({}, parserOptions);
parserOptions.ecmaFeatures = (0, _assign2.default)({}, parserOptions.ecmaFeatures);
parserOptions = (0, _objectAssign2.default)({}, parserOptions);
parserOptions.ecmaFeatures = (0, _objectAssign2.default)({}, parserOptions.ecmaFeatures);

@@ -35,7 +29,11 @@ // always attach comments

var _moduleRequire = require("./module-require");
var _moduleRequire = require('./module-require');
var _moduleRequire2 = _interopRequireDefault(_moduleRequire);
var _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvcGFyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztrQkFFZSxVQUFVLE9BQVYsRUFBbUIsT0FBbkIsRUFBNEI7O0FBRXpDLE1BQUksV0FBVyxJQUFYLEVBQWlCLE1BQU0sSUFBSSxLQUFKLENBQVUsZ0NBQVYsQ0FBTixDQUFyQjs7TUFFTSxnQkFBOEIsUUFBOUIsY0FKbUM7TUFJcEIsYUFBZSxRQUFmLFdBSm9COzs7QUFNekMsTUFBSSxDQUFDLFVBQUQsRUFBYSxNQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU4sQ0FBakI7OztBQU55QyxlQVN6QyxHQUFnQixzQkFBYyxFQUFkLEVBQWtCLGFBQWxCLENBQWhCLENBVHlDO0FBVXpDLGdCQUFjLFlBQWQsR0FBNkIsc0JBQWMsRUFBZCxFQUFrQixjQUFjLFlBQWQsQ0FBL0M7OztBQVZ5QyxlQWF6QyxDQUFjLGFBQWQsR0FBOEIsSUFBOUI7OztBQWJ5QyxNQWdCbkMsU0FBUyw2QkFBYyxVQUFkLENBQVQsQ0FoQm1DOztBQWtCekMsU0FBTyxPQUFPLEtBQVAsQ0FBYSxPQUFiLEVBQXNCLGFBQXRCLENBQVAsQ0FsQnlDO0NBQTVCOztBQUZmIiwiZmlsZSI6ImNvcmUvcGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL21vZHVsZS1yZXF1aXJlJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY29udGVudCwgY29udGV4dCkge1xuXG4gIGlmIChjb250ZXh0ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIm5lZWQgY29udGV4dCB0byBwYXJzZSBwcm9wZXJseVwiKVxuXG4gIGxldCB7IHBhcnNlck9wdGlvbnMsIHBhcnNlclBhdGggfSA9IGNvbnRleHRcblxuICBpZiAoIXBhcnNlclBhdGgpIHRocm93IG5ldyBFcnJvcihcInBhcnNlclBhdGggaXMgcmVxdWlyZWQhXCIpXG5cbiAgLy8gaGFjazogZXNwcmVlIGJsb3dzIHVwIHdpdGggZnJvemVuIG9wdGlvbnNcbiAgcGFyc2VyT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHBhcnNlck9wdGlvbnMpXG4gIHBhcnNlck9wdGlvbnMuZWNtYUZlYXR1cmVzID0gT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VyT3B0aW9ucy5lY21hRmVhdHVyZXMpXG5cbiAgLy8gYWx3YXlzIGF0dGFjaCBjb21tZW50c1xuICBwYXJzZXJPcHRpb25zLmF0dGFjaENvbW1lbnQgPSB0cnVlXG5cbiAgLy8gcmVxdWlyZSB0aGUgcGFyc2VyIHJlbGF0aXZlIHRvIHRoZSBtYWluIG1vZHVsZSAoaS5lLiwgRVNMaW50KVxuICBjb25zdCBwYXJzZXIgPSBtb2R1bGVSZXF1aXJlKHBhcnNlclBhdGgpXG5cbiAgcmV0dXJuIHBhcnNlci5wYXJzZShjb250ZW50LCBwYXJzZXJPcHRpb25zKVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvcGFyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztrQkFHZSxVQUFVLE9BQVYsRUFBbUIsT0FBbkIsRUFBNEI7O0FBRXpDLE1BQUksV0FBVyxJQUFYLEVBQWlCLE1BQU0sSUFBSSxLQUFKLENBQVUsZ0NBQVYsQ0FBTixDQUFyQjs7TUFFTSxnQkFBOEIsUUFBOUIsY0FKbUM7TUFJcEIsYUFBZSxRQUFmLFdBSm9COzs7QUFNekMsTUFBSSxDQUFDLFVBQUQsRUFBYSxNQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU4sQ0FBakI7OztBQU55QyxlQVN6QyxHQUFnQiw0QkFBTyxFQUFQLEVBQVcsYUFBWCxDQUFoQixDQVR5QztBQVV6QyxnQkFBYyxZQUFkLEdBQTZCLDRCQUFPLEVBQVAsRUFBVyxjQUFjLFlBQWQsQ0FBeEM7OztBQVZ5QyxlQWF6QyxDQUFjLGFBQWQsR0FBOEIsSUFBOUI7OztBQWJ5QyxNQWdCbkMsU0FBUyw2QkFBYyxVQUFkLENBQVQsQ0FoQm1DOztBQWtCekMsU0FBTyxPQUFPLEtBQVAsQ0FBYSxPQUFiLEVBQXNCLGFBQXRCLENBQVAsQ0FsQnlDO0NBQTVCOztBQUhmOzs7O0FBQ0EiLCJmaWxlIjoiY29yZS9wYXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2R1bGVSZXF1aXJlIGZyb20gJy4vbW9kdWxlLXJlcXVpcmUnXG5pbXBvcnQgYXNzaWduIGZyb20gJ29iamVjdC1hc3NpZ24nXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChjb250ZW50LCBjb250ZXh0KSB7XG5cbiAgaWYgKGNvbnRleHQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwibmVlZCBjb250ZXh0IHRvIHBhcnNlIHByb3Blcmx5XCIpXG5cbiAgbGV0IHsgcGFyc2VyT3B0aW9ucywgcGFyc2VyUGF0aCB9ID0gY29udGV4dFxuXG4gIGlmICghcGFyc2VyUGF0aCkgdGhyb3cgbmV3IEVycm9yKFwicGFyc2VyUGF0aCBpcyByZXF1aXJlZCFcIilcblxuICAvLyBoYWNrOiBlc3ByZWUgYmxvd3MgdXAgd2l0aCBmcm96ZW4gb3B0aW9uc1xuICBwYXJzZXJPcHRpb25zID0gYXNzaWduKHt9LCBwYXJzZXJPcHRpb25zKVxuICBwYXJzZXJPcHRpb25zLmVjbWFGZWF0dXJlcyA9IGFzc2lnbih7fSwgcGFyc2VyT3B0aW9ucy5lY21hRmVhdHVyZXMpXG5cbiAgLy8gYWx3YXlzIGF0dGFjaCBjb21tZW50c1xuICBwYXJzZXJPcHRpb25zLmF0dGFjaENvbW1lbnQgPSB0cnVlXG5cbiAgLy8gcmVxdWlyZSB0aGUgcGFyc2VyIHJlbGF0aXZlIHRvIHRoZSBtYWluIG1vZHVsZSAoaS5lLiwgRVNMaW50KVxuICBjb25zdCBwYXJzZXIgPSBtb2R1bGVSZXF1aXJlKHBhcnNlclBhdGgpXG5cbiAgcmV0dXJuIHBhcnNlci5wYXJzZShjb250ZW50LCBwYXJzZXJPcHRpb25zKVxufVxuIl19
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
exports.CASE_INSENSITIVE = undefined;
var _stringify = require('babel-runtime/core-js/json/stringify');
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _stringify2 = _interopRequireDefault(_stringify);
exports.relative = relative;
exports.default = resolve;
var _typeof2 = require('babel-runtime/helpers/typeof');
require('es6-symbol/implement');
var _typeof3 = _interopRequireDefault(_typeof2);
var _es6Map = require('es6-map');
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _es6Map2 = _interopRequireDefault(_es6Map);
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _objectAssign = require('object-assign');
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
exports.relative = relative;
exports.default = resolve;
var _fs = require('fs');

@@ -47,3 +33,3 @@

var fileExistsCache = new _map2.default();
var fileExistsCache = new _es6Map2.default();

@@ -97,3 +83,3 @@ function cachePath(cacheKey, result) {

var cacheSettings = (0, _assign2.default)({
var cacheSettings = (0, _objectAssign2.default)({
lifetime: 30 }, // seconds

@@ -116,13 +102,25 @@ settings['import/cache']);

function withResolver(resolver, config) {
try {
var filePath = resolver.resolveImport(modulePath, sourceFile, config);
if (filePath == null) return filePath;
// resolvers imply file existence, this double-check just ensures the case matches
if (CASE_INSENSITIVE && !fileExistsWithCaseSync(filePath, cacheSettings)) return undefined;
function v1() {
try {
var path = resolver.resolveImport(modulePath, sourceFile, config);
if (path === undefined) return { found: false };
return { found: true, path: path };
} catch (err) {
return { found: false };
}
}
return filePath;
} catch (err) {
return undefined;
function v2() {
return resolver.resolve(modulePath, sourceFile, config);
}
switch (resolver.interfaceVersion) {
case 2:
return v2();
default:
case 1:
return v1();
}
}

@@ -132,35 +130,35 @@

var resolvers = resolverReducer(configResolvers, new _map2.default());
var resolvers = resolverReducer(configResolvers, new _es6Map2.default());
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
for (var _iterator = resolvers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref2;
try {
for (var _iterator = (0, _getIterator3.default)(resolvers.entries()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = (0, _slicedToArray3.default)(_step.value, 2);
if (_isArray) {
if (_i >= _iterator.length) break;
_ref2 = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref2 = _i.value;
}
var name = _step$value[0];
var config = _step$value[1];
var _ref3 = _ref2;
var name = _ref3[0];
var config = _ref3[1];
var resolver = require('eslint-import-resolver-' + name);
var resolver = require('eslint-import-resolver-' + name);
var fullPath = withResolver(resolver, config);
if (fullPath !== undefined) {
return cache(fullPath);
}
var _withResolver = withResolver(resolver, config);
var fullPath = _withResolver.path;
var found = _withResolver.found;
// resolvers imply file existence, this double-check just ensures the case matches
if (found && CASE_INSENSITIVE && !fileExistsWithCaseSync(fullPath, cacheSettings)) {
// reject resolved path
fullPath = undefined;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
if (found) return cache(fullPath);
}

@@ -184,3 +182,3 @@

if ((typeof resolvers === 'undefined' ? 'undefined' : (0, _typeof3.default)(resolvers)) === 'object') {
if ((typeof resolvers === 'undefined' ? 'undefined' : _typeof(resolvers)) === 'object') {
for (var key in resolvers) {

@@ -210,5 +208,5 @@ map.set(key, resolvers[key]);

var settingsShasum = (0, _crypto.createHash)('sha1');
settingsShasum.update((0, _stringify2.default)(object));
settingsShasum.update(JSON.stringify(object));
return settingsShasum.digest('hex');
}
//# sourceMappingURL=data:application/json;base64,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LENBRmlDO0dBQW5DOztBQUtBLE1BQUksUUFBTywyRUFBUCxLQUFxQixRQUFyQixFQUErQjtBQUNqQyxTQUFLLElBQUksR0FBSixJQUFXLFNBQWhCLEVBQTJCO0FBQ3pCLFVBQUksR0FBSixDQUFRLEdBQVIsRUFBYSxVQUFVLEdBQVYsQ0FBYixFQUR5QjtLQUEzQjtBQUdBLFdBQU8sR0FBUCxDQUppQztHQUFuQzs7QUFPQSxRQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU4sQ0FsQnVDO0NBQXpDOzs7Ozs7Ozs7O0FBNkJlLFNBQVMsT0FBVCxDQUFpQixDQUFqQixFQUFvQixPQUFwQixFQUE2QjtBQUMxQyxTQUFPLFNBQVUsQ0FBVixFQUNVLFFBQVEsV0FBUixFQURWLEVBRVUsUUFBUSxRQUFSLENBRmpCLENBRDBDO0NBQTdCO0FBTWYsUUFBUSxRQUFSLEdBQW1CLFFBQW5COztBQUlBLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUE0QjtBQUMxQixNQUFNLGlCQUFpQix3QkFBVyxNQUFYLENBQWpCLENBRG9CO0FBRTFCLGlCQUFlLE1BQWYsQ0FBc0IseUJBQWUsTUFBZixDQUF0QixFQUYwQjtBQUcxQixTQUFPLGVBQWUsTUFBZixDQUFzQixLQUF0QixDQUFQLENBSDBCO0NBQTVCIiwiZmlsZSI6ImNvcmUvcmVzb2x2ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCB7IGRpcm5hbWUsIGJhc2VuYW1lLCBqb2luIH0gZnJvbSAncGF0aCdcblxuZXhwb3J0IGNvbnN0IENBU0VfSU5TRU5TSVRJVkUgPSBmcy5leGlzdHNTeW5jKGpvaW4oX19kaXJuYW1lLCAncmVTT0xWRS5qcycpKVxuXG5jb25zdCBmaWxlRXhpc3RzQ2FjaGUgPSBuZXcgTWFwKClcblxuZnVuY3Rpb24gY2FjaGVQYXRoKGNhY2hlS2V5LCByZXN1bHQpIHtcbiAgZmlsZUV4aXN0c0NhY2hlLnNldChjYWNoZUtleSwgeyByZXN1bHQsIGxhc3RTZWVuOiBEYXRlLm5vdygpIH0pXG59XG5cbmZ1bmN0aW9uIGNoZWNrQ2FjaGUoY2FjaGVLZXksIHsgbGlmZXRpbWUgfSkge1xuICBpZiAoZmlsZUV4aXN0c0NhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICBjb25zdCB7IHJlc3VsdCwgbGFzdFNlZW4gfSA9IGZpbGVFeGlzdHNDYWNoZS5nZXQoY2FjaGVLZXkpXG4gICAgLy8gY2hlY2sgZnJlc25lc3NcbiAgICBpZiAoRGF0ZS5ub3coKSAtIGxhc3RTZWVuIDwgKGxpZmV0aW1lICogMTAwMCkpIHJldHVybiByZXN1bHRcbiAgfVxuICAvLyBjYWNoZSBtaXNzXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjczODI4MzhcbmZ1bmN0aW9uIGZpbGVFeGlzdHNXaXRoQ2FzZVN5bmMoZmlsZXBhdGgsIGNhY2hlU2V0dGluZ3MpIHtcbiAgY29uc3QgZGlyID0gZGlybmFtZShmaWxlcGF0aClcblxuICBsZXQgcmVzdWx0ID0gY2hlY2tDYWNoZShmaWxlcGF0aCwgY2FjaGVTZXR0aW5ncylcbiAgaWYgKHJlc3VsdCAhPSBudWxsKSByZXR1cm4gcmVzdWx0XG5cbiAgLy8gYmFzZSBjYXNlXG4gIGlmIChkaXIgPT09ICcvJyB8fCBkaXIgPT09ICcuJyB8fCAvXltBLVpdOlxcXFwkL2kudGVzdChkaXIpKSB7XG4gICAgcmVzdWx0ID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGZpbGVuYW1lcyA9IGZzLnJlYWRkaXJTeW5jKGRpcilcbiAgICBpZiAoZmlsZW5hbWVzLmluZGV4T2YoYmFzZW5hbWUoZmlsZXBhdGgpKSA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGZpbGVFeGlzdHNXaXRoQ2FzZVN5bmMoZGlyLCBjYWNoZVNldHRpbmdzKVxuICAgIH1cbiAgfVxuICBjYWNoZVBhdGgoZmlsZXBhdGgsIHJlc3VsdClcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUobW9kdWxlUGF0aCwgc291cmNlRmlsZSwgc2V0dGluZ3MpIHtcblxuICBjb25zdCBzb3VyY2VEaXIgPSBkaXJuYW1lKHNvdXJjZUZpbGUpXG4gICAgICAsIGNhY2hlS2V5ID0gc291cmNlRGlyICsgaGFzaE9iamVjdChzZXR0aW5ncykgKyBtb2R1bGVQYXRoXG5cbiAgY29uc3QgY2FjaGVTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIGxpZmV0aW1lOiAzMCwgIC8vIHNlY29uZHNcbiAgfSwgc2V0dGluZ3NbJ2ltcG9ydC9jYWNoZSddKVxuXG4gIC8vIHBhcnNlIGluZmluaXR5XG4gIGlmIChjYWNoZVNldHRpbmdzLmxpZmV0aW1lID09PSAn4oieJyB8fCBjYWNoZVNldHRpbmdzLmxpZmV0aW1lID09PSAnSW5maW5pdHknKSB7XG4gICAgY2FjaGVTZXR0aW5ncy5saWZldGltZSA9IEluZmluaXR5XG4gIH1cblxuICBjb25zdCBjYWNoZWRQYXRoID0gY2hlY2tDYWNoZShjYWNoZUtleSwgY2FjaGVTZXR0aW5ncylcbiAgaWYgKGNhY2hlZFBhdGggIT09IHVuZGVmaW5lZCkgcmV0dXJuIGNhY2hlZFBhdGhcblxuICBmdW5jdGlvbiBjYWNoZShwYXRoKSB7XG4gICAgY2FjaGVQYXRoKGNhY2hlS2V5LCBwYXRoKVxuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiB3aXRoUmVzb2x2ZXIocmVzb2x2ZXIsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IHJlc29sdmVyLnJlc29sdmVJbXBvcnQobW9kdWxlUGF0aCwgc291cmNlRmlsZSwgY29uZmlnKVxuICAgICAgaWYgKGZpbGVQYXRoID09IG51bGwpIHJldHVybiBmaWxlUGF0aFxuXG4gICAgICAvLyByZXNvbHZlcnMgaW1wbHkgZmlsZSBleGlzdGVuY2UsIHRoaXMgZG91YmxlLWNoZWNrIGp1c3QgZW5zdXJlcyB0aGUgY2FzZSBtYXRjaGVzXG4gICAgICBpZiAoQ0FTRV9JTlNFTlNJVElWRSAmJiAhZmlsZUV4aXN0c1dpdGhDYXNlU3luYyhmaWxlUGF0aCwgY2FjaGVTZXR0aW5ncykpIHJldHVybiB1bmRlZmluZWRcblxuICAgICAgcmV0dXJuIGZpbGVQYXRoXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29uZmlnUmVzb2x2ZXJzID0gKHNldHRpbmdzWydpbXBvcnQvcmVzb2x2ZXInXVxuICAgIHx8IHsgJ25vZGUnOiBzZXR0aW5nc1snaW1wb3J0L3Jlc29sdmUnXSB9KSAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5cbiAgY29uc3QgcmVzb2x2ZXJzID0gcmVzb2x2ZXJSZWR1Y2VyKGNvbmZpZ1Jlc29sdmVycywgbmV3IE1hcCgpKVxuXG4gIGZvciAobGV0IFtuYW1lLCBjb25maWddIG9mIHJlc29sdmVycy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCByZXNvbHZlciA9IHJlcXVpcmUoYGVzbGludC1pbXBvcnQtcmVzb2x2ZXItJHtuYW1lfWApXG5cbiAgICBsZXQgZnVsbFBhdGggPSB3aXRoUmVzb2x2ZXIocmVzb2x2ZXIsIGNvbmZpZylcbiAgICBpZiAoZnVsbFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlKGZ1bGxQYXRoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYWNoZSh1bmRlZmluZWQpXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVyUmVkdWNlcihyZXNvbHZlcnMsIG1hcCkge1xuICBpZiAocmVzb2x2ZXJzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXNvbHZlcnMuZm9yRWFjaChyID0+IHJlc29sdmVyUmVkdWNlcihyLCBtYXApKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVzb2x2ZXJzID09PSAnc3RyaW5nJykge1xuICAgIG1hcC5zZXQocmVzb2x2ZXJzLCBudWxsKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVzb2x2ZXJzID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAobGV0IGtleSBpbiByZXNvbHZlcnMpIHtcbiAgICAgIG1hcC5zZXQoa2V5LCByZXNvbHZlcnNba2V5XSlcbiAgICB9XG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlc29sdmVyIGNvbmZpZycpXG59XG5cbi8qKlxuICogR2l2ZW50XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHAgLSBtb2R1bGUgcGF0aFxuICogQHBhcmFtICB7b2JqZWN0fSBjb250ZXh0IC0gRVNMaW50IGNvbnRleHRcbiAqIEByZXR1cm4ge3N0cmluZ30gLSB0aGUgZnVsbCBtb2R1bGUgZmlsZXN5c3RlbSBwYXRoO1xuICogICAgICAgICAgICAgICAgICAgIG51bGwgaWYgcGFja2FnZSBpcyBjb3JlO1xuICogICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZShwLCBjb250ZXh0KSB7XG4gIHJldHVybiByZWxhdGl2ZSggcFxuICAgICAgICAgICAgICAgICAsIGNvbnRleHQuZ2V0RmlsZW5hbWUoKVxuICAgICAgICAgICAgICAgICAsIGNvbnRleHQuc2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgKVxufVxucmVzb2x2ZS5yZWxhdGl2ZSA9IHJlbGF0aXZlXG5cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmZ1bmN0aW9uIGhhc2hPYmplY3Qob2JqZWN0KSB7XG4gIGNvbnN0IHNldHRpbmdzU2hhc3VtID0gY3JlYXRlSGFzaCgnc2hhMScpXG4gIHNldHRpbmdzU2hhc3VtLnVwZGF0ZShKU09OLnN0cmluZ2lmeShvYmplY3QpKVxuICByZXR1cm4gc2V0dGluZ3NTaGFzdW0uZGlnZXN0KCdoZXgnKVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,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aW1wbGVtZW50J1xuaW1wb3J0IE1hcCBmcm9tICdlczYtbWFwJ1xuaW1wb3J0IGFzc2lnbiBmcm9tICdvYmplY3QtYXNzaWduJ1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgeyBkaXJuYW1lLCBiYXNlbmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnXG5cbmV4cG9ydCBjb25zdCBDQVNFX0lOU0VOU0lUSVZFID0gZnMuZXhpc3RzU3luYyhqb2luKF9fZGlybmFtZSwgJ3JlU09MVkUuanMnKSlcblxuY29uc3QgZmlsZUV4aXN0c0NhY2hlID0gbmV3IE1hcCgpXG5cbmZ1bmN0aW9uIGNhY2hlUGF0aChjYWNoZUtleSwgcmVzdWx0KSB7XG4gIGZpbGVFeGlzdHNDYWNoZS5zZXQoY2FjaGVLZXksIHsgcmVzdWx0LCBsYXN0U2VlbjogRGF0ZS5ub3coKSB9KVxufVxuXG5mdW5jdGlvbiBjaGVja0NhY2hlKGNhY2hlS2V5LCB7IGxpZmV0aW1lIH0pIHtcbiAgaWYgKGZpbGVFeGlzdHNDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgY29uc3QgeyByZXN1bHQsIGxhc3RTZWVuIH0gPSBmaWxlRXhpc3RzQ2FjaGUuZ2V0KGNhY2hlS2V5KVxuICAgIC8vIGNoZWNrIGZyZXNuZXNzXG4gICAgaWYgKERhdGUubm93KCkgLSBsYXN0U2VlbiA8IChsaWZldGltZSAqIDEwMDApKSByZXR1cm4gcmVzdWx0XG4gIH1cbiAgLy8gY2FjaGUgbWlzc1xuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI3MzgyODM4XG5mdW5jdGlvbiBmaWxlRXhpc3RzV2l0aENhc2VTeW5jKGZpbGVwYXRoLCBjYWNoZVNldHRpbmdzKSB7XG4gIGNvbnN0IGRpciA9IGRpcm5hbWUoZmlsZXBhdGgpXG5cbiAgbGV0IHJlc3VsdCA9IGNoZWNrQ2FjaGUoZmlsZXBhdGgsIGNhY2hlU2V0dGluZ3MpXG4gIGlmIChyZXN1bHQgIT0gbnVsbCkgcmV0dXJuIHJlc3VsdFxuXG4gIC8vIGJhc2UgY2FzZVxuICBpZiAoZGlyID09PSAnLycgfHwgZGlyID09PSAnLicgfHwgL15bQS1aXTpcXFxcJC9pLnRlc3QoZGlyKSkge1xuICAgIHJlc3VsdCA9IHRydWVcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmaWxlbmFtZXMgPSBmcy5yZWFkZGlyU3luYyhkaXIpXG4gICAgaWYgKGZpbGVuYW1lcy5pbmRleE9mKGJhc2VuYW1lKGZpbGVwYXRoKSkgPT09IC0xKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBmaWxlRXhpc3RzV2l0aENhc2VTeW5jKGRpciwgY2FjaGVTZXR0aW5ncylcbiAgICB9XG4gIH1cbiAgY2FjaGVQYXRoKGZpbGVwYXRoLCByZXN1bHQpXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKG1vZHVsZVBhdGgsIHNvdXJjZUZpbGUsIHNldHRpbmdzKSB7XG5cbiAgY29uc3Qgc291cmNlRGlyID0gZGlybmFtZShzb3VyY2VGaWxlKVxuICAgICAgLCBjYWNoZUtleSA9IHNvdXJjZURpciArIGhhc2hPYmplY3Qoc2V0dGluZ3MpICsgbW9kdWxlUGF0aFxuXG4gIGNvbnN0IGNhY2hlU2V0dGluZ3MgPSBhc3NpZ24oe1xuICAgIGxpZmV0aW1lOiAzMCwgIC8vIHNlY29uZHNcbiAgfSwgc2V0dGluZ3NbJ2ltcG9ydC9jYWNoZSddKVxuXG4gIC8vIHBhcnNlIGluZmluaXR5XG4gIGlmIChjYWNoZVNldHRpbmdzLmxpZmV0aW1lID09PSAn4oieJyB8fCBjYWNoZVNldHRpbmdzLmxpZmV0aW1lID09PSAnSW5maW5pdHknKSB7XG4gICAgY2FjaGVTZXR0aW5ncy5saWZldGltZSA9IEluZmluaXR5XG4gIH1cblxuICBjb25zdCBjYWNoZWRQYXRoID0gY2hlY2tDYWNoZShjYWNoZUtleSwgY2FjaGVTZXR0aW5ncylcbiAgaWYgKGNhY2hlZFBhdGggIT09IHVuZGVmaW5lZCkgcmV0dXJuIGNhY2hlZFBhdGhcblxuICBmdW5jdGlvbiBjYWNoZShwYXRoKSB7XG4gICAgY2FjaGVQYXRoKGNhY2hlS2V5LCBwYXRoKVxuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiB3aXRoUmVzb2x2ZXIocmVzb2x2ZXIsIGNvbmZpZykge1xuXG4gICAgZnVuY3Rpb24gdjEoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXRoID0gcmVzb2x2ZXIucmVzb2x2ZUltcG9ydChtb2R1bGVQYXRoLCBzb3VyY2VGaWxlLCBjb25maWcpXG4gICAgICAgIGlmIChwYXRoID09PSB1bmRlZmluZWQpIHJldHVybiB7IGZvdW5kOiBmYWxzZSB9XG4gICAgICAgIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4geyBmb3VuZDogZmFsc2UgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHYyKCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVyLnJlc29sdmUobW9kdWxlUGF0aCwgc291cmNlRmlsZSwgY29uZmlnKVxuICAgIH1cblxuICAgIHN3aXRjaCAocmVzb2x2ZXIuaW50ZXJmYWNlVmVyc2lvbikge1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gdjIoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gdjEoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1Jlc29sdmVycyA9IChzZXR0aW5nc1snaW1wb3J0L3Jlc29sdmVyJ11cbiAgICB8fCB7ICdub2RlJzogc2V0dGluZ3NbJ2ltcG9ydC9yZXNvbHZlJ10gfSkgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuXG4gIGNvbnN0IHJlc29sdmVycyA9IHJlc29sdmVyUmVkdWNlcihjb25maWdSZXNvbHZlcnMsIG5ldyBNYXAoKSlcblxuICBmb3IgKGxldCBbbmFtZSwgY29uZmlnXSBvZiByZXNvbHZlcnMpIHtcbiAgICBjb25zdCByZXNvbHZlciA9IHJlcXVpcmUoYGVzbGludC1pbXBvcnQtcmVzb2x2ZXItJHtuYW1lfWApXG5cbiAgICBsZXQgeyBwYXRoOiBmdWxsUGF0aCwgZm91bmQgfSA9IHdpdGhSZXNvbHZlcihyZXNvbHZlciwgY29uZmlnKVxuXG4gICAgLy8gcmVzb2x2ZXJzIGltcGx5IGZpbGUgZXhpc3RlbmNlLCB0aGlzIGRvdWJsZS1jaGVjayBqdXN0IGVuc3VyZXMgdGhlIGNhc2UgbWF0Y2hlc1xuICAgIGlmIChmb3VuZCAmJiBDQVNFX0lOU0VOU0lUSVZFICYmICFmaWxlRXhpc3RzV2l0aENhc2VTeW5jKGZ1bGxQYXRoLCBjYWNoZVNldHRpbmdzKSkge1xuICAgICAgLy8gcmVqZWN0IHJlc29sdmVkIHBhdGhcbiAgICAgIGZ1bGxQYXRoID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gY2FjaGUoZnVsbFBhdGgpXG4gIH1cblxuICByZXR1cm4gY2FjaGUodW5kZWZpbmVkKVxufVxuXG5mdW5jdGlvbiByZXNvbHZlclJlZHVjZXIocmVzb2x2ZXJzLCBtYXApIHtcbiAgaWYgKHJlc29sdmVycyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgcmVzb2x2ZXJzLmZvckVhY2gociA9PiByZXNvbHZlclJlZHVjZXIociwgbWFwKSlcbiAgICByZXR1cm4gbWFwXG4gIH1cblxuICBpZiAodHlwZW9mIHJlc29sdmVycyA9PT0gJ3N0cmluZycpIHtcbiAgICBtYXAuc2V0KHJlc29sdmVycywgbnVsbClcbiAgICByZXR1cm4gbWFwXG4gIH1cblxuICBpZiAodHlwZW9mIHJlc29sdmVycyA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gcmVzb2x2ZXJzKSB7XG4gICAgICBtYXAuc2V0KGtleSwgcmVzb2x2ZXJzW2tleV0pXG4gICAgfVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByZXNvbHZlciBjb25maWcnKVxufVxuXG4vKipcbiAqIEdpdmVudFxuICogQHBhcmFtICB7c3RyaW5nfSBwIC0gbW9kdWxlIHBhdGhcbiAqIEBwYXJhbSAge29iamVjdH0gY29udGV4dCAtIEVTTGludCBjb250ZXh0XG4gKiBAcmV0dXJuIHtzdHJpbmd9IC0gdGhlIGZ1bGwgbW9kdWxlIGZpbGVzeXN0ZW0gcGF0aDtcbiAqICAgICAgICAgICAgICAgICAgICBudWxsIGlmIHBhY2thZ2UgaXMgY29yZTtcbiAqICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmUocCwgY29udGV4dCkge1xuICByZXR1cm4gcmVsYXRpdmUoIHBcbiAgICAgICAgICAgICAgICAgLCBjb250ZXh0LmdldEZpbGVuYW1lKClcbiAgICAgICAgICAgICAgICAgLCBjb250ZXh0LnNldHRpbmdzXG4gICAgICAgICAgICAgICAgIClcbn1cbnJlc29sdmUucmVsYXRpdmUgPSByZWxhdGl2ZVxuXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nXG5mdW5jdGlvbiBoYXNoT2JqZWN0KG9iamVjdCkge1xuICBjb25zdCBzZXR0aW5nc1NoYXN1bSA9IGNyZWF0ZUhhc2goJ3NoYTEnKVxuICBzZXR0aW5nc1NoYXN1bS51cGRhdGUoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSlcbiAgcmV0dXJuIHNldHRpbmdzU2hhc3VtLmRpZ2VzdCgnaGV4Jylcbn1cbiJdfQ==
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.__esModule = true;
var rules = exports.rules = {

@@ -31,2 +29,2 @@ 'no-unresolved': require('./rules/no-unresolved'),

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTSx3QkFBUTtBQUNuQixtQkFBaUIsUUFBUSx1QkFBUixDQUFqQjtBQUNBLFdBQVMsUUFBUSxlQUFSLENBQVQ7QUFDQSxhQUFXLFFBQVEsaUJBQVIsQ0FBWDtBQUNBLGVBQWEsUUFBUSxtQkFBUixDQUFiO0FBQ0EsWUFBVSxRQUFRLGdCQUFSLENBQVY7O0FBRUEseUJBQXVCLFFBQVEsNkJBQVIsQ0FBdkI7O0FBRUEsaUJBQWUsUUFBUSxxQkFBUixDQUFmO0FBQ0EsWUFBVSxRQUFRLGdCQUFSLENBQVY7QUFDQSxtQkFBaUIsUUFBUSx1QkFBUixDQUFqQjtBQUNBLG1CQUFpQixRQUFRLHVCQUFSLENBQWpCOzs7QUFHQSxtQkFBaUIsUUFBUSx1QkFBUixDQUFqQjtDQWZXOztBQWtCTixJQUFNLDRCQUFVO0FBQ3JCLFlBQVUsUUFBUSxrQkFBUixDQUFWO0FBQ0EsY0FBWSxRQUFRLG9CQUFSLENBQVo7OztBQUdBLGFBQVcsUUFBUSxtQkFBUixDQUFYO0NBTFciLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcnVsZXMgPSB7XG4gICduby11bnJlc29sdmVkJzogcmVxdWlyZSgnLi9ydWxlcy9uby11bnJlc29sdmVkJyksXG4gICduYW1lZCc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZWQnKSxcbiAgJ2RlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL2RlZmF1bHQnKSxcbiAgJ25hbWVzcGFjZSc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZXNwYWNlJyksXG4gICdleHBvcnQnOiByZXF1aXJlKCcuL3J1bGVzL2V4cG9ydCcpLFxuXG4gICduby1uYW1lZC1hcy1kZWZhdWx0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1uYW1lZC1hcy1kZWZhdWx0JyksXG5cbiAgJ25vLWNvbW1vbmpzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1jb21tb25qcycpLFxuICAnbm8tYW1kJzogcmVxdWlyZSgnLi9ydWxlcy9uby1hbWQnKSxcbiAgJ25vLWR1cGxpY2F0ZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLWR1cGxpY2F0ZXMnKSxcbiAgJ2ltcG9ydHMtZmlyc3QnOiByZXF1aXJlKCcuL3J1bGVzL2ltcG9ydHMtZmlyc3QnKSxcblxuICAvLyBtZXRhZGF0YS1iYXNlZFxuICAnbm8tZGVwcmVjYXRlZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tZGVwcmVjYXRlZCcpLFxufVxuXG5leHBvcnQgY29uc3QgY29uZmlncyA9IHtcbiAgJ2Vycm9ycyc6IHJlcXVpcmUoJy4uL2NvbmZpZy9lcnJvcnMnKSxcbiAgJ3dhcm5pbmdzJzogcmVxdWlyZSgnLi4vY29uZmlnL3dhcm5pbmdzJyksXG5cbiAgLy8gc2hoaGguLi4gd29yayBpbiBwcm9ncmVzcyBcInNlY3JldFwiIHJ1bGVzXG4gICdzdGFnZS0wJzogcmVxdWlyZSgnLi4vY29uZmlnL3N0YWdlLTAnKSxcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFPLElBQU0sd0JBQVE7QUFDbkIsbUJBQWlCLFFBQVEsdUJBQVIsQ0FBakI7QUFDQSxXQUFTLFFBQVEsZUFBUixDQUFUO0FBQ0EsYUFBVyxRQUFRLGlCQUFSLENBQVg7QUFDQSxlQUFhLFFBQVEsbUJBQVIsQ0FBYjtBQUNBLFlBQVUsUUFBUSxnQkFBUixDQUFWOztBQUVBLHlCQUF1QixRQUFRLDZCQUFSLENBQXZCOztBQUVBLGlCQUFlLFFBQVEscUJBQVIsQ0FBZjtBQUNBLFlBQVUsUUFBUSxnQkFBUixDQUFWO0FBQ0EsbUJBQWlCLFFBQVEsdUJBQVIsQ0FBakI7QUFDQSxtQkFBaUIsUUFBUSx1QkFBUixDQUFqQjs7O0FBR0EsbUJBQWlCLFFBQVEsdUJBQVIsQ0FBakI7Q0FmVzs7QUFrQk4sSUFBTSw0QkFBVTtBQUNyQixZQUFVLFFBQVEsa0JBQVIsQ0FBVjtBQUNBLGNBQVksUUFBUSxvQkFBUixDQUFaOzs7QUFHQSxhQUFXLFFBQVEsbUJBQVIsQ0FBWDtDQUxXIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJ1bGVzID0ge1xuICAnbm8tdW5yZXNvbHZlZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdW5yZXNvbHZlZCcpLFxuICAnbmFtZWQnOiByZXF1aXJlKCcuL3J1bGVzL25hbWVkJyksXG4gICdkZWZhdWx0JzogcmVxdWlyZSgnLi9ydWxlcy9kZWZhdWx0JyksXG4gICduYW1lc3BhY2UnOiByZXF1aXJlKCcuL3J1bGVzL25hbWVzcGFjZScpLFxuICAnZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9leHBvcnQnKSxcblxuICAnbm8tbmFtZWQtYXMtZGVmYXVsdCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbmFtZWQtYXMtZGVmYXVsdCcpLFxuXG4gICduby1jb21tb25qcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY29tbW9uanMnKSxcbiAgJ25vLWFtZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tYW1kJyksXG4gICduby1kdXBsaWNhdGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1kdXBsaWNhdGVzJyksXG4gICdpbXBvcnRzLWZpcnN0JzogcmVxdWlyZSgnLi9ydWxlcy9pbXBvcnRzLWZpcnN0JyksXG5cbiAgLy8gbWV0YWRhdGEtYmFzZWRcbiAgJ25vLWRlcHJlY2F0ZWQnOiByZXF1aXJlKCcuL3J1bGVzL25vLWRlcHJlY2F0ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IGNvbmZpZ3MgPSB7XG4gICdlcnJvcnMnOiByZXF1aXJlKCcuLi9jb25maWcvZXJyb3JzJyksXG4gICd3YXJuaW5ncyc6IHJlcXVpcmUoJy4uL2NvbmZpZy93YXJuaW5ncycpLFxuXG4gIC8vIHNoaGhoLi4uIHdvcmsgaW4gcHJvZ3Jlc3MgXCJzZWNyZXRcIiBydWxlc1xuICAnc3RhZ2UtMCc6IHJlcXVpcmUoJy4uL2NvbmZpZy9zdGFnZS0wJyksXG59XG4iXX0=
'use strict';
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
require('es6-symbol/implement');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _es6Map = require('es6-map');
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _es6Map2 = _interopRequireDefault(_es6Map);
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _es6Set = require('es6-set');
var _set = require('babel-runtime/core-js/set');
var _es6Set2 = _interopRequireDefault(_es6Set);
var _set2 = _interopRequireDefault(_set);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
var _getExports = require('../core/getExports');

@@ -26,3 +20,3 @@

module.exports = function (context) {
var named = new _map2.default();
var named = new _es6Map2.default();

@@ -33,3 +27,3 @@ function addNamed(name, node) {

if (nodes == null) {
nodes = new _set2.default();
nodes = new _es6Set2.default();
named.set(name, nodes);

@@ -58,27 +52,19 @@ }

if (node.declaration.declarations != null) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
for (var _iterator = node.declaration.declarations, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
try {
for (var _iterator = (0, _getIterator3.default)(node.declaration.declarations), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var declaration = _step.value;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
(0, _getExports.recursivePatternCapture)(declaration.id, function (v) {
return addNamed(v.name, v);
});
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
var declaration = _ref;
(0, _getExports.recursivePatternCapture)(declaration.id, function (v) {
return addNamed(v.name, v);
});
}

@@ -109,55 +95,38 @@ }

'Program:exit': function ProgramExit() {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
for (var _iterator2 = named, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
try {
for (var _iterator2 = (0, _getIterator3.default)(named), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _step2$value = (0, _slicedToArray3.default)(_step2.value, 2);
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var name = _step2$value[0];
var nodes = _step2$value[1];
var _ref3 = _ref2;
var name = _ref3[0];
var nodes = _ref3[1];
if (nodes.size <= 1) continue;
if (nodes.size <= 1) continue;
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref4;
try {
for (var _iterator3 = (0, _getIterator3.default)(nodes), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var node = _step3.value;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref4 = _iterator3[_i3++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref4 = _i3.value;
}
if (name === 'default') {
context.report(node, 'Multiple default exports.');
} else context.report(node, 'Multiple exports of name \'' + name + '\'.');
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
var node = _ref4;
if (name === 'default') {
context.report(node, 'Multiple default exports.');
} else context.report(node, 'Multiple exports of name \'' + name + '\'.');
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}

@@ -167,2 +136,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,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QUF4QixNQUVPLFFBQVEsTUFBUixDQUFlLElBQWYsa0NBQWtELFlBQWxELEVBRlA7YUFERjs7Ozs7Ozs7Ozs7Ozs7V0FIK0I7U0FBakM7Ozs7Ozs7Ozs7Ozs7O09BRDBCO0tBQVo7R0F4Q2xCLENBZGtDO0NBQW5CIiwiZmlsZSI6InJ1bGVzL2V4cG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHBvcnRNYXAsIHsgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUgfSBmcm9tICcuLi9jb3JlL2dldEV4cG9ydHMnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZWQgPSBuZXcgTWFwKClcblxuICBmdW5jdGlvbiBhZGROYW1lZChuYW1lLCBub2RlKSB7XG4gICAgbGV0IG5vZGVzID0gbmFtZWQuZ2V0KG5hbWUpXG5cbiAgICBpZiAobm9kZXMgPT0gbnVsbCkge1xuICAgICAgbm9kZXMgPSBuZXcgU2V0KClcbiAgICAgIG5hbWVkLnNldChuYW1lLCBub2RlcylcbiAgICB9XG5cbiAgICBub2Rlcy5hZGQobm9kZSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic6IChub2RlKSA9PiBhZGROYW1lZCgnZGVmYXVsdCcsIG5vZGUpLFxuXG4gICAgJ0V4cG9ydFNwZWNpZmllcic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBhZGROYW1lZChub2RlLmV4cG9ydGVkLm5hbWUsIG5vZGUuZXhwb3J0ZWQpXG4gICAgfSxcblxuICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLmRlY2xhcmF0aW9uID09IG51bGwpIHJldHVyblxuXG4gICAgICBpZiAobm9kZS5kZWNsYXJhdGlvbi5pZCAhPSBudWxsKSB7XG4gICAgICAgIGFkZE5hbWVkKG5vZGUuZGVjbGFyYXRpb24uaWQubmFtZSwgbm9kZS5kZWNsYXJhdGlvbi5pZClcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zICE9IG51bGwpIHtcbiAgICAgICAgZm9yIChsZXQgZGVjbGFyYXRpb24gb2Ygbm9kZS5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShkZWNsYXJhdGlvbi5pZCwgdiA9PiBhZGROYW1lZCh2Lm5hbWUsIHYpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgICdFeHBvcnRBbGxEZWNsYXJhdGlvbic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAobm9kZS5zb3VyY2UgPT0gbnVsbCkgcmV0dXJuIC8vIG5vdCBzdXJlIGlmIHRoaXMgaXMgZXZlciB0cnVlXG5cbiAgICAgIGNvbnN0IHJlbW90ZUV4cG9ydHMgPSBFeHBvcnRNYXAuZ2V0KG5vZGUuc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgICAgaWYgKHJlbW90ZUV4cG9ydHMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICAgIGlmIChyZW1vdGVFeHBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgcmVtb3RlRXhwb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgbm9kZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBsZXQgYW55ID0gZmFsc2VcbiAgICAgIHJlbW90ZUV4cG9ydHMuZm9yRWFjaCgodiwgbmFtZSkgPT4gKGFueSA9IHRydWUpICYmIGFkZE5hbWVkKG5hbWUsIG5vZGUpKVxuXG4gICAgICBpZiAoIWFueSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydChub2RlLnNvdXJjZSxcbiAgICAgICAgICBgTm8gbmFtZWQgZXhwb3J0cyBmb3VuZCBpbiBtb2R1bGUgJyR7bm9kZS5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnUHJvZ3JhbTpleGl0JzogZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChsZXQgW25hbWUsIG5vZGVzXSBvZiBuYW1lZCkge1xuICAgICAgICBpZiAobm9kZXMuc2l6ZSA8PSAxKSBjb250aW51ZVxuXG4gICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydChub2RlLCAnTXVsdGlwbGUgZGVmYXVsdCBleHBvcnRzLicpXG4gICAgICAgICAgfSBlbHNlIGNvbnRleHQucmVwb3J0KG5vZGUsIGBNdWx0aXBsZSBleHBvcnRzIG9mIG5hbWUgJyR7bmFtZX0nLmApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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TyxRQUFRLE1BQVIsQ0FBZSxJQUFmLGtDQUFrRCxZQUFsRCxFQUZQO1NBREY7T0FIRjtLQURjO0dBeENsQixDQWRrQztDQUFuQiIsImZpbGUiOiJydWxlcy9leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2VzNi1zeW1ib2wvaW1wbGVtZW50J1xuaW1wb3J0IE1hcCBmcm9tICdlczYtbWFwJ1xuaW1wb3J0IFNldCBmcm9tICdlczYtc2V0J1xuXG5pbXBvcnQgRXhwb3J0TWFwLCB7IHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlIH0gZnJvbSAnLi4vY29yZS9nZXRFeHBvcnRzJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWVkID0gbmV3IE1hcCgpXG5cbiAgZnVuY3Rpb24gYWRkTmFtZWQobmFtZSwgbm9kZSkge1xuICAgIGxldCBub2RlcyA9IG5hbWVkLmdldChuYW1lKVxuXG4gICAgaWYgKG5vZGVzID09IG51bGwpIHtcbiAgICAgIG5vZGVzID0gbmV3IFNldCgpXG4gICAgICBuYW1lZC5zZXQobmFtZSwgbm9kZXMpXG4gICAgfVxuXG4gICAgbm9kZXMuYWRkKG5vZGUpXG4gIH1cblxuICByZXR1cm4ge1xuICAgICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nOiAobm9kZSkgPT4gYWRkTmFtZWQoJ2RlZmF1bHQnLCBub2RlKSxcblxuICAgICdFeHBvcnRTcGVjaWZpZXInOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgYWRkTmFtZWQobm9kZS5leHBvcnRlZC5uYW1lLCBub2RlLmV4cG9ydGVkKVxuICAgIH0sXG5cbiAgICAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAobm9kZS5kZWNsYXJhdGlvbiA9PSBudWxsKSByZXR1cm5cblxuICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24uaWQgIT0gbnVsbCkge1xuICAgICAgICBhZGROYW1lZChub2RlLmRlY2xhcmF0aW9uLmlkLm5hbWUsIG5vZGUuZGVjbGFyYXRpb24uaWQpXG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucyAhPSBudWxsKSB7XG4gICAgICAgIGZvciAobGV0IGRlY2xhcmF0aW9uIG9mIG5vZGUuZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zKSB7XG4gICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZGVjbGFyYXRpb24uaWQsIHYgPT4gYWRkTmFtZWQodi5uYW1lLCB2KSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnRXhwb3J0QWxsRGVjbGFyYXRpb24nOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKG5vZGUuc291cmNlID09IG51bGwpIHJldHVybiAvLyBub3Qgc3VyZSBpZiB0aGlzIGlzIGV2ZXIgdHJ1ZVxuXG4gICAgICBjb25zdCByZW1vdGVFeHBvcnRzID0gRXhwb3J0TWFwLmdldChub2RlLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgIGlmIChyZW1vdGVFeHBvcnRzID09IG51bGwpIHJldHVyblxuXG4gICAgICBpZiAocmVtb3RlRXhwb3J0cy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlbW90ZUV4cG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIG5vZGUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbGV0IGFueSA9IGZhbHNlXG4gICAgICByZW1vdGVFeHBvcnRzLmZvckVhY2goKHYsIG5hbWUpID0+IChhbnkgPSB0cnVlKSAmJiBhZGROYW1lZChuYW1lLCBub2RlKSlcblxuICAgICAgaWYgKCFhbnkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZS5zb3VyY2UsXG4gICAgICAgICAgYE5vIG5hbWVkIGV4cG9ydHMgZm91bmQgaW4gbW9kdWxlICcke25vZGUuc291cmNlLnZhbHVlfScuYClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJ1Byb2dyYW06ZXhpdCc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IFtuYW1lLCBub2Rlc10gb2YgbmFtZWQpIHtcbiAgICAgICAgaWYgKG5vZGVzLnNpemUgPD0gMSkgY29udGludWVcblxuICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZSwgJ011bHRpcGxlIGRlZmF1bHQgZXhwb3J0cy4nKVxuICAgICAgICAgIH0gZWxzZSBjb250ZXh0LnJlcG9ydChub2RlLCBgTXVsdGlwbGUgZXhwb3J0cyBvZiBuYW1lICcke25hbWV9Jy5gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIl19
'use strict';
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
require('es6-symbol/implement');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _es6Map = require('es6-map');
var _map = require('babel-runtime/core-js/map');
var _es6Map2 = _interopRequireDefault(_es6Map);
var _map2 = _interopRequireDefault(_map);
var _getExports = require('../core/getExports');

@@ -27,3 +25,3 @@

var namespaces = new _map2.default();
var namespaces = new _es6Map2.default();

@@ -53,42 +51,34 @@ function makeMessage(last, namepath) {

var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
for (var _iterator = declaration.specifiers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref2;
try {
for (var _iterator = (0, _getIterator3.default)(declaration.specifiers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var specifier = _step.value;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref2 = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref2 = _i.value;
}
switch (specifier.type) {
case 'ImportNamespaceSpecifier':
if (!imports.size) {
context.report(specifier, 'No exported names found in module \'' + declaration.source.value + '\'.');
}
namespaces.set(specifier.local.name, imports);
var specifier = _ref2;
switch (specifier.type) {
case 'ImportNamespaceSpecifier':
if (!imports.size) {
context.report(specifier, 'No exported names found in module \'' + declaration.source.value + '\'.');
}
namespaces.set(specifier.local.name, imports);
break;
case 'ImportDefaultSpecifier':
case 'ImportSpecifier':
{
var meta = imports.get(
// default to 'default' for default http://i.imgur.com/nj6qAWy.jpg
specifier.imported ? specifier.imported.name : 'default');
if (!meta || !meta.namespace) break;
namespaces.set(specifier.local.name, meta.namespace);
break;
case 'ImportDefaultSpecifier':
case 'ImportSpecifier':
{
var meta = imports.get(
// default to 'default' for default http://i.imgur.com/nj6qAWy.jpg
specifier.imported ? specifier.imported.name : 'default');
if (!meta || !meta.namespace) break;
namespaces.set(specifier.local.name, meta.namespace);
break;
}
}
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}

@@ -149,5 +139,5 @@ }

'VariableDeclarator': function VariableDeclarator(_ref2) {
var id = _ref2.id;
var init = _ref2.init;
'VariableDeclarator': function VariableDeclarator(_ref3) {
var id = _ref3.id;
var init = _ref3.init;

@@ -169,44 +159,36 @@ if (init == null) return;

var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
for (var _iterator2 = pattern.properties, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref4;
try {
for (var _iterator2 = (0, _getIterator3.default)(pattern.properties), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var property = _step2.value;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref4 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref4 = _i2.value;
}
var property = _ref4;
if (property.key.type !== 'Identifier') {
context.report({
node: property,
message: 'Only destructure top-level names.'
});
continue;
}
if (!namespace.has(property.key.name)) {
context.report({
node: property,
message: makeMessage(property.key, path)
});
continue;
}
if (property.key.type !== 'Identifier') {
context.report({
node: property,
message: 'Only destructure top-level names.'
});
continue;
}
path.push(property.key.name);
testKey(property.value, namespace.get(property.key.name).namespace, path);
path.pop();
if (!namespace.has(property.key.name)) {
context.report({
node: property,
message: makeMessage(property.key, path)
});
continue;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
path.push(property.key.name);
testKey(property.value, namespace.get(property.key.name).namespace, path);
path.pop();
}

@@ -219,2 +201,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,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QVYsQ0FsQnVDO0FBbUJ2QyxvQkFBUSxTQUFTLEtBQVQsRUFBZ0IsVUFBVSxHQUFWLENBQWMsU0FBUyxHQUFULENBQWEsSUFBYixDQUFkLENBQWlDLFNBQWpDLEVBQTRDLElBQXBFLEVBbkJ1QztBQW9CdkMsaUJBQUssR0FBTCxHQXBCdUM7V0FBekM7Ozs7Ozs7Ozs7Ozs7O1NBTHVEO09BQXpEOztBQTZCQSxjQUFRLEVBQVIsRUFBWSxXQUFXLEdBQVgsQ0FBZSxLQUFLLElBQUwsQ0FBM0IsRUF0QzRDO0tBQXhCO0dBcEd4QixDQVZrQztDQUFuQiIsImZpbGUiOiJydWxlcy9uYW1lc3BhY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9jb3JlL2dldEV4cG9ydHMnXG5pbXBvcnQgaW1wb3J0RGVjbGFyYXRpb24gZnJvbSAnLi4vaW1wb3J0RGVjbGFyYXRpb24nXG5pbXBvcnQgZGVjbGFyZWRTY29wZSBmcm9tICcuLi9jb3JlL2RlY2xhcmVkU2NvcGUnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcblxuICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpXG5cbiAgZnVuY3Rpb24gbWFrZU1lc3NhZ2UobGFzdCwgbmFtZXBhdGgpIHtcbiAgICAgcmV0dXJuIGAnJHtsYXN0Lm5hbWV9JyBub3QgZm91bmQgaW5gICtcbiAgICAgICAgICAgIChuYW1lcGF0aC5sZW5ndGggPiAxID8gJyBkZWVwbHkgJyA6ICcgJykgK1xuICAgICAgICAgICAgYGltcG9ydGVkIG5hbWVzcGFjZSAnJHtuYW1lcGF0aC5qb2luKCcuJyl9Jy5gXG4gIH1cblxuICByZXR1cm4ge1xuXG4gICAgLy8gcGljayB1cCBhbGwgaW1wb3J0cyBhdCBib2R5IGVudHJ5IHRpbWUsIHRvIHByb3Blcmx5IHJlc3BlY3QgaG9pc3RpbmdcbiAgICAnUHJvZ3JhbSc6IGZ1bmN0aW9uICh7IGJvZHkgfSkge1xuICAgICAgZnVuY3Rpb24gcHJvY2Vzc0JvZHlTdGF0ZW1lbnQoZGVjbGFyYXRpb24pIHtcbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnR5cGUgIT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHJldHVyblxuXG4gICAgICAgIGlmIChkZWNsYXJhdGlvbi5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICAgICAgICBpZiAoaW1wb3J0cy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBzcGVjaWZpZXIgb2YgZGVjbGFyYXRpb24uc3BlY2lmaWVycykge1xuICAgICAgICAgIHN3aXRjaCAoc3BlY2lmaWVyLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGlmICghaW1wb3J0cy5zaXplKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoc3BlY2lmaWVyLFxuICAgICAgICAgICAgICAgICAgYE5vIGV4cG9ydGVkIG5hbWVzIGZvdW5kIGluIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KHNwZWNpZmllci5sb2NhbC5uYW1lLCBpbXBvcnRzKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcic6XG4gICAgICAgICAgICBjYXNlICdJbXBvcnRTcGVjaWZpZXInOiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBpbXBvcnRzLmdldChcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvICdkZWZhdWx0JyBmb3IgZGVmYXVsdCBodHRwOi8vaS5pbWd1ci5jb20vbmo2cUFXeS5qcGdcbiAgICAgICAgICAgICAgICBzcGVjaWZpZXIuaW1wb3J0ZWQgPyBzcGVjaWZpZXIuaW1wb3J0ZWQubmFtZSA6ICdkZWZhdWx0JylcbiAgICAgICAgICAgICAgaWYgKCFtZXRhIHx8ICFtZXRhLm5hbWVzcGFjZSkgYnJlYWtcbiAgICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoc3BlY2lmaWVyLmxvY2FsLm5hbWUsIG1ldGEubmFtZXNwYWNlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYm9keS5mb3JFYWNoKHByb2Nlc3NCb2R5U3RhdGVtZW50KVxuICAgIH0sXG5cbiAgICAvLyBzYW1lIGFzIGFib3ZlLCBidXQgZG9lcyBub3QgYWRkIG5hbWVzIHRvIGxvY2FsIG1hcFxuICAgICdFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXInOiBmdW5jdGlvbiAobmFtZXNwYWNlKSB7XG4gICAgICB2YXIgZGVjbGFyYXRpb24gPSBpbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KVxuXG4gICAgICB2YXIgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIWltcG9ydHMuc2l6ZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydChuYW1lc3BhY2UsXG4gICAgICAgICAgYE5vIGV4cG9ydGVkIG5hbWVzIGZvdW5kIGluIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyB0b2RvOiBjaGVjayBmb3IgcG9zc2libGUgcmVkZWZpbml0aW9uXG5cbiAgICAnTWVtYmVyRXhwcmVzc2lvbic6IGZ1bmN0aW9uIChkZXJlZmVyZW5jZSkge1xuICAgICAgaWYgKGRlcmVmZXJlbmNlLm9iamVjdC50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhkZXJlZmVyZW5jZS5vYmplY3QubmFtZSkpIHJldHVyblxuXG4gICAgICBpZiAoZGVyZWZlcmVuY2UucGFyZW50LnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicgJiZcbiAgICAgICAgICBkZXJlZmVyZW5jZS5wYXJlbnQubGVmdCA9PT0gZGVyZWZlcmVuY2UpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChkZXJlZmVyZW5jZS5wYXJlbnQsXG4gICAgICAgICAgICAgIGBBc3NpZ25tZW50IHRvIG1lbWJlciBvZiBuYW1lc3BhY2UgJyR7ZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWV9Jy5gKVxuICAgICAgfVxuXG4gICAgICAvLyBnbyBkZWVwXG4gICAgICB2YXIgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5nZXQoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpXG4gICAgICB2YXIgbmFtZXBhdGggPSBbZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWVdXG4gICAgICAvLyB3aGlsZSBwcm9wZXJ0eSBpcyBuYW1lc3BhY2UgYW5kIHBhcmVudCBpcyBtZW1iZXIgZXhwcmVzc2lvbiwga2VlcCB2YWxpZGF0aW5nXG4gICAgICB3aGlsZSAobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cyAmJlxuICAgICAgICAgICAgIGRlcmVmZXJlbmNlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuXG4gICAgICAgIGlmIChkZXJlZmVyZW5jZS5jb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KGRlcmVmZXJlbmNlLnByb3BlcnR5LFxuICAgICAgICAgICAgJ1VuYWJsZSB0byB2YWxpZGF0ZSBjb21wdXRlZCByZWZlcmVuY2UgdG8gaW1wb3J0ZWQgbmFtZXNwYWNlIFxcJycgK1xuICAgICAgICAgICAgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUgKyAnXFwnLicpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5hbWVzcGFjZS5oYXMoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlLnByb3BlcnR5LFxuICAgICAgICAgICAgbWFrZU1lc3NhZ2UoZGVyZWZlcmVuY2UucHJvcGVydHksIG5hbWVwYXRoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3Rhc2ggYW5kIHBvcFxuICAgICAgICBuYW1lcGF0aC5wdXNoKGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpXG4gICAgICAgIG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5nZXQoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSkubmFtZXNwYWNlXG4gICAgICAgIGRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UucGFyZW50XG4gICAgICB9XG5cbiAgICB9LFxuXG4gICAgJ1ZhcmlhYmxlRGVjbGFyYXRvcic6IGZ1bmN0aW9uICh7IGlkLCBpbml0IH0pIHtcbiAgICAgIGlmIChpbml0ID09IG51bGwpIHJldHVyblxuICAgICAgaWYgKGluaXQudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoaW5pdC5uYW1lKSkgcmV0dXJuXG5cbiAgICAgIC8vIGNoZWNrIGZvciByZWRlZmluaXRpb24gaW4gaW50ZXJtZWRpYXRlIHNjb3Blc1xuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgaW5pdC5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuXG4gICAgICAvLyBERlMgdHJhdmVyc2UgY2hpbGQgbmFtZXNwYWNlc1xuICAgICAgZnVuY3Rpb24gdGVzdEtleShwYXR0ZXJuLCBuYW1lc3BhY2UsIHBhdGggPSBbaW5pdC5uYW1lXSkge1xuICAgICAgICBpZiAoIShuYW1lc3BhY2UgaW5zdGFuY2VvZiBFeHBvcnRzKSkgcmV0dXJuXG5cbiAgICAgICAgaWYgKHBhdHRlcm4udHlwZSAhPT0gJ09iamVjdFBhdHRlcm4nKSByZXR1cm5cblxuICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eSBvZiBwYXR0ZXJuLnByb3BlcnRpZXMpIHtcblxuICAgICAgICAgIGlmIChwcm9wZXJ0eS5rZXkudHlwZSAhPT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGU6IHByb3BlcnR5LFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnT25seSBkZXN0cnVjdHVyZSB0b3AtbGV2ZWwgbmFtZXMuJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghbmFtZXNwYWNlLmhhcyhwcm9wZXJ0eS5rZXkubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgbm9kZTogcHJvcGVydHksXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IG1ha2VNZXNzYWdlKHByb3BlcnR5LmtleSwgcGF0aCksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoLnB1c2gocHJvcGVydHkua2V5Lm5hbWUpXG4gICAgICAgICAgdGVzdEtleShwcm9wZXJ0eS52YWx1ZSwgbmFtZXNwYWNlLmdldChwcm9wZXJ0eS5rZXkubmFtZSkubmFtZXNwYWNlLCBwYXRoKVxuICAgICAgICAgIHBhdGgucG9wKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZXN0S2V5KGlkLCBuYW1lc3BhY2VzLmdldChpbml0Lm5hbWUpKVxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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U0FBUyxLQUFULEVBQWdCLFVBQVUsR0FBVixDQUFjLFNBQVMsR0FBVCxDQUFhLElBQWIsQ0FBZCxDQUFpQyxTQUFqQyxFQUE0QyxJQUFwRSxFQW5CdUM7QUFvQnZDLGVBQUssR0FBTCxHQXBCdUM7U0FBekM7T0FMRjs7QUE2QkEsY0FBUSxFQUFSLEVBQVksV0FBVyxHQUFYLENBQWUsS0FBSyxJQUFMLENBQTNCLEVBdEM0QztLQUF4QjtHQXBHeEIsQ0FWa0M7Q0FBbkIiLCJmaWxlIjoicnVsZXMvbmFtZXNwYWNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdlczYtc3ltYm9sL2ltcGxlbWVudCdcbmltcG9ydCBNYXAgZnJvbSAnZXM2LW1hcCdcblxuaW1wb3J0IEV4cG9ydHMgZnJvbSAnLi4vY29yZS9nZXRFeHBvcnRzJ1xuaW1wb3J0IGltcG9ydERlY2xhcmF0aW9uIGZyb20gJy4uL2ltcG9ydERlY2xhcmF0aW9uJ1xuaW1wb3J0IGRlY2xhcmVkU2NvcGUgZnJvbSAnLi4vY29yZS9kZWNsYXJlZFNjb3BlJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG5cbiAgY29uc3QgbmFtZXNwYWNlcyA9IG5ldyBNYXAoKVxuXG4gIGZ1bmN0aW9uIG1ha2VNZXNzYWdlKGxhc3QsIG5hbWVwYXRoKSB7XG4gICAgIHJldHVybiBgJyR7bGFzdC5uYW1lfScgbm90IGZvdW5kIGluYCArXG4gICAgICAgICAgICAobmFtZXBhdGgubGVuZ3RoID4gMSA/ICcgZGVlcGx5ICcgOiAnICcpICtcbiAgICAgICAgICAgIGBpbXBvcnRlZCBuYW1lc3BhY2UgJyR7bmFtZXBhdGguam9pbignLicpfScuYFxuICB9XG5cbiAgcmV0dXJuIHtcblxuICAgIC8vIHBpY2sgdXAgYWxsIGltcG9ydHMgYXQgYm9keSBlbnRyeSB0aW1lLCB0byBwcm9wZXJseSByZXNwZWN0IGhvaXN0aW5nXG4gICAgJ1Byb2dyYW0nOiBmdW5jdGlvbiAoeyBib2R5IH0pIHtcbiAgICAgIGZ1bmN0aW9uIHByb2Nlc3NCb2R5U3RhdGVtZW50KGRlY2xhcmF0aW9uKSB7XG4gICAgICAgIGlmIChkZWNsYXJhdGlvbi50eXBlICE9PSAnSW1wb3J0RGVjbGFyYXRpb24nKSByZXR1cm5cblxuICAgICAgICBpZiAoZGVjbGFyYXRpb24uc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgICAgIGNvbnN0IGltcG9ydHMgPSBFeHBvcnRzLmdldChkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICAgICAgaWYgKGltcG9ydHMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgc3BlY2lmaWVyIG9mIGRlY2xhcmF0aW9uLnNwZWNpZmllcnMpIHtcbiAgICAgICAgICBzd2l0Y2ggKHNwZWNpZmllci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInOlxuICAgICAgICAgICAgICBpZiAoIWltcG9ydHMuc2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHNwZWNpZmllcixcbiAgICAgICAgICAgICAgICAgIGBObyBleHBvcnRlZCBuYW1lcyBmb3VuZCBpbiBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfScuYClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuYW1lc3BhY2VzLnNldChzcGVjaWZpZXIubG9jYWwubmFtZSwgaW1wb3J0cylcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInOlxuICAgICAgICAgICAgY2FzZSAnSW1wb3J0U3BlY2lmaWVyJzoge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhID0gaW1wb3J0cy5nZXQoXG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byAnZGVmYXVsdCcgZm9yIGRlZmF1bHQgaHR0cDovL2kuaW1ndXIuY29tL25qNnFBV3kuanBnXG4gICAgICAgICAgICAgICAgc3BlY2lmaWVyLmltcG9ydGVkID8gc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUgOiAnZGVmYXVsdCcpXG4gICAgICAgICAgICAgIGlmICghbWV0YSB8fCAhbWV0YS5uYW1lc3BhY2UpIGJyZWFrXG4gICAgICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KHNwZWNpZmllci5sb2NhbC5uYW1lLCBtZXRhLm5hbWVzcGFjZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJvZHkuZm9yRWFjaChwcm9jZXNzQm9keVN0YXRlbWVudClcbiAgICB9LFxuXG4gICAgLy8gc2FtZSBhcyBhYm92ZSwgYnV0IGRvZXMgbm90IGFkZCBuYW1lcyB0byBsb2NhbCBtYXBcbiAgICAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzogZnVuY3Rpb24gKG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGRlY2xhcmF0aW9uID0gaW1wb3J0RGVjbGFyYXRpb24oY29udGV4dClcblxuICAgICAgdmFyIGltcG9ydHMgPSBFeHBvcnRzLmdldChkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICBpZiAoaW1wb3J0cy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQobmFtZXNwYWNlLFxuICAgICAgICAgIGBObyBleHBvcnRlZCBuYW1lcyBmb3VuZCBpbiBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfScuYClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gdG9kbzogY2hlY2sgZm9yIHBvc3NpYmxlIHJlZGVmaW5pdGlvblxuXG4gICAgJ01lbWJlckV4cHJlc3Npb24nOiBmdW5jdGlvbiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgIGlmIChkZXJlZmVyZW5jZS5vYmplY3QudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpKSByZXR1cm5cblxuICAgICAgaWYgKGRlcmVmZXJlbmNlLnBhcmVudC50eXBlID09PSAnQXNzaWdubWVudEV4cHJlc3Npb24nICYmXG4gICAgICAgICAgZGVyZWZlcmVuY2UucGFyZW50LmxlZnQgPT09IGRlcmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoZGVyZWZlcmVuY2UucGFyZW50LFxuICAgICAgICAgICAgICBgQXNzaWdubWVudCB0byBtZW1iZXIgb2YgbmFtZXNwYWNlICcke2RlcmVmZXJlbmNlLm9iamVjdC5uYW1lfScuYClcbiAgICAgIH1cblxuICAgICAgLy8gZ28gZGVlcFxuICAgICAgdmFyIG5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuZ2V0KGRlcmVmZXJlbmNlLm9iamVjdC5uYW1lKVxuICAgICAgdmFyIG5hbWVwYXRoID0gW2RlcmVmZXJlbmNlLm9iamVjdC5uYW1lXVxuICAgICAgLy8gd2hpbGUgcHJvcGVydHkgaXMgbmFtZXNwYWNlIGFuZCBwYXJlbnQgaXMgbWVtYmVyIGV4cHJlc3Npb24sIGtlZXAgdmFsaWRhdGluZ1xuICAgICAgd2hpbGUgKG5hbWVzcGFjZSBpbnN0YW5jZW9mIEV4cG9ydHMgJiZcbiAgICAgICAgICAgICBkZXJlZmVyZW5jZS50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicpIHtcblxuICAgICAgICBpZiAoZGVyZWZlcmVuY2UuY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChkZXJlZmVyZW5jZS5wcm9wZXJ0eSxcbiAgICAgICAgICAgICdVbmFibGUgdG8gdmFsaWRhdGUgY29tcHV0ZWQgcmVmZXJlbmNlIHRvIGltcG9ydGVkIG5hbWVzcGFjZSBcXCcnICtcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlLm9iamVjdC5uYW1lICsgJ1xcJy4nKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFuYW1lc3BhY2UuaGFzKGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoXG4gICAgICAgICAgICBkZXJlZmVyZW5jZS5wcm9wZXJ0eSxcbiAgICAgICAgICAgIG1ha2VNZXNzYWdlKGRlcmVmZXJlbmNlLnByb3BlcnR5LCBuYW1lcGF0aCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0YXNoIGFuZCBwb3BcbiAgICAgICAgbmFtZXBhdGgucHVzaChkZXJlZmVyZW5jZS5wcm9wZXJ0eS5uYW1lKVxuICAgICAgICBuYW1lc3BhY2UgPSBuYW1lc3BhY2UuZ2V0KGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpLm5hbWVzcGFjZVxuICAgICAgICBkZXJlZmVyZW5jZSA9IGRlcmVmZXJlbmNlLnBhcmVudFxuICAgICAgfVxuXG4gICAgfSxcblxuICAgICdWYXJpYWJsZURlY2xhcmF0b3InOiBmdW5jdGlvbiAoeyBpZCwgaW5pdCB9KSB7XG4gICAgICBpZiAoaW5pdCA9PSBudWxsKSByZXR1cm5cbiAgICAgIGlmIChpbml0LnR5cGUgIT09ICdJZGVudGlmaWVyJykgcmV0dXJuXG4gICAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGluaXQubmFtZSkpIHJldHVyblxuXG4gICAgICAvLyBjaGVjayBmb3IgcmVkZWZpbml0aW9uIGluIGludGVybWVkaWF0ZSBzY29wZXNcbiAgICAgIGlmIChkZWNsYXJlZFNjb3BlKGNvbnRleHQsIGluaXQubmFtZSkgIT09ICdtb2R1bGUnKSByZXR1cm5cblxuICAgICAgLy8gREZTIHRyYXZlcnNlIGNoaWxkIG5hbWVzcGFjZXNcbiAgICAgIGZ1bmN0aW9uIHRlc3RLZXkocGF0dGVybiwgbmFtZXNwYWNlLCBwYXRoID0gW2luaXQubmFtZV0pIHtcbiAgICAgICAgaWYgKCEobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cykpIHJldHVyblxuXG4gICAgICAgIGlmIChwYXR0ZXJuLnR5cGUgIT09ICdPYmplY3RQYXR0ZXJuJykgcmV0dXJuXG5cbiAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgb2YgcGF0dGVybi5wcm9wZXJ0aWVzKSB7XG5cbiAgICAgICAgICBpZiAocHJvcGVydHkua2V5LnR5cGUgIT09ICdJZGVudGlmaWVyJykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBub2RlOiBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ09ubHkgZGVzdHJ1Y3R1cmUgdG9wLWxldmVsIG5hbWVzLicsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5oYXMocHJvcGVydHkua2V5Lm5hbWUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGU6IHByb3BlcnR5LFxuICAgICAgICAgICAgICBtZXNzYWdlOiBtYWtlTWVzc2FnZShwcm9wZXJ0eS5rZXksIHBhdGgpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aC5wdXNoKHByb3BlcnR5LmtleS5uYW1lKVxuICAgICAgICAgIHRlc3RLZXkocHJvcGVydHkudmFsdWUsIG5hbWVzcGFjZS5nZXQocHJvcGVydHkua2V5Lm5hbWUpLm5hbWVzcGFjZSwgcGF0aClcbiAgICAgICAgICBwYXRoLnBvcCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGVzdEtleShpZCwgbmFtZXNwYWNlcy5nZXQoaW5pdC5uYW1lKSlcbiAgICB9LFxuICB9XG59XG4iXX0=
'use strict';
var _map = require('babel-runtime/core-js/map');
var _es6Map = require('es6-map');
var _map2 = _interopRequireDefault(_map);
var _es6Map2 = _interopRequireDefault(_es6Map);

@@ -18,4 +18,4 @@ var _getExports = require('../core/getExports');

module.exports = function (context) {
var deprecated = new _map2.default(),
namespaces = new _map2.default();
var deprecated = new _es6Map2.default(),
namespaces = new _es6Map2.default();

@@ -157,2 +157,2 @@ function checkSpecifiers(node) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLWRlcHJlY2F0ZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUEsT0FBTyxPQUFQLEdBQWlCLFVBQVUsT0FBVixFQUFtQjtBQUNsQyxNQUFNLGFBQWEsbUJBQWI7TUFDQSxhQUFhLG1CQUFiLENBRjRCOztBQUlsQyxXQUFTLGVBQVQsQ0FBeUIsSUFBekIsRUFBK0I7QUFDN0IsUUFBSSxLQUFLLElBQUwsS0FBYyxtQkFBZCxFQUFtQyxPQUF2QztBQUNBLFFBQUksS0FBSyxNQUFMLElBQWUsSUFBZixFQUFxQixPQUF6Qjs7QUFGNkIsUUFJdkIsVUFBVSxxQkFBUSxHQUFSLENBQVksS0FBSyxNQUFMLENBQVksS0FBWixFQUFtQixPQUEvQixDQUFWLENBSnVCO0FBSzdCLFFBQUksV0FBVyxJQUFYLEVBQWlCLE9BQXJCOztBQUVBLFFBQUksMEJBQUosQ0FQNkI7QUFRN0IsUUFBSSxRQUFRLEdBQVIsSUFDQSxRQUFRLEdBQVIsQ0FBWSxJQUFaLENBQWlCLElBQWpCLENBQXNCO2FBQUssRUFBRSxLQUFGLEtBQVksWUFBWixLQUE2QixvQkFBb0IsQ0FBcEIsQ0FBN0I7S0FBTCxDQUR0QixFQUNpRjtBQUNuRixjQUFRLE1BQVIsQ0FBZSxFQUFFLFVBQUYsRUFBUSxTQUFTLFFBQVEsaUJBQVIsQ0FBVCxFQUF2QixFQURtRjtLQURyRjs7QUFLQSxRQUFJLFFBQVEsTUFBUixDQUFlLE1BQWYsRUFBdUI7QUFDekIsY0FBUSxZQUFSLENBQXFCLE9BQXJCLEVBQThCLElBQTlCLEVBRHlCO0FBRXpCLGFBRnlCO0tBQTNCOztBQUtBLFNBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixVQUFVLEVBQVYsRUFBYztBQUNwQyxVQUFJLGlCQUFKO1VBQWMsY0FBZCxDQURvQztBQUVwQyxjQUFRLEdBQUcsSUFBSDs7QUFHTixhQUFLLDBCQUFMO0FBQWdDO0FBQzlCLGdCQUFJLENBQUMsUUFBUSxJQUFSLEVBQWMsT0FB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LEVBQWlCO0FBQ2Ysa0JBQVEsTUFBUixDQUFlLEVBQUUsTUFBTSxZQUFZLFFBQVosRUFBc0IsU0FBUyxRQUFRLFdBQVIsQ0FBVCxFQUE3QyxFQURlO1NBQWpCOzs7QUFWOEMsZ0JBZTlDLENBQVMsSUFBVCxDQUFjLFlBQVksUUFBWixDQUFxQixJQUFyQixDQUFkLENBZjhDO0FBZ0I5QyxvQkFBWSxTQUFTLFNBQVQsQ0FoQmtDO0FBaUI5QyxzQkFBYyxZQUFZLE1BQVosQ0FqQmdDO09BRGhEO0tBVmtCO0dBcEJ0QixDQS9Ea0M7Q0FBbkI7O0FBcUhqQixTQUFTLE9BQVQsQ0FBaUIsV0FBakIsRUFBOEI7QUFDNUIsU0FBTyxnQkFBZ0IsWUFBWSxXQUFaLEdBQTBCLE9BQU8sWUFBWSxXQUFaLEdBQTBCLEdBQTNELENBQWhCLENBRHFCO0NBQTlCOztBQUlBLFNBQVMsY0FBVCxDQUF3QixRQUF4QixFQUFrQztBQUNoQyxNQUFJLENBQUMsUUFBRCxJQUFhLENBQUMsU0FBUyxHQUFULEVBQWMsT0FBaEM7O0FBRUEsTUFBSSxvQkFBSixDQUhnQztBQUloQyxNQUFJLFNBQVMsR0FBVCxDQUFhLElBQWIsQ0FBa0IsSUFBbEIsQ0FBdUI7V0FBSyxFQUFFLEtBQUYsS0FBWSxZQUFaLEtBQTZCLGNBQWMsQ0FBZCxDQUE3QjtHQUFMLENBQTNCLEVBQWdGO0FBQzlFLFdBQU8sV0FBUCxDQUQ4RTtHQUFoRjtDQUpGIiwiZmlsZSI6InJ1bGVzL25vLWRlcHJlY2F0ZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9jb3JlL2dldEV4cG9ydHMnXG5pbXBvcnQgZGVjbGFyZWRTY29wZSBmcm9tICcuLi9jb3JlL2RlY2xhcmVkU2NvcGUnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgY29uc3QgZGVwcmVjYXRlZCA9IG5ldyBNYXAoKVxuICAgICAgLCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpXG5cbiAgZnVuY3Rpb24gY2hlY2tTcGVjaWZpZXJzKG5vZGUpIHtcbiAgICBpZiAobm9kZS50eXBlICE9PSAnSW1wb3J0RGVjbGFyYXRpb24nKSByZXR1cm5cbiAgICBpZiAobm9kZS5zb3VyY2UgPT0gbnVsbCkgcmV0dXJuIC8vIGxvY2FsIGV4cG9ydCwgaWdub3JlXG5cbiAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBsZXQgbW9kdWxlRGVwcmVjYXRpb25cbiAgICBpZiAoaW1wb3J0cy5kb2MgJiZcbiAgICAgICAgaW1wb3J0cy5kb2MudGFncy5zb21lKHQgPT4gdC50aXRsZSA9PT0gJ2RlcHJlY2F0ZWQnICYmIChtb2R1bGVEZXByZWNhdGlvbiA9IHQpKSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlOiBtZXNzYWdlKG1vZHVsZURlcHJlY2F0aW9uKSB9KVxuICAgIH1cblxuICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIG5vZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBub2RlLnNwZWNpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoaW0pIHtcbiAgICAgIGxldCBpbXBvcnRlZCwgbG9jYWxcbiAgICAgIHN3aXRjaCAoaW0udHlwZSkge1xuXG5cbiAgICAgICAgY2FzZSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzp7XG4gICAgICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHJldHVyblxuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KGltLmxvY2FsLm5hbWUsIGltcG9ydHMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICBpbXBvcnRlZCA9ICdkZWZhdWx0J1xuICAgICAgICAgIGxvY2FsID0gaW0ubG9jYWwubmFtZVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnSW1wb3J0U3BlY2lmaWVyJzpcbiAgICAgICAgICBpbXBvcnRlZCA9IGltLmltcG9ydGVkLm5hbWVcbiAgICAgICAgICBsb2NhbCA9IGltLmxvY2FsLm5hbWVcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAvLyBjYW4ndCBoYW5kbGUgdGhpcyBvbmVcbiAgICAgIH1cblxuICAgICAgLy8gdW5rbm93biB0aGluZyBjYW4ndCBiZSBkZXByZWNhdGVkXG4gICAgICBpZiAoIWltcG9ydHMuaGFzKGltcG9ydGVkKSkgcmV0dXJuXG5cbiAgICAgIC8vIGNhcHR1cmUgaW1wb3J0IG9mIGRlZXAgbmFtZXNwYWNlXG4gICAgICBjb25zdCB7IG5hbWVzcGFjZSB9ID0gaW1wb3J0cy5nZXQoaW1wb3J0ZWQpXG4gICAgICBpZiAobmFtZXNwYWNlKSBuYW1lc3BhY2VzLnNldChsb2NhbCwgbmFtZXNwYWNlKVxuXG4gICAgICBjb25zdCBkZXByZWNhdGlvbiA9IGdldERlcHJlY2F0aW9uKGltcG9ydHMuZ2V0KGltcG9ydGVkKSlcbiAgICAgIGlmICghZGVwcmVjYXRpb24pIHJldHVyblxuXG4gICAgICBjb250ZXh0LnJlcG9ydCh7IG5vZGU6IGltLCBtZXNzYWdlOiBtZXNzYWdlKGRlcHJlY2F0aW9uKSB9KVxuXG4gICAgICBkZXByZWNhdGVkLnNldChsb2NhbCwgZGVwcmVjYXRpb24pXG5cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAnUHJvZ3JhbSc6ICh7IGJvZHkgfSkgPT4gYm9keS5mb3JFYWNoKGNoZWNrU3BlY2lmaWVycyksXG5cbiAgICAnSWRlbnRpZmllcic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nICYmIG5vZGUucGFyZW50LnByb3BlcnR5ID09PSBub2RlKSB7XG4gICAgICAgIHJldHVybiAvLyBoYW5kbGVkIGJ5IE1lbWJlckV4cHJlc3Npb25cbiAgICAgIH1cblxuICAgICAgLy8gaWdub3JlIHNwZWNpZmllciBpZGVudGlmaWVyc1xuICAgICAgaWYgKG5vZGUucGFyZW50LnR5cGUuc2xpY2UoMCwgNikgPT09ICdJbXBvcnQnKSByZXR1cm5cblxuICAgICAgaWYgKCFkZXByZWNhdGVkLmhhcyhub2RlLm5hbWUpKSByZXR1cm5cblxuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgbm9kZS5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBub2RlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlKGRlcHJlY2F0ZWQuZ2V0KG5vZGUubmFtZSkpLFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgJ01lbWJlckV4cHJlc3Npb24nOiBmdW5jdGlvbiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgIGlmIChkZXJlZmVyZW5jZS5vYmplY3QudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpKSByZXR1cm5cblxuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpICE9PSAnbW9kdWxlJykgcmV0dXJuXG5cbiAgICAgIC8vIGdvIGRlZXBcbiAgICAgIHZhciBuYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmdldChkZXJlZmVyZW5jZS5vYmplY3QubmFtZSlcbiAgICAgIHZhciBuYW1lcGF0aCA9IFtkZXJlZmVyZW5jZS5vYmplY3QubmFtZV1cbiAgICAgIC8vIHdoaWxlIHByb3BlcnR5IGlzIG5hbWVzcGFjZSBhbmQgcGFyZW50IGlzIG1lbWJlciBleHByZXNzaW9uLCBrZWVwIHZhbGlkYXRpbmdcbiAgICAgIHdoaWxlIChuYW1lc3BhY2UgaW5zdGFuY2VvZiBFeHBvcnRzICYmXG4gICAgICAgICAgICAgZGVyZWZlcmVuY2UudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG5cbiAgICAgICAgLy8gaWdub3JlIGNvbXB1dGVkIHBhcnRzIGZvciBub3dcbiAgICAgICAgaWYgKGRlcmVmZXJlbmNlLmNvbXB1dGVkKSByZXR1cm5cblxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IG5hbWVzcGFjZS5nZXQoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSBicmVha1xuICAgICAgICBjb25zdCBkZXByZWNhdGlvbiA9IGdldERlcHJlY2F0aW9uKG1ldGFkYXRhKVxuXG4gICAgICAgIGlmIChkZXByZWNhdGlvbikge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZTogZGVyZWZlcmVuY2UucHJvcGVydHksIG1lc3NhZ2U6IG1lc3NhZ2UoZGVwcmVjYXRpb24pIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGFzaCBhbmQgcG9wXG4gICAgICAgIG5hbWVwYXRoLnB1c2goZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcbiAgICAgICAgbmFtZXNwYWNlID0gbWV0YWRhdGEubmFtZXNwYWNlXG4gICAgICAgIGRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UucGFyZW50XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXNzYWdlKGRlcHJlY2F0aW9uKSB7XG4gIHJldHVybiAnRGVwcmVjYXRlZCcgKyAoZGVwcmVjYXRpb24uZGVzY3JpcHRpb24gPyAnOiAnICsgZGVwcmVjYXRpb24uZGVzY3JpcHRpb24gOiAnLicpXG59XG5cbmZ1bmN0aW9uIGdldERlcHJlY2F0aW9uKG1ldGFkYXRhKSB7XG4gIGlmICghbWV0YWRhdGEgfHwgIW1ldGFkYXRhLmRvYykgcmV0dXJuXG5cbiAgbGV0IGRlcHJlY2F0aW9uXG4gIGlmIChtZXRhZGF0YS5kb2MudGFncy5zb21lKHQgPT4gdC50aXRsZSA9PT0gJ2RlcHJlY2F0ZWQnICYmIChkZXByZWNhdGlvbiA9IHQpKSkge1xuICAgIHJldHVybiBkZXByZWNhdGlvblxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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V0FBSixFQUFpQjtBQUNmLGtCQUFRLE1BQVIsQ0FBZSxFQUFFLE1BQU0sWUFBWSxRQUFaLEVBQXNCLFNBQVMsUUFBUSxXQUFSLENBQVQsRUFBN0MsRUFEZTtTQUFqQjs7O0FBVjhDLGdCQWU5QyxDQUFTLElBQVQsQ0FBYyxZQUFZLFFBQVosQ0FBcUIsSUFBckIsQ0FBZCxDQWY4QztBQWdCOUMsb0JBQVksU0FBUyxTQUFULENBaEJrQztBQWlCOUMsc0JBQWMsWUFBWSxNQUFaLENBakJnQztPQURoRDtLQVZrQjtHQXBCdEIsQ0EvRGtDO0NBQW5COztBQXFIakIsU0FBUyxPQUFULENBQWlCLFdBQWpCLEVBQThCO0FBQzVCLFNBQU8sZ0JBQWdCLFlBQVksV0FBWixHQUEwQixPQUFPLFlBQVksV0FBWixHQUEwQixHQUEzRCxDQUFoQixDQURxQjtDQUE5Qjs7QUFJQSxTQUFTLGNBQVQsQ0FBd0IsUUFBeEIsRUFBa0M7QUFDaEMsTUFBSSxDQUFDLFFBQUQsSUFBYSxDQUFDLFNBQVMsR0FBVCxFQUFjLE9BQWhDOztBQUVBLE1BQUksb0JBQUosQ0FIZ0M7QUFJaEMsTUFBSSxTQUFTLEdBQVQsQ0FBYSxJQUFiLENBQWtCLElBQWxCLENBQXVCO1dBQUssRUFBRSxLQUFGLEtBQVksWUFBWixLQUE2QixjQUFjLENBQWQsQ0FBN0I7R0FBTCxDQUEzQixFQUFnRjtBQUM5RSxXQUFPLFdBQVAsQ0FEOEU7R0FBaEY7Q0FKRiIsImZpbGUiOiJydWxlcy9uby1kZXByZWNhdGVkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcCBmcm9tICdlczYtbWFwJ1xuXG5pbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9jb3JlL2dldEV4cG9ydHMnXG5pbXBvcnQgZGVjbGFyZWRTY29wZSBmcm9tICcuLi9jb3JlL2RlY2xhcmVkU2NvcGUnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgY29uc3QgZGVwcmVjYXRlZCA9IG5ldyBNYXAoKVxuICAgICAgLCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpXG5cbiAgZnVuY3Rpb24gY2hlY2tTcGVjaWZpZXJzKG5vZGUpIHtcbiAgICBpZiAobm9kZS50eXBlICE9PSAnSW1wb3J0RGVjbGFyYXRpb24nKSByZXR1cm5cbiAgICBpZiAobm9kZS5zb3VyY2UgPT0gbnVsbCkgcmV0dXJuIC8vIGxvY2FsIGV4cG9ydCwgaWdub3JlXG5cbiAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBsZXQgbW9kdWxlRGVwcmVjYXRpb25cbiAgICBpZiAoaW1wb3J0cy5kb2MgJiZcbiAgICAgICAgaW1wb3J0cy5kb2MudGFncy5zb21lKHQgPT4gdC50aXRsZSA9PT0gJ2RlcHJlY2F0ZWQnICYmIChtb2R1bGVEZXByZWNhdGlvbiA9IHQpKSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlOiBtZXNzYWdlKG1vZHVsZURlcHJlY2F0aW9uKSB9KVxuICAgIH1cblxuICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIG5vZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBub2RlLnNwZWNpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoaW0pIHtcbiAgICAgIGxldCBpbXBvcnRlZCwgbG9jYWxcbiAgICAgIHN3aXRjaCAoaW0udHlwZSkge1xuXG5cbiAgICAgICAgY2FzZSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzp7XG4gICAgICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHJldHVyblxuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KGltLmxvY2FsLm5hbWUsIGltcG9ydHMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICBpbXBvcnRlZCA9ICdkZWZhdWx0J1xuICAgICAgICAgIGxvY2FsID0gaW0ubG9jYWwubmFtZVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnSW1wb3J0U3BlY2lmaWVyJzpcbiAgICAgICAgICBpbXBvcnRlZCA9IGltLmltcG9ydGVkLm5hbWVcbiAgICAgICAgICBsb2NhbCA9IGltLmxvY2FsLm5hbWVcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAvLyBjYW4ndCBoYW5kbGUgdGhpcyBvbmVcbiAgICAgIH1cblxuICAgICAgLy8gdW5rbm93biB0aGluZyBjYW4ndCBiZSBkZXByZWNhdGVkXG4gICAgICBpZiAoIWltcG9ydHMuaGFzKGltcG9ydGVkKSkgcmV0dXJuXG5cbiAgICAgIC8vIGNhcHR1cmUgaW1wb3J0IG9mIGRlZXAgbmFtZXNwYWNlXG4gICAgICBjb25zdCB7IG5hbWVzcGFjZSB9ID0gaW1wb3J0cy5nZXQoaW1wb3J0ZWQpXG4gICAgICBpZiAobmFtZXNwYWNlKSBuYW1lc3BhY2VzLnNldChsb2NhbCwgbmFtZXNwYWNlKVxuXG4gICAgICBjb25zdCBkZXByZWNhdGlvbiA9IGdldERlcHJlY2F0aW9uKGltcG9ydHMuZ2V0KGltcG9ydGVkKSlcbiAgICAgIGlmICghZGVwcmVjYXRpb24pIHJldHVyblxuXG4gICAgICBjb250ZXh0LnJlcG9ydCh7IG5vZGU6IGltLCBtZXNzYWdlOiBtZXNzYWdlKGRlcHJlY2F0aW9uKSB9KVxuXG4gICAgICBkZXByZWNhdGVkLnNldChsb2NhbCwgZGVwcmVjYXRpb24pXG5cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAnUHJvZ3JhbSc6ICh7IGJvZHkgfSkgPT4gYm9keS5mb3JFYWNoKGNoZWNrU3BlY2lmaWVycyksXG5cbiAgICAnSWRlbnRpZmllcic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nICYmIG5vZGUucGFyZW50LnByb3BlcnR5ID09PSBub2RlKSB7XG4gICAgICAgIHJldHVybiAvLyBoYW5kbGVkIGJ5IE1lbWJlckV4cHJlc3Npb25cbiAgICAgIH1cblxuICAgICAgLy8gaWdub3JlIHNwZWNpZmllciBpZGVudGlmaWVyc1xuICAgICAgaWYgKG5vZGUucGFyZW50LnR5cGUuc2xpY2UoMCwgNikgPT09ICdJbXBvcnQnKSByZXR1cm5cblxuICAgICAgaWYgKCFkZXByZWNhdGVkLmhhcyhub2RlLm5hbWUpKSByZXR1cm5cblxuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgbm9kZS5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBub2RlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlKGRlcHJlY2F0ZWQuZ2V0KG5vZGUubmFtZSkpLFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgJ01lbWJlckV4cHJlc3Npb24nOiBmdW5jdGlvbiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgIGlmIChkZXJlZmVyZW5jZS5vYmplY3QudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpKSByZXR1cm5cblxuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpICE9PSAnbW9kdWxlJykgcmV0dXJuXG5cbiAgICAgIC8vIGdvIGRlZXBcbiAgICAgIHZhciBuYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmdldChkZXJlZmVyZW5jZS5vYmplY3QubmFtZSlcbiAgICAgIHZhciBuYW1lcGF0aCA9IFtkZXJlZmVyZW5jZS5vYmplY3QubmFtZV1cbiAgICAgIC8vIHdoaWxlIHByb3BlcnR5IGlzIG5hbWVzcGFjZSBhbmQgcGFyZW50IGlzIG1lbWJlciBleHByZXNzaW9uLCBrZWVwIHZhbGlkYXRpbmdcbiAgICAgIHdoaWxlIChuYW1lc3BhY2UgaW5zdGFuY2VvZiBFeHBvcnRzICYmXG4gICAgICAgICAgICAgZGVyZWZlcmVuY2UudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG5cbiAgICAgICAgLy8gaWdub3JlIGNvbXB1dGVkIHBhcnRzIGZvciBub3dcbiAgICAgICAgaWYgKGRlcmVmZXJlbmNlLmNvbXB1dGVkKSByZXR1cm5cblxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IG5hbWVzcGFjZS5nZXQoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSBicmVha1xuICAgICAgICBjb25zdCBkZXByZWNhdGlvbiA9IGdldERlcHJlY2F0aW9uKG1ldGFkYXRhKVxuXG4gICAgICAgIGlmIChkZXByZWNhdGlvbikge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZTogZGVyZWZlcmVuY2UucHJvcGVydHksIG1lc3NhZ2U6IG1lc3NhZ2UoZGVwcmVjYXRpb24pIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGFzaCBhbmQgcG9wXG4gICAgICAgIG5hbWVwYXRoLnB1c2goZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcbiAgICAgICAgbmFtZXNwYWNlID0gbWV0YWRhdGEubmFtZXNwYWNlXG4gICAgICAgIGRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UucGFyZW50XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXNzYWdlKGRlcHJlY2F0aW9uKSB7XG4gIHJldHVybiAnRGVwcmVjYXRlZCcgKyAoZGVwcmVjYXRpb24uZGVzY3JpcHRpb24gPyAnOiAnICsgZGVwcmVjYXRpb24uZGVzY3JpcHRpb24gOiAnLicpXG59XG5cbmZ1bmN0aW9uIGdldERlcHJlY2F0aW9uKG1ldGFkYXRhKSB7XG4gIGlmICghbWV0YWRhdGEgfHwgIW1ldGFkYXRhLmRvYykgcmV0dXJuXG5cbiAgbGV0IGRlcHJlY2F0aW9uXG4gIGlmIChtZXRhZGF0YS5kb2MudGFncy5zb21lKHQgPT4gdC50aXRsZSA9PT0gJ2RlcHJlY2F0ZWQnICYmIChkZXByZWNhdGlvbiA9IHQpKSkge1xuICAgIHJldHVybiBkZXByZWNhdGlvblxuICB9XG59XG4iXX0=
'use strict';
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
require('es6-symbol/implement');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _es6Map = require('es6-map');
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _es6Map2 = _interopRequireDefault(_es6Map);
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _es6Set = require('es6-set');
var _set = require('babel-runtime/core-js/set');
var _es6Set2 = _interopRequireDefault(_es6Set);
var _set2 = _interopRequireDefault(_set);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
var _resolve = require('../core/resolve');

@@ -26,3 +20,3 @@

module.exports = function (context) {
var imported = new _map2.default();
var imported = new _es6Map2.default();
return {

@@ -36,3 +30,3 @@ 'ImportDeclaration': function ImportDeclaration(n) {

} else {
imported.set(resolvedPath, new _set2.default([n.source]));
imported.set(resolvedPath, new _es6Set2.default([n.source]));
}

@@ -42,53 +36,36 @@ },

'Program:exit': function ProgramExit() {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
for (var _iterator = imported.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
try {
for (var _iterator = (0, _getIterator3.default)(imported.entries()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = (0, _slicedToArray3.default)(_step.value, 2);
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var _module = _step$value[0];
var nodes = _step$value[1];
var _ref2 = _ref;
var _module = _ref2[0];
var nodes = _ref2[1];
if (nodes.size > 1) {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
if (nodes.size > 1) {
for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref3;
try {
for (var _iterator2 = (0, _getIterator3.default)(nodes), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var node = _step2.value;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref3 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref3 = _i2.value;
}
context.report(node, '\'' + _module + '\' imported multiple times.');
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
var node = _ref3;
context.report(node, '\'' + _module + '\' imported multiple times.');
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}

@@ -98,2 +75,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLWR1cGxpY2F0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztBQUVBLE9BQU8sT0FBUCxHQUFpQixVQUFVLE9BQVYsRUFBbUI7QUFDbEMsTUFBTSxXQUFXLG1CQUFYLENBRDRCO0FBRWxDLFNBQU87QUFDTCx5QkFBcUIsMkJBQVUsQ0FBVixFQUFhOztBQUVoQyxVQUFJLGVBQWUsdUJBQVEsRUFBRSxNQUFGLENBQVMsS0FBVCxFQUFnQixPQUF4QixLQUFvQyxFQUFFLE1BQUYsQ0FBUyxLQUFULENBRnZCOztBQUloQyxVQUFJLFNBQVMsR0FBVCxDQUFhLFlBQWIsQ0FBSixFQUFnQztBQUM5QixpQkFBUyxHQUFULENBQWEsWUFBYixFQUEyQixHQUEzQixDQUErQixFQUFFLE1BQUYsQ0FBL0IsQ0FEOEI7T0FBaEMsTUFFTztBQUNMLGlCQUFTLEdBQVQsQ0FBYSxZQUFiLEVBQTJCLGtCQUFRLENBQUMsRUFBRSxNQUFGLENBQVQsQ0FBM0IsRUFESztPQUZQO0tBSm1COztBQVdyQixvQkFBZ0IsdUJBQVk7Ozs7OztBQUMxQix3REFBNEIsU0FBUyxPQUFULFVBQTVCLG9HQUFnRDs7O2NBQXRDLHlCQUFzQztjQUE5Qix1QkFBOEI7O0FBQzlDLGNBQUksTUFBTSxJQUFOLEdBQWEsQ0FBYixFQUFnQjs7Ozs7O0FBQ2xCLCtEQUFpQixjQUFqQix3R0FBd0I7b0JBQWYsb0JBQWU7O0FBQ3RCLHdCQUFRLE1BQVIsQ0FBZSxJQUFmLFNBQXlCLHVDQUF6QixFQURzQjtlQUF4Qjs7Ozs7Ozs7Ozs7Ozs7YUFEa0I7V0FBcEI7U0FERjs7Ozs7Ozs7Ozs7Ozs7T0FEMEI7S0FBWjtHQVpsQixDQUZrQztDQUFuQiIsImZpbGUiOiJydWxlcy9uby1kdXBsaWNhdGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlc29sdmUgZnJvbSAnLi4vY29yZS9yZXNvbHZlJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGNvbnN0IGltcG9ydGVkID0gbmV3IE1hcCgpXG4gIHJldHVybiB7XG4gICAgJ0ltcG9ydERlY2xhcmF0aW9uJzogZnVuY3Rpb24gKG4pIHtcbiAgICAgIC8vIHJlc29sdmVkIHBhdGggd2lsbCBjb3ZlciBhbGlhc2VkIGR1cGxpY2F0ZXNcbiAgICAgIGxldCByZXNvbHZlZFBhdGggPSByZXNvbHZlKG4uc291cmNlLnZhbHVlLCBjb250ZXh0KSB8fCBuLnNvdXJjZS52YWx1ZVxuXG4gICAgICBpZiAoaW1wb3J0ZWQuaGFzKHJlc29sdmVkUGF0aCkpIHtcbiAgICAgICAgaW1wb3J0ZWQuZ2V0KHJlc29sdmVkUGF0aCkuYWRkKG4uc291cmNlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW1wb3J0ZWQuc2V0KHJlc29sdmVkUGF0aCwgbmV3IFNldChbbi5zb3VyY2VdKSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJ1Byb2dyYW06ZXhpdCc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IFttb2R1bGUsIG5vZGVzXSBvZiBpbXBvcnRlZC5lbnRyaWVzKCkpIHtcbiAgICAgICAgaWYgKG5vZGVzLnNpemUgPiAxKSB7XG4gICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZSwgYCcke21vZHVsZX0nIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzLmApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLWR1cGxpY2F0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7OztBQUVBLE9BQU8sT0FBUCxHQUFpQixVQUFVLE9BQVYsRUFBbUI7QUFDbEMsTUFBTSxXQUFXLHNCQUFYLENBRDRCO0FBRWxDLFNBQU87QUFDTCx5QkFBcUIsMkJBQVUsQ0FBVixFQUFhOztBQUVoQyxVQUFJLGVBQWUsdUJBQVEsRUFBRSxNQUFGLENBQVMsS0FBVCxFQUFnQixPQUF4QixLQUFvQyxFQUFFLE1BQUYsQ0FBUyxLQUFULENBRnZCOztBQUloQyxVQUFJLFNBQVMsR0FBVCxDQUFhLFlBQWIsQ0FBSixFQUFnQztBQUM5QixpQkFBUyxHQUFULENBQWEsWUFBYixFQUEyQixHQUEzQixDQUErQixFQUFFLE1BQUYsQ0FBL0IsQ0FEOEI7T0FBaEMsTUFFTztBQUNMLGlCQUFTLEdBQVQsQ0FBYSxZQUFiLEVBQTJCLHFCQUFRLENBQUMsRUFBRSxNQUFGLENBQVQsQ0FBM0IsRUFESztPQUZQO0tBSm1COztBQVdyQixvQkFBZ0IsdUJBQVk7QUFDMUIsMkJBQTRCLFNBQVMsT0FBVCxnSEFBNUIsSUFBZ0Q7Ozs7Ozs7Ozs7Ozs7WUFBdEMsbUJBQXNDO1lBQTlCLGlCQUE4Qjs7QUFDOUMsWUFBSSxNQUFNLElBQU4sR0FBYSxDQUFiLEVBQWdCO0FBQ2xCLGdDQUFpQiwwSEFBakIsSUFBd0I7Ozs7Ozs7Ozs7OztnQkFBZixhQUFlOztBQUN0QixvQkFBUSxNQUFSLENBQWUsSUFBZixTQUF5Qix1Q0FBekIsRUFEc0I7V0FBeEI7U0FERjtPQURGO0tBRGM7R0FabEIsQ0FGa0M7Q0FBbkIiLCJmaWxlIjoicnVsZXMvbm8tZHVwbGljYXRlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnZXM2LXN5bWJvbC9pbXBsZW1lbnQnXG5pbXBvcnQgTWFwIGZyb20gJ2VzNi1tYXAnXG5pbXBvcnQgU2V0IGZyb20gJ2VzNi1zZXQnXG5cbmltcG9ydCByZXNvbHZlIGZyb20gJy4uL2NvcmUvcmVzb2x2ZSdcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBjb25zdCBpbXBvcnRlZCA9IG5ldyBNYXAoKVxuICByZXR1cm4ge1xuICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGZ1bmN0aW9uIChuKSB7XG4gICAgICAvLyByZXNvbHZlZCBwYXRoIHdpbGwgY292ZXIgYWxpYXNlZCBkdXBsaWNhdGVzXG4gICAgICBsZXQgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZShuLnNvdXJjZS52YWx1ZSwgY29udGV4dCkgfHwgbi5zb3VyY2UudmFsdWVcblxuICAgICAgaWYgKGltcG9ydGVkLmhhcyhyZXNvbHZlZFBhdGgpKSB7XG4gICAgICAgIGltcG9ydGVkLmdldChyZXNvbHZlZFBhdGgpLmFkZChuLnNvdXJjZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltcG9ydGVkLnNldChyZXNvbHZlZFBhdGgsIG5ldyBTZXQoW24uc291cmNlXSkpXG4gICAgICB9XG4gICAgfSxcblxuICAgICdQcm9ncmFtOmV4aXQnOiBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBbbW9kdWxlLCBub2Rlc10gb2YgaW1wb3J0ZWQuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChub2Rlcy5zaXplID4gMSkge1xuICAgICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KG5vZGUsIGAnJHttb2R1bGV9JyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcy5gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
'use strict';
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
require('es6-symbol/implement');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _resolve = require('../core/resolve');

@@ -13,2 +11,7 @@

/**
* @fileOverview Ensures that an imported path exists, given resolution rules.
* @author Ben Mosher
*/
module.exports = function (context) {

@@ -62,30 +65,22 @@

var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
for (var _iterator = modules.elements, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
try {
for (var _iterator = (0, _getIterator3.default)(modules.elements), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var element = _step.value;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
if (element.type !== 'Literal') continue;
if (typeof element.value !== 'string') continue;
var element = _ref;
if (element.value === 'require' || element.value === 'exports') continue; // magic modules: http://git.io/vByan
if (element.type !== 'Literal') continue;
if (typeof element.value !== 'string') continue;
checkSourceValue(element);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
if (element.value === 'require' || element.value === 'exports') continue; // magic modules: http://git.io/vByan
checkSourceValue(element);
}

@@ -117,8 +112,4 @@ }

return visitors;
}; /**
* @fileOverview Ensures that an imported path exists, given resolution rules.
* @author Ben Mosher
*/
};
module.exports.schema = [{

@@ -138,2 +129,2 @@ 'type': 'object',

}];
//# sourceMappingURL=data:application/json;base64,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O0dBSEksQ0F6RDRCOztBQStEbEMsTUFBSSxRQUFRLE9BQVIsQ0FBZ0IsQ0FBaEIsS0FBc0IsSUFBdEIsRUFBNEI7OzhCQUNKLFFBQVEsT0FBUixDQUFnQixDQUFoQjtVQUFsQjtVQUFVOzs7QUFFbEIsVUFBSSxZQUFZLEdBQVosRUFBaUI7QUFDbkIsaUJBQVMsZ0JBQVQsSUFBNkIsVUFBVSxJQUFWLEVBQWdCO0FBQzNDLGNBQUksUUFBSixFQUFjLFlBQVksSUFBWixFQUFkO0FBQ0EsY0FBSSxHQUFKLEVBQVMsU0FBUyxJQUFULEVBQVQ7U0FGMkIsQ0FEVjtPQUFyQjtTQUg4QjtHQUFoQzs7QUFXQSxTQUFPLFFBQVAsQ0ExRWtDO0NBQW5COzs7Ozs7QUE2RWpCLE9BQU8sT0FBUCxDQUFlLE1BQWYsR0FBd0IsQ0FDdEI7QUFDRSxVQUFRLFFBQVI7QUFDQSxnQkFBYztBQUNaLGdCQUFZLEVBQUUsUUFBUSxTQUFSLEVBQWQ7QUFDQSxXQUFPLEVBQUUsUUFBUSxTQUFSLEVBQVQ7QUFDQSxjQUFVO0FBQ1IsY0FBUSxPQUFSO0FBQ0Esa0JBQVksQ0FBWjtBQUNBLGVBQVMsRUFBRSxRQUFRLFFBQVIsRUFBWDtBQUNBLHFCQUFlLElBQWY7S0FKRjtHQUhGO0FBVUEsMEJBQXdCLEtBQXhCO0NBYm9CLENBQXhCIiwiZmlsZSI6InJ1bGVzL25vLXVucmVzb2x2ZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgRW5zdXJlcyB0aGF0IGFuIGltcG9ydGVkIHBhdGggZXhpc3RzLCBnaXZlbiByZXNvbHV0aW9uIHJ1bGVzLlxuICogQGF1dGhvciBCZW4gTW9zaGVyXG4gKi9cbmltcG9ydCByZXNvbHZlIGZyb20gJy4uL2NvcmUvcmVzb2x2ZSdcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuXG4gIGxldCBpZ25vcmVSZWdFeHBzID0gW11cbiAgaWYgKGNvbnRleHQub3B0aW9uc1swXSAhPSBudWxsICYmIGNvbnRleHQub3B0aW9uc1swXS5pZ25vcmUgIT0gbnVsbCkge1xuICAgIGlnbm9yZVJlZ0V4cHMgPSBjb250ZXh0Lm9wdGlvbnNbMF0uaWdub3JlLm1hcChwID0+IG5ldyBSZWdFeHAocCkpXG4gIH1cblxuICBmdW5jdGlvbiBjaGVja1NvdXJjZVZhbHVlKHNvdXJjZSkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBpZiAoaWdub3JlUmVnRXhwcy5zb21lKHJlID0+IHJlLnRlc3Qoc291cmNlLnZhbHVlKSkpIHJldHVyblxuXG4gICAgaWYgKHJlc29sdmUoc291cmNlLnZhbHVlLCBjb250ZXh0KSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydChzb3VyY2UsXG4gICAgICAgICdVbmFibGUgdG8gcmVzb2x2ZSBwYXRoIHRvIG1vZHVsZSBcXCcnICsgc291cmNlLnZhbHVlICsgJ1xcJy4nKVxuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBpbXBvcnQteSBkZWNsYXJhdGlvbnNcbiAgZnVuY3Rpb24gY2hlY2tTb3VyY2Uobm9kZSkge1xuICAgIGNoZWNrU291cmNlVmFsdWUobm9kZS5zb3VyY2UpXG4gIH1cblxuICAvLyBmb3IgQ29tbW9uSlMgYHJlcXVpcmVgIGNhbGxzXG4gIC8vIGFkYXB0ZWQgZnJvbSBAbWN0ZXA6IGh0dHA6Ly9naXQuaW8vdjRyQXVcbiAgZnVuY3Rpb24gY2hlY2tDb21tb24oY2FsbCkge1xuICAgIGlmIChjYWxsLmNhbGxlZS50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgIGlmIChjYWxsLmNhbGxlZS5uYW1lICE9PSAncmVxdWlyZScpIHJldHVyblxuICAgIGlmIChjYWxsLmFyZ3VtZW50cy5sZW5ndGggIT09IDEpIHJldHVyblxuXG4gICAgY29uc3QgbW9kdWxlUGF0aCA9IGNhbGwuYXJndW1lbnRzWzBdXG4gICAgaWYgKG1vZHVsZVBhdGgudHlwZSAhPT0gJ0xpdGVyYWwnKSByZXR1cm5cbiAgICBpZiAodHlwZW9mIG1vZHVsZVBhdGgudmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm5cblxuICAgIGNoZWNrU291cmNlVmFsdWUobW9kdWxlUGF0aClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrQU1EKGNhbGwpIHtcbiAgICBpZiAoY2FsbC5jYWxsZWUudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICBpZiAoY2FsbC5jYWxsZWUubmFtZSAhPT0gJ3JlcXVpcmUnICYmXG4gICAgICAgIGNhbGwuY2FsbGVlLm5hbWUgIT09ICdkZWZpbmUnKSByZXR1cm5cbiAgICBpZiAoY2FsbC5hcmd1bWVudHMubGVuZ3RoICE9PSAyKSByZXR1cm5cblxuICAgIGNvbnN0IG1vZHVsZXMgPSBjYWxsLmFyZ3VtZW50c1swXVxuICAgIGlmIChtb2R1bGVzLnR5cGUgIT09ICdBcnJheUV4cHJlc3Npb24nKSByZXR1cm5cblxuICAgIGZvciAobGV0IGVsZW1lbnQgb2YgbW9kdWxlcy5lbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ0xpdGVyYWwnKSBjb250aW51ZVxuICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LnZhbHVlICE9PSAnc3RyaW5nJykgY29udGludWVcblxuICAgICAgaWYgKGVsZW1lbnQudmFsdWUgPT09ICdyZXF1aXJlJyB8fFxuICAgICAgICAgIGVsZW1lbnQudmFsdWUgPT09ICdleHBvcnRzJykgY29udGludWUgLy8gbWFnaWMgbW9kdWxlczogaHR0cDovL2dpdC5pby92QnlhblxuXG4gICAgICBjaGVja1NvdXJjZVZhbHVlKGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdmlzaXRvcnMgPSB7XG4gICAgJ0ltcG9ydERlY2xhcmF0aW9uJzogY2hlY2tTb3VyY2UsXG4gICAgJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nOiBjaGVja1NvdXJjZSxcbiAgICAnRXhwb3J0QWxsRGVjbGFyYXRpb24nOiBjaGVja1NvdXJjZSxcbiAgfVxuXG4gIGlmIChjb250ZXh0Lm9wdGlvbnNbMF0gIT0gbnVsbCkge1xuICAgIGNvbnN0IHsgY29tbW9uanMsIGFtZCB9ID0gY29udGV4dC5vcHRpb25zWzBdXG5cbiAgICBpZiAoY29tbW9uanMgfHwgYW1kKSB7XG4gICAgICB2aXNpdG9yc1snQ2FsbEV4cHJlc3Npb24nXSA9IGZ1bmN0aW9uIChjYWxsKSB7XG4gICAgICAgIGlmIChjb21tb25qcykgY2hlY2tDb21tb24oY2FsbClcbiAgICAgICAgaWYgKGFtZCkgY2hlY2tBTUQoY2FsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmlzaXRvcnNcbn1cblxubW9kdWxlLmV4cG9ydHMuc2NoZW1hID0gW1xuICB7XG4gICAgJ3R5cGUnOiAnb2JqZWN0JyxcbiAgICAncHJvcGVydGllcyc6IHtcbiAgICAgICdjb21tb25qcyc6IHsgJ3R5cGUnOiAnYm9vbGVhbicgfSxcbiAgICAgICdhbWQnOiB7ICd0eXBlJzogJ2Jvb2xlYW4nIH0sXG4gICAgICAnaWdub3JlJzoge1xuICAgICAgICAndHlwZSc6ICdhcnJheScsXG4gICAgICAgICdtaW5JdGVtcyc6IDEsXG4gICAgICAgICdpdGVtcyc6IHsgJ3R5cGUnOiAnc3RyaW5nJyB9LFxuICAgICAgICAndW5pcXVlSXRlbXMnOiB0cnVlLFxuICAgICAgfSxcbiAgICB9LFxuICAgICdhZGRpdGlvbmFsUHJvcGVydGllcyc6IGZhbHNlLFxuICB9LFxuXVxuIl19
//# sourceMappingURL=data:application/json;base64,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QStEbEMsTUFBSSxRQUFRLE9BQVIsQ0FBZ0IsQ0FBaEIsS0FBc0IsSUFBdEIsRUFBNEI7OzhCQUNKLFFBQVEsT0FBUixDQUFnQixDQUFoQjtVQUFsQjtVQUFVOzs7QUFFbEIsVUFBSSxZQUFZLEdBQVosRUFBaUI7QUFDbkIsaUJBQVMsZ0JBQVQsSUFBNkIsVUFBVSxJQUFWLEVBQWdCO0FBQzNDLGNBQUksUUFBSixFQUFjLFlBQVksSUFBWixFQUFkO0FBQ0EsY0FBSSxHQUFKLEVBQVMsU0FBUyxJQUFULEVBQVQ7U0FGMkIsQ0FEVjtPQUFyQjtTQUg4QjtHQUFoQzs7QUFXQSxTQUFPLFFBQVAsQ0ExRWtDO0NBQW5COztBQTZFakIsT0FBTyxPQUFQLENBQWUsTUFBZixHQUF3QixDQUN0QjtBQUNFLFVBQVEsUUFBUjtBQUNBLGdCQUFjO0FBQ1osZ0JBQVksRUFBRSxRQUFRLFNBQVIsRUFBZDtBQUNBLFdBQU8sRUFBRSxRQUFRLFNBQVIsRUFBVDtBQUNBLGNBQVU7QUFDUixjQUFRLE9BQVI7QUFDQSxrQkFBWSxDQUFaO0FBQ0EsZUFBUyxFQUFFLFFBQVEsUUFBUixFQUFYO0FBQ0EscUJBQWUsSUFBZjtLQUpGO0dBSEY7QUFVQSwwQkFBd0IsS0FBeEI7Q0Fib0IsQ0FBeEIiLCJmaWxlIjoicnVsZXMvbm8tdW5yZXNvbHZlZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBFbnN1cmVzIHRoYXQgYW4gaW1wb3J0ZWQgcGF0aCBleGlzdHMsIGdpdmVuIHJlc29sdXRpb24gcnVsZXMuXG4gKiBAYXV0aG9yIEJlbiBNb3NoZXJcbiAqL1xuXG5pbXBvcnQgJ2VzNi1zeW1ib2wvaW1wbGVtZW50J1xuXG5pbXBvcnQgcmVzb2x2ZSBmcm9tICcuLi9jb3JlL3Jlc29sdmUnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcblxuICBsZXQgaWdub3JlUmVnRXhwcyA9IFtdXG4gIGlmIChjb250ZXh0Lm9wdGlvbnNbMF0gIT0gbnVsbCAmJiBjb250ZXh0Lm9wdGlvbnNbMF0uaWdub3JlICE9IG51bGwpIHtcbiAgICBpZ25vcmVSZWdFeHBzID0gY29udGV4dC5vcHRpb25zWzBdLmlnbm9yZS5tYXAocCA9PiBuZXcgUmVnRXhwKHApKVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tTb3VyY2VWYWx1ZShzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgaWYgKGlnbm9yZVJlZ0V4cHMuc29tZShyZSA9PiByZS50ZXN0KHNvdXJjZS52YWx1ZSkpKSByZXR1cm5cblxuICAgIGlmIChyZXNvbHZlKHNvdXJjZS52YWx1ZSwgY29udGV4dCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGV4dC5yZXBvcnQoc291cmNlLFxuICAgICAgICAnVW5hYmxlIHRvIHJlc29sdmUgcGF0aCB0byBtb2R1bGUgXFwnJyArIHNvdXJjZS52YWx1ZSArICdcXCcuJylcbiAgICB9XG4gIH1cblxuICAvLyBmb3IgaW1wb3J0LXkgZGVjbGFyYXRpb25zXG4gIGZ1bmN0aW9uIGNoZWNrU291cmNlKG5vZGUpIHtcbiAgICBjaGVja1NvdXJjZVZhbHVlKG5vZGUuc291cmNlKVxuICB9XG5cbiAgLy8gZm9yIENvbW1vbkpTIGByZXF1aXJlYCBjYWxsc1xuICAvLyBhZGFwdGVkIGZyb20gQG1jdGVwOiBodHRwOi8vZ2l0LmlvL3Y0ckF1XG4gIGZ1bmN0aW9uIGNoZWNrQ29tbW9uKGNhbGwpIHtcbiAgICBpZiAoY2FsbC5jYWxsZWUudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICBpZiAoY2FsbC5jYWxsZWUubmFtZSAhPT0gJ3JlcXVpcmUnKSByZXR1cm5cbiAgICBpZiAoY2FsbC5hcmd1bWVudHMubGVuZ3RoICE9PSAxKSByZXR1cm5cblxuICAgIGNvbnN0IG1vZHVsZVBhdGggPSBjYWxsLmFyZ3VtZW50c1swXVxuICAgIGlmIChtb2R1bGVQYXRoLnR5cGUgIT09ICdMaXRlcmFsJykgcmV0dXJuXG4gICAgaWYgKHR5cGVvZiBtb2R1bGVQYXRoLnZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuXG5cbiAgICBjaGVja1NvdXJjZVZhbHVlKG1vZHVsZVBhdGgpXG4gIH1cblxuICBmdW5jdGlvbiBjaGVja0FNRChjYWxsKSB7XG4gICAgaWYgKGNhbGwuY2FsbGVlLnR5cGUgIT09ICdJZGVudGlmaWVyJykgcmV0dXJuXG4gICAgaWYgKGNhbGwuY2FsbGVlLm5hbWUgIT09ICdyZXF1aXJlJyAmJlxuICAgICAgICBjYWxsLmNhbGxlZS5uYW1lICE9PSAnZGVmaW5lJykgcmV0dXJuXG4gICAgaWYgKGNhbGwuYXJndW1lbnRzLmxlbmd0aCAhPT0gMikgcmV0dXJuXG5cbiAgICBjb25zdCBtb2R1bGVzID0gY2FsbC5hcmd1bWVudHNbMF1cbiAgICBpZiAobW9kdWxlcy50eXBlICE9PSAnQXJyYXlFeHByZXNzaW9uJykgcmV0dXJuXG5cbiAgICBmb3IgKGxldCBlbGVtZW50IG9mIG1vZHVsZXMuZWxlbWVudHMpIHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdMaXRlcmFsJykgY29udGludWVcbiAgICAgIGlmICh0eXBlb2YgZWxlbWVudC52YWx1ZSAhPT0gJ3N0cmluZycpIGNvbnRpbnVlXG5cbiAgICAgIGlmIChlbGVtZW50LnZhbHVlID09PSAncmVxdWlyZScgfHxcbiAgICAgICAgICBlbGVtZW50LnZhbHVlID09PSAnZXhwb3J0cycpIGNvbnRpbnVlIC8vIG1hZ2ljIG1vZHVsZXM6IGh0dHA6Ly9naXQuaW8vdkJ5YW5cblxuICAgICAgY2hlY2tTb3VyY2VWYWx1ZShlbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZpc2l0b3JzID0ge1xuICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGNoZWNrU291cmNlLFxuICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogY2hlY2tTb3VyY2UsXG4gICAgJ0V4cG9ydEFsbERlY2xhcmF0aW9uJzogY2hlY2tTb3VyY2UsXG4gIH1cblxuICBpZiAoY29udGV4dC5vcHRpb25zWzBdICE9IG51bGwpIHtcbiAgICBjb25zdCB7IGNvbW1vbmpzLCBhbWQgfSA9IGNvbnRleHQub3B0aW9uc1swXVxuXG4gICAgaWYgKGNvbW1vbmpzIHx8IGFtZCkge1xuICAgICAgdmlzaXRvcnNbJ0NhbGxFeHByZXNzaW9uJ10gPSBmdW5jdGlvbiAoY2FsbCkge1xuICAgICAgICBpZiAoY29tbW9uanMpIGNoZWNrQ29tbW9uKGNhbGwpXG4gICAgICAgIGlmIChhbWQpIGNoZWNrQU1EKGNhbGwpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZpc2l0b3JzXG59XG5cbm1vZHVsZS5leHBvcnRzLnNjaGVtYSA9IFtcbiAge1xuICAgICd0eXBlJzogJ29iamVjdCcsXG4gICAgJ3Byb3BlcnRpZXMnOiB7XG4gICAgICAnY29tbW9uanMnOiB7ICd0eXBlJzogJ2Jvb2xlYW4nIH0sXG4gICAgICAnYW1kJzogeyAndHlwZSc6ICdib29sZWFuJyB9LFxuICAgICAgJ2lnbm9yZSc6IHtcbiAgICAgICAgJ3R5cGUnOiAnYXJyYXknLFxuICAgICAgICAnbWluSXRlbXMnOiAxLFxuICAgICAgICAnaXRlbXMnOiB7ICd0eXBlJzogJ3N0cmluZycgfSxcbiAgICAgICAgJ3VuaXF1ZUl0ZW1zJzogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICAnYWRkaXRpb25hbFByb3BlcnRpZXMnOiBmYWxzZSxcbiAgfSxcbl1cbiJdfQ==
{
"name": "eslint-plugin-import",
"version": "1.3.0",
"version": "1.4.0",
"description": "Import with sanity.",

@@ -9,2 +9,7 @@ "main": "lib/index.js",

},
"files": [
"lib",
"config",
"memo-parser"
],
"scripts": {

@@ -15,2 +20,3 @@ "watch": "cross-env NODE_PATH=./lib gulp watch-test",

"test": "cross-env NODE_PATH=./lib gulp test",
"test-all": "npm test && for resolver in ./resolvers/*; do cd $resolver && npm test && cd ../..; done",
"ci-test": "eslint ./src && gulp pretest && cross-env NODE_PATH=./lib istanbul cover --report lcovonly --dir reports/coverage _mocha tests/lib/ -- --recursive --reporter dot",

@@ -42,6 +48,4 @@ "debug": "cross-env NODE_PATH=./lib mocha debug --recursive --reporter dot tests/lib/",

"babel-eslint": "next",
"babel-plugin-transform-runtime": "6.5.2",
"babel-preset-es2015": "6.5.0",
"babel-preset-react": "6.5.0",
"babel-preset-stage-1": "6.5.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-es2015-loose": "^7.0.0",
"chai": "^3.4.0",

@@ -67,12 +71,9 @@ "coveralls": "^2.11.4",

"dependencies": {
"babel-runtime": "6.5.0",
"doctrine": "1.2.0",
"eslint-import-resolver-node": "^0.1.0"
},
"greenkeeper": {
"ignore": [
"babel",
"babel-runtime"
]
"es6-map": "^0.1.3",
"es6-set": "^0.1.4",
"es6-symbol": "*",
"eslint-import-resolver-node": "^0.2.0",
"object-assign": "^4.0.1"
}
}

@@ -88,3 +88,3 @@ # eslint-plugin-import

# Resolver plugins
# Resolvers

@@ -103,44 +103,6 @@ With the advent of module bundlers and the current state of modules and module

In the interest of supporting both of these, v0.11 introduces resolver plugins.
At the moment, these are modules exporting a single function:
In the interest of supporting both of these, v0.11 introduces resolvers.
```js
exports.resolveImport = function (source, file, config) {
// return source's absolute path given
// - file: absolute path of importing module
// - config: optional config provided for this resolver
// return `null` if source is a "core" module (i.e. "fs", "crypto") that
// can't be found on the filesystem
}
```
The default `node` plugin that uses [`resolve`] is a handful of lines:
```js
var resolve = require('resolve')
, path = require('path')
, assign = require('object-assign')
exports.resolveImport = function resolveImport(source, file, config) {
if (resolve.isCore(source)) return null
return resolve.sync(source, opts(path.dirname(file), config))
}
function opts(basedir, config) {
return assign( {}
, config
, { basedir: basedir }
)
}
```
It essentially just uses the current file to get a reference base directory (`basedir`)
and then passes through any explicit config from the `.eslintrc`; things like
non-standard file extensions, module directories, etc.
Currently [Node] and [Webpack] resolution have been implemented, but the
resolvers are just npm packages, so third party packages are supported (and encouraged!).
resolvers are just npm packages, so [third party packages are supported](https://github.com/benmosher/eslint-plugin-import/wiki/Resolvers) (and encouraged!).

@@ -162,2 +124,4 @@ Just install a resolver as `eslint-import-resolver-foo` and reference it as such:

If you are interesting in writing a resolver, see the [spec](./resolvers/README.md) for more details.
[`resolve`]: https://www.npmjs.com/package/resolve

@@ -199,3 +163,3 @@ [`externals`]: http://webpack.github.io/docs/library-and-externals.html

See [resolver plugins](#resolver-plugins).
See [resolvers](#resolvers).

@@ -202,0 +166,0 @@ #### `import/cache`

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc