diff options
Diffstat (limited to 'node_modules/jest-changed-files')
| -rw-r--r-- | node_modules/jest-changed-files/LICENSE | 21 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/README.md | 63 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/git.d.ts | 10 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/git.js | 179 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/hg.d.ts | 10 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/hg.js | 133 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/index.d.ts | 12 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/index.js | 86 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/types.d.ts | 28 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/build/types.js | 1 | ||||
| -rw-r--r-- | node_modules/jest-changed-files/package.json | 31 | 
11 files changed, 574 insertions, 0 deletions
diff --git a/node_modules/jest-changed-files/LICENSE b/node_modules/jest-changed-files/LICENSE new file mode 100644 index 0000000..b96dcb0 --- /dev/null +++ b/node_modules/jest-changed-files/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/jest-changed-files/README.md b/node_modules/jest-changed-files/README.md new file mode 100644 index 0000000..d0c8539 --- /dev/null +++ b/node_modules/jest-changed-files/README.md @@ -0,0 +1,63 @@ +# jest-changed-files + +A module used internally by Jest to check which files have changed since you last committed in git or hg. + +## Install + +```sh +$ npm install --save jest-changed-files +``` + +## API + +### `getChangedFilesForRoots(roots: <Array<string>>, options: ?object): Promise<?object>` + +Get the list of files and repos that have changed since the last commit. + +#### Parameters + +roots: Array of string paths gathered from [jest roots](https://jestjs.io/docs/configuration#roots-arraystring). + +options: Object literal with keys + +- lastCommit: boolean +- withAncestor: boolean + +### findRepos(roots: <Array<string>>): Promise<?object> + +Get a set of git and hg repositories. + +#### Parameters + +roots: Array of string paths gathered from [jest roots](https://jestjs.io/docs/configuration#roots-arraystring). + +## Usage + +```javascript +import {getChangedFilesForRoots} from 'jest-changed-files'; + +getChangedFilesForRoots(['/path/to/test'], { +  lastCommit: true, +  withAncestor: true, +}).then(files => { +  /* +  { +    repos: [], +    changedFiles: [] +  } +  */ +}); +``` + +```javascript +import {findRepos} from 'jest-changed-files'; + +findRepos(['/path/to/test']).then(repos => { +  /* +  { +    git: Set<Path>, +    hg: Set<Path> +  } +  */ +}); +``` diff --git a/node_modules/jest-changed-files/build/git.d.ts b/node_modules/jest-changed-files/build/git.d.ts new file mode 100644 index 0000000..498733b --- /dev/null +++ b/node_modules/jest-changed-files/build/git.d.ts @@ -0,0 +1,10 @@ +/** + * 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. + * + */ +import type { SCMAdapter } from './types'; +declare const adapter: SCMAdapter; +export default adapter; diff --git a/node_modules/jest-changed-files/build/git.js b/node_modules/jest-changed-files/build/git.js new file mode 100644 index 0000000..8beb629 --- /dev/null +++ b/node_modules/jest-changed-files/build/git.js @@ -0,0 +1,179 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +exports.default = void 0; + +function path() { +  const data = _interopRequireWildcard(require('path')); + +  path = function () { +    return data; +  }; + +  return data; +} + +function _execa() { +  const data = _interopRequireDefault(require('execa')); + +  _execa = function () { +    return data; +  }; + +  return data; +} + +function _interopRequireDefault(obj) { +  return obj && obj.__esModule ? obj : {default: obj}; +} + +function _getRequireWildcardCache(nodeInterop) { +  if (typeof WeakMap !== 'function') return null; +  var cacheBabelInterop = new WeakMap(); +  var cacheNodeInterop = new WeakMap(); +  return (_getRequireWildcardCache = function (nodeInterop) { +    return nodeInterop ? cacheNodeInterop : cacheBabelInterop; +  })(nodeInterop); +} + +function _interopRequireWildcard(obj, nodeInterop) { +  if (!nodeInterop && obj && obj.__esModule) { +    return obj; +  } +  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { +    return {default: obj}; +  } +  var cache = _getRequireWildcardCache(nodeInterop); +  if (cache && cache.has(obj)) { +    return cache.get(obj); +  } +  var newObj = {}; +  var hasPropertyDescriptor = +    Object.defineProperty && Object.getOwnPropertyDescriptor; +  for (var key in obj) { +    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) { +      var desc = hasPropertyDescriptor +        ? Object.getOwnPropertyDescriptor(obj, key) +        : null; +      if (desc && (desc.get || desc.set)) { +        Object.defineProperty(newObj, key, desc); +      } else { +        newObj[key] = obj[key]; +      } +    } +  } +  newObj.default = obj; +  if (cache) { +    cache.set(obj, newObj); +  } +  return newObj; +} + +/** + * 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. + * + */ +const findChangedFilesUsingCommand = async (args, cwd) => { +  let result; + +  try { +    result = await (0, _execa().default)('git', args, { +      cwd +    }); +  } catch (e) { +    // TODO: Should we keep the original `message`? +    e.message = e.stderr; +    throw e; +  } + +  return result.stdout +    .split('\n') +    .filter(s => s !== '') +    .map(changedPath => path().resolve(cwd, changedPath)); +}; + +const adapter = { +  findChangedFiles: async (cwd, options) => { +    var _options$includePaths; + +    const changedSince = options.withAncestor ? 'HEAD^' : options.changedSince; +    const includePaths = ( +      (_options$includePaths = options.includePaths) !== null && +      _options$includePaths !== void 0 +        ? _options$includePaths +        : [] +    ).map(absoluteRoot => path().normalize(path().relative(cwd, absoluteRoot))); + +    if (options.lastCommit) { +      return findChangedFilesUsingCommand( +        ['show', '--name-only', '--pretty=format:', 'HEAD', '--'].concat( +          includePaths +        ), +        cwd +      ); +    } + +    if (changedSince) { +      const [committed, staged, unstaged] = await Promise.all([ +        findChangedFilesUsingCommand( +          ['diff', '--name-only', `${changedSince}...HEAD`, '--'].concat( +            includePaths +          ), +          cwd +        ), +        findChangedFilesUsingCommand( +          ['diff', '--cached', '--name-only', '--'].concat(includePaths), +          cwd +        ), +        findChangedFilesUsingCommand( +          [ +            'ls-files', +            '--other', +            '--modified', +            '--exclude-standard', +            '--' +          ].concat(includePaths), +          cwd +        ) +      ]); +      return [...committed, ...staged, ...unstaged]; +    } + +    const [staged, unstaged] = await Promise.all([ +      findChangedFilesUsingCommand( +        ['diff', '--cached', '--name-only', '--'].concat(includePaths), +        cwd +      ), +      findChangedFilesUsingCommand( +        [ +          'ls-files', +          '--other', +          '--modified', +          '--exclude-standard', +          '--' +        ].concat(includePaths), +        cwd +      ) +    ]); +    return [...staged, ...unstaged]; +  }, +  getRoot: async cwd => { +    const options = ['rev-parse', '--show-cdup']; + +    try { +      const result = await (0, _execa().default)('git', options, { +        cwd +      }); +      return path().resolve(cwd, result.stdout); +    } catch { +      return null; +    } +  } +}; +var _default = adapter; +exports.default = _default; diff --git a/node_modules/jest-changed-files/build/hg.d.ts b/node_modules/jest-changed-files/build/hg.d.ts new file mode 100644 index 0000000..498733b --- /dev/null +++ b/node_modules/jest-changed-files/build/hg.d.ts @@ -0,0 +1,10 @@ +/** + * 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. + * + */ +import type { SCMAdapter } from './types'; +declare const adapter: SCMAdapter; +export default adapter; diff --git a/node_modules/jest-changed-files/build/hg.js b/node_modules/jest-changed-files/build/hg.js new file mode 100644 index 0000000..9277b8d --- /dev/null +++ b/node_modules/jest-changed-files/build/hg.js @@ -0,0 +1,133 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +exports.default = void 0; + +function path() { +  const data = _interopRequireWildcard(require('path')); + +  path = function () { +    return data; +  }; + +  return data; +} + +function _execa() { +  const data = _interopRequireDefault(require('execa')); + +  _execa = function () { +    return data; +  }; + +  return data; +} + +function _interopRequireDefault(obj) { +  return obj && obj.__esModule ? obj : {default: obj}; +} + +function _getRequireWildcardCache(nodeInterop) { +  if (typeof WeakMap !== 'function') return null; +  var cacheBabelInterop = new WeakMap(); +  var cacheNodeInterop = new WeakMap(); +  return (_getRequireWildcardCache = function (nodeInterop) { +    return nodeInterop ? cacheNodeInterop : cacheBabelInterop; +  })(nodeInterop); +} + +function _interopRequireWildcard(obj, nodeInterop) { +  if (!nodeInterop && obj && obj.__esModule) { +    return obj; +  } +  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { +    return {default: obj}; +  } +  var cache = _getRequireWildcardCache(nodeInterop); +  if (cache && cache.has(obj)) { +    return cache.get(obj); +  } +  var newObj = {}; +  var hasPropertyDescriptor = +    Object.defineProperty && Object.getOwnPropertyDescriptor; +  for (var key in obj) { +    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) { +      var desc = hasPropertyDescriptor +        ? Object.getOwnPropertyDescriptor(obj, key) +        : null; +      if (desc && (desc.get || desc.set)) { +        Object.defineProperty(newObj, key, desc); +      } else { +        newObj[key] = obj[key]; +      } +    } +  } +  newObj.default = obj; +  if (cache) { +    cache.set(obj, newObj); +  } +  return newObj; +} + +/** + * 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. + * + */ +const env = {...process.env, HGPLAIN: '1'}; +const adapter = { +  findChangedFiles: async (cwd, options) => { +    var _options$includePaths; + +    const includePaths = +      (_options$includePaths = options.includePaths) !== null && +      _options$includePaths !== void 0 +        ? _options$includePaths +        : []; +    const args = ['status', '-amnu']; + +    if (options.withAncestor) { +      args.push('--rev', 'min((!public() & ::.)+.)^'); +    } else if (options.changedSince) { +      args.push('--rev', `ancestor(., ${options.changedSince})`); +    } else if (options.lastCommit === true) { +      args.push('--change', '.'); +    } + +    args.push(...includePaths); +    let result; + +    try { +      result = await (0, _execa().default)('hg', args, { +        cwd, +        env +      }); +    } catch (e) { +      // TODO: Should we keep the original `message`? +      e.message = e.stderr; +      throw e; +    } + +    return result.stdout +      .split('\n') +      .filter(s => s !== '') +      .map(changedPath => path().resolve(cwd, changedPath)); +  }, +  getRoot: async cwd => { +    try { +      const result = await (0, _execa().default)('hg', ['root'], { +        cwd, +        env +      }); +      return result.stdout; +    } catch { +      return null; +    } +  } +}; +var _default = adapter; +exports.default = _default; diff --git a/node_modules/jest-changed-files/build/index.d.ts b/node_modules/jest-changed-files/build/index.d.ts new file mode 100644 index 0000000..0c134ab --- /dev/null +++ b/node_modules/jest-changed-files/build/index.d.ts @@ -0,0 +1,12 @@ +/** + * 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. + * + */ +import type { Config } from '@jest/types'; +import type { ChangedFilesPromise, Options, Repos } from './types'; +export type { ChangedFiles, ChangedFilesPromise } from './types'; +export declare const getChangedFilesForRoots: (roots: Array<Config.Path>, options: Options) => ChangedFilesPromise; +export declare const findRepos: (roots: Array<Config.Path>) => Promise<Repos>; diff --git a/node_modules/jest-changed-files/build/index.js b/node_modules/jest-changed-files/build/index.js new file mode 100644 index 0000000..e230af2 --- /dev/null +++ b/node_modules/jest-changed-files/build/index.js @@ -0,0 +1,86 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +exports.getChangedFilesForRoots = exports.findRepos = void 0; + +function _throat() { +  const data = _interopRequireDefault(require('throat')); + +  _throat = function () { +    return data; +  }; + +  return data; +} + +var _git = _interopRequireDefault(require('./git')); + +var _hg = _interopRequireDefault(require('./hg')); + +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. + * + */ +function notEmpty(value) { +  return value != null; +} // This is an arbitrary number. The main goal is to prevent projects with +// many roots (50+) from spawning too many processes at once. + +const mutex = (0, _throat().default)(5); + +const findGitRoot = dir => mutex(() => _git.default.getRoot(dir)); + +const findHgRoot = dir => mutex(() => _hg.default.getRoot(dir)); + +const getChangedFilesForRoots = async (roots, options) => { +  const repos = await findRepos(roots); +  const changedFilesOptions = { +    includePaths: roots, +    ...options +  }; +  const gitPromises = Array.from(repos.git).map(repo => +    _git.default.findChangedFiles(repo, changedFilesOptions) +  ); +  const hgPromises = Array.from(repos.hg).map(repo => +    _hg.default.findChangedFiles(repo, changedFilesOptions) +  ); +  const changedFiles = ( +    await Promise.all(gitPromises.concat(hgPromises)) +  ).reduce((allFiles, changedFilesInTheRepo) => { +    for (const file of changedFilesInTheRepo) { +      allFiles.add(file); +    } + +    return allFiles; +  }, new Set()); +  return { +    changedFiles, +    repos +  }; +}; + +exports.getChangedFilesForRoots = getChangedFilesForRoots; + +const findRepos = async roots => { +  const gitRepos = await Promise.all( +    roots.reduce((promises, root) => promises.concat(findGitRoot(root)), []) +  ); +  const hgRepos = await Promise.all( +    roots.reduce((promises, root) => promises.concat(findHgRoot(root)), []) +  ); +  return { +    git: new Set(gitRepos.filter(notEmpty)), +    hg: new Set(hgRepos.filter(notEmpty)) +  }; +}; + +exports.findRepos = findRepos; diff --git a/node_modules/jest-changed-files/build/types.d.ts b/node_modules/jest-changed-files/build/types.d.ts new file mode 100644 index 0000000..9ac5d3d --- /dev/null +++ b/node_modules/jest-changed-files/build/types.d.ts @@ -0,0 +1,28 @@ +/** + * 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. + */ +import type { Config } from '@jest/types'; +export declare type Options = { +    lastCommit?: boolean; +    withAncestor?: boolean; +    changedSince?: string; +    includePaths?: Array<Config.Path>; +}; +declare type Paths = Set<Config.Path>; +export declare type Repos = { +    git: Paths; +    hg: Paths; +}; +export declare type ChangedFiles = { +    repos: Repos; +    changedFiles: Paths; +}; +export declare type ChangedFilesPromise = Promise<ChangedFiles>; +export declare type SCMAdapter = { +    findChangedFiles: (cwd: Config.Path, options: Options) => Promise<Array<Config.Path>>; +    getRoot: (cwd: Config.Path) => Promise<Config.Path | null>; +}; +export {}; diff --git a/node_modules/jest-changed-files/build/types.js b/node_modules/jest-changed-files/build/types.js new file mode 100644 index 0000000..ad9a93a --- /dev/null +++ b/node_modules/jest-changed-files/build/types.js @@ -0,0 +1 @@ +'use strict'; diff --git a/node_modules/jest-changed-files/package.json b/node_modules/jest-changed-files/package.json new file mode 100644 index 0000000..e310ed5 --- /dev/null +++ b/node_modules/jest-changed-files/package.json @@ -0,0 +1,31 @@ +{ +  "name": "jest-changed-files", +  "version": "27.5.1", +  "repository": { +    "type": "git", +    "url": "https://github.com/facebook/jest.git", +    "directory": "packages/jest-changed-files" +  }, +  "license": "MIT", +  "main": "./build/index.js", +  "types": "./build/index.d.ts", +  "exports": { +    ".": { +      "types": "./build/index.d.ts", +      "default": "./build/index.js" +    }, +    "./package.json": "./package.json" +  }, +  "dependencies": { +    "@jest/types": "^27.5.1", +    "execa": "^5.0.0", +    "throat": "^6.0.1" +  }, +  "engines": { +    "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" +  }, +  "publishConfig": { +    "access": "public" +  }, +  "gitHead": "67c1aa20c5fec31366d733e901fee2b981cb1850" +}  | 
