45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
exports.default = extractRequires;
|
|
/**
|
|
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
*
|
|
*/
|
|
|
|
const blockCommentRe = /\/\*[^]*?\*\//g;
|
|
const lineCommentRe = /\/\/.*/g;
|
|
|
|
const replacePatterns = {
|
|
DYNAMIC_IMPORT_RE: /(?:^|[^.]\s*)(\bimport\s*?\(\s*?)([`'"])([^`'"]+)(\2\s*?\))/g,
|
|
EXPORT_RE: /(\bexport\s+(?!type )(?:[^'"]+\s+from\s+)??)(['"])([^'"]+)(\2)/g,
|
|
IMPORT_RE: /(\bimport\s+(?!type )(?:[^'"]+\s+from\s+)??)(['"])([^'"]+)(\2)/g,
|
|
REQUIRE_EXTENSIONS_PATTERN: /(?:^|[^.]\s*)(\b(?:require\s*?\.\s*?(?:requireActual|requireMock)|jest\s*?\.\s*?(?:requireActual|requireMock|genMockFromModule))\s*?\(\s*?)([`'"])([^`'"]+)(\2\s*?\))/g,
|
|
REQUIRE_RE: /(?:^|[^.]\s*)(\brequire\s*?\(\s*?)([`'"])([^`'"]+)(\2\s*?\))/g
|
|
};
|
|
|
|
function extractRequires(code) {
|
|
const dependencies = new Set();
|
|
const addDependency = (match, pre, quot, dep, post) => {
|
|
dependencies.add(dep);
|
|
return match;
|
|
};
|
|
|
|
code
|
|
.replace(blockCommentRe, '')
|
|
.replace(lineCommentRe, '')
|
|
.replace(replacePatterns.EXPORT_RE, addDependency)
|
|
.replace(replacePatterns.IMPORT_RE, addDependency)
|
|
.replace(replacePatterns.REQUIRE_EXTENSIONS_PATTERN, addDependency)
|
|
.replace(replacePatterns.REQUIRE_RE, addDependency)
|
|
.replace(replacePatterns.DYNAMIC_IMPORT_RE, addDependency);
|
|
|
|
return Array.from(dependencies);
|
|
}
|