Add node modules and compiled JavaScript from main (#57)

Co-authored-by: Oliver King <oking3@uncc.edu>
This commit is contained in:
github-actions[bot] 2022-06-21 12:18:30 -04:00 committed by GitHub
parent d893f27da9
commit 7f7e5ba5ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6750 changed files with 1745644 additions and 10860 deletions

21
node_modules/jest-each/LICENSE generated vendored Normal file
View file

@ -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.

506
node_modules/jest-each/README.md generated vendored Normal file
View file

@ -0,0 +1,506 @@
<div align="center">
<h1>jest-each</h1>
Jest Parameterised Testing
</div>
<hr />
[![version](https://img.shields.io/npm/v/jest-each.svg?style=flat-square)](https://www.npmjs.com/package/jest-each) [![downloads](https://img.shields.io/npm/dm/jest-each.svg?style=flat-square)](http://npm-stat.com/charts.html?package=jest-each&from=2017-03-21) [![MIT License](https://img.shields.io/npm/l/jest-each.svg?style=flat-square)](https://github.com/facebook/jest/blob/master/LICENSE)
A parameterised testing library for [Jest](https://jestjs.io/) inspired by [mocha-each](https://github.com/ryym/mocha-each).
jest-each allows you to provide multiple arguments to your `test`/`describe` which results in the test/suite being run once per row of parameters.
## Features
- `.test` to runs multiple tests with parameterised data
- Also under the alias: `.it`
- `.test.only` to only run the parameterised tests
- Also under the aliases: `.it.only` or `.fit`
- `.test.skip` to skip the parameterised tests
- Also under the aliases: `.it.skip` or `.xit` or `.xtest`
- `.test.concurrent`
- Also under the alias: `.it.concurrent`
- `.test.concurrent.only`
- Also under the alias: `.it.concurrent.only`
- `.test.concurrent.skip`
- Also under the alias: `.it.concurrent.skip`
- `.describe` to runs test suites with parameterised data
- `.describe.only` to only run the parameterised suite of tests
- Also under the aliases: `.fdescribe`
- `.describe.skip` to skip the parameterised suite of tests
- Also under the aliases: `.xdescribe`
- Asynchronous tests with `done`
- Unique test titles with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- 🖖 Spock like data tables with [Tagged Template Literals](#tagged-template-literal-of-rows)
---
- [Demo](#demo)
- [Installation](#installation)
- [Importing](#importing)
- APIs
- [Array of Rows](#array-of-rows)
- [Usage](#usage)
- [Tagged Template Literal of rows](#tagged-template-literal-of-rows)
- [Usage](#usage-1)
## Demo
#### Tests without jest-each
![Current jest tests](assets/default-demo.gif)
#### Tests can be re-written with jest-each to:
**`.test`**
![Current jest tests](assets/test-demo.gif)
**`.test` with Tagged Template Literals**
![Current jest tests](assets/tagged-template-literal.gif)
**`.describe`**
![Current jest tests](assets/describe-demo.gif)
## Installation
`npm i --save-dev jest-each`
`yarn add -D jest-each`
## Importing
jest-each is a default export so it can be imported with whatever name you like.
```js
// es6
import each from 'jest-each';
```
```js
// es5
const each = require('jest-each').default;
```
## Array of rows
### API
#### `each([parameters]).test(name, testFn)`
##### `each`:
- parameters: `Array` of Arrays with the arguments that are passed into the `testFn` for each row
- _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]`
##### `.test`:
- name: `String` the title of the `test`.
- Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- testFn: `Function` the test logic, this is the function that will receive the parameters of each row as function arguments
#### `each([parameters]).describe(name, suiteFn)`
##### `each`:
- parameters: `Array` of Arrays with the arguments that are passed into the `suiteFn` for each row
- _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]`
##### `.describe`:
- name: `String` the title of the `describe`
- Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- suiteFn: `Function` the suite of `test`/`it`s to be ran, this is the function that will receive the parameters in each row as function arguments
### Usage
#### `.test(name, fn)`
Alias: `.it(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test('returns the result of adding %d to %d', (a, b, expected) => {
expect(a + b).toBe(expected);
});
```
#### `.test.only(name, fn)`
Aliases: `.it.only(name, fn)` or `.fit(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test.only('returns the result of adding %d to %d', (a, b, expected) => {
expect(a + b).toBe(expected);
});
```
#### `.test.skip(name, fn)`
Aliases: `.it.skip(name, fn)` or `.xit(name, fn)` or `.xtest(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test.skip('returns the result of adding %d to %d', (a, b, expected) => {
expect(a + b).toBe(expected);
});
```
#### `.test.concurrent(name, fn)`
Aliases: `.it.concurrent(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test.concurrent(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### `.test.concurrent.only(name, fn)`
Aliases: `.it.concurrent.only(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test.concurrent.only(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### `.test.concurrent.skip(name, fn)`
Aliases: `.it.concurrent.skip(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).test.concurrent.skip(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### Asynchronous `.test(name, fn(done))`
Alias: `.it(name, fn(done))`
```js
each([['hello'], ['mr'], ['spy']]).test(
'gives 007 secret message: %s',
(str, done) => {
const asynchronousSpy = message => {
expect(message).toBe(str);
done();
};
callSomeAsynchronousFunction(asynchronousSpy)(str);
},
);
```
#### `.describe(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).describe('.add(%d, %d)', (a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
});
```
#### `.describe.only(name, fn)`
Aliases: `.fdescribe(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).describe.only('.add(%d, %d)', (a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
#### `.describe.skip(name, fn)`
Aliases: `.xdescribe(name, fn)`
```js
each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
]).describe.skip('.add(%d, %d)', (a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
---
## Tagged Template Literal of rows
### API
#### `each[tagged template].test(name, suiteFn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
##### `each` takes a tagged template string with:
- First row of variable name column headings separated with `|`
- One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax.
##### `.test`:
- name: `String` the title of the `test`, use `$variable` in the name string to inject test values into the test title from the tagged template expressions
- To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
- testFn: `Function` the test logic, this is the function that will receive the parameters of each row as function arguments
#### `each[tagged template].describe(name, suiteFn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
});
```
##### `each` takes a tagged template string with:
- First row of variable name column headings separated with `|`
- One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax.
##### `.describe`:
- name: `String` the title of the `test`, use `$variable` in the name string to inject test values into the test title from the tagged template expressions
- To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
- suiteFn: `Function` the suite of `test`/`it`s to be ran, this is the function that will receive the parameters in each row as function arguments
### Usage
#### `.test(name, fn)`
Alias: `.it(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### `.test.only(name, fn)`
Aliases: `.it.only(name, fn)` or `.fit(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test.only('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### `.test.skip(name, fn)`
Aliases: `.it.skip(name, fn)` or `.xit(name, fn)` or `.xtest(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test.skip('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### Asynchronous `.test(name, fn(done))`
Alias: `.it(name, fn(done))`
```js
each`
str
${'hello'}
${'mr'}
${'spy'}
`.test('gives 007 secret message: $str', ({str}, done) => {
const asynchronousSpy = message => {
expect(message).toBe(str);
done();
};
callSomeAsynchronousFunction(asynchronousSpy)(str);
});
```
#### `.describe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
});
```
#### `.describe.only(name, fn)`
Aliases: `.fdescribe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe.only('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
#### `.describe.skip(name, fn)`
Aliases: `.xdescribe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe.skip('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
## License
MIT

15
node_modules/jest-each/build/bind.d.ts generated vendored Normal file
View file

@ -0,0 +1,15 @@
/**
* 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 { Global } from '@jest/types';
export declare type EachTests = Array<{
title: string;
arguments: Array<unknown>;
}>;
declare type GlobalCallback = (testName: string, fn: Global.ConcurrentTestFn, timeout?: number) => void;
declare const _default: <EachCallback extends Global.TestCallback>(cb: GlobalCallback, supportsDone?: boolean) => (table: Global.EachTable, ...taggedTemplateData: Global.TemplateData) => (title: string, test: Global.EachTestFn<EachCallback>, timeout?: number | undefined) => void;
export default _default;

76
node_modules/jest-each/build/bind.js generated vendored Normal file
View file

@ -0,0 +1,76 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function _jestUtil() {
const data = require('jest-util');
_jestUtil = function () {
return data;
};
return data;
}
var _array = _interopRequireDefault(require('./table/array'));
var _template = _interopRequireDefault(require('./table/template'));
var _validation = require('./validation');
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.
*
*/
var _default = (cb, supportsDone = true) => (table, ...taggedTemplateData) =>
function eachBind(title, test, timeout) {
try {
const tests = isArrayTable(taggedTemplateData)
? buildArrayTests(title, table)
: buildTemplateTests(title, table, taggedTemplateData);
return tests.forEach(row =>
cb(
row.title,
applyArguments(supportsDone, row.arguments, test),
timeout
)
);
} catch (e) {
const error = new (_jestUtil().ErrorWithStack)(e.message, eachBind);
return cb(title, () => {
throw error;
});
}
};
exports.default = _default;
const isArrayTable = data => data.length === 0;
const buildArrayTests = (title, table) => {
(0, _validation.validateArrayTable)(table);
return (0, _array.default)(title, table);
};
const buildTemplateTests = (title, table, taggedTemplateData) => {
const headings = getHeadingKeys(table[0]);
(0, _validation.validateTemplateTableHeadings)(headings, taggedTemplateData);
return (0, _template.default)(title, headings, taggedTemplateData);
};
const getHeadingKeys = headings => headings.replace(/\s/g, '').split('|');
const applyArguments = (supportsDone, params, test) =>
supportsDone && params.length < test.length
? done => test(...params, done)
: () => test(...params);

79
node_modules/jest-each/build/index.d.ts generated vendored Normal file
View file

@ -0,0 +1,79 @@
/**
* 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 { Global } from '@jest/types';
import bind from './bind';
declare type Global = Global.Global;
declare const install: (g: Global, table: Global.EachTable, ...data: Global.TemplateData) => {
describe: {
(title: string, suite: Global.EachTestFn<Global.BlockFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
fdescribe: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
fit: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
it: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
concurrent: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
};
test: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
concurrent: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
};
xdescribe: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
xit: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
xtest: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
declare const each: {
(table: Global.EachTable, ...data: Global.TemplateData): ReturnType<typeof install>;
withGlobal(g: Global): (table: Global.EachTable, ...data: Global.TemplateData) => {
describe: {
(title: string, suite: Global.EachTestFn<Global.BlockFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
fdescribe: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
fit: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
it: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
concurrent: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
};
test: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
concurrent: {
(title: string, test: Global.EachTestFn<Global.TestFn>, timeout?: number | undefined): void;
only: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
skip: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
};
xdescribe: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
xit: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
xtest: (title: string, test: Global.EachTestFn<Global.TestCallback>, timeout?: number | undefined) => void;
};
};
export { bind };
export default each;

94
node_modules/jest-each/build/index.js generated vendored Normal file
View file

@ -0,0 +1,94 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
Object.defineProperty(exports, 'bind', {
enumerable: true,
get: function () {
return _bind.default;
}
});
exports.default = void 0;
var _bind = _interopRequireDefault(require('./bind'));
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.
*
*/
const install = (g, table, ...data) => {
const bindingWithArray = data.length === 0;
const bindingWithTemplate = Array.isArray(table) && !!table.raw;
if (!bindingWithArray && !bindingWithTemplate) {
throw new Error(
'`.each` must only be called with an Array or Tagged Template Literal.'
);
}
const test = (title, test, timeout) =>
(0, _bind.default)(g.test)(table, ...data)(title, test, timeout);
test.skip = (0, _bind.default)(g.test.skip)(table, ...data);
test.only = (0, _bind.default)(g.test.only)(table, ...data);
const testConcurrent = (title, test, timeout) =>
(0, _bind.default)(g.test.concurrent)(table, ...data)(title, test, timeout);
test.concurrent = testConcurrent;
testConcurrent.only = (0, _bind.default)(g.test.concurrent.only)(
table,
...data
);
testConcurrent.skip = (0, _bind.default)(g.test.concurrent.skip)(
table,
...data
);
const it = (title, test, timeout) =>
(0, _bind.default)(g.it)(table, ...data)(title, test, timeout);
it.skip = (0, _bind.default)(g.it.skip)(table, ...data);
it.only = (0, _bind.default)(g.it.only)(table, ...data);
it.concurrent = testConcurrent;
const xit = (0, _bind.default)(g.xit)(table, ...data);
const fit = (0, _bind.default)(g.fit)(table, ...data);
const xtest = (0, _bind.default)(g.xtest)(table, ...data);
const describe = (title, suite, timeout) =>
(0, _bind.default)(g.describe, false)(table, ...data)(
title,
suite,
timeout
);
describe.skip = (0, _bind.default)(g.describe.skip, false)(table, ...data);
describe.only = (0, _bind.default)(g.describe.only, false)(table, ...data);
const fdescribe = (0, _bind.default)(g.fdescribe, false)(table, ...data);
const xdescribe = (0, _bind.default)(g.xdescribe, false)(table, ...data);
return {
describe,
fdescribe,
fit,
it,
test,
xdescribe,
xit,
xtest
};
};
const each = (table, ...data) => install(global, table, ...data);
each.withGlobal = g => (table, ...data) => install(g, table, ...data);
var _default = each;
exports.default = _default;

11
node_modules/jest-each/build/table/array.d.ts generated vendored Normal file
View file

@ -0,0 +1,11 @@
/**
* 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 { Global } from '@jest/types';
import type { EachTests } from '../bind';
declare const _default: (title: string, arrayTable: Global.ArrayTable) => EachTests;
export default _default;

131
node_modules/jest-each/build/table/array.js generated vendored Normal file
View file

@ -0,0 +1,131 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function util() {
const data = _interopRequireWildcard(require('util'));
util = function () {
return data;
};
return data;
}
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
function _getRequireWildcardCache() {
if (typeof WeakMap !== 'function') return null;
var cache = new WeakMap();
_getRequireWildcardCache = function () {
return cache;
};
return cache;
}
function _interopRequireWildcard(obj) {
if (obj && obj.__esModule) {
return obj;
}
if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
return {default: obj};
}
var cache = _getRequireWildcardCache();
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {};
var hasPropertyDescriptor =
Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var key in obj) {
if (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 SUPPORTED_PLACEHOLDERS = /%[sdifjoOp%]/g;
const PRETTY_PLACEHOLDER = '%p';
const INDEX_PLACEHOLDER = '%#';
const PLACEHOLDER_PREFIX = '%';
const JEST_EACH_PLACEHOLDER_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
var _default = (title, arrayTable) =>
normaliseTable(arrayTable).map((row, index) => ({
arguments: row,
title: formatTitle(title, row, index)
}));
exports.default = _default;
const normaliseTable = table => (isTable(table) ? table : table.map(colToRow));
const isTable = table => table.every(Array.isArray);
const colToRow = col => [col];
const formatTitle = (title, row, rowIndex) =>
row
.reduce((formattedTitle, value) => {
const [placeholder] = getMatchingPlaceholders(formattedTitle);
const normalisedValue = normalisePlaceholderValue(value);
if (!placeholder) return formattedTitle;
if (placeholder === PRETTY_PLACEHOLDER)
return interpolatePrettyPlaceholder(formattedTitle, normalisedValue);
return util().format(formattedTitle, normalisedValue);
}, interpolateTitleIndex(title, rowIndex))
.replace(new RegExp(JEST_EACH_PLACEHOLDER_ESCAPE, 'g'), PLACEHOLDER_PREFIX);
const normalisePlaceholderValue = value =>
typeof value === 'string' && SUPPORTED_PLACEHOLDERS.test(value)
? value.replace(PLACEHOLDER_PREFIX, JEST_EACH_PLACEHOLDER_ESCAPE)
: value;
const getMatchingPlaceholders = title =>
title.match(SUPPORTED_PLACEHOLDERS) || [];
const interpolateTitleIndex = (title, index) =>
title.replace(INDEX_PLACEHOLDER, index.toString());
const interpolatePrettyPlaceholder = (title, value) =>
title.replace(
PRETTY_PLACEHOLDER,
(0, _prettyFormat().default)(value, {
maxDepth: 1,
min: true
})
);

19
node_modules/jest-each/build/table/template.d.ts generated vendored Normal file
View file

@ -0,0 +1,19 @@
/**
* 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 { Global } from '@jest/types';
import type { EachTests } from '../bind';
declare type Template = Record<string, unknown>;
declare type Headings = Array<string>;
declare const _default: (title: string, headings: Headings, row: Global.Row) => EachTests;
export default _default;
export declare function getPath<Obj extends Template, A extends keyof Obj, B extends keyof Obj[A], C extends keyof Obj[A][B], D extends keyof Obj[A][B][C], E extends keyof Obj[A][B][C][D]>(obj: Obj, path: [A, B, C, D, E]): Obj[A][B][C][D][E];
export declare function getPath<Obj extends Template, A extends keyof Obj, B extends keyof Obj[A], C extends keyof Obj[A][B], D extends keyof Obj[A][B][C]>(obj: Obj, path: [A, B, C, D]): Obj[A][B][C][D];
export declare function getPath<Obj extends Template, A extends keyof Obj, B extends keyof Obj[A], C extends keyof Obj[A][B]>(obj: Obj, path: [A, B, C]): Obj[A][B][C];
export declare function getPath<Obj extends Template, A extends keyof Obj, B extends keyof Obj[A]>(obj: Obj, path: [A, B]): Obj[A][B];
export declare function getPath<Obj extends Template, A extends keyof Obj>(obj: Obj, path: [A]): Obj[A];
export declare function getPath<Obj extends Template>(obj: Obj, path: Array<string>): unknown;

102
node_modules/jest-each/build/table/template.js generated vendored Normal file
View file

@ -0,0 +1,102 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.getPath = getPath;
exports.default = void 0;
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function () {
return data;
};
return data;
}
function _jestGetType() {
const data = require('jest-get-type');
_jestGetType = function () {
return data;
};
return data;
}
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.
*
*/
var _default = (title, headings, row) => {
const table = convertRowToTable(row, headings);
const templates = convertTableToTemplates(table, headings);
return templates.map(template => ({
arguments: [template],
title: interpolate(title, template)
}));
};
exports.default = _default;
const convertRowToTable = (row, headings) =>
Array.from({
length: row.length / headings.length
}).map((_, index) =>
row.slice(
index * headings.length,
index * headings.length + headings.length
)
);
const convertTableToTemplates = (table, headings) =>
table.map(row =>
row.reduce(
(acc, value, index) =>
Object.assign(acc, {
[headings[index]]: value
}),
{}
)
);
const interpolate = (title, template) =>
Object.keys(template)
.reduce(getMatchingKeyPaths(title), []) // aka flatMap
.reduce(replaceKeyPathWithValue(template), title);
const getMatchingKeyPaths = title => (matches, key) =>
matches.concat(title.match(new RegExp(`\\$${key}[\\.\\w]*`, 'g')) || []);
const replaceKeyPathWithValue = template => (title, match) => {
const keyPath = match.replace('$', '').split('.');
const value = getPath(template, keyPath);
if ((0, _jestGetType().isPrimitive)(value)) {
return title.replace(match, String(value));
}
return title.replace(
match,
(0, _prettyFormat().default)(value, {
maxDepth: 1,
min: true
})
);
};
/* eslint import/export: 0*/
function getPath(template, [head, ...tail]) {
if (!head || !template.hasOwnProperty || !template.hasOwnProperty(head))
return template;
return getPath(template[head], tail);
}

10
node_modules/jest-each/build/validation.d.ts generated vendored Normal file
View file

@ -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 { Global } from '@jest/types';
export declare const validateArrayTable: (table: unknown) => void;
export declare const validateTemplateTableHeadings: (headings: Array<string>, data: Global.TemplateData) => void;

102
node_modules/jest-each/build/validation.js generated vendored Normal file
View file

@ -0,0 +1,102 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.validateTemplateTableHeadings = exports.validateArrayTable = void 0;
function _chalk() {
const data = _interopRequireDefault(require('chalk'));
_chalk = function () {
return data;
};
return data;
}
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function () {
return data;
};
return data;
}
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.
*
*/
const EXPECTED_COLOR = _chalk().default.green;
const RECEIVED_COLOR = _chalk().default.red;
const validateArrayTable = table => {
if (!Array.isArray(table)) {
throw new Error(
'`.each` must be called with an Array or Tagged Template Literal.\n\n' +
`Instead was called with: ${(0, _prettyFormat().default)(table, {
maxDepth: 1,
min: true
})}\n`
);
}
if (isTaggedTemplateLiteral(table)) {
if (isEmptyString(table[0])) {
throw new Error(
'Error: `.each` called with an empty Tagged Template Literal of table data.\n'
);
}
throw new Error(
'Error: `.each` called with a Tagged Template Literal with no data, remember to interpolate with ${expression} syntax.\n'
);
}
if (isEmptyTable(table)) {
throw new Error(
'Error: `.each` called with an empty Array of table data.\n'
);
}
};
exports.validateArrayTable = validateArrayTable;
const isTaggedTemplateLiteral = array => array.raw !== undefined;
const isEmptyTable = table => table.length === 0;
const isEmptyString = str => typeof str === 'string' && str.trim() === '';
const validateTemplateTableHeadings = (headings, data) => {
const missingData = data.length % headings.length;
if (missingData > 0) {
throw new Error(
'Not enough arguments supplied for given headings:\n' +
EXPECTED_COLOR(headings.join(' | ')) +
'\n\n' +
'Received:\n' +
RECEIVED_COLOR((0, _prettyFormat().default)(data)) +
'\n\n' +
`Missing ${RECEIVED_COLOR(missingData.toString())} ${pluralize(
'argument',
missingData
)}`
);
}
};
exports.validateTemplateTableHeadings = validateTemplateTableHeadings;
const pluralize = (word, count) => word + (count === 1 ? '' : 's');

34
node_modules/jest-each/package.json generated vendored Normal file
View file

@ -0,0 +1,34 @@
{
"name": "jest-each",
"version": "26.4.2",
"description": "Parameterised tests for Jest",
"main": "build/index.js",
"types": "build/index.d.ts",
"repository": {
"type": "git",
"url": "https://github.com/facebook/jest.git",
"directory": "packages/jest-each"
},
"keywords": [
"jest",
"parameterised",
"test",
"each"
],
"author": "Matt Phillips (mattphillips)",
"license": "MIT",
"dependencies": {
"@jest/types": "^26.3.0",
"chalk": "^4.0.0",
"jest-get-type": "^26.3.0",
"jest-util": "^26.3.0",
"pretty-format": "^26.4.2"
},
"engines": {
"node": ">= 10.14.2"
},
"publishConfig": {
"access": "public"
},
"gitHead": "2586a798260886c28b6d28256cdfe354e039d5d1"
}