Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

eslint-plugin-import

Package Overview
Dependencies
Maintainers
1
Versions
131
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.12.0 to 1.13.0

24

CHANGELOG.md

@@ -8,2 +8,14 @@ # Change Log

## [1.13.0] - 2016-08-11
### Added
- `allowComputed` option for [`namespace`] rule. If set to `true`, won't report
computed member references to namespaces. (see [#456])
### Changed
- Modified [`no-nodejs-modules`] error message to include the module's name ([#453], [#461])
### Fixed
- [`import/extensions` setting] is respected in spite of the appearance of imports
in an imported file. (fixes [#478], thanks [@rhys-vdw])
## [1.12.0] - 2016-07-26

@@ -89,3 +101,3 @@ ### Added

- add [`no-mutable-exports`] rule ([#290], thanks [@josh])
- [`import/extensions` setting]: a whitelist of file extensions to parse as modules
- [`import/extensions` setting]: a list of file extensions to parse as modules
and search for `export`s. If unspecified, all extensions are considered valid (for now).

@@ -236,3 +248,3 @@ In v2, this will likely default to `['.js', MODULE_EXT]`. ([#297], to fix [#267])

this to support use of `jsnext:main` in `node_modules` without the pain of
managing a whitelist or a nuanced blacklist.
managing an allow list or a nuanced deny list.

@@ -275,2 +287,3 @@ ## [0.11.0] - 2015-11-27

[#461]: https://github.com/benmosher/eslint-plugin-import/pull/461
[#444]: https://github.com/benmosher/eslint-plugin-import/pull/444

@@ -311,2 +324,5 @@ [#428]: https://github.com/benmosher/eslint-plugin-import/pull/428

[#478]: https://github.com/benmosher/eslint-plugin-import/issues/478
[#456]: https://github.com/benmosher/eslint-plugin-import/issues/456
[#453]: https://github.com/benmosher/eslint-plugin-import/issues/453
[#441]: https://github.com/benmosher/eslint-plugin-import/issues/441

@@ -342,3 +358,4 @@ [#423]: https://github.com/benmosher/eslint-plugin-import/issues/423

[Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v1.12.0...HEAD
[Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v1.13.0...HEAD
[1.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.12.0...v1.13.0
[1.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.1...v1.12.0

@@ -399,1 +416,2 @@ [1.11.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.0...v1.11.1

[@zloirock]: https://github.com/zloirock
[@rhys-vdw]: https://github.com/rhys-vdw

@@ -99,2 +99,8 @@ 'use strict';

// check valid extensions first
if (!(0, _ignore.hasValidExtension)(path, context)) {
exportCache.set(cacheKey, null);
return null;
}
var content = fs.readFileSync(path, { encoding: 'utf8' });

@@ -571,2 +577,2 @@

}
//# sourceMappingURL=data:application/json;base64,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QztBQUNELE9BSEQ7QUFJQTtBQWhCSjtBQWtCRCIsImZpbGUiOiJjb3JlL2dldEV4cG9ydHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFwIGZyb20gJ2VzNi1tYXAnXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJ1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJ1xuaW1wb3J0ICogYXMgZG9jdHJpbmUgZnJvbSAnZG9jdHJpbmUnXG5cbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlJ1xuaW1wb3J0IHJlc29sdmUsIHsgcmVsYXRpdmUgYXMgcmVzb2x2ZVJlbGF0aXZlIH0gZnJvbSAnLi9yZXNvbHZlJ1xuaW1wb3J0IGlzSWdub3JlZCBmcm9tICcuL2lnbm9yZSdcblxuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vaGFzaCdcblxuY29uc3QgZXhwb3J0Q2FjaGUgPSBuZXcgTWFwKClcblxuLyoqXG4gKiBkZXRlY3QgZXhwb3J0cyB3aXRob3V0IGEgZnVsbCBwYXJzZS5cbiAqIHVzZWQgcHJpbWFyaWx5IHRvIGlnbm9yZSB0aGUgaW1wb3J0L2lnbm9yZSBzZXR0aW5nLCBpaWYgaXQgbG9va3MgbGlrZVxuICogdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHRoZXJlIChpLmUuLCBqc25leHQ6bWFpbiBpcyBzZXQpLlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xuY29uc3QgaGFzRXhwb3J0cyA9IG5ldyBSZWdFeHAoJyhefFtcXFxcbjtdKVxcXFxzKmV4cG9ydFxcXFxzW1xcXFx3eypdJylcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb3J0TWFwIHtcbiAgY29uc3RydWN0b3IocGF0aCkge1xuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5ldyBNYXAoKVxuICAgIC8vIHRvZG86IHJlc3RydWN0dXJlIHRvIGtleSBvbiBwYXRoLCB2YWx1ZSBpcyByZXNvbHZlciArIG1hcCBvZiBuYW1lc1xuICAgIHRoaXMucmVleHBvcnRzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmVycm9ycyA9IFtdXG4gIH1cblxuICBnZXQgaGFzRGVmYXVsdCgpIHsgcmV0dXJuIHRoaXMuZ2V0KCdkZWZhdWx0JykgIT0gbnVsbCB9IC8vIHN0cm9uZ2VyIHRoYW4gdGhpcy5oYXNcblxuICBnZXQgc2l6ZSgpIHtcbiAgICBsZXQgc2l6ZSA9IHRoaXMubmFtZXNwYWNlLnNpemUgKyB0aGlzLnJlZXhwb3J0cy5zaXplXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChkZXAgPT4gc2l6ZSArPSBkZXAoKS5zaXplKVxuICAgIHJldHVybiBzaXplXG4gIH1cblxuICBzdGF0aWMgZ2V0KHNvdXJjZSwgY29udGV4dCkge1xuXG4gICAgdmFyIHBhdGggPSByZXNvbHZlKHNvdXJjZSwgY29udGV4dClcbiAgICBpZiAocGF0aCA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIEV4cG9ydE1hcC5mb3IocGF0aCwgY29udGV4dClcbiAgfVxuXG4gIHN0YXRpYyBmb3IocGF0aCwgY29udGV4dCkge1xuICAgIGxldCBleHBvcnRNYXBcblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gaGFzaE9iamVjdChjcmVhdGVIYXNoKCdzaGEyNTYnKSwge1xuICAgICAgc2V0dGluZ3M6IGNvbnRleHQuc2V0dGluZ3MsXG4gICAgICBwYXJzZXJQYXRoOiBjb250ZXh0LnBhcnNlclBhdGgsXG4gICAgICBwYXJzZXJPcHRpb25zOiBjb250ZXh0LnBhcnNlck9wdGlvbnMsXG4gICAgICBwYXRoLFxuICAgIH0pLmRpZ2VzdCgnaGV4JylcblxuICAgIGV4cG9ydE1hcCA9IGV4cG9ydENhY2hlLmdldChjYWNoZUtleSlcblxuICAgIC8vIHJldHVybiBjYWNoZWQgaWdub3JlXG4gICAgaWYgKGV4cG9ydE1hcCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMocGF0aClcbiAgICBpZiAoZXhwb3J0TWFwICE9IG51bGwpIHtcbiAgICAgIC8vIGRhdGUgZXF1YWxpdHkgY2hlY2tcbiAgICAgIGlmIChleHBvcnRNYXAubXRpbWUgLSBzdGF0cy5tdGltZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0TWFwXG4gICAgICB9XG4gICAgICAvLyBmdXR1cmU6IGNoZWNrIGNvbnRlbnQgZXF1YWxpdHk/XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSlcblxuICAgIC8vIGNoZWNrIGZvciBhbmQgY2FjaGUgaWdub3JlXG4gICAgaWYgKGlzSWdub3JlZChwYXRoLCBjb250ZXh0KSAmJiAhaGFzRXhwb3J0cy50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGV4cG9ydE1hcCA9IEV4cG9ydE1hcC5wYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KVxuICAgIGV4cG9ydE1hcC5tdGltZSA9IHN0YXRzLm10aW1lXG5cbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIGV4cG9ydE1hcClcbiAgICByZXR1cm4gZXhwb3J0TWFwXG4gIH1cblxuICBzdGF0aWMgcGFyc2UocGF0aCwgY29udGVudCwgY29udGV4dCkge1xuICAgIHZhciBtID0gbmV3IEV4cG9ydE1hcChwYXRoKVxuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBhc3QgPSBwYXJzZShjb250ZW50LCBjb250ZXh0KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbS5lcnJvcnMucHVzaChlcnIpXG4gICAgICByZXR1cm4gbSAvLyBjYW4ndCBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGRvY3N0eWxlID0gKGNvbnRleHQuc2V0dGluZ3MgJiYgY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2RvY3N0eWxlJ10pIHx8IFsnanNkb2MnXVxuICAgIGNvbnN0IGRvY1N0eWxlUGFyc2VycyA9IHt9XG4gICAgZG9jc3R5bGUuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgICBkb2NTdHlsZVBhcnNlcnNbc3R5bGVdID0gYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzW3N0eWxlXVxuICAgIH0pXG5cbiAgICAvLyBhdHRlbXB0IHRvIGNvbGxlY3QgbW9kdWxlIGRvY1xuICAgIGFzdC5jb21tZW50cy5zb21lKGMgPT4ge1xuICAgICAgaWYgKGMudHlwZSAhPT0gJ0Jsb2NrJykgcmV0dXJuIGZhbHNlXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkb2MgPSBkb2N0cmluZS5wYXJzZShjLnZhbHVlLCB7IHVud3JhcDogdHJ1ZSB9KVxuICAgICAgICBpZiAoZG9jLnRhZ3Muc29tZSh0ID0+IHQudGl0bGUgPT09ICdtb2R1bGUnKSkge1xuICAgICAgICAgIG0uZG9jID0gZG9jXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuXG4gICAgY29uc3QgbmFtZXNwYWNlcyA9IG5ldyBNYXAoKVxuXG4gICAgZnVuY3Rpb24gcmVtb3RlUGF0aChub2RlKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVJlbGF0aXZlKG5vZGUuc291cmNlLnZhbHVlLCBwYXRoLCBjb250ZXh0LnNldHRpbmdzKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVJbXBvcnQobm9kZSkge1xuICAgICAgY29uc3QgcnAgPSByZW1vdGVQYXRoKG5vZGUpXG4gICAgICBpZiAocnAgPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgICAgIHJldHVybiBFeHBvcnRNYXAuZm9yKHJwLCBjb250ZXh0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE5hbWVzcGFjZShpZGVudGlmaWVyKSB7XG4gICAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGlkZW50aWZpZXIubmFtZSkpIHJldHVyblxuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUltcG9ydChuYW1lc3BhY2VzLmdldChpZGVudGlmaWVyLm5hbWUpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZE5hbWVzcGFjZShvYmplY3QsIGlkZW50aWZpZXIpIHtcbiAgICAgIGNvbnN0IG5zZm4gPSBnZXROYW1lc3BhY2UoaWRlbnRpZmllcilcbiAgICAgIGlmIChuc2ZuKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICduYW1lc3BhY2UnLCB7IGdldDogbnNmbiB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0XG4gICAgfVxuXG5cbiAgICBhc3QuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE1ldGEgPSBjYXB0dXJlRG9jKGRvY1N0eWxlUGFyc2VycywgbilcbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24udHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgZXhwb3J0TWV0YSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicpIHtcbiAgICAgICAgbGV0IHJlbW90ZU1hcCA9IHJlbW90ZVBhdGgobilcbiAgICAgICAgaWYgKHJlbW90ZU1hcCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgbS5kZXBlbmRlbmNpZXMuc2V0KHJlbW90ZU1hcCwgKCkgPT4gRXhwb3J0TWFwLmZvcihyZW1vdGVNYXAsIGNvbnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gY2FwdHVyZSBuYW1lc3BhY2VzIGluIGNhc2Ugb2YgbGF0ZXIgZXhwb3J0XG4gICAgICBpZiAobi50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGxldCBuc1xuICAgICAgICBpZiAobi5zcGVjaWZpZXJzLnNvbWUocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInICYmIChucyA9IHMpKSkge1xuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KG5zLmxvY2FsLm5hbWUsIG4pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyl7XG4gICAgICAgIC8vIGNhcHR1cmUgZGVjbGFyYXRpb25cbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHN3aXRjaCAobi5kZWNsYXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkRlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnVHlwZUFsaWFzJzogLy8gZmxvd3R5cGUgd2l0aCBiYWJlbC1lc2xpbnQgcGFyc2VyXG4gICAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChuLmRlY2xhcmF0aW9uLmlkLm5hbWUsIGNhcHR1cmVEb2MoZG9jU3R5bGVQYXJzZXJzLCBuKSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICBuLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucy5mb3JFYWNoKChkKSA9PlxuICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGQuaWQsIGlkID0+XG4gICAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhkb2NTdHlsZVBhcnNlcnMsIGQsIG4pKSkpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbi5zcGVjaWZpZXJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBleHBvcnRNZXRhID0ge31cbiAgICAgICAgICBsZXQgbG9jYWxcblxuICAgICAgICAgIHN3aXRjaCAocy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdFeHBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgaWYgKCFuLnNvdXJjZSkgcmV0dXJuXG4gICAgICAgICAgICAgIGxvY2FsID0gJ2RlZmF1bHQnXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXInOlxuICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0TWV0YSwgJ25hbWVzcGFjZScsIHtcbiAgICAgICAgICAgICAgICBnZXQoKSB7IHJldHVybiByZXNvbHZlSW1wb3J0KG4pIH0sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGNhc2UgJ0V4cG9ydFNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGlmICghbi5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBhZGROYW1lc3BhY2UoZXhwb3J0TWV0YSwgcy5sb2NhbCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gZWxzZSBmYWxscyB0aHJvdWdoXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBsb2NhbCA9IHMubG9jYWwubmFtZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHRvZG86IEpTRG9jXG4gICAgICAgICAgbS5yZWV4cG9ydHMuc2V0KHMuZXhwb3J0ZWQubmFtZSwgeyBsb2NhbCwgZ2V0SW1wb3J0OiAoKSA9PiByZXNvbHZlSW1wb3J0KG4pIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtXG4gIH1cblxuICAvKipcbiAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2hlY2sgZXhwbGljaXRseSByZS1leHBvcnRlZCBuYW1lcyBmb3IgZXhpc3RlbmNlXG4gICAqIGluIHRoZSBiYXNlIG5hbWVzcGFjZSwgYnV0IGl0IHdpbGwgZXhwYW5kIGFsbCBgZXhwb3J0ICogZnJvbSAnLi4uJ2AgZXhwb3J0c1xuICAgKiBpZiBub3QgZm91bmQgaW4gdGhlIGV4cGxpY2l0IG5hbWVzcGFjZS5cbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZVxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGBuYW1lYCBpcyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS5cbiAgICovXG4gIGhhcyhuYW1lKSB7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZVxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBsZXQgZm91bmRJbm5lck1hcE5hbWUgPSBmYWxzZVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICBpZiAoIWZvdW5kSW5uZXJNYXBOYW1lKSB7XG4gICAgICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcblxuICAgICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICAgIGlmIChpbm5lck1hcCAmJiBpbm5lck1hcC5oYXMobmFtZSkpIGZvdW5kSW5uZXJNYXBOYW1lID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBmb3VuZElubmVyTWFwTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIGVuc3VyZSB0aGF0IGltcG9ydGVkIG5hbWUgZnVsbHkgcmVzb2x2ZXMuXG4gICAqIEBwYXJhbSAge1t0eXBlXX0gIG5hbWUgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtCb29sZWFufSAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGhhc0RlZXAobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfVxuXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkge1xuICAgICAgY29uc3QgeyBsb2NhbCwgZ2V0SW1wb3J0IH0gPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSlcbiAgICAgICAgICAsIGltcG9ydGVkID0gZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH1cblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiBsb2NhbCA9PT0gbmFtZSkgcmV0dXJuIHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfVxuXG4gICAgICBjb25zdCBkZWVwID0gaW1wb3J0ZWQuaGFzRGVlcChsb2NhbClcbiAgICAgIGRlZXAucGF0aC51bnNoaWZ0KHRoaXMpXG5cbiAgICAgIHJldHVybiBkZWVwXG4gICAgfVxuXG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICBpZiAoIXJldHVyblZhbHVlLmZvdW5kKSB7XG4gICAgICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcbiAgICAgICAgICAvLyB0b2RvOiByZXBvcnQgYXMgdW5yZXNvbHZlZD9cbiAgICAgICAgICBpZiAoaW5uZXJNYXApIHtcblxuICAgICAgICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzXG4gICAgICAgICAgICBpZiAoaW5uZXJNYXAucGF0aCAhPT0gdGhpcy5wYXRoKSB7XG5cbiAgICAgICAgICAgICAgbGV0IGlubmVyVmFsdWUgPSBpbm5lck1hcC5oYXNEZWVwKG5hbWUpXG4gICAgICAgICAgICAgIGlmIChpbm5lclZhbHVlLmZvdW5kKSB7XG4gICAgICAgICAgICAgICAgaW5uZXJWYWx1ZS5wYXRoLnVuc2hpZnQodGhpcylcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIGdldChuYW1lKSB7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlLmhhcyhuYW1lKSkgcmV0dXJuIHRoaXMubmFtZXNwYWNlLmdldChuYW1lKVxuXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkge1xuICAgICAgY29uc3QgeyBsb2NhbCwgZ2V0SW1wb3J0IH0gPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSlcbiAgICAgICAgICAsIGltcG9ydGVkID0gZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXMsIG9ubHkgaWYgbmFtZSBtYXRjaGVzXG4gICAgICBpZiAoaW1wb3J0ZWQucGF0aCA9PT0gdGhpcy5wYXRoICYmIGxvY2FsID09PSBuYW1lKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAgIHJldHVybiBpbXBvcnRlZC5nZXQobG9jYWwpXG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWRcbiAgICBpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKChkZXApID0+IHtcbiAgICAgICAgaWYgKHJldHVyblZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZXQgaW5uZXJNYXAgPSBkZXAoKVxuICAgICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICAgIGlmIChpbm5lck1hcCkge1xuXG4gICAgICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgICAgIGlmIChpbm5lck1hcC5wYXRoICE9PSB0aGlzLnBhdGgpIHtcblxuICAgICAgICAgICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKVxuICAgICAgICAgICAgICBpZiAoaW5uZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm5WYWx1ZSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlXG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgdGhpcy5uYW1lc3BhY2UuZm9yRWFjaCgodiwgbikgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdiwgbiwgdGhpcykpXG5cbiAgICB0aGlzLnJlZXhwb3J0cy5mb3JFYWNoKCh7IGdldEltcG9ydCwgbG9jYWwgfSwgbmFtZSkgPT4ge1xuICAgICAgY29uc3QgcmVleHBvcnRlZCA9IGdldEltcG9ydCgpXG4gICAgICAvLyBjYW4ndCBsb29rIHVwIG1ldGEgZm9yIGlnbm9yZWQgcmUtZXhwb3J0cyAoIzM0OClcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgcmVleHBvcnRlZCAmJiByZWV4cG9ydGVkLmdldChsb2NhbCksIG5hbWUsIHRoaXMpXG4gICAgfSlcblxuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IGRlcCgpLmZvckVhY2goKHYsIG4pID0+XG4gICAgICBuICE9PSAnZGVmYXVsdCcgJiYgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSkpXG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBgJHtlLm1lc3NhZ2V9ICgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pYClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRvY3MgZnJvbSB0aGUgZmlyc3Qgbm9kZSB0aGF0IGhhcyBsZWFkaW5nIGNvbW1lbnRzXG4gKiBAcGFyYW0gIHsuLi5bdHlwZV19IG5vZGVzIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3tkb2M6IG9iamVjdH19XG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVEb2MoZG9jU3R5bGVQYXJzZXJzLCAuLi5ub2Rlcykge1xuICBjb25zdCBtZXRhZGF0YSA9IHt9XG5cbiAgLy8gJ3NvbWUnIHNob3J0LWNpcmN1aXRzIG9uIGZpcnN0ICd0cnVlJ1xuICBub2Rlcy5zb21lKG4gPT4ge1xuICAgIGlmICghbi5sZWFkaW5nQ29tbWVudHMpIHJldHVybiBmYWxzZVxuXG4gICAgZm9yIChsZXQgbmFtZSBpbiBkb2NTdHlsZVBhcnNlcnMpIHtcbiAgICAgIGNvbnN0IGRvYyA9IGRvY1N0eWxlUGFyc2Vyc1tuYW1lXShuLmxlYWRpbmdDb21tZW50cylcbiAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgbWV0YWRhdGEuZG9jID0gZG9jXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcblxuICByZXR1cm4gbWV0YWRhdGFcbn1cblxuY29uc3QgYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzID0ge1xuICBqc2RvYzogY2FwdHVyZUpzRG9jLFxuICB0b21kb2M6IGNhcHR1cmVUb21Eb2MsXG59XG5cbi8qKlxuICogcGFyc2UgSlNEb2MgZnJvbSBsZWFkaW5nIGNvbW1lbnRzXG4gKiBAcGFyYW0gIHsuLi5bdHlwZV19IGNvbW1lbnRzIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3tkb2M6IG9iamVjdH19XG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVKc0RvYyhjb21tZW50cykge1xuICBsZXQgZG9jXG5cbiAgLy8gY2FwdHVyZSBYU0RvY1xuICBjb21tZW50cy5mb3JFYWNoKGNvbW1lbnQgPT4ge1xuICAgIC8vIHNraXAgbm9uLWJsb2NrIGNvbW1lbnRzXG4gICAgaWYgKGNvbW1lbnQudmFsdWUuc2xpY2UoMCwgNCkgIT09ICcqXFxuIConKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgZG9jID0gZG9jdHJpbmUucGFyc2UoY29tbWVudC52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8qIGRvbid0IGNhcmUsIGZvciBub3c/IG1heWJlIGFkZCB0byBgZXJyb3JzP2AgKi9cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGRvY1xufVxuXG4vKipcbiAgKiBwYXJzZSBUb21Eb2Mgc2VjdGlvbiBmcm9tIGNvbW1lbnRzXG4gICovXG5mdW5jdGlvbiBjYXB0dXJlVG9tRG9jKGNvbW1lbnRzKSB7XG4gIC8vIGNvbGxlY3QgbGluZXMgdXAgdG8gZmlyc3QgcGFyYWdyYXBoIGJyZWFrXG4gIGNvbnN0IGxpbmVzID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21tZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvbW1lbnQgPSBjb21tZW50c1tpXVxuICAgIGlmIChjb21tZW50LnZhbHVlLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWtcbiAgICBsaW5lcy5wdXNoKGNvbW1lbnQudmFsdWUudHJpbSgpKVxuICB9XG5cbiAgLy8gcmV0dXJuIGRvY3RyaW5lLWxpa2Ugb2JqZWN0XG4gIGNvbnN0IHN0YXR1c01hdGNoID0gbGluZXMuam9pbignICcpLm1hdGNoKC9eKFB1YmxpY3xJbnRlcm5hbHxEZXByZWNhdGVkKTpcXHMqKC4rKS8pXG4gIGlmIChzdGF0dXNNYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogc3RhdHVzTWF0Y2hbMl0sXG4gICAgICB0YWdzOiBbe1xuICAgICAgICB0aXRsZTogc3RhdHVzTWF0Y2hbMV0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0YXR1c01hdGNoWzJdLFxuICAgICAgfV0sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gICAgY2FzZSAnSWRlbnRpZmllcic6IC8vIGJhc2UgY2FzZVxuICAgICAgY2FsbGJhY2socGF0dGVybilcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICAgIHBhdHRlcm4ucHJvcGVydGllcy5mb3JFYWNoKCh7IHZhbHVlIH0pID0+IHtcbiAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUodmFsdWUsIGNhbGxiYWNrKVxuICAgICAgfSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxuICAgICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHJldHVyblxuICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShlbGVtZW50LCBjYWxsYmFjaylcbiAgICAgIH0pXG4gICAgICBicmVha1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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QUVGLFNBQUssY0FBTDtBQUNFLGNBQVEsUUFBUixDQUFpQixPQUFqQixDQUF5QixVQUFDLE9BQUQsRUFBYTtBQUNwQyxZQUFJLFdBQVcsSUFBZixFQUFxQjtBQUNyQixnQ0FBd0IsT0FBeEIsRUFBaUMsUUFBakM7QUFDRCxPQUhEO0FBSUE7QUFoQko7QUFrQkQiLCJmaWxlIjoiY29yZS9nZXRFeHBvcnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcCBmcm9tICdlczYtbWFwJ1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcydcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmltcG9ydCAqIGFzIGRvY3RyaW5lIGZyb20gJ2RvY3RyaW5lJ1xuXG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZSdcbmltcG9ydCByZXNvbHZlLCB7IHJlbGF0aXZlIGFzIHJlc29sdmVSZWxhdGl2ZSB9IGZyb20gJy4vcmVzb2x2ZSdcbmltcG9ydCBpc0lnbm9yZWQsIHsgaGFzVmFsaWRFeHRlbnNpb24gfSBmcm9tICcuL2lnbm9yZSdcblxuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vaGFzaCdcblxuY29uc3QgZXhwb3J0Q2FjaGUgPSBuZXcgTWFwKClcblxuLyoqXG4gKiBkZXRlY3QgZXhwb3J0cyB3aXRob3V0IGEgZnVsbCBwYXJzZS5cbiAqIHVzZWQgcHJpbWFyaWx5IHRvIGlnbm9yZSB0aGUgaW1wb3J0L2lnbm9yZSBzZXR0aW5nLCBpaWYgaXQgbG9va3MgbGlrZVxuICogdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHRoZXJlIChpLmUuLCBqc25leHQ6bWFpbiBpcyBzZXQpLlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xuY29uc3QgaGFzRXhwb3J0cyA9IG5ldyBSZWdFeHAoJyhefFtcXFxcbjtdKVxcXFxzKmV4cG9ydFxcXFxzW1xcXFx3eypdJylcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb3J0TWFwIHtcbiAgY29uc3RydWN0b3IocGF0aCkge1xuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5ldyBNYXAoKVxuICAgIC8vIHRvZG86IHJlc3RydWN0dXJlIHRvIGtleSBvbiBwYXRoLCB2YWx1ZSBpcyByZXNvbHZlciArIG1hcCBvZiBuYW1lc1xuICAgIHRoaXMucmVleHBvcnRzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmVycm9ycyA9IFtdXG4gIH1cblxuICBnZXQgaGFzRGVmYXVsdCgpIHsgcmV0dXJuIHRoaXMuZ2V0KCdkZWZhdWx0JykgIT0gbnVsbCB9IC8vIHN0cm9uZ2VyIHRoYW4gdGhpcy5oYXNcblxuICBnZXQgc2l6ZSgpIHtcbiAgICBsZXQgc2l6ZSA9IHRoaXMubmFtZXNwYWNlLnNpemUgKyB0aGlzLnJlZXhwb3J0cy5zaXplXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChkZXAgPT4gc2l6ZSArPSBkZXAoKS5zaXplKVxuICAgIHJldHVybiBzaXplXG4gIH1cblxuICBzdGF0aWMgZ2V0KHNvdXJjZSwgY29udGV4dCkge1xuXG4gICAgdmFyIHBhdGggPSByZXNvbHZlKHNvdXJjZSwgY29udGV4dClcbiAgICBpZiAocGF0aCA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIEV4cG9ydE1hcC5mb3IocGF0aCwgY29udGV4dClcbiAgfVxuXG4gIHN0YXRpYyBmb3IocGF0aCwgY29udGV4dCkge1xuICAgIGxldCBleHBvcnRNYXBcblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gaGFzaE9iamVjdChjcmVhdGVIYXNoKCdzaGEyNTYnKSwge1xuICAgICAgc2V0dGluZ3M6IGNvbnRleHQuc2V0dGluZ3MsXG4gICAgICBwYXJzZXJQYXRoOiBjb250ZXh0LnBhcnNlclBhdGgsXG4gICAgICBwYXJzZXJPcHRpb25zOiBjb250ZXh0LnBhcnNlck9wdGlvbnMsXG4gICAgICBwYXRoLFxuICAgIH0pLmRpZ2VzdCgnaGV4JylcblxuICAgIGV4cG9ydE1hcCA9IGV4cG9ydENhY2hlLmdldChjYWNoZUtleSlcblxuICAgIC8vIHJldHVybiBjYWNoZWQgaWdub3JlXG4gICAgaWYgKGV4cG9ydE1hcCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMocGF0aClcbiAgICBpZiAoZXhwb3J0TWFwICE9IG51bGwpIHtcbiAgICAgIC8vIGRhdGUgZXF1YWxpdHkgY2hlY2tcbiAgICAgIGlmIChleHBvcnRNYXAubXRpbWUgLSBzdGF0cy5tdGltZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0TWFwXG4gICAgICB9XG4gICAgICAvLyBmdXR1cmU6IGNoZWNrIGNvbnRlbnQgZXF1YWxpdHk/XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgdmFsaWQgZXh0ZW5zaW9ucyBmaXJzdFxuICAgIGlmICghaGFzVmFsaWRFeHRlbnNpb24ocGF0aCwgY29udGV4dCkpIHtcbiAgICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSlcblxuICAgIC8vIGNoZWNrIGZvciBhbmQgY2FjaGUgaWdub3JlXG4gICAgaWYgKGlzSWdub3JlZChwYXRoLCBjb250ZXh0KSAmJiAhaGFzRXhwb3J0cy50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGV4cG9ydE1hcCA9IEV4cG9ydE1hcC5wYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KVxuICAgIGV4cG9ydE1hcC5tdGltZSA9IHN0YXRzLm10aW1lXG5cbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIGV4cG9ydE1hcClcbiAgICByZXR1cm4gZXhwb3J0TWFwXG4gIH1cblxuICBzdGF0aWMgcGFyc2UocGF0aCwgY29udGVudCwgY29udGV4dCkge1xuICAgIHZhciBtID0gbmV3IEV4cG9ydE1hcChwYXRoKVxuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBhc3QgPSBwYXJzZShjb250ZW50LCBjb250ZXh0KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbS5lcnJvcnMucHVzaChlcnIpXG4gICAgICByZXR1cm4gbSAvLyBjYW4ndCBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGRvY3N0eWxlID0gKGNvbnRleHQuc2V0dGluZ3MgJiYgY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2RvY3N0eWxlJ10pIHx8IFsnanNkb2MnXVxuICAgIGNvbnN0IGRvY1N0eWxlUGFyc2VycyA9IHt9XG4gICAgZG9jc3R5bGUuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgICBkb2NTdHlsZVBhcnNlcnNbc3R5bGVdID0gYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzW3N0eWxlXVxuICAgIH0pXG5cbiAgICAvLyBhdHRlbXB0IHRvIGNvbGxlY3QgbW9kdWxlIGRvY1xuICAgIGFzdC5jb21tZW50cy5zb21lKGMgPT4ge1xuICAgICAgaWYgKGMudHlwZSAhPT0gJ0Jsb2NrJykgcmV0dXJuIGZhbHNlXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkb2MgPSBkb2N0cmluZS5wYXJzZShjLnZhbHVlLCB7IHVud3JhcDogdHJ1ZSB9KVxuICAgICAgICBpZiAoZG9jLnRhZ3Muc29tZSh0ID0+IHQudGl0bGUgPT09ICdtb2R1bGUnKSkge1xuICAgICAgICAgIG0uZG9jID0gZG9jXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuXG4gICAgY29uc3QgbmFtZXNwYWNlcyA9IG5ldyBNYXAoKVxuXG4gICAgZnVuY3Rpb24gcmVtb3RlUGF0aChub2RlKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVJlbGF0aXZlKG5vZGUuc291cmNlLnZhbHVlLCBwYXRoLCBjb250ZXh0LnNldHRpbmdzKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVJbXBvcnQobm9kZSkge1xuICAgICAgY29uc3QgcnAgPSByZW1vdGVQYXRoKG5vZGUpXG4gICAgICBpZiAocnAgPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgICAgIHJldHVybiBFeHBvcnRNYXAuZm9yKHJwLCBjb250ZXh0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE5hbWVzcGFjZShpZGVudGlmaWVyKSB7XG4gICAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGlkZW50aWZpZXIubmFtZSkpIHJldHVyblxuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUltcG9ydChuYW1lc3BhY2VzLmdldChpZGVudGlmaWVyLm5hbWUpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZE5hbWVzcGFjZShvYmplY3QsIGlkZW50aWZpZXIpIHtcbiAgICAgIGNvbnN0IG5zZm4gPSBnZXROYW1lc3BhY2UoaWRlbnRpZmllcilcbiAgICAgIGlmIChuc2ZuKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICduYW1lc3BhY2UnLCB7IGdldDogbnNmbiB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0XG4gICAgfVxuXG5cbiAgICBhc3QuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE1ldGEgPSBjYXB0dXJlRG9jKGRvY1N0eWxlUGFyc2VycywgbilcbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24udHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgZXhwb3J0TWV0YSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicpIHtcbiAgICAgICAgbGV0IHJlbW90ZU1hcCA9IHJlbW90ZVBhdGgobilcbiAgICAgICAgaWYgKHJlbW90ZU1hcCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgbS5kZXBlbmRlbmNpZXMuc2V0KHJlbW90ZU1hcCwgKCkgPT4gRXhwb3J0TWFwLmZvcihyZW1vdGVNYXAsIGNvbnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gY2FwdHVyZSBuYW1lc3BhY2VzIGluIGNhc2Ugb2YgbGF0ZXIgZXhwb3J0XG4gICAgICBpZiAobi50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGxldCBuc1xuICAgICAgICBpZiAobi5zcGVjaWZpZXJzLnNvbWUocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInICYmIChucyA9IHMpKSkge1xuICAgICAgICAgIG5hbWVzcGFjZXMuc2V0KG5zLmxvY2FsLm5hbWUsIG4pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyl7XG4gICAgICAgIC8vIGNhcHR1cmUgZGVjbGFyYXRpb25cbiAgICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHN3aXRjaCAobi5kZWNsYXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkRlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnVHlwZUFsaWFzJzogLy8gZmxvd3R5cGUgd2l0aCBiYWJlbC1lc2xpbnQgcGFyc2VyXG4gICAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChuLmRlY2xhcmF0aW9uLmlkLm5hbWUsIGNhcHR1cmVEb2MoZG9jU3R5bGVQYXJzZXJzLCBuKSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICBuLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucy5mb3JFYWNoKChkKSA9PlxuICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGQuaWQsIGlkID0+XG4gICAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhkb2NTdHlsZVBhcnNlcnMsIGQsIG4pKSkpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbi5zcGVjaWZpZXJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBleHBvcnRNZXRhID0ge31cbiAgICAgICAgICBsZXQgbG9jYWxcblxuICAgICAgICAgIHN3aXRjaCAocy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdFeHBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgaWYgKCFuLnNvdXJjZSkgcmV0dXJuXG4gICAgICAgICAgICAgIGxvY2FsID0gJ2RlZmF1bHQnXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXInOlxuICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0TWV0YSwgJ25hbWVzcGFjZScsIHtcbiAgICAgICAgICAgICAgICBnZXQoKSB7IHJldHVybiByZXNvbHZlSW1wb3J0KG4pIH0sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGNhc2UgJ0V4cG9ydFNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGlmICghbi5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBhZGROYW1lc3BhY2UoZXhwb3J0TWV0YSwgcy5sb2NhbCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gZWxzZSBmYWxscyB0aHJvdWdoXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBsb2NhbCA9IHMubG9jYWwubmFtZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHRvZG86IEpTRG9jXG4gICAgICAgICAgbS5yZWV4cG9ydHMuc2V0KHMuZXhwb3J0ZWQubmFtZSwgeyBsb2NhbCwgZ2V0SW1wb3J0OiAoKSA9PiByZXNvbHZlSW1wb3J0KG4pIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtXG4gIH1cblxuICAvKipcbiAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2hlY2sgZXhwbGljaXRseSByZS1leHBvcnRlZCBuYW1lcyBmb3IgZXhpc3RlbmNlXG4gICAqIGluIHRoZSBiYXNlIG5hbWVzcGFjZSwgYnV0IGl0IHdpbGwgZXhwYW5kIGFsbCBgZXhwb3J0ICogZnJvbSAnLi4uJ2AgZXhwb3J0c1xuICAgKiBpZiBub3QgZm91bmQgaW4gdGhlIGV4cGxpY2l0IG5hbWVzcGFjZS5cbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZVxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGBuYW1lYCBpcyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS5cbiAgICovXG4gIGhhcyhuYW1lKSB7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZVxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBsZXQgZm91bmRJbm5lck1hcE5hbWUgPSBmYWxzZVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICBpZiAoIWZvdW5kSW5uZXJNYXBOYW1lKSB7XG4gICAgICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcblxuICAgICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICAgIGlmIChpbm5lck1hcCAmJiBpbm5lck1hcC5oYXMobmFtZSkpIGZvdW5kSW5uZXJNYXBOYW1lID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBmb3VuZElubmVyTWFwTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIGVuc3VyZSB0aGF0IGltcG9ydGVkIG5hbWUgZnVsbHkgcmVzb2x2ZXMuXG4gICAqIEBwYXJhbSAge1t0eXBlXX0gIG5hbWUgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtCb29sZWFufSAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGhhc0RlZXAobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfVxuXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkge1xuICAgICAgY29uc3QgeyBsb2NhbCwgZ2V0SW1wb3J0IH0gPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSlcbiAgICAgICAgICAsIGltcG9ydGVkID0gZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH1cblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiBsb2NhbCA9PT0gbmFtZSkgcmV0dXJuIHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfVxuXG4gICAgICBjb25zdCBkZWVwID0gaW1wb3J0ZWQuaGFzRGVlcChsb2NhbClcbiAgICAgIGRlZXAucGF0aC51bnNoaWZ0KHRoaXMpXG5cbiAgICAgIHJldHVybiBkZWVwXG4gICAgfVxuXG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICBpZiAoIXJldHVyblZhbHVlLmZvdW5kKSB7XG4gICAgICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcbiAgICAgICAgICAvLyB0b2RvOiByZXBvcnQgYXMgdW5yZXNvbHZlZD9cbiAgICAgICAgICBpZiAoaW5uZXJNYXApIHtcblxuICAgICAgICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzXG4gICAgICAgICAgICBpZiAoaW5uZXJNYXAucGF0aCAhPT0gdGhpcy5wYXRoKSB7XG5cbiAgICAgICAgICAgICAgbGV0IGlubmVyVmFsdWUgPSBpbm5lck1hcC5oYXNEZWVwKG5hbWUpXG4gICAgICAgICAgICAgIGlmIChpbm5lclZhbHVlLmZvdW5kKSB7XG4gICAgICAgICAgICAgICAgaW5uZXJWYWx1ZS5wYXRoLnVuc2hpZnQodGhpcylcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIGdldChuYW1lKSB7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlLmhhcyhuYW1lKSkgcmV0dXJuIHRoaXMubmFtZXNwYWNlLmdldChuYW1lKVxuXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkge1xuICAgICAgY29uc3QgeyBsb2NhbCwgZ2V0SW1wb3J0IH0gPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSlcbiAgICAgICAgICAsIGltcG9ydGVkID0gZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXMsIG9ubHkgaWYgbmFtZSBtYXRjaGVzXG4gICAgICBpZiAoaW1wb3J0ZWQucGF0aCA9PT0gdGhpcy5wYXRoICYmIGxvY2FsID09PSBuYW1lKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAgIHJldHVybiBpbXBvcnRlZC5nZXQobG9jYWwpXG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWRcbiAgICBpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKChkZXApID0+IHtcbiAgICAgICAgaWYgKHJldHVyblZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZXQgaW5uZXJNYXAgPSBkZXAoKVxuICAgICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICAgIGlmIChpbm5lck1hcCkge1xuXG4gICAgICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgICAgIGlmIChpbm5lck1hcC5wYXRoICE9PSB0aGlzLnBhdGgpIHtcblxuICAgICAgICAgICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKVxuICAgICAgICAgICAgICBpZiAoaW5uZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm5WYWx1ZSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlXG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgdGhpcy5uYW1lc3BhY2UuZm9yRWFjaCgodiwgbikgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdiwgbiwgdGhpcykpXG5cbiAgICB0aGlzLnJlZXhwb3J0cy5mb3JFYWNoKCh7IGdldEltcG9ydCwgbG9jYWwgfSwgbmFtZSkgPT4ge1xuICAgICAgY29uc3QgcmVleHBvcnRlZCA9IGdldEltcG9ydCgpXG4gICAgICAvLyBjYW4ndCBsb29rIHVwIG1ldGEgZm9yIGlnbm9yZWQgcmUtZXhwb3J0cyAoIzM0OClcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgcmVleHBvcnRlZCAmJiByZWV4cG9ydGVkLmdldChsb2NhbCksIG5hbWUsIHRoaXMpXG4gICAgfSlcblxuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IGRlcCgpLmZvckVhY2goKHYsIG4pID0+XG4gICAgICBuICE9PSAnZGVmYXVsdCcgJiYgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSkpXG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBgJHtlLm1lc3NhZ2V9ICgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pYClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRvY3MgZnJvbSB0aGUgZmlyc3Qgbm9kZSB0aGF0IGhhcyBsZWFkaW5nIGNvbW1lbnRzXG4gKiBAcGFyYW0gIHsuLi5bdHlwZV19IG5vZGVzIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3tkb2M6IG9iamVjdH19XG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVEb2MoZG9jU3R5bGVQYXJzZXJzLCAuLi5ub2Rlcykge1xuICBjb25zdCBtZXRhZGF0YSA9IHt9XG5cbiAgLy8gJ3NvbWUnIHNob3J0LWNpcmN1aXRzIG9uIGZpcnN0ICd0cnVlJ1xuICBub2Rlcy5zb21lKG4gPT4ge1xuICAgIGlmICghbi5sZWFkaW5nQ29tbWVudHMpIHJldHVybiBmYWxzZVxuXG4gICAgZm9yIChsZXQgbmFtZSBpbiBkb2NTdHlsZVBhcnNlcnMpIHtcbiAgICAgIGNvbnN0IGRvYyA9IGRvY1N0eWxlUGFyc2Vyc1tuYW1lXShuLmxlYWRpbmdDb21tZW50cylcbiAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgbWV0YWRhdGEuZG9jID0gZG9jXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcblxuICByZXR1cm4gbWV0YWRhdGFcbn1cblxuY29uc3QgYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzID0ge1xuICBqc2RvYzogY2FwdHVyZUpzRG9jLFxuICB0b21kb2M6IGNhcHR1cmVUb21Eb2MsXG59XG5cbi8qKlxuICogcGFyc2UgSlNEb2MgZnJvbSBsZWFkaW5nIGNvbW1lbnRzXG4gKiBAcGFyYW0gIHsuLi5bdHlwZV19IGNvbW1lbnRzIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3tkb2M6IG9iamVjdH19XG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVKc0RvYyhjb21tZW50cykge1xuICBsZXQgZG9jXG5cbiAgLy8gY2FwdHVyZSBYU0RvY1xuICBjb21tZW50cy5mb3JFYWNoKGNvbW1lbnQgPT4ge1xuICAgIC8vIHNraXAgbm9uLWJsb2NrIGNvbW1lbnRzXG4gICAgaWYgKGNvbW1lbnQudmFsdWUuc2xpY2UoMCwgNCkgIT09ICcqXFxuIConKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgZG9jID0gZG9jdHJpbmUucGFyc2UoY29tbWVudC52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8qIGRvbid0IGNhcmUsIGZvciBub3c/IG1heWJlIGFkZCB0byBgZXJyb3JzP2AgKi9cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGRvY1xufVxuXG4vKipcbiAgKiBwYXJzZSBUb21Eb2Mgc2VjdGlvbiBmcm9tIGNvbW1lbnRzXG4gICovXG5mdW5jdGlvbiBjYXB0dXJlVG9tRG9jKGNvbW1lbnRzKSB7XG4gIC8vIGNvbGxlY3QgbGluZXMgdXAgdG8gZmlyc3QgcGFyYWdyYXBoIGJyZWFrXG4gIGNvbnN0IGxpbmVzID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21tZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvbW1lbnQgPSBjb21tZW50c1tpXVxuICAgIGlmIChjb21tZW50LnZhbHVlLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWtcbiAgICBsaW5lcy5wdXNoKGNvbW1lbnQudmFsdWUudHJpbSgpKVxuICB9XG5cbiAgLy8gcmV0dXJuIGRvY3RyaW5lLWxpa2Ugb2JqZWN0XG4gIGNvbnN0IHN0YXR1c01hdGNoID0gbGluZXMuam9pbignICcpLm1hdGNoKC9eKFB1YmxpY3xJbnRlcm5hbHxEZXByZWNhdGVkKTpcXHMqKC4rKS8pXG4gIGlmIChzdGF0dXNNYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogc3RhdHVzTWF0Y2hbMl0sXG4gICAgICB0YWdzOiBbe1xuICAgICAgICB0aXRsZTogc3RhdHVzTWF0Y2hbMV0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0YXR1c01hdGNoWzJdLFxuICAgICAgfV0sXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gICAgY2FzZSAnSWRlbnRpZmllcic6IC8vIGJhc2UgY2FzZVxuICAgICAgY2FsbGJhY2socGF0dGVybilcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICAgIHBhdHRlcm4ucHJvcGVydGllcy5mb3JFYWNoKCh7IHZhbHVlIH0pID0+IHtcbiAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUodmFsdWUsIGNhbGxiYWNrKVxuICAgICAgfSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxuICAgICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHJldHVyblxuICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShlbGVtZW50LCBjYWxsYmFjaylcbiAgICAgIH0pXG4gICAgICBicmVha1xuICB9XG59XG4iXX0=

11

lib/core/ignore.js

@@ -5,2 +5,3 @@ 'use strict';

exports.default = ignore;
exports.hasValidExtension = hasValidExtension;

@@ -40,4 +41,4 @@ var _path = require('path');

// check extension whitelist first (cheap)
if (!validExtensions(context).has((0, _path.extname)(path))) return true;
// check extension list first (cheap)
if (!hasValidExtension(path, context)) return true;

@@ -53,2 +54,6 @@ if (ignoreStrings.length === 0) return false;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaWdub3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztrQkFxQndCLE07O0FBckJ4Qjs7QUFDQTs7Ozs7O0FBRUE7QUFDQSxJQUFJLGtCQUFKO0FBQUEsSUFBZSxxQkFBZjtBQUNBLFNBQVMsZUFBVCxPQUF1QztBQUFBLE1BQVosUUFBWSxRQUFaLFFBQVk7O0FBQ3JDLE1BQUksYUFBYSxhQUFhLFlBQTlCLEVBQTRDO0FBQzFDLFdBQU8sU0FBUDtBQUNEOztBQUVEO0FBQ0EsaUJBQWUsUUFBZjtBQUNBO0FBQ0E7QUFDQSxjQUFZLHVCQUF1QixRQUF2QixHQUNSLHFCQUFRLFNBQVMsbUJBQVQsQ0FBUixDQURRLEdBRVIsRUFBRSxLQUFLO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FBUCxFQUZKLENBVHFDLENBV2I7O0FBRXhCLFNBQU8sU0FBUDtBQUNEOztBQUVjLFNBQVMsTUFBVCxDQUFnQixJQUFoQixFQUFzQixPQUF0QixFQUErQjtBQUM1QztBQUNBLE1BQU0sZ0JBQWdCLFFBQVEsUUFBUixDQUFpQixlQUFqQixJQUNsQixHQUFHLE1BQUgsQ0FBVSxRQUFRLFFBQVIsQ0FBaUIsZUFBakIsQ0FBVixDQURrQixHQUVsQixDQUFDLGNBQUQsQ0FGSjs7QUFJQTtBQUNBLE1BQUksQ0FBQyxnQkFBZ0IsT0FBaEIsRUFBeUIsR0FBekIsQ0FBNkIsbUJBQVEsSUFBUixDQUE3QixDQUFMLEVBQWtELE9BQU8sSUFBUDs7QUFFbEQsTUFBSSxjQUFjLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0MsT0FBTyxLQUFQOztBQUVoQyxPQUFLLElBQUksSUFBSSxDQUFiLEVBQWdCLElBQUksY0FBYyxNQUFsQyxFQUEwQyxHQUExQyxFQUErQztBQUM3QyxRQUFJLFFBQVEsSUFBSSxNQUFKLENBQVcsY0FBYyxDQUFkLENBQVgsQ0FBWjtBQUNBLFFBQUksTUFBTSxJQUFOLENBQVcsSUFBWCxDQUFKLEVBQXNCLE9BQU8sSUFBUDtBQUN2Qjs7QUFFRCxTQUFPLEtBQVA7QUFDRCIsImZpbGUiOiJjb3JlL2lnbm9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dG5hbWUgfSBmcm9tICdwYXRoJ1xuaW1wb3J0IFNldCBmcm9tICdlczYtc2V0J1xuXG4vLyBvbmUtc2hvdCBtZW1vaXplZFxubGV0IGNhY2hlZFNldCwgbGFzdFNldHRpbmdzXG5mdW5jdGlvbiB2YWxpZEV4dGVuc2lvbnMoeyBzZXR0aW5ncyB9KSB7XG4gIGlmIChjYWNoZWRTZXQgJiYgc2V0dGluZ3MgPT09IGxhc3RTZXR0aW5ncykge1xuICAgIHJldHVybiBjYWNoZWRTZXRcbiAgfVxuXG4gIC8vIHRvZG86IGFkZCAnbWpzJz9cbiAgbGFzdFNldHRpbmdzID0gc2V0dGluZ3NcbiAgLy8gYnJlYWtpbmc6IGRlZmF1bHQgdG8gJy5qcydcbiAgLy8gY2FjaGVkU2V0ID0gbmV3IFNldChzZXR0aW5nc1snaW1wb3J0L2V4dGVuc2lvbnMnXSB8fCBbICcuanMnIF0pXG4gIGNhY2hlZFNldCA9ICdpbXBvcnQvZXh0ZW5zaW9ucycgaW4gc2V0dGluZ3NcbiAgICA/IG5ldyBTZXQoc2V0dGluZ3NbJ2ltcG9ydC9leHRlbnNpb25zJ10pXG4gICAgOiB7IGhhczogKCkgPT4gdHJ1ZSB9IC8vIHRoZSBzZXQgb2YgYWxsIGVsZW1lbnRzXG5cbiAgcmV0dXJuIGNhY2hlZFNldFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpZ25vcmUocGF0aCwgY29udGV4dCkge1xuICAvLyBpZ25vcmUgbm9kZV9tb2R1bGVzIGJ5IGRlZmF1bHRcbiAgY29uc3QgaWdub3JlU3RyaW5ncyA9IGNvbnRleHQuc2V0dGluZ3NbJ2ltcG9ydC9pZ25vcmUnXVxuICAgID8gW10uY29uY2F0KGNvbnRleHQuc2V0dGluZ3NbJ2ltcG9ydC9pZ25vcmUnXSlcbiAgICA6IFsnbm9kZV9tb2R1bGVzJ11cblxuICAvLyBjaGVjayBleHRlbnNpb24gd2hpdGVsaXN0IGZpcnN0IChjaGVhcClcbiAgaWYgKCF2YWxpZEV4dGVuc2lvbnMoY29udGV4dCkuaGFzKGV4dG5hbWUocGF0aCkpKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChpZ25vcmVTdHJpbmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZ25vcmVTdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChpZ25vcmVTdHJpbmdzW2ldKVxuICAgIGlmIChyZWdleC50ZXN0KHBhdGgpKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iXX0=
function hasValidExtension(path, context) {
return validExtensions(context).has((0, _path.extname)(path));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvaWdub3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztrQkFxQndCLE07UUFtQlIsaUIsR0FBQSxpQjs7QUF4Q2hCOztBQUNBOzs7Ozs7QUFFQTtBQUNBLElBQUksa0JBQUo7QUFBQSxJQUFlLHFCQUFmO0FBQ0EsU0FBUyxlQUFULE9BQXVDO0FBQUEsTUFBWixRQUFZLFFBQVosUUFBWTs7QUFDckMsTUFBSSxhQUFhLGFBQWEsWUFBOUIsRUFBNEM7QUFDMUMsV0FBTyxTQUFQO0FBQ0Q7O0FBRUQ7QUFDQSxpQkFBZSxRQUFmO0FBQ0E7QUFDQTtBQUNBLGNBQVksdUJBQXVCLFFBQXZCLEdBQ1IscUJBQVEsU0FBUyxtQkFBVCxDQUFSLENBRFEsR0FFUixFQUFFLEtBQUs7QUFBQSxhQUFNLElBQU47QUFBQSxLQUFQLEVBRkosQ0FUcUMsQ0FXYjs7QUFFeEIsU0FBTyxTQUFQO0FBQ0Q7O0FBRWMsU0FBUyxNQUFULENBQWdCLElBQWhCLEVBQXNCLE9BQXRCLEVBQStCO0FBQzVDO0FBQ0EsTUFBTSxnQkFBZ0IsUUFBUSxRQUFSLENBQWlCLGVBQWpCLElBQ2xCLEdBQUcsTUFBSCxDQUFVLFFBQVEsUUFBUixDQUFpQixlQUFqQixDQUFWLENBRGtCLEdBRWxCLENBQUMsY0FBRCxDQUZKOztBQUlBO0FBQ0EsTUFBSSxDQUFDLGtCQUFrQixJQUFsQixFQUF3QixPQUF4QixDQUFMLEVBQXVDLE9BQU8sSUFBUDs7QUFFdkMsTUFBSSxjQUFjLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0MsT0FBTyxLQUFQOztBQUVoQyxPQUFLLElBQUksSUFBSSxDQUFiLEVBQWdCLElBQUksY0FBYyxNQUFsQyxFQUEwQyxHQUExQyxFQUErQztBQUM3QyxRQUFJLFFBQVEsSUFBSSxNQUFKLENBQVcsY0FBYyxDQUFkLENBQVgsQ0FBWjtBQUNBLFFBQUksTUFBTSxJQUFOLENBQVcsSUFBWCxDQUFKLEVBQXNCLE9BQU8sSUFBUDtBQUN2Qjs7QUFFRCxTQUFPLEtBQVA7QUFDRDs7QUFFTSxTQUFTLGlCQUFULENBQTJCLElBQTNCLEVBQWlDLE9BQWpDLEVBQTBDO0FBQy9DLFNBQU8sZ0JBQWdCLE9BQWhCLEVBQXlCLEdBQXpCLENBQTZCLG1CQUFRLElBQVIsQ0FBN0IsQ0FBUDtBQUNEIiwiZmlsZSI6ImNvcmUvaWdub3JlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0bmFtZSB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgU2V0IGZyb20gJ2VzNi1zZXQnXG5cbi8vIG9uZS1zaG90IG1lbW9pemVkXG5sZXQgY2FjaGVkU2V0LCBsYXN0U2V0dGluZ3NcbmZ1bmN0aW9uIHZhbGlkRXh0ZW5zaW9ucyh7IHNldHRpbmdzIH0pIHtcbiAgaWYgKGNhY2hlZFNldCAmJiBzZXR0aW5ncyA9PT0gbGFzdFNldHRpbmdzKSB7XG4gICAgcmV0dXJuIGNhY2hlZFNldFxuICB9XG5cbiAgLy8gdG9kbzogYWRkICdtanMnP1xuICBsYXN0U2V0dGluZ3MgPSBzZXR0aW5nc1xuICAvLyBicmVha2luZzogZGVmYXVsdCB0byAnLmpzJ1xuICAvLyBjYWNoZWRTZXQgPSBuZXcgU2V0KHNldHRpbmdzWydpbXBvcnQvZXh0ZW5zaW9ucyddIHx8IFsgJy5qcycgXSlcbiAgY2FjaGVkU2V0ID0gJ2ltcG9ydC9leHRlbnNpb25zJyBpbiBzZXR0aW5nc1xuICAgID8gbmV3IFNldChzZXR0aW5nc1snaW1wb3J0L2V4dGVuc2lvbnMnXSlcbiAgICA6IHsgaGFzOiAoKSA9PiB0cnVlIH0gLy8gdGhlIHNldCBvZiBhbGwgZWxlbWVudHNcblxuICByZXR1cm4gY2FjaGVkU2V0XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlnbm9yZShwYXRoLCBjb250ZXh0KSB7XG4gIC8vIGlnbm9yZSBub2RlX21vZHVsZXMgYnkgZGVmYXVsdFxuICBjb25zdCBpZ25vcmVTdHJpbmdzID0gY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2lnbm9yZSddXG4gICAgPyBbXS5jb25jYXQoY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2lnbm9yZSddKVxuICAgIDogWydub2RlX21vZHVsZXMnXVxuXG4gIC8vIGNoZWNrIGV4dGVuc2lvbiBsaXN0IGZpcnN0IChjaGVhcClcbiAgaWYgKCFoYXNWYWxpZEV4dGVuc2lvbihwYXRoLCBjb250ZXh0KSkgcmV0dXJuIHRydWVcblxuICBpZiAoaWdub3JlU3RyaW5ncy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaWdub3JlU3RyaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoaWdub3JlU3RyaW5nc1tpXSlcbiAgICBpZiAocmVnZXgudGVzdChwYXRoKSkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFsaWRFeHRlbnNpb24ocGF0aCwgY29udGV4dCkge1xuICByZXR1cm4gdmFsaWRFeHRlbnNpb25zKGNvbnRleHQpLmhhcyhleHRuYW1lKHBhdGgpKVxufVxuIl19

@@ -21,4 +21,25 @@ 'use strict';

module.exports = function (context) {
exports.meta = {
schema: [{
'type': 'object',
'properties': {
'allowComputed': {
'description': 'If `false`, will report computed (and thus, un-lintable) references ' + 'to namespace members.',
'type': 'boolean',
'default': false
}
},
'additionalProperties': false
}]
};
exports.create = function namespaceRule(context) {
// read options
var _ref = context.options[0] || {};
var _ref$allowComputed = _ref.allowComputed;
var allowComputed = _ref$allowComputed === undefined ? false : _ref$allowComputed;
var namespaces = new _es6Map2.default();

@@ -33,4 +54,4 @@

// pick up all imports at body entry time, to properly respect hoisting
'Program': function Program(_ref) {
var body = _ref.body;
'Program': function Program(_ref2) {
var body = _ref2.body;

@@ -108,3 +129,5 @@ function processBodyStatement(declaration) {

if (dereference.computed) {
context.report(dereference.property, 'Unable to validate computed reference to imported namespace \'' + dereference.object.name + '\'.');
if (!allowComputed) {
context.report(dereference.property, 'Unable to validate computed reference to imported namespace \'' + dereference.object.name + '\'.');
}
return;

@@ -125,5 +148,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;

@@ -168,2 +191,2 @@ if (init == null) return;

};
//# sourceMappingURL=data:application/json;base64,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YXAnXG5cbmltcG9ydCBFeHBvcnRzIGZyb20gJy4uL2NvcmUvZ2V0RXhwb3J0cydcbmltcG9ydCBpbXBvcnREZWNsYXJhdGlvbiBmcm9tICcuLi9pbXBvcnREZWNsYXJhdGlvbidcbmltcG9ydCBkZWNsYXJlZFNjb3BlIGZyb20gJy4uL2NvcmUvZGVjbGFyZWRTY29wZSdcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuXG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgTWFwKClcblxuICBmdW5jdGlvbiBtYWtlTWVzc2FnZShsYXN0LCBuYW1lcGF0aCkge1xuICAgICByZXR1cm4gYCcke2xhc3QubmFtZX0nIG5vdCBmb3VuZCBpbmAgK1xuICAgICAgICAgICAgKG5hbWVwYXRoLmxlbmd0aCA+IDEgPyAnIGRlZXBseSAnIDogJyAnKSArXG4gICAgICAgICAgICBgaW1wb3J0ZWQgbmFtZXNwYWNlICcke25hbWVwYXRoLmpvaW4oJy4nKX0nLmBcbiAgfVxuXG4gIHJldHVybiB7XG5cbiAgICAvLyBwaWNrIHVwIGFsbCBpbXBvcnRzIGF0IGJvZHkgZW50cnkgdGltZSwgdG8gcHJvcGVybHkgcmVzcGVjdCBob2lzdGluZ1xuICAgICdQcm9ncmFtJzogZnVuY3Rpb24gKHsgYm9keSB9KSB7XG4gICAgICBmdW5jdGlvbiBwcm9jZXNzQm9keVN0YXRlbWVudChkZWNsYXJhdGlvbikge1xuICAgICAgICBpZiAoZGVjbGFyYXRpb24udHlwZSAhPT0gJ0ltcG9ydERlY2xhcmF0aW9uJykgcmV0dXJuXG5cbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnNwZWNpZmllcnMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgICAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQoZGVjbGFyYXRpb24uc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBpbXBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBkZWNsYXJhdGlvbilcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGRlY2xhcmF0aW9uLnNwZWNpZmllcnMuZm9yRWFjaCgoc3BlY2lmaWVyKSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydChzcGVjaWZpZXIsXG4gICAgICAgICAgICAgICAgICBgTm8gZXhwb3J0ZWQgbmFtZXMgZm91bmQgaW4gbW9kdWxlICcke2RlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZX0nLmApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoc3BlY2lmaWVyLmxvY2FsLm5hbWUsIGltcG9ydHMpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICAgIGNhc2UgJ0ltcG9ydFNwZWNpZmllcic6IHtcbiAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IGltcG9ydHMuZ2V0KFxuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gJ2RlZmF1bHQnIGZvciBkZWZhdWx0IGh0dHA6Ly9pLmltZ3VyLmNvbS9uajZxQVd5LmpwZ1xuICAgICAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZCA/IHNwZWNpZmllci5pbXBvcnRlZC5uYW1lIDogJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICBpZiAoIW1ldGEgfHwgIW1ldGEubmFtZXNwYWNlKSBicmVha1xuICAgICAgICAgICAgICBuYW1lc3BhY2VzLnNldChzcGVjaWZpZXIubG9jYWwubmFtZSwgbWV0YS5uYW1lc3BhY2UpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYm9keS5mb3JFYWNoKHByb2Nlc3NCb2R5U3RhdGVtZW50KVxuICAgIH0sXG5cbiAgICAvLyBzYW1lIGFzIGFib3ZlLCBidXQgZG9lcyBub3QgYWRkIG5hbWVzIHRvIGxvY2FsIG1hcFxuICAgICdFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXInOiBmdW5jdGlvbiAobmFtZXNwYWNlKSB7XG4gICAgICB2YXIgZGVjbGFyYXRpb24gPSBpbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KVxuXG4gICAgICB2YXIgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIWltcG9ydHMuc2l6ZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydChuYW1lc3BhY2UsXG4gICAgICAgICAgYE5vIGV4cG9ydGVkIG5hbWVzIGZvdW5kIGluIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyB0b2RvOiBjaGVjayBmb3IgcG9zc2libGUgcmVkZWZpbml0aW9uXG5cbiAgICAnTWVtYmVyRXhwcmVzc2lvbic6IGZ1bmN0aW9uIChkZXJlZmVyZW5jZSkge1xuICAgICAgaWYgKGRlcmVmZXJlbmNlLm9iamVjdC50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhkZXJlZmVyZW5jZS5vYmplY3QubmFtZSkpIHJldHVyblxuXG4gICAgICBpZiAoZGVyZWZlcmVuY2UucGFyZW50LnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicgJiZcbiAgICAgICAgICBkZXJlZmVyZW5jZS5wYXJlbnQubGVmdCA9PT0gZGVyZWZlcmVuY2UpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChkZXJlZmVyZW5jZS5wYXJlbnQsXG4gICAgICAgICAgICAgIGBBc3NpZ25tZW50IHRvIG1lbWJlciBvZiBuYW1lc3BhY2UgJyR7ZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWV9Jy5gKVxuICAgICAgfVxuXG4gICAgICAvLyBnbyBkZWVwXG4gICAgICB2YXIgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5nZXQoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpXG4gICAgICB2YXIgbmFtZXBhdGggPSBbZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWVdXG4gICAgICAvLyB3aGlsZSBwcm9wZXJ0eSBpcyBuYW1lc3BhY2UgYW5kIHBhcmVudCBpcyBtZW1iZXIgZXhwcmVzc2lvbiwga2VlcCB2YWxpZGF0aW5nXG4gICAgICB3aGlsZSAobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cyAmJlxuICAgICAgICAgICAgIGRlcmVmZXJlbmNlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuXG4gICAgICAgIGlmIChkZXJlZmVyZW5jZS5jb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KGRlcmVmZXJlbmNlLnByb3BlcnR5LFxuICAgICAgICAgICAgJ1VuYWJsZSB0byB2YWxpZGF0ZSBjb21wdXRlZCByZWZlcmVuY2UgdG8gaW1wb3J0ZWQgbmFtZXNwYWNlIFxcJycgK1xuICAgICAgICAgICAgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUgKyAnXFwnLicpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5hbWVzcGFjZS5oYXMoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlLnByb3BlcnR5LFxuICAgICAgICAgICAgbWFrZU1lc3NhZ2UoZGVyZWZlcmVuY2UucHJvcGVydHksIG5hbWVwYXRoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3Rhc2ggYW5kIHBvcFxuICAgICAgICBuYW1lcGF0aC5wdXNoKGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpXG4gICAgICAgIG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5nZXQoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSkubmFtZXNwYWNlXG4gICAgICAgIGRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UucGFyZW50XG4gICAgICB9XG5cbiAgICB9LFxuXG4gICAgJ1ZhcmlhYmxlRGVjbGFyYXRvcic6IGZ1bmN0aW9uICh7IGlkLCBpbml0IH0pIHtcbiAgICAgIGlmIChpbml0ID09IG51bGwpIHJldHVyblxuICAgICAgaWYgKGluaXQudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoaW5pdC5uYW1lKSkgcmV0dXJuXG5cbiAgICAgIC8vIGNoZWNrIGZvciByZWRlZmluaXRpb24gaW4gaW50ZXJtZWRpYXRlIHNjb3Blc1xuICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgaW5pdC5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuXG4gICAgICAvLyBERlMgdHJhdmVyc2UgY2hpbGQgbmFtZXNwYWNlc1xuICAgICAgZnVuY3Rpb24gdGVzdEtleShwYXR0ZXJuLCBuYW1lc3BhY2UsIHBhdGggPSBbaW5pdC5uYW1lXSkge1xuICAgICAgICBpZiAoIShuYW1lc3BhY2UgaW5zdGFuY2VvZiBFeHBvcnRzKSkgcmV0dXJuXG5cbiAgICAgICAgaWYgKHBhdHRlcm4udHlwZSAhPT0gJ09iamVjdFBhdHRlcm4nKSByZXR1cm5cblxuICAgICAgICBwYXR0ZXJuLnByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICBpZiAocHJvcGVydHkua2V5LnR5cGUgIT09ICdJZGVudGlmaWVyJykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBub2RlOiBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ09ubHkgZGVzdHJ1Y3R1cmUgdG9wLWxldmVsIG5hbWVzLicsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSBpZiAoIW5hbWVzcGFjZS5oYXMocHJvcGVydHkua2V5Lm5hbWUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGU6IHByb3BlcnR5LFxuICAgICAgICAgICAgICBtZXNzYWdlOiBtYWtlTWVzc2FnZShwcm9wZXJ0eS5rZXksIHBhdGgpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aC5wdXNoKHByb3BlcnR5LmtleS5uYW1lKVxuICAgICAgICAgICAgdGVzdEtleShwcm9wZXJ0eS52YWx1ZSwgbmFtZXNwYWNlLmdldChwcm9wZXJ0eS5rZXkubmFtZSkubmFtZXNwYWNlLCBwYXRoKVxuICAgICAgICAgICAgcGF0aC5wb3AoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgdGVzdEtleShpZCwgbmFtZXNwYWNlcy5nZXQoaW5pdC5uYW1lKSlcbiAgICB9LFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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S0E7QUFDTCxpQkFBSyxJQUFMLENBQVUsU0FBUyxHQUFULENBQWEsSUFBdkI7QUFDQSxvQkFBUSxTQUFTLEtBQWpCLEVBQXdCLFVBQVUsR0FBVixDQUFjLFNBQVMsR0FBVCxDQUFhLElBQTNCLEVBQWlDLFNBQXpELEVBQW9FLElBQXBFO0FBQ0EsaUJBQUssR0FBTDtBQUNEO0FBQ0YsU0FoQkQ7QUFpQkQ7O0FBRUQsY0FBUSxFQUFSLEVBQVksV0FBVyxHQUFYLENBQWUsS0FBSyxJQUFwQixDQUFaO0FBQ0Q7QUF4SUksR0FBUDtBQTBJRCxDQXpKRCIsImZpbGUiOiJydWxlcy9uYW1lc3BhY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFwIGZyb20gJ2VzNi1tYXAnXG5cbmltcG9ydCBFeHBvcnRzIGZyb20gJy4uL2NvcmUvZ2V0RXhwb3J0cydcbmltcG9ydCBpbXBvcnREZWNsYXJhdGlvbiBmcm9tICcuLi9pbXBvcnREZWNsYXJhdGlvbidcbmltcG9ydCBkZWNsYXJlZFNjb3BlIGZyb20gJy4uL2NvcmUvZGVjbGFyZWRTY29wZSdcblxuZXhwb3J0cy5tZXRhID0ge1xuICBzY2hlbWE6IFtcbiAgICB7XG4gICAgICAndHlwZSc6ICdvYmplY3QnLFxuICAgICAgJ3Byb3BlcnRpZXMnOiB7XG4gICAgICAgICdhbGxvd0NvbXB1dGVkJzoge1xuICAgICAgICAgICdkZXNjcmlwdGlvbic6XG4gICAgICAgICAgICAnSWYgYGZhbHNlYCwgd2lsbCByZXBvcnQgY29tcHV0ZWQgKGFuZCB0aHVzLCB1bi1saW50YWJsZSkgcmVmZXJlbmNlcyAnICtcbiAgICAgICAgICAgICd0byBuYW1lc3BhY2UgbWVtYmVycy4nLFxuICAgICAgICAgICd0eXBlJzogJ2Jvb2xlYW4nLFxuICAgICAgICAgICdkZWZhdWx0JzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJzogZmFsc2UsXG4gICAgfSxcbiAgXSxcbn1cblxuZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbiBuYW1lc3BhY2VSdWxlKGNvbnRleHQpIHtcblxuICAvLyByZWFkIG9wdGlvbnNcbiAgY29uc3Qge1xuICAgIGFsbG93Q29tcHV0ZWQgPSBmYWxzZSxcbiAgfSA9IGNvbnRleHQub3B0aW9uc1swXSB8fCB7fVxuXG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgTWFwKClcblxuICBmdW5jdGlvbiBtYWtlTWVzc2FnZShsYXN0LCBuYW1lcGF0aCkge1xuICAgICByZXR1cm4gYCcke2xhc3QubmFtZX0nIG5vdCBmb3VuZCBpbmAgK1xuICAgICAgICAgICAgKG5hbWVwYXRoLmxlbmd0aCA+IDEgPyAnIGRlZXBseSAnIDogJyAnKSArXG4gICAgICAgICAgICBgaW1wb3J0ZWQgbmFtZXNwYWNlICcke25hbWVwYXRoLmpvaW4oJy4nKX0nLmBcbiAgfVxuXG4gIHJldHVybiB7XG5cbiAgICAvLyBwaWNrIHVwIGFsbCBpbXBvcnRzIGF0IGJvZHkgZW50cnkgdGltZSwgdG8gcHJvcGVybHkgcmVzcGVjdCBob2lzdGluZ1xuICAgICdQcm9ncmFtJzogZnVuY3Rpb24gKHsgYm9keSB9KSB7XG4gICAgICBmdW5jdGlvbiBwcm9jZXNzQm9keVN0YXRlbWVudChkZWNsYXJhdGlvbikge1xuICAgICAgICBpZiAoZGVjbGFyYXRpb24udHlwZSAhPT0gJ0ltcG9ydERlY2xhcmF0aW9uJykgcmV0dXJuXG5cbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnNwZWNpZmllcnMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgICAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQoZGVjbGFyYXRpb24uc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBpbXBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBkZWNsYXJhdGlvbilcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGRlY2xhcmF0aW9uLnNwZWNpZmllcnMuZm9yRWFjaCgoc3BlY2lmaWVyKSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydChzcGVjaWZpZXIsXG4gICAgICAgICAgICAgICAgICBgTm8gZXhwb3J0ZWQgbmFtZXMgZm91bmQgaW4gbW9kdWxlICcke2RlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZX0nLmApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoc3BlY2lmaWVyLmxvY2FsLm5hbWUsIGltcG9ydHMpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICAgIGNhc2UgJ0ltcG9ydFNwZWNpZmllcic6IHtcbiAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IGltcG9ydHMuZ2V0KFxuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gJ2RlZmF1bHQnIGZvciBkZWZhdWx0IGh0dHA6Ly9pLmltZ3VyLmNvbS9uajZxQVd5LmpwZ1xuICAgICAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZCA/IHNwZWNpZmllci5pbXBvcnRlZC5uYW1lIDogJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICBpZiAoIW1ldGEgfHwgIW1ldGEubmFtZXNwYWNlKSBicmVha1xuICAgICAgICAgICAgICBuYW1lc3BhY2VzLnNldChzcGVjaWZpZXIubG9jYWwubmFtZSwgbWV0YS5uYW1lc3BhY2UpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYm9keS5mb3JFYWNoKHByb2Nlc3NCb2R5U3RhdGVtZW50KVxuICAgIH0sXG5cbiAgICAvLyBzYW1lIGFzIGFib3ZlLCBidXQgZG9lcyBub3QgYWRkIG5hbWVzIHRvIGxvY2FsIG1hcFxuICAgICdFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXInOiBmdW5jdGlvbiAobmFtZXNwYWNlKSB7XG4gICAgICB2YXIgZGVjbGFyYXRpb24gPSBpbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KVxuXG4gICAgICB2YXIgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIWltcG9ydHMuc2l6ZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydChuYW1lc3BhY2UsXG4gICAgICAgICAgYE5vIGV4cG9ydGVkIG5hbWVzIGZvdW5kIGluIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyB0b2RvOiBjaGVjayBmb3IgcG9zc2libGUgcmVkZWZpbml0aW9uXG5cbiAgICAnTWVtYmVyRXhwcmVzc2lvbic6IGZ1bmN0aW9uIChkZXJlZmVyZW5jZSkge1xuICAgICAgaWYgKGRlcmVmZXJlbmNlLm9iamVjdC50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhkZXJlZmVyZW5jZS5vYmplY3QubmFtZSkpIHJldHVyblxuXG4gICAgICBpZiAoZGVyZWZlcmVuY2UucGFyZW50LnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicgJiZcbiAgICAgICAgICBkZXJlZmVyZW5jZS5wYXJlbnQubGVmdCA9PT0gZGVyZWZlcmVuY2UpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChkZXJlZmVyZW5jZS5wYXJlbnQsXG4gICAgICAgICAgICAgIGBBc3NpZ25tZW50IHRvIG1lbWJlciBvZiBuYW1lc3BhY2UgJyR7ZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWV9Jy5gKVxuICAgICAgfVxuXG4gICAgICAvLyBnbyBkZWVwXG4gICAgICB2YXIgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5nZXQoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpXG4gICAgICB2YXIgbmFtZXBhdGggPSBbZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWVdXG4gICAgICAvLyB3aGlsZSBwcm9wZXJ0eSBpcyBuYW1lc3BhY2UgYW5kIHBhcmVudCBpcyBtZW1iZXIgZXhwcmVzc2lvbiwga2VlcCB2YWxpZGF0aW5nXG4gICAgICB3aGlsZSAobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cyAmJlxuICAgICAgICAgICAgIGRlcmVmZXJlbmNlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuXG4gICAgICAgIGlmIChkZXJlZmVyZW5jZS5jb21wdXRlZCkge1xuICAgICAgICAgIGlmICghYWxsb3dDb21wdXRlZCkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoZGVyZWZlcmVuY2UucHJvcGVydHksXG4gICAgICAgICAgICAgICdVbmFibGUgdG8gdmFsaWRhdGUgY29tcHV0ZWQgcmVmZXJlbmNlIHRvIGltcG9ydGVkIG5hbWVzcGFjZSBcXCcnICtcbiAgICAgICAgICAgICAgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUgKyAnXFwnLicpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFuYW1lc3BhY2UuaGFzKGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoXG4gICAgICAgICAgICBkZXJlZmVyZW5jZS5wcm9wZXJ0eSxcbiAgICAgICAgICAgIG1ha2VNZXNzYWdlKGRlcmVmZXJlbmNlLnByb3BlcnR5LCBuYW1lcGF0aCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0YXNoIGFuZCBwb3BcbiAgICAgICAgbmFtZXBhdGgucHVzaChkZXJlZmVyZW5jZS5wcm9wZXJ0eS5uYW1lKVxuICAgICAgICBuYW1lc3BhY2UgPSBuYW1lc3BhY2UuZ2V0KGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpLm5hbWVzcGFjZVxuICAgICAgICBkZXJlZmVyZW5jZSA9IGRlcmVmZXJlbmNlLnBhcmVudFxuICAgICAgfVxuXG4gICAgfSxcblxuICAgICdWYXJpYWJsZURlY2xhcmF0b3InOiBmdW5jdGlvbiAoeyBpZCwgaW5pdCB9KSB7XG4gICAgICBpZiAoaW5pdCA9PSBudWxsKSByZXR1cm5cbiAgICAgIGlmIChpbml0LnR5cGUgIT09ICdJZGVudGlmaWVyJykgcmV0dXJuXG4gICAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGluaXQubmFtZSkpIHJldHVyblxuXG4gICAgICAvLyBjaGVjayBmb3IgcmVkZWZpbml0aW9uIGluIGludGVybWVkaWF0ZSBzY29wZXNcbiAgICAgIGlmIChkZWNsYXJlZFNjb3BlKGNvbnRleHQsIGluaXQubmFtZSkgIT09ICdtb2R1bGUnKSByZXR1cm5cblxuICAgICAgLy8gREZTIHRyYXZlcnNlIGNoaWxkIG5hbWVzcGFjZXNcbiAgICAgIGZ1bmN0aW9uIHRlc3RLZXkocGF0dGVybiwgbmFtZXNwYWNlLCBwYXRoID0gW2luaXQubmFtZV0pIHtcbiAgICAgICAgaWYgKCEobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cykpIHJldHVyblxuXG4gICAgICAgIGlmIChwYXR0ZXJuLnR5cGUgIT09ICdPYmplY3RQYXR0ZXJuJykgcmV0dXJuXG5cbiAgICAgICAgcGF0dGVybi5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5LmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgbm9kZTogcHJvcGVydHksXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdPbmx5IGRlc3RydWN0dXJlIHRvcC1sZXZlbCBuYW1lcy4nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2UgaWYgKCFuYW1lc3BhY2UuaGFzKHByb3BlcnR5LmtleS5uYW1lKSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBub2RlOiBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWFrZU1lc3NhZ2UocHJvcGVydHkua2V5LCBwYXRoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGgucHVzaChwcm9wZXJ0eS5rZXkubmFtZSlcbiAgICAgICAgICAgIHRlc3RLZXkocHJvcGVydHkudmFsdWUsIG5hbWVzcGFjZS5nZXQocHJvcGVydHkua2V5Lm5hbWUpLm5hbWVzcGFjZSwgcGF0aClcbiAgICAgICAgICAgIHBhdGgucG9wKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRlc3RLZXkoaWQsIG5hbWVzcGFjZXMuZ2V0KGluaXQubmFtZSkpXG4gICAgfSxcbiAgfVxufVxuIl19

@@ -15,3 +15,3 @@ 'use strict';

if ((0, _importType2.default)(name, context) === 'builtin') {
context.report(node, 'Do not import Node.js builtin modules');
context.report(node, 'Do not import Node.js builtin module "' + name + '"');
}

@@ -32,2 +32,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLW5vZGVqcy1tb2R1bGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBUyxlQUFULENBQXlCLE9BQXpCLEVBQWtDLElBQWxDLEVBQXdDLElBQXhDLEVBQThDO0FBQzVDLE1BQUksMEJBQVcsSUFBWCxFQUFpQixPQUFqQixNQUE4QixTQUFsQyxFQUE2QztBQUMzQyxZQUFRLE1BQVIsQ0FBZSxJQUFmLEVBQXFCLHVDQUFyQjtBQUNEO0FBQ0Y7O0FBRUQsT0FBTyxPQUFQLEdBQWlCLFVBQVUsT0FBVixFQUFtQjtBQUNsQyxTQUFPO0FBQ0wsdUJBQW1CLFNBQVMsYUFBVCxDQUF1QixJQUF2QixFQUE2QjtBQUM5QyxzQkFBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0IsS0FBSyxNQUFMLENBQVksS0FBM0M7QUFDRCxLQUhJO0FBSUwsb0JBQWdCLFNBQVMsY0FBVCxDQUF3QixJQUF4QixFQUE4QjtBQUM1QyxVQUFJLDZCQUFnQixJQUFoQixDQUFKLEVBQTJCO0FBQ3pCLHdCQUFnQixPQUFoQixFQUF5QixJQUF6QixFQUErQixLQUFLLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLEtBQWpEO0FBQ0Q7QUFDRjtBQVJJLEdBQVA7QUFVRCxDQVhEIiwiZmlsZSI6InJ1bGVzL25vLW5vZGVqcy1tb2R1bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGltcG9ydFR5cGUgZnJvbSAnLi4vY29yZS9pbXBvcnRUeXBlJ1xuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5cbmZ1bmN0aW9uIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBub2RlLCBuYW1lKSB7XG4gIGlmIChpbXBvcnRUeXBlKG5hbWUsIGNvbnRleHQpID09PSAnYnVpbHRpbicpIHtcbiAgICBjb250ZXh0LnJlcG9ydChub2RlLCAnRG8gbm90IGltcG9ydCBOb2RlLmpzIGJ1aWx0aW4gbW9kdWxlcycpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEltcG9ydERlY2xhcmF0aW9uOiBmdW5jdGlvbiBoYW5kbGVJbXBvcnRzKG5vZGUpIHtcbiAgICAgIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBub2RlLCBub2RlLnNvdXJjZS52YWx1ZSlcbiAgICB9LFxuICAgIENhbGxFeHByZXNzaW9uOiBmdW5jdGlvbiBoYW5kbGVSZXF1aXJlcyhub2RlKSB7XG4gICAgICBpZiAoaXNTdGF0aWNSZXF1aXJlKG5vZGUpKSB7XG4gICAgICAgIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBub2RlLCBub2RlLmFyZ3VtZW50c1swXS52YWx1ZSlcbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLW5vZGVqcy1tb2R1bGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBUyxlQUFULENBQXlCLE9BQXpCLEVBQWtDLElBQWxDLEVBQXdDLElBQXhDLEVBQThDO0FBQzVDLE1BQUksMEJBQVcsSUFBWCxFQUFpQixPQUFqQixNQUE4QixTQUFsQyxFQUE2QztBQUMzQyxZQUFRLE1BQVIsQ0FBZSxJQUFmLEVBQXFCLDJDQUEyQyxJQUEzQyxHQUFrRCxHQUF2RTtBQUNEO0FBQ0Y7O0FBRUQsT0FBTyxPQUFQLEdBQWlCLFVBQVUsT0FBVixFQUFtQjtBQUNsQyxTQUFPO0FBQ0wsdUJBQW1CLFNBQVMsYUFBVCxDQUF1QixJQUF2QixFQUE2QjtBQUM5QyxzQkFBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0IsS0FBSyxNQUFMLENBQVksS0FBM0M7QUFDRCxLQUhJO0FBSUwsb0JBQWdCLFNBQVMsY0FBVCxDQUF3QixJQUF4QixFQUE4QjtBQUM1QyxVQUFJLDZCQUFnQixJQUFoQixDQUFKLEVBQTJCO0FBQ3pCLHdCQUFnQixPQUFoQixFQUF5QixJQUF6QixFQUErQixLQUFLLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLEtBQWpEO0FBQ0Q7QUFDRjtBQVJJLEdBQVA7QUFVRCxDQVhEIiwiZmlsZSI6InJ1bGVzL25vLW5vZGVqcy1tb2R1bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGltcG9ydFR5cGUgZnJvbSAnLi4vY29yZS9pbXBvcnRUeXBlJ1xuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5cbmZ1bmN0aW9uIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBub2RlLCBuYW1lKSB7XG4gIGlmIChpbXBvcnRUeXBlKG5hbWUsIGNvbnRleHQpID09PSAnYnVpbHRpbicpIHtcbiAgICBjb250ZXh0LnJlcG9ydChub2RlLCAnRG8gbm90IGltcG9ydCBOb2RlLmpzIGJ1aWx0aW4gbW9kdWxlIFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gaGFuZGxlSW1wb3J0cyhub2RlKSB7XG4gICAgICByZXBvcnRJZk1pc3NpbmcoY29udGV4dCwgbm9kZSwgbm9kZS5zb3VyY2UudmFsdWUpXG4gICAgfSxcbiAgICBDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gaGFuZGxlUmVxdWlyZXMobm9kZSkge1xuICAgICAgaWYgKGlzU3RhdGljUmVxdWlyZShub2RlKSkge1xuICAgICAgICByZXBvcnRJZk1pc3NpbmcoY29udGV4dCwgbm9kZSwgbm9kZS5hcmd1bWVudHNbMF0udmFsdWUpXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIl19
{
"name": "eslint-plugin-import",
"version": "1.12.0",
"version": "1.13.0",
"description": "Import with sanity.",

@@ -15,3 +15,3 @@ "main": "lib/index.js",

"scripts": {
"watch": "cross-env NODE_PATH=./lib gulp watch-test",
"watch": "cross-env NODE_PATH=./src mocha --watch --compilers js:babel-register --recursive tests/src",
"cover": "gulp pretest && cross-env NODE_PATH=./lib istanbul cover --dir reports/coverage _mocha tests/lib/ -- --recursive -R progress",

@@ -18,0 +18,0 @@ "posttest": "eslint ./src",

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

A whitelist of file extensions that will be parsed as modules and inspected for
A list of file extensions that will be parsed as modules and inspected for
`export`s.

@@ -211,3 +211,3 @@

Also, `import/ignore` patterns will overrule this whitelist, so `node_modules` that
Also, `import/ignore` patterns will overrule this list, so `node_modules` that
end in `.js` will still be ignored by default.

@@ -214,0 +214,0 @@

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