| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 'use strict';Object.defineProperty(exports, '__esModule', {  value: true});exports.extract = extract;var _isRegExpSupported = _interopRequireDefault(require('./isRegExpSupported'));function _interopRequireDefault(obj) {  return obj && obj.__esModule ? obj : {default: obj};}/** * Copyright (c) Facebook, Inc. and its affiliates. 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. */// Negative look behind is only supported in Node 9+const NOT_A_DOT = (0, _isRegExpSupported.default)('(?<!\\.\\s*)')  ? '(?<!\\.\\s*)'  : '(?:^|[^.]\\s*)';const CAPTURE_STRING_LITERAL = pos => `([\`'"])([^'"\`]*?)(?:\\${pos})`;const WORD_SEPARATOR = '\\b';const LEFT_PARENTHESIS = '\\(';const RIGHT_PARENTHESIS = '\\)';const WHITESPACE = '\\s*';const OPTIONAL_COMMA = '(:?,\\s*)?';function createRegExp(parts, flags) {  return new RegExp(parts.join(''), flags);}function alternatives(...parts) {  return `(?:${parts.join('|')})`;}function functionCallStart(...names) {  return [    NOT_A_DOT,    WORD_SEPARATOR,    alternatives(...names),    WHITESPACE,    LEFT_PARENTHESIS,    WHITESPACE  ];}const BLOCK_COMMENT_RE = /\/\*[^]*?\*\//g;const LINE_COMMENT_RE = /\/\/.*/g;const REQUIRE_OR_DYNAMIC_IMPORT_RE = createRegExp(  [    ...functionCallStart('require', 'import'),    CAPTURE_STRING_LITERAL(1),    WHITESPACE,    OPTIONAL_COMMA,    RIGHT_PARENTHESIS  ],  'g');const IMPORT_OR_EXPORT_RE = createRegExp(  [    '\\b(?:import|export)\\s+(?!type(?:of)?\\s+)(?:[^\'"]+\\s+from\\s+)?',    CAPTURE_STRING_LITERAL(1)  ],  'g');const JEST_EXTENSIONS_RE = createRegExp(  [    ...functionCallStart(      'jest\\s*\\.\\s*(?:requireActual|requireMock|genMockFromModule|createMockFromModule)'    ),    CAPTURE_STRING_LITERAL(1),    WHITESPACE,    OPTIONAL_COMMA,    RIGHT_PARENTHESIS  ],  'g');function extract(code) {  const dependencies = new Set();  const addDependency = (match, _, dep) => {    dependencies.add(dep);    return match;  };  code    .replace(BLOCK_COMMENT_RE, '')    .replace(LINE_COMMENT_RE, '')    .replace(IMPORT_OR_EXPORT_RE, addDependency)    .replace(REQUIRE_OR_DYNAMIC_IMPORT_RE, addDependency)    .replace(JEST_EXTENSIONS_RE, addDependency);  return dependencies;}
 |