.
This commit is contained in:
		
							
								
								
									
										21
									
								
								qwen/nodejs/node_modules/jest-each/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								qwen/nodejs/node_modules/jest-each/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
MIT License
 | 
			
		||||
 | 
			
		||||
Copyright (c) Meta Platforms, Inc. and 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.
 | 
			
		||||
							
								
								
									
										548
									
								
								qwen/nodejs/node_modules/jest-each/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										548
									
								
								qwen/nodejs/node_modules/jest-each/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,548 @@
 | 
			
		||||
<div align="center">
 | 
			
		||||
  <h1>jest-each</h1>
 | 
			
		||||
  Jest Parameterised Testing
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
 | 
			
		||||
[](https://www.npmjs.com/package/jest-each) [](http://npm-stat.com/charts.html?package=jest-each&from=2017-03-21) [](https://github.com/jestjs/jest/blob/main/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.
 | 
			
		||||
- Unique test titles by injecting properties of test case object
 | 
			
		||||
- 🖖 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
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
#### Tests can be re-written with jest-each to:
 | 
			
		||||
 | 
			
		||||
**`.test`**
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
**`.test` with Tagged Template Literals**
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
**`.describe`**
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## 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.
 | 
			
		||||
  - Or generate unique test titles by injecting properties of test case object with `$variable`
 | 
			
		||||
    - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
 | 
			
		||||
    - You can use `$#` to inject the index of the test case
 | 
			
		||||
    - You cannot use `$variable` with the `printf` formatting except for `%%`
 | 
			
		||||
- 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.
 | 
			
		||||
  - Or generate unique test titles by injecting properties of test case object with `$variable`
 | 
			
		||||
    - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
 | 
			
		||||
    - You can use `$#` to inject the index of the test case
 | 
			
		||||
    - You cannot use `$variable` with the `printf` formatting except for `%%`
 | 
			
		||||
- 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);
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
each([
 | 
			
		||||
  {a: 1, b: 1, expected: 2},
 | 
			
		||||
  {a: 1, b: 2, expected: 3},
 | 
			
		||||
  {a: 2, b: 1, expected: 3},
 | 
			
		||||
]).test('returns the result of 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([
 | 
			
		||||
  [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);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
each([
 | 
			
		||||
  {a: 1, b: 1, expected: 2},
 | 
			
		||||
  {a: 1, b: 2, expected: 3},
 | 
			
		||||
  {a: 2, b: 1, expected: 3},
 | 
			
		||||
]).describe('.add($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([
 | 
			
		||||
  [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`
 | 
			
		||||
  - You can use `$#` to inject the index of the table row.
 | 
			
		||||
- 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
 | 
			
		||||
							
								
								
									
										81
									
								
								qwen/nodejs/node_modules/jest-each/build/bind.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								qwen/nodejs/node_modules/jest-each/build/bind.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', {
 | 
			
		||||
  value: true
 | 
			
		||||
});
 | 
			
		||||
exports.default = bind;
 | 
			
		||||
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) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * This source code is licensed under the MIT license found in the
 | 
			
		||||
 * LICENSE file in the root directory of this source tree.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// type TestFn = (done?: Global.DoneFn) => Promise<any> | void | undefined;
 | 
			
		||||
 | 
			
		||||
function bind(cb, supportsDone = true, needsEachError = false) {
 | 
			
		||||
  const bindWrap = (table, ...taggedTemplateData) => {
 | 
			
		||||
    const error = new (_jestUtil().ErrorWithStack)(undefined, bindWrap);
 | 
			
		||||
    return function eachBind(title, test, timeout) {
 | 
			
		||||
      title = (0, _jestUtil().convertDescriptorToString)(title);
 | 
			
		||||
      try {
 | 
			
		||||
        const tests = isArrayTable(taggedTemplateData)
 | 
			
		||||
          ? buildArrayTests(title, table)
 | 
			
		||||
          : buildTemplateTests(title, table, taggedTemplateData);
 | 
			
		||||
        return tests.forEach(row =>
 | 
			
		||||
          needsEachError
 | 
			
		||||
            ? cb(
 | 
			
		||||
                row.title,
 | 
			
		||||
                applyArguments(supportsDone, row.arguments, test),
 | 
			
		||||
                timeout,
 | 
			
		||||
                error
 | 
			
		||||
              )
 | 
			
		||||
            : cb(
 | 
			
		||||
                row.title,
 | 
			
		||||
                applyArguments(supportsDone, row.arguments, test),
 | 
			
		||||
                timeout
 | 
			
		||||
              )
 | 
			
		||||
        );
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        const err = new Error(e.message);
 | 
			
		||||
        err.stack = error.stack?.replace(/^Error: /s, `Error: ${e.message}`);
 | 
			
		||||
        return cb(title, () => {
 | 
			
		||||
          throw err;
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  return bindWrap;
 | 
			
		||||
}
 | 
			
		||||
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.validateTemplateTableArguments)(headings, taggedTemplateData);
 | 
			
		||||
  return (0, _template.default)(title, headings, taggedTemplateData);
 | 
			
		||||
};
 | 
			
		||||
const getHeadingKeys = headings =>
 | 
			
		||||
  (0, _validation.extractValidTemplateHeadings)(headings)
 | 
			
		||||
    .replace(/\s/g, '')
 | 
			
		||||
    .split('|');
 | 
			
		||||
const applyArguments = (supportsDone, params, test) =>
 | 
			
		||||
  supportsDone && params.length < test.length
 | 
			
		||||
    ? done => test(...params, done)
 | 
			
		||||
    : () => test(...params);
 | 
			
		||||
							
								
								
									
										141
									
								
								qwen/nodejs/node_modules/jest-each/build/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								qwen/nodejs/node_modules/jest-each/build/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,141 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * 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 function bind<EachCallback extends Global.TestCallback>(
 | 
			
		||||
  cb: GlobalCallback,
 | 
			
		||||
  supportsDone?: boolean,
 | 
			
		||||
  needsEachError?: boolean,
 | 
			
		||||
): Global.EachTestFn<any>;
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		||||
      ): any;
 | 
			
		||||
      skip: any;
 | 
			
		||||
      only: any;
 | 
			
		||||
    };
 | 
			
		||||
    fdescribe: any;
 | 
			
		||||
    fit: any;
 | 
			
		||||
    it: {
 | 
			
		||||
      (
 | 
			
		||||
        title: string,
 | 
			
		||||
        test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
        timeout?: number,
 | 
			
		||||
      ): any;
 | 
			
		||||
      skip: any;
 | 
			
		||||
      only: any;
 | 
			
		||||
      concurrent: {
 | 
			
		||||
        (
 | 
			
		||||
          title: string,
 | 
			
		||||
          test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
          timeout?: number,
 | 
			
		||||
        ): any;
 | 
			
		||||
        only: any;
 | 
			
		||||
        skip: any;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    test: {
 | 
			
		||||
      (
 | 
			
		||||
        title: string,
 | 
			
		||||
        test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
        timeout?: number,
 | 
			
		||||
      ): any;
 | 
			
		||||
      skip: any;
 | 
			
		||||
      only: any;
 | 
			
		||||
      concurrent: {
 | 
			
		||||
        (
 | 
			
		||||
          title: string,
 | 
			
		||||
          test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
          timeout?: number,
 | 
			
		||||
        ): any;
 | 
			
		||||
        only: any;
 | 
			
		||||
        skip: any;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    xdescribe: any;
 | 
			
		||||
    xit: any;
 | 
			
		||||
    xtest: any;
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
export default each;
 | 
			
		||||
 | 
			
		||||
declare type GlobalCallback = (
 | 
			
		||||
  testName: string,
 | 
			
		||||
  fn: Global.ConcurrentTestFn,
 | 
			
		||||
  timeout?: number,
 | 
			
		||||
  eachError?: Error,
 | 
			
		||||
) => void;
 | 
			
		||||
 | 
			
		||||
declare const install: (
 | 
			
		||||
  g: Global,
 | 
			
		||||
  table: Global.EachTable,
 | 
			
		||||
  ...data: Global.TemplateData
 | 
			
		||||
) => {
 | 
			
		||||
  describe: {
 | 
			
		||||
    (
 | 
			
		||||
      title: string,
 | 
			
		||||
      suite: Global.EachTestFn<Global.BlockFn>,
 | 
			
		||||
      timeout?: number,
 | 
			
		||||
    ): any;
 | 
			
		||||
    skip: any;
 | 
			
		||||
    only: any;
 | 
			
		||||
  };
 | 
			
		||||
  fdescribe: any;
 | 
			
		||||
  fit: any;
 | 
			
		||||
  it: {
 | 
			
		||||
    (
 | 
			
		||||
      title: string,
 | 
			
		||||
      test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
      timeout?: number,
 | 
			
		||||
    ): any;
 | 
			
		||||
    skip: any;
 | 
			
		||||
    only: any;
 | 
			
		||||
    concurrent: {
 | 
			
		||||
      (
 | 
			
		||||
        title: string,
 | 
			
		||||
        test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
        timeout?: number,
 | 
			
		||||
      ): any;
 | 
			
		||||
      only: any;
 | 
			
		||||
      skip: any;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  test: {
 | 
			
		||||
    (
 | 
			
		||||
      title: string,
 | 
			
		||||
      test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
      timeout?: number,
 | 
			
		||||
    ): any;
 | 
			
		||||
    skip: any;
 | 
			
		||||
    only: any;
 | 
			
		||||
    concurrent: {
 | 
			
		||||
      (
 | 
			
		||||
        title: string,
 | 
			
		||||
        test: Global.EachTestFn<Global.TestFn>,
 | 
			
		||||
        timeout?: number,
 | 
			
		||||
      ): any;
 | 
			
		||||
      only: any;
 | 
			
		||||
      skip: any;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  xdescribe: any;
 | 
			
		||||
  xit: any;
 | 
			
		||||
  xtest: any;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export {};
 | 
			
		||||
							
								
								
									
										83
									
								
								qwen/nodejs/node_modules/jest-each/build/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								qwen/nodejs/node_modules/jest-each/build/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
'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) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * 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(globalThis, table, ...data);
 | 
			
		||||
each.withGlobal =
 | 
			
		||||
  g =>
 | 
			
		||||
  (table, ...data) =>
 | 
			
		||||
    install(g, table, ...data);
 | 
			
		||||
var _default = each;
 | 
			
		||||
exports.default = _default;
 | 
			
		||||
							
								
								
									
										130
									
								
								qwen/nodejs/node_modules/jest-each/build/table/array.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								qwen/nodejs/node_modules/jest-each/build/table/array.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,130 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', {
 | 
			
		||||
  value: true
 | 
			
		||||
});
 | 
			
		||||
exports.default = array;
 | 
			
		||||
function util() {
 | 
			
		||||
  const data = _interopRequireWildcard(require('util'));
 | 
			
		||||
  util = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
function _prettyFormat() {
 | 
			
		||||
  const data = require('pretty-format');
 | 
			
		||||
  _prettyFormat = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
var _interpolation = require('./interpolation');
 | 
			
		||||
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) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * 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 ESCAPED_PLACEHOLDER_PREFIX = /%%/g;
 | 
			
		||||
const JEST_EACH_PLACEHOLDER_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
 | 
			
		||||
function array(title, arrayTable) {
 | 
			
		||||
  if (isTemplates(title, arrayTable)) {
 | 
			
		||||
    return arrayTable.map((template, index) => ({
 | 
			
		||||
      arguments: [template],
 | 
			
		||||
      title: (0, _interpolation.interpolateVariables)(
 | 
			
		||||
        title,
 | 
			
		||||
        template,
 | 
			
		||||
        index
 | 
			
		||||
      ).replace(ESCAPED_PLACEHOLDER_PREFIX, PLACEHOLDER_PREFIX)
 | 
			
		||||
    }));
 | 
			
		||||
  }
 | 
			
		||||
  return normaliseTable(arrayTable).map((row, index) => ({
 | 
			
		||||
    arguments: row,
 | 
			
		||||
    title: formatTitle(title, row, index)
 | 
			
		||||
  }));
 | 
			
		||||
}
 | 
			
		||||
const isTemplates = (title, arrayTable) =>
 | 
			
		||||
  !SUPPORTED_PLACEHOLDERS.test(interpolateEscapedPlaceholders(title)) &&
 | 
			
		||||
  !isTable(arrayTable) &&
 | 
			
		||||
  arrayTable.every(col => col != null && typeof col === 'object');
 | 
			
		||||
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(interpolateEscapedPlaceholders(title), rowIndex))
 | 
			
		||||
    .replace(new RegExp(JEST_EACH_PLACEHOLDER_ESCAPE, 'g'), PLACEHOLDER_PREFIX);
 | 
			
		||||
const normalisePlaceholderValue = value =>
 | 
			
		||||
  typeof value === 'string'
 | 
			
		||||
    ? value.replace(
 | 
			
		||||
        new RegExp(PLACEHOLDER_PREFIX, 'g'),
 | 
			
		||||
        JEST_EACH_PLACEHOLDER_ESCAPE
 | 
			
		||||
      )
 | 
			
		||||
    : value;
 | 
			
		||||
const getMatchingPlaceholders = title =>
 | 
			
		||||
  title.match(SUPPORTED_PLACEHOLDERS) || [];
 | 
			
		||||
const interpolateEscapedPlaceholders = title =>
 | 
			
		||||
  title.replace(ESCAPED_PLACEHOLDER_PREFIX, JEST_EACH_PLACEHOLDER_ESCAPE);
 | 
			
		||||
const interpolateTitleIndex = (title, index) =>
 | 
			
		||||
  title.replace(INDEX_PLACEHOLDER, index.toString());
 | 
			
		||||
const interpolatePrettyPlaceholder = (title, value) =>
 | 
			
		||||
  title.replace(
 | 
			
		||||
    PRETTY_PLACEHOLDER,
 | 
			
		||||
    (0, _prettyFormat().format)(value, {
 | 
			
		||||
      maxDepth: 1,
 | 
			
		||||
      min: true
 | 
			
		||||
    })
 | 
			
		||||
  );
 | 
			
		||||
							
								
								
									
										53
									
								
								qwen/nodejs/node_modules/jest-each/build/table/interpolation.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								qwen/nodejs/node_modules/jest-each/build/table/interpolation.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', {
 | 
			
		||||
  value: true
 | 
			
		||||
});
 | 
			
		||||
exports.getPath = getPath;
 | 
			
		||||
exports.interpolateVariables = void 0;
 | 
			
		||||
function _jestGetType() {
 | 
			
		||||
  const data = require('jest-get-type');
 | 
			
		||||
  _jestGetType = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
function _prettyFormat() {
 | 
			
		||||
  const data = require('pretty-format');
 | 
			
		||||
  _prettyFormat = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * This source code is licensed under the MIT license found in the
 | 
			
		||||
 * LICENSE file in the root directory of this source tree.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const interpolateVariables = (title, template, index) =>
 | 
			
		||||
  title
 | 
			
		||||
    .replace(
 | 
			
		||||
      new RegExp(`\\$(${Object.keys(template).join('|')})[.\\w]*`, 'g'),
 | 
			
		||||
      match => {
 | 
			
		||||
        const keyPath = match.slice(1).split('.');
 | 
			
		||||
        const value = getPath(template, keyPath);
 | 
			
		||||
        return (0, _jestGetType().isPrimitive)(value)
 | 
			
		||||
          ? String(value)
 | 
			
		||||
          : (0, _prettyFormat().format)(value, {
 | 
			
		||||
              maxDepth: 1,
 | 
			
		||||
              min: true
 | 
			
		||||
            });
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    .replace('$#', `${index}`);
 | 
			
		||||
 | 
			
		||||
/* eslint import/export: 0*/
 | 
			
		||||
exports.interpolateVariables = interpolateVariables;
 | 
			
		||||
function getPath(template, [head, ...tail]) {
 | 
			
		||||
  if (!head || !Object.prototype.hasOwnProperty.call(template, head))
 | 
			
		||||
    return template;
 | 
			
		||||
  return getPath(template[head], tail);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								qwen/nodejs/node_modules/jest-each/build/table/template.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								qwen/nodejs/node_modules/jest-each/build/table/template.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', {
 | 
			
		||||
  value: true
 | 
			
		||||
});
 | 
			
		||||
exports.default = template;
 | 
			
		||||
var _interpolation = require('./interpolation');
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * This source code is licensed under the MIT license found in the
 | 
			
		||||
 * LICENSE file in the root directory of this source tree.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function template(title, headings, row) {
 | 
			
		||||
  const table = convertRowToTable(row, headings);
 | 
			
		||||
  const templates = convertTableToTemplates(table, headings);
 | 
			
		||||
  return templates.map((template, index) => ({
 | 
			
		||||
    arguments: [template],
 | 
			
		||||
    title: (0, _interpolation.interpolateVariables)(title, template, index)
 | 
			
		||||
  }));
 | 
			
		||||
}
 | 
			
		||||
const convertRowToTable = (row, headings) =>
 | 
			
		||||
  Array.from(
 | 
			
		||||
    {
 | 
			
		||||
      length: row.length / headings.length
 | 
			
		||||
    },
 | 
			
		||||
    (_, 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
 | 
			
		||||
        }),
 | 
			
		||||
      {}
 | 
			
		||||
    )
 | 
			
		||||
  );
 | 
			
		||||
							
								
								
									
										107
									
								
								qwen/nodejs/node_modules/jest-each/build/validation.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								qwen/nodejs/node_modules/jest-each/build/validation.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,107 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', {
 | 
			
		||||
  value: true
 | 
			
		||||
});
 | 
			
		||||
exports.validateTemplateTableArguments =
 | 
			
		||||
  exports.validateArrayTable =
 | 
			
		||||
  exports.extractValidTemplateHeadings =
 | 
			
		||||
    void 0;
 | 
			
		||||
function _chalk() {
 | 
			
		||||
  const data = _interopRequireDefault(require('chalk'));
 | 
			
		||||
  _chalk = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
function _prettyFormat() {
 | 
			
		||||
  const data = require('pretty-format');
 | 
			
		||||
  _prettyFormat = function () {
 | 
			
		||||
    return data;
 | 
			
		||||
  };
 | 
			
		||||
  return data;
 | 
			
		||||
}
 | 
			
		||||
function _interopRequireDefault(obj) {
 | 
			
		||||
  return obj && obj.__esModule ? obj : {default: obj};
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * 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().format)(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 validateTemplateTableArguments = (headings, data) => {
 | 
			
		||||
  const incompleteData = data.length % headings.length;
 | 
			
		||||
  const missingData = headings.length - incompleteData;
 | 
			
		||||
  if (incompleteData > 0) {
 | 
			
		||||
    throw new Error(
 | 
			
		||||
      `Not enough arguments supplied for given headings:\n${EXPECTED_COLOR(
 | 
			
		||||
        headings.join(' | ')
 | 
			
		||||
      )}\n\n` +
 | 
			
		||||
        `Received:\n${RECEIVED_COLOR((0, _prettyFormat().format)(data))}\n\n` +
 | 
			
		||||
        `Missing ${RECEIVED_COLOR(missingData.toString())} ${pluralize(
 | 
			
		||||
          'argument',
 | 
			
		||||
          missingData
 | 
			
		||||
        )}`
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
exports.validateTemplateTableArguments = validateTemplateTableArguments;
 | 
			
		||||
const pluralize = (word, count) => word + (count === 1 ? '' : 's');
 | 
			
		||||
const START_OF_LINE = '^';
 | 
			
		||||
const NEWLINE = '\\n';
 | 
			
		||||
const HEADING = '\\s*[^\\s]+\\s*';
 | 
			
		||||
const PIPE = '\\|';
 | 
			
		||||
const REPEATABLE_HEADING = `(${PIPE}${HEADING})*`;
 | 
			
		||||
const HEADINGS_FORMAT = new RegExp(
 | 
			
		||||
  START_OF_LINE + NEWLINE + HEADING + REPEATABLE_HEADING + NEWLINE,
 | 
			
		||||
  'g'
 | 
			
		||||
);
 | 
			
		||||
const extractValidTemplateHeadings = headings => {
 | 
			
		||||
  const matches = headings.match(HEADINGS_FORMAT);
 | 
			
		||||
  if (matches === null) {
 | 
			
		||||
    throw new Error(
 | 
			
		||||
      `Table headings do not conform to expected format:\n\n${EXPECTED_COLOR(
 | 
			
		||||
        'heading1 | headingN'
 | 
			
		||||
      )}\n\nReceived:\n\n${RECEIVED_COLOR(
 | 
			
		||||
        (0, _prettyFormat().format)(headings)
 | 
			
		||||
      )}`
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
  return matches[0];
 | 
			
		||||
};
 | 
			
		||||
exports.extractValidTemplateHeadings = extractValidTemplateHeadings;
 | 
			
		||||
							
								
								
									
										41
									
								
								qwen/nodejs/node_modules/jest-each/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								qwen/nodejs/node_modules/jest-each/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "jest-each",
 | 
			
		||||
  "version": "29.7.0",
 | 
			
		||||
  "description": "Parameterised tests for Jest",
 | 
			
		||||
  "main": "./build/index.js",
 | 
			
		||||
  "types": "./build/index.d.ts",
 | 
			
		||||
  "exports": {
 | 
			
		||||
    ".": {
 | 
			
		||||
      "types": "./build/index.d.ts",
 | 
			
		||||
      "default": "./build/index.js"
 | 
			
		||||
    },
 | 
			
		||||
    "./package.json": "./package.json"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "https://github.com/jestjs/jest.git",
 | 
			
		||||
    "directory": "packages/jest-each"
 | 
			
		||||
  },
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "jest",
 | 
			
		||||
    "parameterised",
 | 
			
		||||
    "test",
 | 
			
		||||
    "each"
 | 
			
		||||
  ],
 | 
			
		||||
  "author": "Matt Phillips (mattphillips)",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@jest/types": "^29.6.3",
 | 
			
		||||
    "chalk": "^4.0.0",
 | 
			
		||||
    "jest-get-type": "^29.6.3",
 | 
			
		||||
    "jest-util": "^29.7.0",
 | 
			
		||||
    "pretty-format": "^29.7.0"
 | 
			
		||||
  },
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "publishConfig": {
 | 
			
		||||
    "access": "public"
 | 
			
		||||
  },
 | 
			
		||||
  "gitHead": "4e56991693da7cd4c3730dc3579a1dd1403ee630"
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user