diff --git a/.github/workflows/prepare-cache.yml b/.github/workflows/prepare-cache.yml index 5fac3c6c75..037bc3d0b3 100644 --- a/.github/workflows/prepare-cache.yml +++ b/.github/workflows/prepare-cache.yml @@ -7,6 +7,9 @@ on: required: true type: string +permissions: # added using https://github.com/step-security/secure-workflows + contents: read + jobs: prepare-npm-cache: name: Prepare npm cache for ${{ inputs.os }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aed42b3cde..fe15a08202 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,8 +7,14 @@ on: required: true type: string +permissions: # added using https://github.com/step-security/secure-workflows + contents: read + jobs: test: + permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code strategy: fail-fast: false matrix: diff --git a/CHANGELOG.md b/CHANGELOG.md index e59db2cfb0..886e4ddd35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [29.0.1](https://github.com/kulshekhar/ts-jest/compare/v29.0.0...v29.0.1) (2022-09-13) + + +### Bug Fixes + +* **legacy:** include existing globals config in cached config ([#3803](https://github.com/kulshekhar/ts-jest/issues/3803)) ([e79be47](https://github.com/kulshekhar/ts-jest/commit/e79be47d2b81a677d0dd39d84328a38ca0f0ffc6)) + + +### Features + +* add typings for `ts-jest` options via `transform` config ([#3805](https://github.com/kulshekhar/ts-jest/issues/3805)) ([664b0f2](https://github.com/kulshekhar/ts-jest/commit/664b0f2b446a36dd7661f4840ca3dd7722f1f6ff)) + + + # [29.0.0](https://github.com/kulshekhar/ts-jest/compare/v29.0.0-next.1...v29.0.0) (2022-09-08) diff --git a/e2e/ast-transformers/hoist-jest/jest-isolated.config.js b/e2e/ast-transformers/hoist-jest/jest-isolated.config.js index ea3636678d..7011420a35 100644 --- a/e2e/ast-transformers/hoist-jest/jest-isolated.config.js +++ b/e2e/ast-transformers/hoist-jest/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { automock: true, moduleNameMapper: { diff --git a/e2e/ast-transformers/transformer-options/jest-isolated.config.js b/e2e/ast-transformers/transformer-options/jest-isolated.config.js index 1d7d4e858e..1be975c6ec 100644 --- a/e2e/ast-transformers/transformer-options/jest-isolated.config.js +++ b/e2e/ast-transformers/transformer-options/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.[tj]sx?$': [ diff --git a/e2e/config-typing/jest.config.ts b/e2e/config-typing/jest.config.ts index da893d146d..832d5ffe4e 100644 --- a/e2e/config-typing/jest.config.ts +++ b/e2e/config-typing/jest.config.ts @@ -1,6 +1,6 @@ -import type { InitialOptionsTsJest } from 'ts-jest' +import type { JestConfigWithTsJest } from '../../dist' -const jestCfg: InitialOptionsTsJest = { +const jestCfg: JestConfigWithTsJest = { transform: { '^.+.tsx?$': [ 'ts-jest', diff --git a/e2e/const-enum/jest-isolated.config.js b/e2e/const-enum/jest-isolated.config.js index f7d630ec78..62c40efdf6 100644 --- a/e2e/const-enum/jest-isolated.config.js +++ b/e2e/const-enum/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/coverage-report/jest-isolated.config.js b/e2e/coverage-report/jest-isolated.config.js index 52e2dc6523..9a4e58d670 100644 --- a/e2e/coverage-report/jest-isolated.config.js +++ b/e2e/coverage-report/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { collectCoverageFrom: ['**/*.js', '**/*.ts', '!**/node_modules/**', '!**/coverage/**'], transform: { diff --git a/e2e/diagnostics/jest-disabled.config.js b/e2e/diagnostics/jest-disabled.config.js index b6bf9e2aef..9d6ea45e41 100644 --- a/e2e/diagnostics/jest-disabled.config.js +++ b/e2e/diagnostics/jest-disabled.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/diagnostics/jest-exclude.config.js b/e2e/diagnostics/jest-exclude.config.js index f4ab90c12b..03a2358cf4 100644 --- a/e2e/diagnostics/jest-exclude.config.js +++ b/e2e/diagnostics/jest-exclude.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/diagnostics/jest-ignored-code.config.js b/e2e/diagnostics/jest-ignored-code.config.js index 879a5df196..16bafab64e 100644 --- a/e2e/diagnostics/jest-ignored-code.config.js +++ b/e2e/diagnostics/jest-ignored-code.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/diagnostics/jest-isolated.config.js b/e2e/diagnostics/jest-isolated.config.js index d631cf3a62..23d97b0785 100644 --- a/e2e/diagnostics/jest-isolated.config.js +++ b/e2e/diagnostics/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/diagnostics/jest-warn.config.js b/e2e/diagnostics/jest-warn.config.js index cfe6fd2ef2..1584848d52 100644 --- a/e2e/diagnostics/jest-warn.config.js +++ b/e2e/diagnostics/jest-warn.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/enum/jest-isolated.config.js b/e2e/enum/jest-isolated.config.js index d631cf3a62..23d97b0785 100644 --- a/e2e/enum/jest-isolated.config.js +++ b/e2e/enum/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { transform: { '^.+.tsx?$': [ diff --git a/e2e/native-esm-ts/jest-isolated.config.js b/e2e/native-esm-ts/jest-isolated.config.js index 2efd1bdabc..e3368224bd 100644 --- a/e2e/native-esm-ts/jest-isolated.config.js +++ b/e2e/native-esm-ts/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { extensionsToTreatAsEsm: ['.ts'], resolver: '/mjs-resolver.ts', diff --git a/e2e/native-esm-ts/package-lock.json b/e2e/native-esm-ts/package-lock.json index c40f35e21b..7b26be3822 100644 --- a/e2e/native-esm-ts/package-lock.json +++ b/e2e/native-esm-ts/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "devDependencies": { - "@jest/globals": "^29.0.2" + "@jest/globals": "^29.0.3" } }, "node_modules/@ampproject/remapping": { @@ -34,30 +34,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", - "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", + "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.13", + "@babel/generator": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -82,12 +82,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -110,12 +110,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -146,13 +146,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -183,9 +183,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -193,18 +193,18 @@ "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -262,14 +262,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -361,9 +361,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -564,19 +564,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -585,9 +585,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.18.10", @@ -624,37 +624,37 @@ } }, "node_modules/@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==", "dev": true, "dependencies": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" + "expect": "^29.0.3", + "jest-snapshot": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.3.tgz", + "integrity": "sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==", "dev": true, "dependencies": { "jest-get-type": "^29.0.0" @@ -664,32 +664,32 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.3.tgz", + "integrity": "sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/types": "^29.0.3", + "jest-mock": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -708,22 +708,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.3.tgz", + "integrity": "sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -734,9 +734,9 @@ } }, "node_modules/@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -798,9 +798,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "version": "0.24.39", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", + "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -1047,9 +1047,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001388", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", - "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==", + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==", "dev": true, "funding": [ { @@ -1079,9 +1079,9 @@ } }, "node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "node_modules/color-convert": { @@ -1144,9 +1144,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", - "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "version": "1.4.247", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.247.tgz", + "integrity": "sha512-FLs6R4FQE+1JHM0hh3sfdxnYjKvJpHZyhQDjc2qFq/xFvmmRt/TATNToZhrcGUFzpF2XjeiuozrA8lI0PZmYYw==", "dev": true }, "node_modules/escalade": { @@ -1181,16 +1181,16 @@ } }, "node_modules/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.0.2", + "@jest/expect-utils": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1387,15 +1387,15 @@ } }, "node_modules/jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.3.tgz", + "integrity": "sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1411,20 +1411,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.3.tgz", + "integrity": "sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -1436,33 +1436,33 @@ } }, "node_modules/jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz", + "integrity": "sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -1471,12 +1471,12 @@ } }, "node_modules/jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" }, "engines": { @@ -1493,9 +1493,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.3.tgz", + "integrity": "sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -1504,23 +1504,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/expect-utils": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.0.2", + "expect": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "semver": "^7.3.5" }, "engines": { @@ -1528,12 +1528,12 @@ } }, "node_modules/jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -1545,9 +1545,9 @@ } }, "node_modules/jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.3.tgz", + "integrity": "sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==", "dev": true, "dependencies": { "@types/node": "*", @@ -1804,9 +1804,9 @@ } }, "node_modules/pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -2042,27 +2042,27 @@ } }, "@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "dev": true }, "@babel/core": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", - "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", + "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.13", + "@babel/generator": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2079,12 +2079,12 @@ } }, "@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "dev": true, "requires": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2103,12 +2103,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -2129,13 +2129,13 @@ "dev": true }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -2157,9 +2157,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -2167,15 +2167,15 @@ "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-simple-access": { @@ -2215,14 +2215,14 @@ "dev": true }, "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/highlight": { @@ -2295,9 +2295,9 @@ } }, "@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -2438,27 +2438,27 @@ } }, "@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.18.10", @@ -2486,60 +2486,60 @@ "dev": true }, "@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "requires": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" } }, "@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==", "dev": true, "requires": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" + "expect": "^29.0.3", + "jest-snapshot": "^29.0.3" } }, "@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.3.tgz", + "integrity": "sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==", "dev": true, "requires": { "jest-get-type": "^29.0.0" } }, "@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" } }, "@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.3.tgz", + "integrity": "sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/types": "^29.0.3", + "jest-mock": "^29.0.3" } }, "@jest/schemas": { @@ -2552,22 +2552,22 @@ } }, "@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.3.tgz", + "integrity": "sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -2575,9 +2575,9 @@ } }, "@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -2627,9 +2627,9 @@ } }, "@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "version": "0.24.39", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", + "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", "dev": true }, "@sinonjs/commons": { @@ -2839,9 +2839,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001388", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", - "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==", + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==", "dev": true }, "chalk": { @@ -2855,9 +2855,9 @@ } }, "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "color-convert": { @@ -2906,9 +2906,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", - "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "version": "1.4.247", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.247.tgz", + "integrity": "sha512-FLs6R4FQE+1JHM0hh3sfdxnYjKvJpHZyhQDjc2qFq/xFvmmRt/TATNToZhrcGUFzpF2XjeiuozrA8lI0PZmYYw==", "dev": true }, "escalade": { @@ -2930,16 +2930,16 @@ "dev": true }, "expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==", "dev": true, "requires": { - "@jest/expect-utils": "^29.0.2", + "@jest/expect-utils": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3" } }, "fast-json-stable-stringify": { @@ -3089,15 +3089,15 @@ } }, "jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.3.tgz", + "integrity": "sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" } }, "jest-get-type": { @@ -3107,12 +3107,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.3.tgz", + "integrity": "sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -3120,48 +3120,48 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz", + "integrity": "sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" } }, "jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" } }, @@ -3172,9 +3172,9 @@ "dev": true }, "jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.3.tgz", + "integrity": "sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -3183,33 +3183,33 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/expect-utils": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.0.2", + "expect": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "semver": "^7.3.5" } }, "jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -3218,9 +3218,9 @@ } }, "jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.3.tgz", + "integrity": "sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==", "dev": true, "requires": { "@types/node": "*", @@ -3413,9 +3413,9 @@ "dev": true }, "pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", diff --git a/e2e/native-esm-ts/package.json b/e2e/native-esm-ts/package.json index 7df48aadd9..d9c963fb06 100644 --- a/e2e/native-esm-ts/package.json +++ b/e2e/native-esm-ts/package.json @@ -1,7 +1,7 @@ { "type": "module", "devDependencies": { - "@jest/globals": "^29.0.2" + "@jest/globals": "^29.0.3" }, "jest": { "extensionsToTreatAsEsm": [".ts"], diff --git a/e2e/source-map/disabled/jest-isolated.config.js b/e2e/source-map/disabled/jest-isolated.config.js index cefe41aba6..a57205de11 100644 --- a/e2e/source-map/disabled/jest-isolated.config.js +++ b/e2e/source-map/disabled/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'sourcemap-disabled-isolated', roots: ['', '/../__tests__'], diff --git a/e2e/source-map/disabled/jest.config.js b/e2e/source-map/disabled/jest.config.js index 8c0a7a2c2d..6af7172358 100644 --- a/e2e/source-map/disabled/jest.config.js +++ b/e2e/source-map/disabled/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'sourcemap-disabled', roots: ['', '/../__tests__'], diff --git a/e2e/source-map/enabled/jest-isolated.config.js b/e2e/source-map/enabled/jest-isolated.config.js index 83e1d9f668..972b026bac 100644 --- a/e2e/source-map/enabled/jest-isolated.config.js +++ b/e2e/source-map/enabled/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'sourcemap-enabled-isolated', roots: ['', '/../__tests__'], diff --git a/e2e/source-map/enabled/jest.config.js b/e2e/source-map/enabled/jest.config.js index 5ecd034bbb..d6e4f05a30 100644 --- a/e2e/source-map/enabled/jest.config.js +++ b/e2e/source-map/enabled/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'sourcemap-enabled', roots: ['', '/../__tests__'], diff --git a/e2e/transform-js/babel-cjs-file/jest.config.js b/e2e/transform-js/babel-cjs-file/jest.config.js index 4aae1aa589..5910fea9b9 100644 --- a/e2e/transform-js/babel-cjs-file/jest.config.js +++ b/e2e/transform-js/babel-cjs-file/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'babel-cjs-file', roots: ['', '/../__tests__/for-babel'], diff --git a/e2e/transform-js/babel-enabled/jest.config.js b/e2e/transform-js/babel-enabled/jest.config.js index 2c7e354357..bf55f32eb9 100644 --- a/e2e/transform-js/babel-enabled/jest.config.js +++ b/e2e/transform-js/babel-enabled/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'babel-enabled', roots: ['', '/../__tests__/for-babel'], diff --git a/e2e/transform-js/babel-js-file/jest.config.js b/e2e/transform-js/babel-js-file/jest.config.js index 15ebfefa0b..723057adbb 100644 --- a/e2e/transform-js/babel-js-file/jest.config.js +++ b/e2e/transform-js/babel-js-file/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'babel-js-file', roots: ['', '/../__tests__/for-babel'], diff --git a/e2e/transform-js/no-type-check/jest.config.js b/e2e/transform-js/no-type-check/jest.config.js index d68344c119..97ca86c387 100644 --- a/e2e/transform-js/no-type-check/jest.config.js +++ b/e2e/transform-js/no-type-check/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'no-type-check', roots: ['', '/../__tests__/for-ts'], diff --git a/e2e/transform-js/type-check/jest.config.js b/e2e/transform-js/type-check/jest.config.js index 67c28addb7..4b579066ce 100644 --- a/e2e/transform-js/type-check/jest.config.js +++ b/e2e/transform-js/type-check/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../../dist').InitialOptionsTsJest} */ +/** @type {import('../../../dist').JestConfigWithTsJest} */ module.exports = { displayName: 'type-check', roots: ['', '/../__tests__/for-ts'], diff --git a/e2e/transform-tsx/jest-isolated.config.js b/e2e/transform-tsx/jest-isolated.config.js index 8581551464..29eb4a0a9e 100644 --- a/e2e/transform-tsx/jest-isolated.config.js +++ b/e2e/transform-tsx/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('../../dist').InitialOptionsTsJest} */ +/** @type {import('../../dist').JestConfigWithTsJest} */ module.exports = { testEnvironment: 'jsdom', transform: { diff --git a/e2e/transform-tsx/package-lock.json b/e2e/transform-tsx/package-lock.json index a4356dde70..1f1f349c5a 100644 --- a/e2e/transform-tsx/package-lock.json +++ b/e2e/transform-tsx/package-lock.json @@ -9,7 +9,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "jest-environment-jsdom": "^29.0.2" + "jest-environment-jsdom": "^29.0.3" } }, "node_modules/@babel/code-frame": { @@ -119,32 +119,32 @@ } }, "node_modules/@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -163,9 +163,9 @@ } }, "node_modules/@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -180,9 +180,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "version": "0.24.39", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", + "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -397,9 +397,9 @@ } }, "node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "node_modules/color-convert": { @@ -708,18 +708,18 @@ "dev": true }, "node_modules/jest-environment-jsdom": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.2.tgz", - "integrity": "sha512-hWqC9FQI5yT04lTd4VJnzT5QObxq0xrSrqpGkqsYfxPeJYjyhriI7W2oJC5HZ1UbhnvA+8GS1nzgPsstvRpdVw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz", + "integrity": "sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/jsdom": "^20.0.0", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3", "jsdom": "^20.0.0" }, "engines": { @@ -727,18 +727,18 @@ } }, "node_modules/jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -747,12 +747,12 @@ } }, "node_modules/jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" }, "engines": { @@ -760,12 +760,12 @@ } }, "node_modules/jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -948,9 +948,9 @@ } }, "node_modules/pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -1379,29 +1379,29 @@ } }, "@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "requires": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" } }, "@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" } }, "@jest/schemas": { @@ -1414,9 +1414,9 @@ } }, "@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -1428,9 +1428,9 @@ } }, "@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "version": "0.24.39", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", + "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", "dev": true }, "@sinonjs/commons": { @@ -1611,9 +1611,9 @@ } }, "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "color-convert": { @@ -1843,55 +1843,55 @@ "dev": true }, "jest-environment-jsdom": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.2.tgz", - "integrity": "sha512-hWqC9FQI5yT04lTd4VJnzT5QObxq0xrSrqpGkqsYfxPeJYjyhriI7W2oJC5HZ1UbhnvA+8GS1nzgPsstvRpdVw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz", + "integrity": "sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/jsdom": "^20.0.0", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3", "jsdom": "^20.0.0" } }, "jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" } }, "jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -2030,9 +2030,9 @@ "dev": true }, "pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", diff --git a/e2e/transform-tsx/package.json b/e2e/transform-tsx/package.json index c3cc2f8045..9cc6ca046b 100644 --- a/e2e/transform-tsx/package.json +++ b/e2e/transform-tsx/package.json @@ -10,6 +10,6 @@ } }, "devDependencies": { - "jest-environment-jsdom": "^29.0.2" + "jest-environment-jsdom": "^29.0.3" } } diff --git a/examples/js-with-babel/jest-esm-isolated.config.js b/examples/js-with-babel/jest-esm-isolated.config.js index 8019c15d49..21f87ed93d 100644 --- a/examples/js-with-babel/jest-esm-isolated.config.js +++ b/examples/js-with-babel/jest-esm-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-babel-esm', transform: { diff --git a/examples/js-with-babel/jest-esm.config.js b/examples/js-with-babel/jest-esm.config.js index e2b7a29119..03cfa1ca30 100644 --- a/examples/js-with-babel/jest-esm.config.js +++ b/examples/js-with-babel/jest-esm.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-babel-esm', transform: { diff --git a/examples/js-with-babel/jest-isolated.config.js b/examples/js-with-babel/jest-isolated.config.js index f66cd552e7..e6c14d7ce7 100644 --- a/examples/js-with-babel/jest-isolated.config.js +++ b/examples/js-with-babel/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-babel', transform: { diff --git a/examples/js-with-babel/jest.config.js b/examples/js-with-babel/jest.config.js index f5f8434e85..83b3802871 100644 --- a/examples/js-with-babel/jest.config.js +++ b/examples/js-with-babel/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-babel', transform: { diff --git a/examples/js-with-babel/package-lock.json b/examples/js-with-babel/package-lock.json index 59f10c7140..75de73c9ce 100644 --- a/examples/js-with-babel/package-lock.json +++ b/examples/js-with-babel/package-lock.json @@ -13,7 +13,7 @@ "babel-jest": "^28.1.3", "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } }, "node_modules/@ampproject/remapping": { @@ -6180,9 +6180,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10925,9 +10925,9 @@ "dev": true }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true }, "unicode-canonical-property-names-ecmascript": { diff --git a/examples/js-with-babel/package.json b/examples/js-with-babel/package.json index c3585db81f..17191a7642 100644 --- a/examples/js-with-babel/package.json +++ b/examples/js-with-babel/package.json @@ -13,6 +13,6 @@ "babel-jest": "^28.1.3", "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } } diff --git a/examples/js-with-ts/jest-esm-isolated.config.js b/examples/js-with-ts/jest-esm-isolated.config.js index 2bb3e781a2..08be5b806e 100644 --- a/examples/js-with-ts/jest-esm-isolated.config.js +++ b/examples/js-with-ts/jest-esm-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-ts-esm', transform: { diff --git a/examples/js-with-ts/jest-esm.config.js b/examples/js-with-ts/jest-esm.config.js index c384382851..c018ddcc62 100644 --- a/examples/js-with-ts/jest-esm.config.js +++ b/examples/js-with-ts/jest-esm.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-ts-esm', transform: { diff --git a/examples/js-with-ts/jest-isolated.config.js b/examples/js-with-ts/jest-isolated.config.js index 0d7dbedd30..f55c5555b8 100644 --- a/examples/js-with-ts/jest-isolated.config.js +++ b/examples/js-with-ts/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-ts', transform: { diff --git a/examples/js-with-ts/jest.config.js b/examples/js-with-ts/jest.config.js index 9e59e68f8c..92763175ee 100644 --- a/examples/js-with-ts/jest.config.js +++ b/examples/js-with-ts/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/js-with-ts', } diff --git a/examples/js-with-ts/package-lock.json b/examples/js-with-ts/package-lock.json index a50989930f..a3d93bfec1 100644 --- a/examples/js-with-ts/package-lock.json +++ b/examples/js-with-ts/package-lock.json @@ -10,7 +10,7 @@ "devDependencies": { "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } }, "node_modules/@ampproject/remapping": { @@ -3380,9 +3380,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6068,9 +6068,9 @@ "dev": true }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true }, "v8-to-istanbul": { diff --git a/examples/js-with-ts/package.json b/examples/js-with-ts/package.json index 3d9ce38847..0011be3c3a 100644 --- a/examples/js-with-ts/package.json +++ b/examples/js-with-ts/package.json @@ -10,6 +10,6 @@ "devDependencies": { "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } } diff --git a/examples/react-app/jest-esm-isolated.config.js b/examples/react-app/jest-esm-isolated.config.js index 39e26f4cac..8658afaaa9 100644 --- a/examples/react-app/jest-esm-isolated.config.js +++ b/examples/react-app/jest-esm-isolated.config.js @@ -1,7 +1,7 @@ const baseEsmCfg = require('./jest-esm.config') const baseCfg = require('./jest.config') -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { ...baseEsmCfg, transform: { diff --git a/examples/react-app/jest-esm.config.js b/examples/react-app/jest-esm.config.js index 0acc8c17b5..bd0634e8b6 100644 --- a/examples/react-app/jest-esm.config.js +++ b/examples/react-app/jest-esm.config.js @@ -1,6 +1,6 @@ const baseCfg = require('./jest.config') -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { ...baseCfg, preset: 'ts-jest/presets/js-with-babel-esm', diff --git a/examples/react-app/jest-isolated.config.js b/examples/react-app/jest-isolated.config.js index cb6ce04631..144dc74838 100644 --- a/examples/react-app/jest-isolated.config.js +++ b/examples/react-app/jest-isolated.config.js @@ -1,6 +1,6 @@ const baseCfg = require('./jest.config') -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { ...baseCfg, transform: { diff --git a/examples/ts-only/jest-esm-isolated.config.js b/examples/ts-only/jest-esm-isolated.config.js index 2587c77c4b..0f6afa535c 100644 --- a/examples/ts-only/jest-esm-isolated.config.js +++ b/examples/ts-only/jest-esm-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/default-esm', transform: { diff --git a/examples/ts-only/jest-esm.config.js b/examples/ts-only/jest-esm.config.js index d6bcc2918c..5ee348a6cf 100644 --- a/examples/ts-only/jest-esm.config.js +++ b/examples/ts-only/jest-esm.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest/presets/default-esm', transform: { diff --git a/examples/ts-only/jest-isolated.config.js b/examples/ts-only/jest-isolated.config.js index 1db0ec2996..7e0e8d47e6 100644 --- a/examples/ts-only/jest-isolated.config.js +++ b/examples/ts-only/jest-isolated.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest', transform: { diff --git a/examples/ts-only/jest.config.js b/examples/ts-only/jest.config.js index 8f40d8b712..e83af2939d 100644 --- a/examples/ts-only/jest.config.js +++ b/examples/ts-only/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('ts-jest').InitialOptionsTsJest} */ +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest', } diff --git a/examples/ts-only/package-lock.json b/examples/ts-only/package-lock.json index ef6bbb6ea1..6e7779b259 100644 --- a/examples/ts-only/package-lock.json +++ b/examples/ts-only/package-lock.json @@ -10,7 +10,7 @@ "devDependencies": { "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } }, "node_modules/@ampproject/remapping": { @@ -3380,9 +3380,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6068,9 +6068,9 @@ "dev": true }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true }, "v8-to-istanbul": { diff --git a/examples/ts-only/package.json b/examples/ts-only/package.json index d11aac791a..15758a7326 100644 --- a/examples/ts-only/package.json +++ b/examples/ts-only/package.json @@ -10,6 +10,6 @@ "devDependencies": { "jest": "^28.1.3", "ts-jest": "^28.0.8", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } } diff --git a/jest.config.js b/jest.config.js index fae470f90d..0887281e61 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,4 @@ -/** @type {import('./dist').InitialOptionsTsJest} */ +/** @type {import('./dist').JestConfigWithTsJest} */ module.exports = { collectCoverageFrom: ['src/**/*.ts'], modulePathIgnorePatterns: ['examples/.*', 'website/.*'], diff --git a/package-lock.json b/package-lock.json index a106d9c020..8a03c5592a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ts-jest", - "version": "29.0.0", + "version": "29.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ts-jest", - "version": "29.0.0", + "version": "29.0.1", "license": "MIT", "dependencies": { "bs-logger": "0.x", @@ -24,8 +24,8 @@ "devDependencies": { "@commitlint/cli": "17.x", "@commitlint/config-angular": "^17.1.0", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__core": "7.x", "@types/cross-spawn": "latest", "@types/fs-extra": "latest", @@ -41,13 +41,13 @@ "@types/semver": "latest", "@types/yargs": "latest", "@types/yargs-parser": "21.x", - "@typescript-eslint/eslint-plugin": "^5.36.2", - "@typescript-eslint/parser": "^5.36.2", - "babel-jest": "^29.0.2", + "@typescript-eslint/eslint-plugin": "^5.37.0", + "@typescript-eslint/parser": "^5.37.0", + "babel-jest": "^29.0.3", "conventional-changelog-cli": "2.x", "cross-spawn": "latest", "esbuild": "~0.15.7", - "eslint": "^8.23.0", + "eslint": "^8.23.1", "eslint-config-prettier": "latest", "eslint-plugin-import": "latest", "eslint-plugin-jest": "latest", @@ -59,7 +59,7 @@ "glob": "^8.0.3", "glob-gitignore": "latest", "husky": "4.x", - "jest": "^29.0.2", + "jest": "^29.0.3", "jest-snapshot-serializer-raw": "^1.2.0", "js-yaml": "latest", "json-schema-to-typescript": "^11.0.2", @@ -68,7 +68,7 @@ "lodash.set": "^4.3.2", "node-fetch": "^3.2.10", "prettier": "^2.7.1", - "typescript": "~4.8.2" + "typescript": "~4.8.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1001,9 +1001,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1202,16 +1202,16 @@ } }, "node_modules/@jest/console": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", - "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.3.tgz", + "integrity": "sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "slash": "^3.0.0" }, "engines": { @@ -1219,16 +1219,16 @@ } }, "node_modules/@jest/core": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", - "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.3.tgz", + "integrity": "sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ==", "dev": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/reporters": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/reporters": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", @@ -1236,20 +1236,20 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^29.0.0", - "jest-config": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", + "jest-config": "^29.0.3", + "jest-haste-map": "^29.0.3", + "jest-message-util": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-resolve-dependencies": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "jest-watcher": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-resolve-dependencies": "^29.0.3", + "jest-runner": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", + "jest-watcher": "^29.0.3", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -1272,37 +1272,37 @@ "dev": true }, "node_modules/@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==", "dev": true, "dependencies": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" + "expect": "^29.0.3", + "jest-snapshot": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.3.tgz", + "integrity": "sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==", "dev": true, "dependencies": { "jest-get-type": "^29.0.0" @@ -1312,48 +1312,48 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.3.tgz", + "integrity": "sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/types": "^29.0.3", + "jest-mock": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", - "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.3.tgz", + "integrity": "sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -1366,9 +1366,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1433,13 +1433,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", - "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.3.tgz", + "integrity": "sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==", "dev": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/types": "^29.0.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1448,14 +1448,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", - "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz", + "integrity": "sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ==", "dev": true, "dependencies": { - "@jest/test-result": "^29.0.2", + "@jest/test-result": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "slash": "^3.0.0" }, "engines": { @@ -1463,22 +1463,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.3.tgz", + "integrity": "sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1489,9 +1489,9 @@ } }, "node_modules/@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "dependencies": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -1886,14 +1886,14 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", - "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", + "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/type-utils": "5.37.0", + "@typescript-eslint/utils": "5.37.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -1919,14 +1919,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", - "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", + "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", "debug": "^4.3.4" }, "engines": { @@ -1946,13 +1946,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", - "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", + "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1963,13 +1963,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", - "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", + "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/utils": "5.37.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1990,9 +1990,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", - "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", + "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2003,13 +2003,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", - "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", + "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2030,15 +2030,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", - "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", + "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -2054,12 +2054,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", - "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", + "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/types": "5.37.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2266,12 +2266,12 @@ } }, "node_modules/babel-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", - "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.3.tgz", + "integrity": "sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg==", "dev": true, "dependencies": { - "@jest/transform": "^29.0.2", + "@jest/transform": "^29.0.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.0.2", @@ -3751,12 +3751,12 @@ } }, "node_modules/eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.1", + "@eslint/eslintrc": "^1.3.2", "@humanwhocodes/config-array": "^0.10.4", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", @@ -3775,7 +3775,6 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", "globby": "^11.1.0", @@ -3784,6 +3783,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -4286,16 +4286,16 @@ } }, "node_modules/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.0.2", + "@jest/expect-utils": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5646,15 +5646,15 @@ } }, "node_modules/jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", - "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.3.tgz", + "integrity": "sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==", "dev": true, "dependencies": { - "@jest/core": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^29.0.3", + "@jest/types": "^29.0.3", "import-local": "^3.0.2", - "jest-cli": "^29.0.2" + "jest-cli": "^29.0.3" }, "bin": { "jest": "bin/jest.js" @@ -5685,28 +5685,28 @@ } }, "node_modules/jest-circus": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", - "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.3.tgz", + "integrity": "sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", + "jest-each": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", "p-limit": "^3.1.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5715,21 +5715,21 @@ } }, "node_modules/jest-cli": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", - "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.3.tgz", + "integrity": "sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==", "dev": true, "dependencies": { - "@jest/core": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-config": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -5749,31 +5749,31 @@ } }, "node_modules/jest-config": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", - "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.3.tgz", + "integrity": "sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.0.2", - "@jest/types": "^29.0.2", - "babel-jest": "^29.0.2", + "@jest/test-sequencer": "^29.0.3", + "@jest/types": "^29.0.3", + "babel-jest": "^29.0.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.0.2", - "jest-environment-node": "^29.0.2", + "jest-circus": "^29.0.3", + "jest-environment-node": "^29.0.3", "jest-get-type": "^29.0.0", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-runner": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -5794,9 +5794,9 @@ } }, "node_modules/jest-config/node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "node_modules/jest-config/node_modules/glob": { @@ -5820,15 +5820,15 @@ } }, "node_modules/jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.3.tgz", + "integrity": "sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5847,33 +5847,33 @@ } }, "node_modules/jest-each": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", - "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.3.tgz", + "integrity": "sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "chalk": "^4.0.0", "jest-get-type": "^29.0.0", - "jest-util": "^29.0.2", - "pretty-format": "^29.0.2" + "jest-util": "^29.0.3", + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", - "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.3.tgz", + "integrity": "sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5889,20 +5889,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.3.tgz", + "integrity": "sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -5914,46 +5914,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", - "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz", + "integrity": "sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ==", "dev": true, "dependencies": { "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz", + "integrity": "sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5962,12 +5962,12 @@ } }, "node_modules/jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" }, "engines": { @@ -6001,17 +6001,17 @@ } }, "node_modules/jest-resolve": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", - "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.3.tgz", + "integrity": "sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -6021,43 +6021,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", - "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz", + "integrity": "sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw==", "dev": true, "dependencies": { "jest-regex-util": "^29.0.0", - "jest-snapshot": "^29.0.2" + "jest-snapshot": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", - "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.3.tgz", + "integrity": "sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw==", "dev": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/environment": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/environment": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^29.0.0", - "jest-environment-node": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-leak-detector": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-resolve": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-util": "^29.0.2", - "jest-watcher": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-environment-node": "^29.0.3", + "jest-haste-map": "^29.0.3", + "jest-leak-detector": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-resolve": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-util": "^29.0.3", + "jest-watcher": "^29.0.3", + "jest-worker": "^29.0.3", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -6066,31 +6066,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", - "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.3.tgz", + "integrity": "sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/globals": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/globals": "^29.0.3", "@jest/source-map": "^29.0.0", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -6119,9 +6119,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.3.tgz", + "integrity": "sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -6130,23 +6130,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/expect-utils": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.0.2", + "expect": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "semver": "^7.3.5" }, "engines": { @@ -6163,11 +6163,11 @@ } }, "node_modules/jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -6179,22 +6179,22 @@ } }, "node_modules/jest-util/node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==" }, "node_modules/jest-validate": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", - "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.3.tgz", + "integrity": "sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.0.0", "leven": "^3.1.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -6213,18 +6213,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", - "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.3.tgz", + "integrity": "sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "string-length": "^4.0.1" }, "engines": { @@ -6232,9 +6232,9 @@ } }, "node_modules/jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.3.tgz", + "integrity": "sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==", "dev": true, "dependencies": { "@types/node": "*", @@ -6260,6 +6260,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7646,9 +7652,9 @@ } }, "node_modules/pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -8516,9 +8522,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -8861,9 +8867,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -9907,9 +9913,9 @@ "optional": true }, "@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -10053,30 +10059,30 @@ "dev": true }, "@jest/console": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", - "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.3.tgz", + "integrity": "sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "slash": "^3.0.0" } }, "@jest/core": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", - "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.3.tgz", + "integrity": "sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ==", "dev": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/reporters": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/reporters": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", @@ -10084,20 +10090,20 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^29.0.0", - "jest-config": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", + "jest-config": "^29.0.3", + "jest-haste-map": "^29.0.3", + "jest-message-util": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-resolve-dependencies": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "jest-watcher": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-resolve-dependencies": "^29.0.3", + "jest-runner": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", + "jest-watcher": "^29.0.3", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -10111,73 +10117,73 @@ } }, "@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.3.tgz", + "integrity": "sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==", "dev": true, "requires": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2" + "jest-mock": "^29.0.3" } }, "@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==", "dev": true, "requires": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" + "expect": "^29.0.3", + "jest-snapshot": "^29.0.3" } }, "@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.3.tgz", + "integrity": "sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==", "dev": true, "requires": { "jest-get-type": "^29.0.0" } }, "@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.3.tgz", + "integrity": "sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" } }, "@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.3.tgz", + "integrity": "sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/types": "^29.0.3", + "jest-mock": "^29.0.3" } }, "@jest/reporters": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", - "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.3.tgz", + "integrity": "sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -10190,9 +10196,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -10236,46 +10242,46 @@ } }, "@jest/test-result": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", - "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.3.tgz", + "integrity": "sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==", "dev": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/types": "^29.0.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", - "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz", + "integrity": "sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ==", "dev": true, "requires": { - "@jest/test-result": "^29.0.2", + "@jest/test-result": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.3.tgz", + "integrity": "sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -10283,9 +10289,9 @@ } }, "@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.3.tgz", + "integrity": "sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==", "requires": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -10664,14 +10670,14 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", - "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", + "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/type-utils": "5.37.0", + "@typescript-eslint/utils": "5.37.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -10681,53 +10687,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", - "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", + "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", - "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", + "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0" } }, "@typescript-eslint/type-utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", - "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", + "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/utils": "5.37.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", - "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", + "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", - "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", + "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10736,26 +10742,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", - "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", + "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", - "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", + "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/types": "5.37.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -10901,12 +10907,12 @@ "dev": true }, "babel-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", - "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.3.tgz", + "integrity": "sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg==", "dev": true, "requires": { - "@jest/transform": "^29.0.2", + "@jest/transform": "^29.0.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.0.2", @@ -11941,12 +11947,12 @@ "dev": true }, "eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.1", + "@eslint/eslintrc": "^1.3.2", "@humanwhocodes/config-array": "^0.10.4", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", @@ -11965,7 +11971,6 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", "globby": "^11.1.0", @@ -11974,6 +11979,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -12335,16 +12341,16 @@ "dev": true }, "expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.3.tgz", + "integrity": "sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==", "dev": true, "requires": { - "@jest/expect-utils": "^29.0.2", + "@jest/expect-utils": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3" } }, "ext": { @@ -13337,15 +13343,15 @@ } }, "jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", - "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.3.tgz", + "integrity": "sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==", "dev": true, "requires": { - "@jest/core": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^29.0.3", + "@jest/types": "^29.0.3", "import-local": "^3.0.2", - "jest-cli": "^29.0.2" + "jest-cli": "^29.0.3" } }, "jest-changed-files": { @@ -13359,86 +13365,86 @@ } }, "jest-circus": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", - "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.3.tgz", + "integrity": "sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/expect": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", + "jest-each": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", "p-limit": "^3.1.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-cli": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", - "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.3.tgz", + "integrity": "sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==", "dev": true, "requires": { - "@jest/core": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-config": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "prompts": "^2.0.1", "yargs": "^17.3.1" } }, "jest-config": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", - "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.3.tgz", + "integrity": "sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.0.2", - "@jest/types": "^29.0.2", - "babel-jest": "^29.0.2", + "@jest/test-sequencer": "^29.0.3", + "@jest/types": "^29.0.3", + "babel-jest": "^29.0.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.0.2", - "jest-environment-node": "^29.0.2", + "jest-circus": "^29.0.3", + "jest-environment-node": "^29.0.3", "jest-get-type": "^29.0.0", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-runner": "^29.0.3", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "dependencies": { "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, "glob": { @@ -13458,15 +13464,15 @@ } }, "jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.3.tgz", + "integrity": "sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" } }, "jest-docblock": { @@ -13479,30 +13485,30 @@ } }, "jest-each": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", - "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.3.tgz", + "integrity": "sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "chalk": "^4.0.0", "jest-get-type": "^29.0.0", - "jest-util": "^29.0.2", - "pretty-format": "^29.0.2" + "jest-util": "^29.0.3", + "pretty-format": "^29.0.3" } }, "jest-environment-node": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", - "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.3.tgz", + "integrity": "sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-mock": "^29.0.3", + "jest-util": "^29.0.3" } }, "jest-get-type": { @@ -13512,12 +13518,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.3.tgz", + "integrity": "sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -13525,58 +13531,58 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-util": "^29.0.3", + "jest-worker": "^29.0.3", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", - "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz", + "integrity": "sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ==", "dev": true, "requires": { "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" } }, "jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz", + "integrity": "sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" } }, "jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz", + "integrity": "sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.3.tgz", + "integrity": "sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*" } }, @@ -13594,87 +13600,87 @@ "dev": true }, "jest-resolve": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", - "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.3.tgz", + "integrity": "sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^29.0.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-util": "^29.0.3", + "jest-validate": "^29.0.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", - "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz", + "integrity": "sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw==", "dev": true, "requires": { "jest-regex-util": "^29.0.0", - "jest-snapshot": "^29.0.2" + "jest-snapshot": "^29.0.3" } }, "jest-runner": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", - "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.3.tgz", + "integrity": "sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw==", "dev": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/environment": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^29.0.3", + "@jest/environment": "^29.0.3", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^29.0.0", - "jest-environment-node": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-leak-detector": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-resolve": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-util": "^29.0.2", - "jest-watcher": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-environment-node": "^29.0.3", + "jest-haste-map": "^29.0.3", + "jest-leak-detector": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-resolve": "^29.0.3", + "jest-runtime": "^29.0.3", + "jest-util": "^29.0.3", + "jest-watcher": "^29.0.3", + "jest-worker": "^29.0.3", "p-limit": "^3.1.0", "source-map-support": "0.5.13" } }, "jest-runtime": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", - "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.3.tgz", + "integrity": "sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/globals": "^29.0.2", + "@jest/environment": "^29.0.3", + "@jest/fake-timers": "^29.0.3", + "@jest/globals": "^29.0.3", "@jest/source-map": "^29.0.0", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/test-result": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-mock": "^29.0.3", "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", + "jest-resolve": "^29.0.3", + "jest-snapshot": "^29.0.3", + "jest-util": "^29.0.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -13696,9 +13702,9 @@ } }, "jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.3.tgz", + "integrity": "sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -13707,23 +13713,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/expect-utils": "^29.0.3", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.0.2", + "expect": "^29.0.3", "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", + "jest-diff": "^29.0.3", "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-haste-map": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "jest-message-util": "^29.0.3", + "jest-util": "^29.0.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", + "pretty-format": "^29.0.3", "semver": "^7.3.5" } }, @@ -13734,11 +13740,11 @@ "dev": true }, "jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.3.tgz", + "integrity": "sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==", "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -13747,24 +13753,24 @@ }, "dependencies": { "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", + "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==" } } }, "jest-validate": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", - "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.3.tgz", + "integrity": "sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw==", "dev": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^29.0.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.0.0", "leven": "^3.1.0", - "pretty-format": "^29.0.2" + "pretty-format": "^29.0.3" }, "dependencies": { "camelcase": { @@ -13776,25 +13782,25 @@ } }, "jest-watcher": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", - "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.3.tgz", + "integrity": "sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==", "dev": true, "requires": { - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/test-result": "^29.0.3", + "@jest/types": "^29.0.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^29.0.2", + "jest-util": "^29.0.3", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.3.tgz", + "integrity": "sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==", "dev": true, "requires": { "@types/node": "*", @@ -13813,6 +13819,12 @@ } } }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -14835,9 +14847,9 @@ } }, "pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz", + "integrity": "sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -15467,9 +15479,9 @@ } }, "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -15726,9 +15738,9 @@ "dev": true }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 61558437ed..bd9680ebf6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ts-jest", - "version": "29.0.0", + "version": "29.0.1", "main": "dist/index.js", "types": "dist/index.d.ts", "bin": { @@ -91,8 +91,8 @@ "devDependencies": { "@commitlint/cli": "17.x", "@commitlint/config-angular": "^17.1.0", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/transform": "^29.0.3", + "@jest/types": "^29.0.3", "@types/babel__core": "7.x", "@types/cross-spawn": "latest", "@types/fs-extra": "latest", @@ -108,13 +108,13 @@ "@types/semver": "latest", "@types/yargs": "latest", "@types/yargs-parser": "21.x", - "@typescript-eslint/eslint-plugin": "^5.36.2", - "@typescript-eslint/parser": "^5.36.2", - "babel-jest": "^29.0.2", + "@typescript-eslint/eslint-plugin": "^5.37.0", + "@typescript-eslint/parser": "^5.37.0", + "babel-jest": "^29.0.3", "conventional-changelog-cli": "2.x", "cross-spawn": "latest", "esbuild": "~0.15.7", - "eslint": "^8.23.0", + "eslint": "^8.23.1", "eslint-config-prettier": "latest", "eslint-plugin-import": "latest", "eslint-plugin-jest": "latest", @@ -126,7 +126,7 @@ "glob": "^8.0.3", "glob-gitignore": "latest", "husky": "4.x", - "jest": "^29.0.2", + "jest": "^29.0.3", "jest-snapshot-serializer-raw": "^1.2.0", "js-yaml": "latest", "json-schema-to-typescript": "^11.0.2", @@ -135,7 +135,7 @@ "lodash.set": "^4.3.2", "node-fetch": "^3.2.10", "prettier": "^2.7.1", - "typescript": "~4.8.2" + "typescript": "~4.8.3" }, "lint-staged": { "*.{ts,tsx,js,jsx}": [ diff --git a/src/legacy/config/config-set.ts b/src/legacy/config/config-set.ts index dd0df18168..9351739bc7 100644 --- a/src/legacy/config/config-set.ts +++ b/src/legacy/config/config-set.ts @@ -27,7 +27,6 @@ import type { BabelJestTransformer, ProjectConfigTsJest, TsJestAstTransformer, - TsJestDiagnosticsCfg, TsJestGlobalOptions, TTypeScript, } from '../../types' @@ -40,6 +39,14 @@ import { normalizeSlashes } from '../../utils/normalize-slashes' import { sha1 } from '../../utils/sha1' import { TSError } from '../../utils/ts-error' +interface TsJestDiagnosticsCfg { + pretty: boolean + ignoreCodes: number[] + exclude: string[] + throws: boolean + warnOnly?: boolean +} + /** * @internal */ diff --git a/src/legacy/ts-jest-transformer.ts b/src/legacy/ts-jest-transformer.ts index 235126db59..7f118434f7 100644 --- a/src/legacy/ts-jest-transformer.ts +++ b/src/legacy/ts-jest-transformer.ts @@ -109,17 +109,17 @@ export class TsJestTransformer implements SyncTransformer { if (config.globals?.['ts-jest']) { this._logger.warn(Deprecations.GlobalsTsJestConfigOption) } - configSet = this._createConfigSet( - this.tsJestConfig - ? { - ...config, - globals: { - 'ts-jest': this.tsJestConfig, - }, - } - : config, - ) - const jest = { ...config } + const migratedConfig = this.tsJestConfig + ? { + ...config, + globals: { + ...(config.globals ?? Object.create(null)), + 'ts-jest': this.tsJestConfig, + }, + } + : config + configSet = this._createConfigSet(migratedConfig) + const jest = { ...migratedConfig } // we need to remove some stuff from jest config // this which does not depend on config jest.cacheDirectory = undefined as any // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/src/types.ts b/src/types.ts index ffdbdfe0bc..14ae3948b9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -26,9 +26,15 @@ declare module '@jest/types' { * @internal */ export type TBabelCore = typeof _babel +/** + * @internal + */ export type TBabelJest = typeof babelJest export type TTypeScript = typeof _ts // Stimulate `esbuild` type to avoid import `esbuild` while building the assets which are shipped to npm +/** + * @internal + */ export interface TEsBuild { transformSync( input: string, @@ -62,6 +68,9 @@ export interface ConfigCustomTransformer { afterDeclarations?: Array } +/** + * @deprecated use `TsJestTransformerOptions` instead + */ export interface TsJestGlobalOptions { /** * Compiler options. It can be: @@ -156,67 +165,44 @@ export interface TsJestGlobalOptions { useESM?: boolean } -interface TsJestConfig$tsConfig$file { - kind: 'file' - value: string | undefined -} -interface TsJestConfig$tsConfig$inline { - kind: 'inline' - value: _ts.CompilerOptions -} -type TsJestConfig$tsConfig = TsJestConfig$tsConfig$file | TsJestConfig$tsConfig$inline | undefined -export interface TsJestDiagnosticsCfg { - pretty: boolean - ignoreCodes: number[] - exclude: string[] - throws: boolean - warnOnly?: boolean -} -interface TsJestConfig$babelConfig$file { - kind: 'file' - value: string | undefined -} -interface TsJestConfig$babelConfig$inline { - kind: 'inline' - value: BabelConfig -} -type TsJestConfig$babelConfig = TsJestConfig$babelConfig$file | TsJestConfig$babelConfig$inline | undefined -/** - * @internal - */ -export interface TsJestConfig { - tsconfig: TsJestConfig$tsConfig - isolatedModules: boolean - compiler: string - diagnostics: TsJestDiagnosticsCfg - babelConfig: TsJestConfig$babelConfig - transformers: ConfigCustomTransformer - // to deprecate / deprecated === === === - stringifyContentPathRegex: string | undefined -} - /** * For transformers which extends `ts-jest` + * @deprecated use `JestConfigWithTsJest` instead */ export interface ProjectConfigTsJest extends Config.ProjectConfig { globals: GlobalConfigTsJest } +/** + * @deprecated use `JestConfigWithTsJest` instead + */ export interface TransformOptionsTsJest extends TransformOptions { config: ProjectConfigTsJest } /** * For typings in `jest.config.ts` + * @deprecated use `JestConfigWithTsJest` instead */ export interface GlobalConfigTsJest extends Config.ConfigGlobals { 'ts-jest': TsJestGlobalOptions } +/** + * @deprecated use `JestConfigWithTsJest` instead + */ export interface InitialOptionsTsJest extends Config.InitialOptions { globals?: GlobalConfigTsJest } +type TsJestTransformerOptions = TsJestGlobalOptions +export interface JestConfigWithTsJest extends Partial> { + transform: { + [regex: string]: 'ts-jest' | ['ts-jest', TsJestTransformerOptions] | string | [string, Record] + } +} export type StringMap = Map - +/** + * @internal + */ export interface DepGraphInfo { fileContent: string resolvedModuleNames: string[] diff --git a/website/docs/debugging.md b/website/docs/debugging.md index 3d814c7e52..715d77c142 100644 --- a/website/docs/debugging.md +++ b/website/docs/debugging.md @@ -17,14 +17,10 @@ export TS_JEST_LOG=ts-jest.log **Windows** -Command Prompt (cmd) - -``` +```Command Prompt tab set TS_JEST_LOG=ts-jest.log ``` -PowerShell - -``` +```PowerShell tab $env:TS_JEST_LOG = 'ts-jest.log' ``` diff --git a/website/docs/getting-started/installation.md b/website/docs/getting-started/installation.md index 62ea81eec4..ce10bbc49f 100644 --- a/website/docs/getting-started/installation.md +++ b/website/docs/getting-started/installation.md @@ -7,18 +7,10 @@ title: Installation You can install `ts-jest` and dependencies all at once with one of the following commands. -#### NPM - -```sh +```bash npm2yarn npm install --save-dev jest typescript ts-jest @types/jest ``` -#### Yarn - -```sh -yarn add --dev jest typescript ts-jest @types/jest -``` - :::tip Tip: If you get an error with the following `npm` commands such as `npx: command not found`, you can replace `npx XXX` with `node node_modules/.bin/XXX` from the root of your project. @@ -34,15 +26,11 @@ To make it transpile TypeScript with `ts-jest`, we will need to create a configu `ts-jest` can create the configuration file for you automatically: -#### NPM - -```sh +```npm tab npx ts-jest config:init ``` -#### Yarn - -```sh +```Yarn tab yarn ts-jest config:init ``` diff --git a/website/docs/getting-started/options.md b/website/docs/getting-started/options.md index 4a3b6ce6e3..7c32104afd 100644 --- a/website/docs/getting-started/options.md +++ b/website/docs/getting-started/options.md @@ -8,27 +8,8 @@ title: Options All `ts-jest` specific options can be defined in Jest `transform` config object in the `package.json` file of your project, or through a `jest.config.js`, or `jest.config.ts` file. -```json -// package.json -{ - // [...] - "jest": { - "transform": { - "": [ - "ts-jest", - { - // ts-jest configuration goes here - } - ] - } - } -} -``` - -Or through JavaScript: - -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -42,44 +23,36 @@ module.exports = { } ``` -:::tip +```ts tab +import type { JestConfigWithTsJest } from './types' -To utilize IDE suggestions, you can use `JSDoc` comments to provide suggested `ts-jest` configs for your Jest config: - -```js -/** @type {import('ts-jest').InitialOptionsTsJest} */ -module.exports = config = { +const jestConfig: JestConfigWithTsJest = { // [...] transform: { '': [ 'ts-jest', { - // ts-jest configuration goes here and your IDE will suggest which configs when typing + // ts-jest configuration goes here }, ], }, } ``` -::: - -Or through TypeScript (if `ts-node` is installed): - -```ts -// jest.config.ts -import type { InitialOptionsTsJest } from 'ts-jest' - -const config: InitialOptionsTsJest = { - transform: { - '': [ - 'ts-jest', - { - // ts-jest configuration goes here - }, - ], - }, +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + // ts-jest configuration goes here + } + ] + } + } } -export default config ``` :::important diff --git a/website/docs/getting-started/options/astTransformers.md b/website/docs/getting-started/options/astTransformers.md index 1998f7746d..d42801457e 100644 --- a/website/docs/getting-started/options/astTransformers.md +++ b/website/docs/getting-started/options/astTransformers.md @@ -16,8 +16,8 @@ The option is `astTransformers` and it allows ones to specify which 3 types of T #### Basic Transformers -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -33,8 +33,27 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: ['my-custom-transformer'], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab { // [...] "jest": { @@ -54,8 +73,8 @@ module.exports = { #### Configuring transformers with options -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -76,8 +95,32 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: [ + { + path: 'my-custom-transformer-that-needs-extra-opts', + options: {}, // extra options to pass to transformers here + }, + ], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab { // [...] "jest": { diff --git a/website/docs/getting-started/options/babelConfig.md b/website/docs/getting-started/options/babelConfig.md index 73a6ee27c4..4cd781ecab 100644 --- a/website/docs/getting-started/options/babelConfig.md +++ b/website/docs/getting-started/options/babelConfig.md @@ -14,8 +14,8 @@ The option is `babelConfig` and it works pretty much as the `tsconfig` option, e #### Use default `babelrc` file -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -29,7 +29,25 @@ module.exports = { } ``` -```json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: true, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab // OR package.json { // [...] @@ -50,8 +68,8 @@ module.exports = { The path should be relative to the current working directory where you start Jest from. You can also use `\` in the path, or use an absolute path (this last one is strongly not recommended). -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -65,23 +83,25 @@ module.exports = { } ``` -```js -// OR jest.config.js with require for babelrc -module.exports = { +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { // [...] transform: { '': [ 'ts-jest', { - babelConfig: require('./babelrc.test.js'), + babelConfig: 'babelrc.test.js', }, ], }, } + +export default jestConfig ``` -```json -// OR package.json +```JSON tab { // [...] "jest": { @@ -97,12 +117,48 @@ module.exports = { } ``` +or importing directly the config file: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: require('./babelrc.test.js'), + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' +import babelConfig from './babelrc.test.js' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig, + }, + ], + }, +} + +export default jestConfig +``` + #### Inline compiler options Refer to the [Babel options](https://babeljs.io/docs/en/next/options) to know what can be used there. -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -119,8 +175,28 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: { + comments: false, + plugins: ['@babel/plugin-transform-for-of'], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab { // [...] "jest": { diff --git a/website/docs/getting-started/options/compiler.md b/website/docs/getting-started/options/compiler.md index 0d21700a85..85752446cc 100644 --- a/website/docs/getting-started/options/compiler.md +++ b/website/docs/getting-started/options/compiler.md @@ -11,8 +11,8 @@ If you use a custom compiler, such as `ttypescript`, make sure its API is the sa ### Example -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -26,8 +26,25 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '` in the path to start from the project root dir. -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -29,8 +29,25 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '/src/$1', + '^lib/(.*)$': '/common/$1', + }, +} + +export default jestConfig +``` + +```JSON tab { // [...] "jest": { @@ -54,15 +67,30 @@ module.exports = { #### Jest config (with helper) -```js -// jest.config.js +```js tab const { pathsToModuleNameMapper } = require('ts-jest') // In the following statement, replace `./tsconfig` with the path to your `tsconfig` file // which contains the path mapping (ie the `compilerOptions.paths` option): const { compilerOptions } = require('./tsconfig') +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), } ``` + +```ts tab +import { pathsToModuleNameMapper } from 'ts-jest' +// In the following statement, replace `./tsconfig` with the path to your `tsconfig` file +// which contains the path mapping (ie the `compilerOptions.paths` option): +import { compilerOptions } from './tsconfig' +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), +} + +export default jestConfig +``` diff --git a/website/docs/getting-started/presets.md b/website/docs/getting-started/presets.md index 15643e11aa..53d347cc39 100644 --- a/website/docs/getting-started/presets.md +++ b/website/docs/getting-started/presets.md @@ -33,8 +33,8 @@ Starting from **v28.0.0**, `ts-jest` will gradually opt in adoption of `esbuild` In most cases, simply setting the `preset` key to the desired preset name in your Jest config should be enough to start using TypeScript with Jest (assuming you added `ts-jest` to your `devDependencies` of course): -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] // Replace `ts-jest` with the preset you want to use @@ -43,8 +43,20 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + // Replace `ts-jest` with the preset you want to use + // from the above list + preset: 'ts-jest', +} + +export default jestConfig +``` + +```JSON tab { // [...] "jest": { @@ -63,8 +75,7 @@ Any preset can also be used with other options. If you're already using another preset, you might want only some specific settings from the chosen `ts-jest` preset. In this case you'll need to use the JavaScript version of Jest config (comment/uncomment according to your use case): -```js -// jest.config.js +```js tab const { defaults: tsjPreset } = require('ts-jest/presets') // const { defaultsESM: tsjPreset } = require('ts-jest/presets') // const { jsWithTs: tsjPreset } = require('ts-jest/presets') @@ -72,6 +83,7 @@ const { defaults: tsjPreset } = require('ts-jest/presets') // const { jsWithBabel: tsjPreset } = require('ts-jest/presets') // const { jsWithBabelESM: tsjPreset } = require('ts-jest/presets') +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] transform: { @@ -81,19 +93,17 @@ module.exports = { } ``` -Or through TypeScript (if `ts-node` is installed): +```ts tab +import type { JestConfigWithTsJest } from './types' -```ts -// jest.config.ts -import type { InitialOptionsTsJest } from 'ts-jest' import { defaults as tsjPreset } from 'ts-jest/presets' -// import { defaultsESM as tsjPreset } from 'ts-jest/presets' -// import { jsWithTs as tsjPreset } from 'ts-jest/presets' -// import { jsWithTsESM as tsjPreset } from 'ts-jest/presets' -// import { jsWithBabel as tsjPreset } from 'ts-jest/presets' -// import { jsWithBabelESM as tsjPreset } from 'ts-jest/presets' +// import { defaultsESM as tsjPreset } from 'ts-jest/presets'; +// import { jsWithTs as tsjPreset } from 'ts-jest/presets'; +// import { jsWithTsESM as tsjPreset } from 'ts-jest/presets'; +// import { jsWithBabel as tsjPreset } from 'ts-jest/presets'; +// import { jsWithBabelESM as tsjPreset } from 'ts-jest/presets'; -const config: InitialOptionsTsJest = { +const jestConfig: JestConfigWithTsJest = { // [...] transform: { ...tsjPreset.transform, @@ -101,5 +111,5 @@ const config: InitialOptionsTsJest = { }, } -export default config +export default jestConfig ``` diff --git a/website/docs/guides/esm-support.md b/website/docs/guides/esm-support.md index a36682263d..5e78bfa750 100644 --- a/website/docs/guides/esm-support.md +++ b/website/docs/guides/esm-support.md @@ -18,8 +18,8 @@ There are also [3 presets](../getting-started/presets.md) to work with ESM. #### Manual configuration -```js -// jest.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] extensionsToTreatAsEsm: ['.ts'], @@ -37,8 +37,29 @@ module.exports = { } ``` -```json -// OR package.json +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + extensionsToTreatAsEsm: ['.ts'], + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + ' { + return jest.fn().mockImplementation(() => { + return { playSoundFile: mockPlaySoundFile } + }) +}) +``` + +```ts tab jest.mock('./sound-player', () => { return jest.fn().mockImplementation(() => { return { playSoundFile: mockPlaySoundFile } @@ -24,7 +32,19 @@ TypeError: sound_player_1.default is not a constructor because `soundPlayer.default` does not point to a function. Your mock has to return an object which has a property default that points to a function. -```js +```js tab +jest.mock('./sound-player', () => { + return { + default: jest.fn().mockImplementation(() => { + return { + playSoundFile: mockPlaySoundFile, + } + }), + } +}) +``` + +```ts tab jest.mock('./sound-player', () => { return { default: jest.fn().mockImplementation(() => { @@ -38,7 +58,15 @@ jest.mock('./sound-player', () => { For named imports, like `import { OAuth2 } from './oauth'`, replace `default` with imported module name, `OAuth2` in this example: -```js +```js tab +jest.mock('./oauth', () => { + return { + OAuth2: ... // mock here + } +}) +``` + +```ts tab jest.mock('./oauth', () => { return { OAuth2: ... // mock here diff --git a/website/docs/guides/react-native.md b/website/docs/guides/react-native.md index bbcf14776e..3e238797ea 100644 --- a/website/docs/guides/react-native.md +++ b/website/docs/guides/react-native.md @@ -11,13 +11,23 @@ After that, some little modifications will be required as follows: If you didn't yet, move any Babel config from `.babelrc` to `babel.config.js`. It should at least contain: -```js -// babel.config.js +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { presets: ['module:metro-react-native-babel-preset'], } ``` +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + presets: ['module:metro-react-native-babel-preset'], +} + +export default jestConfig +``` + ### TypeScript Configuration Create a new `tsconfig.spec.json` at the root of your project with the following content @@ -36,10 +46,10 @@ Create a new `tsconfig.spec.json` at the root of your project with the following In the same way that you moved Babel config, move Jest config from `jest` key of `package.json` to `jest.config.js`. It should look like this: -```js -// jest.config.js +```js tab const { defaults: tsjPreset } = require('ts-jest/presets') +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'react-native', transform: { @@ -54,3 +64,24 @@ module.exports = { moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], } ``` + +```ts tab +import { defaults as tsjPreset } from 'ts-jest/presets' +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + preset: 'react-native', + transform: { + '^.+\\.jsx$': 'babel-jest', + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: 'tsconfig.spec.json', + }, + ], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +} + +export default jestConfig +``` diff --git a/website/docs/migration.md b/website/docs/migration.md index c55c9ee739..5a788a6b0a 100644 --- a/website/docs/migration.md +++ b/website/docs/migration.md @@ -7,28 +7,20 @@ You can use the `config:migrate` tool of `ts-jest` CLI if you're coming from an _If you're using `jest.config.js`:_ -### NPM - -```sh +```npm tab npx ts-jest config:migrate jest.config.js ``` -### Yarn - -```sh +```Yarn tab yarn ts-jest config:migrate jest.config.js ``` _If you're using `jest` config property of `package.json`:_ -### NPM - -```sh +```npm tab npx ts-jest config:migrate package.json ``` -### Yarn - -```sh +```Yarn tab yarn ts-jest config:migrate package.json ``` diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 7cb1138428..dfe4187cb5 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -82,9 +82,15 @@ module.exports = { '@docusaurus/preset-classic', { docs: { + showLastUpdateAuthor: true, + showLastUpdateTime: true, sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/kulshekhar/ts-jest/edit/main/website', - remarkPlugins: [simplePlantUML], + remarkPlugins: [ + simplePlantUML, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }], + require('docusaurus-remark-plugin-tab-blocks'), + ], }, theme: { customCss: require.resolve('./src/css/custom.css'), diff --git a/website/package-lock.json b/website/package-lock.json index 878f25b8dd..01a7571175 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -13,8 +13,10 @@ "@docusaurus/plugin-ideal-image": "^2.1.0", "@docusaurus/plugin-pwa": "^2.1.0", "@docusaurus/preset-classic": "^2.1.0", + "@docusaurus/remark-plugin-npm2yarn": "^2.1.0", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", + "docusaurus-remark-plugin-tab-blocks": "^1.2.0", "latest-version": "^7.0.0", "react": "^16.14.0", "react-dom": "^16.14.0" @@ -24,7 +26,7 @@ "@docusaurus/module-type-aliases": "^2.1.0", "@tsconfig/docusaurus": "^1.0.6", "@types/react": "^16.14.24", - "typescript": "~4.8.2" + "typescript": "~4.8.3" } }, "node_modules/@akebifiky/remark-simple-plantuml": { @@ -2514,6 +2516,19 @@ "react": "*" } }, + "node_modules/@docusaurus/remark-plugin-npm2yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.1.0.tgz", + "integrity": "sha512-crlbE7XN4m6f5PMW+1K0w1/r6YsJPBHPAnxBu+dwcObBYFKeNnmtci8mBOX/Ey1eeV9wO1yFwaSWKEn1EAbcbQ==", + "dependencies": { + "npm-to-yarn": "^1.0.1", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3" + }, + "engines": { + "node": ">=16.14" + } + }, "node_modules/@docusaurus/responsive-loader": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz", @@ -6050,6 +6065,18 @@ "node": ">=6" } }, + "node_modules/docusaurus-remark-plugin-tab-blocks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/docusaurus-remark-plugin-tab-blocks/-/docusaurus-remark-plugin-tab-blocks-1.2.0.tgz", + "integrity": "sha512-uG8Bac8JGWeuKY8dali3DqiJaGHYE0k2QKmp9h6qYRPdL+1ruUMNQx5lZpJ6sdiUcyOSHYgvNKuJFbfg6ZlH9w==", + "dependencies": { + "unist-util-is": "^4.0.0", + "unist-util-visit": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -9433,6 +9460,17 @@ "node": ">=8" } }, + "node_modules/npm-to-yarn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-1.0.1.tgz", + "integrity": "sha512-bp8T8oNMfLW+N/fE0itFfSu7RReytwhqNd9skbkfHfzGYC+5CCdzS2HnaXz6JiG4AlK2eA0qlT6NJN1SoFvcWQ==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, "node_modules/nprogress": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", @@ -12813,7 +12851,7 @@ "node_modules/trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" }, "node_modules/trim-trailing-lines": { "version": "1.1.4", @@ -12881,9 +12919,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16225,6 +16263,16 @@ "prop-types": "^15.6.2" } }, + "@docusaurus/remark-plugin-npm2yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.1.0.tgz", + "integrity": "sha512-crlbE7XN4m6f5PMW+1K0w1/r6YsJPBHPAnxBu+dwcObBYFKeNnmtci8mBOX/Ey1eeV9wO1yFwaSWKEn1EAbcbQ==", + "requires": { + "npm-to-yarn": "^1.0.1", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3" + } + }, "@docusaurus/responsive-loader": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz", @@ -18835,6 +18883,15 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, + "docusaurus-remark-plugin-tab-blocks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/docusaurus-remark-plugin-tab-blocks/-/docusaurus-remark-plugin-tab-blocks-1.2.0.tgz", + "integrity": "sha512-uG8Bac8JGWeuKY8dali3DqiJaGHYE0k2QKmp9h6qYRPdL+1ruUMNQx5lZpJ6sdiUcyOSHYgvNKuJFbfg6ZlH9w==", + "requires": { + "unist-util-is": "^4.0.0", + "unist-util-visit": "^2.0.0" + } + }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -21254,6 +21311,11 @@ "path-key": "^3.0.0" } }, + "npm-to-yarn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-1.0.1.tgz", + "integrity": "sha512-bp8T8oNMfLW+N/fE0itFfSu7RReytwhqNd9skbkfHfzGYC+5CCdzS2HnaXz6JiG4AlK2eA0qlT6NJN1SoFvcWQ==" + }, "nprogress": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", @@ -23687,7 +23749,7 @@ "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" }, "trim-trailing-lines": { "version": "1.1.4", @@ -23735,9 +23797,9 @@ } }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==" + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==" }, "ua-parser-js": { "version": "0.7.31", diff --git a/website/package.json b/website/package.json index fbda199873..fb26a4d8a4 100644 --- a/website/package.json +++ b/website/package.json @@ -17,8 +17,10 @@ "@docusaurus/plugin-ideal-image": "^2.1.0", "@docusaurus/plugin-pwa": "^2.1.0", "@docusaurus/preset-classic": "^2.1.0", + "@docusaurus/remark-plugin-npm2yarn": "^2.1.0", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", + "docusaurus-remark-plugin-tab-blocks": "^1.2.0", "latest-version": "^7.0.0", "react": "^16.14.0", "react-dom": "^16.14.0" @@ -28,7 +30,7 @@ "@docusaurus/module-type-aliases": "^2.1.0", "@tsconfig/docusaurus": "^1.0.6", "@types/react": "^16.14.24", - "typescript": "~4.8.2" + "typescript": "~4.8.3" }, "browserslist": { "production": [ diff --git a/website/versioned_docs/version-29.0/babel7-or-ts.md b/website/versioned_docs/version-29.0/babel7-or-ts.md new file mode 100644 index 0000000000..d25375ba18 --- /dev/null +++ b/website/versioned_docs/version-29.0/babel7-or-ts.md @@ -0,0 +1,76 @@ +--- +id: babel7-or-ts +title: Babel7 or TypeScript +--- + +In Sept. 2018 Babel7 got released with an interesting preset: `@babel/preset-typescript`. + +The goal is to make it easy for users using Babel to try TypeScript without moving out from Babel, just by adding a preset in their Babel config (here is the [MSDN blog post](https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/) about TypeScript and Babel 7). + +## Limitations + +While `@babel/preset-typescript` is a great preset, you must know the limitation of it. Here is what is possible with TypeScript (and `ts-jest`), which is not with Babel7 and `@babel/preset-typescript`: + +#### No type-checking + +This is the big **PRO** of using TypeScript vs Babel, you have type-checking out of the box. + +You'll get a more fluent TDD experience (when using `ts-jest`) since files will be type-checked at the same time they're compiled and ran. + +Here TypeScript will throw while Babel won't: + +```ts +const str: string = 42 +``` + +With Babel, files are transpiled as isolated modules, there is no notion of "project". With TypeScript, files are part of a project and are compiled in that scope. + +--- + +#### No `namespace` + +```ts +namespace app { + export const VERSION = '1.0.0' + export class App { + /* ... */ + } +} +``` + +--- + +#### No `const enum` + +```ts +const enum Directions { + Up, + Down, + Left, + Right, +} +``` + +--- + +#### No declaration merging (`enum`, `namespace`, ...) + +You won't be able to do [declaration merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html). + +--- + +#### No legacy `import`/`export` + +```ts +import lib = require('lib') +// ... +export = myVar +``` + +--- + +#### No caret type-casting with JSX enabled + +```ts +const val = input +``` diff --git a/website/versioned_docs/version-29.0/contributing.md b/website/versioned_docs/version-29.0/contributing.md new file mode 100644 index 0000000000..f2b57691e7 --- /dev/null +++ b/website/versioned_docs/version-29.0/contributing.md @@ -0,0 +1,174 @@ +--- +id: contributing +title: Contributing +--- + +When contributing to this repository, please first discuss the change you wish to make via [`ts-jest` GitHub discussion](https://github.com/kulshekhar/ts-jest/discussions) or [issue](https://github.com/kulshekhar/ts-jest/issues) with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Process + +1. Ensure the tests are passing and that you have latest `main` branch merged in. +2. Update the `docs/` with details of your changes if required. +3. If possible, squash your commits. There must be only one commit in your PR (until a review). Then after each review requesting changes, DO NOT squash your commits with the one before the review, so that we can see intermediate modifications. +4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. + +_These are internal technical documents. If you're not a contributor to `ts-jest`, but simply trying to use the library you'll find nothing of value here_ + +## E2E Testing + +### Preparing + +The preparation of E2E test directory is done in `scripts/e2e.js`. Here is the process: + +```plantuml +start + +:bundle ts-jest; +note right +will build ts-jest before creating the bundle +end note + +:create temp work dir; +note right +`e2e/~__workdir_symlink__` links to it +except on CI environments +end note + +while (for each template) +note right +templates are in `e2e/~__templates__/` +end note + +if (template's build directory) then (exists) +:wipe but `node_modules` dir; +else (not exists) +:create; +endif + +:copy files from template's dir to its build dir; + +if (package lock file) then (exists) +:read metadata; + + if (package lock file) then (has changed) + :remove `node_modules` dir; + + :npm install (or ci); + + :npm install ts-jest bundle; + + else if (ts-jest bundle) then (has changed) + :npm install ts-jest bundle; + + else (hasn't changed) + endif + :write updated metadata; + +else (not exists) +endif + +endwhile (done) + +:all templates ready; + +stop +``` + +### Running + +When a test-case needs to be run with a given template within tests, here is what's happening (in `e2e/__helpers__/test-case/runtime.ts`): + +```plantuml +start + +:create work dir; +note right +It'll be different per test-case +and per template basis. +end note +-> e2e/~__workdir_symlink__/{template}/{test-case}; + +if (has a node_modules dir?) then (yes) +:symlink node_modules; +note left +avoid re-running npm install +for each test case and template; +end note +else (no) +endif + +:copy files from template; +note right +all files in template dir are +copied to test case work dir +except `node_modules` and +`package-lock.json` +end note + +while (for each file in test case dir) +if (is snapshot dir) then (yes) +:symlink dir; +note left +snapshots directories are symlinked +to test case source dir so that +updating them would update in the +source folder +end note + +else if (is jest.config.js) then (yes) +if (jest.config.js is function?) then (yes) +:call with parent content; +note left +allows for +extending +end note +else (no) +endif + +else (others) +:copy; +note right +all files in test case source +dir are copied to the work dir +except `node_modules` and +`package-lock.json` +end note + +endif +endwhile + +:create special files; +note right +some special files are created +to handle hooks for example and +grab `process()` IO for later +expectations +end note + +:update package.json; +note right +set a custom but fixed name +and version in package.json +which is specific to the +test case + template +end note + +#tomato:run tests; + +while (for each snapshot) is (missing in test case) +:copy; +note right +while we symlinked each snapshots +directory, newly created snapshots +in non existing dir will need to +be copied over into +e2e/~__cases__/{test-case} +end note +endwhile + +:return results; + +stop +``` diff --git a/website/versioned_docs/version-29.0/debugging.md b/website/versioned_docs/version-29.0/debugging.md new file mode 100644 index 0000000000..715d77c142 --- /dev/null +++ b/website/versioned_docs/version-29.0/debugging.md @@ -0,0 +1,26 @@ +--- +id: debugging +title: Debugging ts-jest +--- + +You can activate the debug logger by setting the environment variable `TS_JEST_LOG` before running tests. +The output of the logger will be in **ts-jest.log** in current working directory. + +The debug logger contains some useful information about how internal `ts-jest` works, including which files are processed, +which Jest config or TypeScript config is used etc. + +**Linux/MacOS** + +``` +export TS_JEST_LOG=ts-jest.log +``` + +**Windows** + +```Command Prompt tab +set TS_JEST_LOG=ts-jest.log +``` + +```PowerShell tab +$env:TS_JEST_LOG = 'ts-jest.log' +``` diff --git a/website/versioned_docs/version-29.0/getting-started/installation.md b/website/versioned_docs/version-29.0/getting-started/installation.md new file mode 100644 index 0000000000..ce10bbc49f --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/installation.md @@ -0,0 +1,46 @@ +--- +id: installation +title: Installation +--- + +### Dependencies + +You can install `ts-jest` and dependencies all at once with one of the following commands. + +```bash npm2yarn +npm install --save-dev jest typescript ts-jest @types/jest +``` + +:::tip + +Tip: If you get an error with the following `npm` commands such as `npx: command not found`, you can replace `npx XXX` with `node node_modules/.bin/XXX` from the root of your project. + +::: + +### Jest config file + +#### Creating + +By default, Jest can run without any config files, but it will not compile `.ts` files. +To make it transpile TypeScript with `ts-jest`, we will need to create a configuration file that will tell Jest to use a `ts-jest` preset. + +`ts-jest` can create the configuration file for you automatically: + +```npm tab +npx ts-jest config:init +``` + +```Yarn tab +yarn ts-jest config:init +``` + +This will create a basic Jest configuration file which will inform Jest about how to handle `.ts` files correctly. + +You can also use the `jest --init` command (prefixed with either `npx` or `yarn` depending on what you're using) to have more options related to Jest. +However, answer `no` to the Jest question about whether or not to enable TypeScript. Instead, add the line: `preset: "ts-jest"` to the `jest.config.js` file afterwards. + +#### Customizing + +For customizing jest, please follow their [official guide online](https://jestjs.io/docs/en/configuration.html). + +`ts-jest` specific options can be found [here](options). diff --git a/website/versioned_docs/version-29.0/getting-started/options.md b/website/versioned_docs/version-29.0/getting-started/options.md new file mode 100644 index 0000000000..7c32104afd --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options.md @@ -0,0 +1,87 @@ +--- +id: options +title: Options +--- + +### Introduction + +All `ts-jest` specific options can be defined in Jest `transform` config object in the `package.json` file of your project, +or through a `jest.config.js`, or `jest.config.ts` file. + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + // ts-jest configuration goes here + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + // ts-jest configuration goes here + }, + ], + }, +} +``` + +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + // ts-jest configuration goes here + } + ] + } + } +} +``` + +:::important + +When using TypeScript Jest config file, Jest will use `ts-node` to compile the config file. `ts-jest` doesn't take part in +that process. + +::: + +### Options + +All options have default values which should fit most of the projects. Click on the option's name to see details and example(s). + +| Option | Description | Type | Default | +| ------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ----------------------------- | -------------- | +| [**`compiler`**][compiler] | [TypeScript module to use as compiler.][compiler] | `string` | `"typescript"` | +| [**`tsconfig`**][tsconfig] | [TypeScript compiler related configuration.][tsconfig] | `string`\|`object`\|`boolean` | _auto_ | +| [**`isolatedModules`**][isolatedmodules] | [Disable type-checking][isolatedmodules] | `boolean` | _disabled_ | +| [**`astTransformers`**][asttransformers] | [Custom TypeScript AST transformers][asttransformers] | `object` | _auto_ | +| [**`diagnostics`**][diagnostics] | [Diagnostics related configuration.][diagnostics] | `boolean`\|`object` | _enabled_ | +| [**`babelConfig`**][babelconfig] | [Babel(Jest) related configuration.][babelconfig] | `boolean`\|`string`\|`object` | _disabled_ | +| [**`stringifyContentPathRegex`**][stringifycontentpathregex] | [Files which will become modules returning self content.][stringifycontentpathregex] | `string`\|`RegExp` | _disabled_ | +| [**`useESM`**][useesm] | [Enable ESM support][useesm] | `boolean` | _auto_ | + +[compiler]: options/compiler +[tsconfig]: options/tsconfig +[isolatedmodules]: options/isolatedModules +[asttransformers]: options/astTransformers +[diagnostics]: options/diagnostics +[babelconfig]: options/babelConfig +[stringifycontentpathregex]: options/stringifyContentPathRegex +[useesm]: options/useESM diff --git a/website/versioned_docs/version-29.0/getting-started/options/astTransformers.md b/website/versioned_docs/version-29.0/getting-started/options/astTransformers.md new file mode 100644 index 0000000000..d42801457e --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/astTransformers.md @@ -0,0 +1,148 @@ +--- +title: AST transformers option +--- + +`ts-jest` by default does hoisting for a few `jest` methods via a TypeScript AST transformer. One can also create custom +TypeScript AST transformers and provide them to `ts-jest` to include into compilation process. + +The option is `astTransformers` and it allows ones to specify which 3 types of TypeScript AST transformers to use with `ts-jest`: + +- `before` means your transformers get run before TS ones, which means your transformers will get raw TS syntax + instead of transpiled syntax (e.g `import` instead of `require` or `define` ). +- `after` means your transformers get run after TS ones, which gets transpiled syntax. +- `afterDeclarations` means your transformers get run during `d.ts` generation phase, allowing you to transform output type declarations. + +### Examples + +#### Basic Transformers + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: ['my-custom-transformer'], + }, + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: ['my-custom-transformer'], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + "astTransformers": { + "before": ["my-custom-transformer"] + } + } + ] + } + } +} +``` + +#### Configuring transformers with options + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: [ + { + path: 'my-custom-transformer-that-needs-extra-opts', + options: {}, // extra options to pass to transformers here + }, + ], + }, + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + astTransformers: { + before: [ + { + path: 'my-custom-transformer-that-needs-extra-opts', + options: {}, // extra options to pass to transformers here + }, + ], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + "astTransformers": { + "before": [ + { + "path": "my-custom-transformer-that-needs-extra-opts", + "options": {} // extra options to pass to transformers here + } + ] + } + } + ] + } + } +} +``` + +### Writing custom TypeScript AST transformers + +To write a custom TypeScript AST transformers, one can take a look at [the one](https://github.com/kulshekhar/ts-jest/tree/main/src/transformers) that `ts-jest` is using. diff --git a/website/versioned_docs/version-29.0/getting-started/options/babelConfig.md b/website/versioned_docs/version-29.0/getting-started/options/babelConfig.md new file mode 100644 index 0000000000..4cd781ecab --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/babelConfig.md @@ -0,0 +1,216 @@ +--- +title: Babel Config option +--- + +`ts-jest` by default does **NOT** use Babel. But you may want to use it, especially if your code rely on Babel plugins to make some transformations. `ts-jest` can call the BabelJest processor once TypeScript has transformed the source into JavaScript. + +The option is `babelConfig` and it works pretty much as the `tsconfig` option, except that it is disabled by default. Here is the possible values it can take: + +- `false`: the default, disables the use of Babel +- `true`: enables Babel processing. `ts-jest` will try to find a `.babelrc`, `.babelrc.js`, `babel.config.js` file or a `babel` section in the `package.json` file of your project and use it as the config to pass to `babel-jest` processor. +- `{ ... }`: inline [Babel options](https://babeljs.io/docs/en/next/options). You can also set this to an empty object (`{}`) so that the default Babel config file is not used. + +### Examples + +#### Use default `babelrc` file + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: true, + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: true, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab +// OR package.json +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + "babelConfig": true + } + ] + } + } +} +``` + +#### Path to a `babelrc` file + +The path should be relative to the current working directory where you start Jest from. You can also use `\` in the path, or use an absolute path (this last one is strongly not recommended). + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: 'babelrc.test.js', + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: 'babelrc.test.js', + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + "babelConfig": "babelrc.test.js" + } + ] + } + } +} +``` + +or importing directly the config file: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: require('./babelrc.test.js'), + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' +import babelConfig from './babelrc.test.js' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig, + }, + ], + }, +} + +export default jestConfig +``` + +#### Inline compiler options + +Refer to the [Babel options](https://babeljs.io/docs/en/next/options) to know what can be used there. + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: { + comments: false, + plugins: ['@babel/plugin-transform-for-of'], + }, + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + '': [ + 'ts-jest', + { + babelConfig: { + comments: false, + plugins: ['@babel/plugin-transform-for-of'], + }, + }, + ], + }, +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + "transform": { + "": [ + "ts-jest", + { + "babelConfig": { + "comments": false, + "plugins": ["@babel/plugin-transform-for-of"] + } + } + ] + } + } +} +``` diff --git a/website/versioned_docs/version-29.0/getting-started/options/compiler.md b/website/versioned_docs/version-29.0/getting-started/options/compiler.md new file mode 100644 index 0000000000..85752446cc --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/compiler.md @@ -0,0 +1,61 @@ +--- +title: Compiler option +--- + +The `compiler` option allows you to define the compiler to be used. It'll be used to load the NodeJS module holding the TypeScript compiler. + +The default value is `typescript`, which will load the original [TypeScript compiler module](https://www.npmjs.com/package/typescript). +The loaded version will depend on the one installed in your project. + +If you use a custom compiler, such as `ttypescript`, make sure its API is the same as the original TypeScript, at least for what `ts-jest` is using. + +### Example + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "compiler": "ttypescript" + } + ] + } + } +} +``` diff --git a/website/versioned_docs/version-29.0/getting-started/options/diagnostics.md b/website/versioned_docs/version-29.0/getting-started/options/diagnostics.md new file mode 100644 index 0000000000..a46cdae138 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/diagnostics.md @@ -0,0 +1,266 @@ +--- +title: Diagnostics option +--- + +The `diagnostics` option configures error reporting. +It can both be enabled/disabled entirely or limited to a specific type of errors and/or files. + +If a diagnostic is not filtered out, `ts-jest` will fail the compilation and your test. + +### Disabling/enabling + +By default all diagnostics are enabled. This is the same as setting the `diagnostics` option to `true`. +To disable all diagnostics, set `diagnostics` to `false`. +This might lead to slightly better performance, especially if you're not using Jest's cache. + +### Advanced configuration + +The `diagnostics` option's value can also accept an object for more advanced configuration. Each config. key is optional: + +- **`warnOnly`**: If specified and `true`, diagnostics will be reported but won't stop compilation (default: _disabled_). +- **`ignoreCodes`**: List of TypeScript error codes to ignore. Complete list can be found [there](https://github.com/Microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json). By default here are the ones ignored: + - `6059`: _'rootDir' is expected to contain all source files._ + - `18002`: _The 'files' list in config file is empty._ (it is strongly recommended including this one) + - `18003`: _No inputs were found in config file._ +- **`exclude`**: If specified, diagnostics of source files which path **matches** will be ignored. This works a bit + similar to `tsconfig` option [exclude](https://www.typescriptlang.org/tsconfig#exclude) with the only difference is that + in TypeScript, `exclude` will also exclude files from compilation process. +- **`pretty`**: Enables/disables colorful and pretty output of errors (default: _enabled_). + +### Examples + +#### Disabling diagnostics + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "diagnostics": false + } + ] + } + } +} +``` + +#### Advanced options + +##### Enabling diagnostics for test files only + +Assuming all your test files ends with `.spec.ts` or `.test.ts`, using the following config will enable error reporting only for those files: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "diagnostics": { + "exclude": ["!**/*.(spec|test).ts"] + } + } + ] + } + } +} +``` + +##### Do not fail on first error + +While some diagnostics are stop-blockers for the compilation, most of them are not. If you want the compilation (and so your tests) to continue when encountering those, set the `warnOnly` to `true`: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "diagnostics": { + "warnOnly": true + } + } + ] + } + } +} +``` + +##### Ignoring some error codes + +All TypeScript error codes can be found [there](https://github.com/Microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json). The `ignoreCodes` option accepts this values: + +1. A single `number` (example: `1009`): unique error code to ignore +2. A `string` with a code (example `"1009"`, `"TS1009"` or `"TS1009"`) +3. A `string` with a list of the above (example: `"1009, TS2571, 4072"`) +4. An `array` of one or more from `1` or `3` (example: `[1009, "TS2571", "6031"]`) + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "diagnostics": { + "ignoreCodes": [2571, 6031, 18003] + } + } + ] + } + } +} +``` diff --git a/website/versioned_docs/version-29.0/getting-started/options/isolatedModules.md b/website/versioned_docs/version-29.0/getting-started/options/isolatedModules.md new file mode 100644 index 0000000000..42583151b7 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/isolatedModules.md @@ -0,0 +1,87 @@ +--- +title: Isolated Modules option +--- + +By default `ts-jest` uses TypeScript compiler in the context of a project (yours), with full type-checking and features. +But it can also be used to compile each file separately, what TypeScript calls an 'isolated module'. +That's what the `isolatedModules` option (which defaults to `false`) does. + +You'll lose type-checking ability and some features such as `const enum`, but in the case you plan on using Jest with the cache disabled (`jest --no-cache`), your tests will then run much faster. + +Here is how to disable type-checking and compile each file as an isolated module: + +### Example + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "isolatedModules": true + } + ] + } + } +} +``` + +## Performance + +Using `isolatedModules: false` comes with a cost of performance comparing to `isolatedModules: true`. There is a way +to improve the performance when using this mode by changing the value of `include` in `tsconfig` which is used by `ts-jest`. +The least amount of files which are provided in `include`, the more performance the test run can gain. + +### Example + +```json +// tsconfig.json +{ + // ...other configs + "include": ["my-typings/*", "my-global-modules/*"] +} +``` + +## Caveats + +Limiting the amount of files loaded via `include` can greatly boost performance when running tests. However, the trade off +is `ts-jest` might not recognize all files which are intended to use with `jest`. One can run into issues with custom typings, +global modules, etc... + +The suggested solution is what is needed for the test environment should be captured by +glob patterns in `include`, to gain both performance boost and avoid breaking behaviors. diff --git a/website/versioned_docs/version-29.0/getting-started/options/stringifyContentPathRegex.md b/website/versioned_docs/version-29.0/getting-started/options/stringifyContentPathRegex.md new file mode 100644 index 0000000000..cd4bbe8053 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/stringifyContentPathRegex.md @@ -0,0 +1,70 @@ +--- +title: Stringify content option +--- + +The `stringifyContentPathRegex` option has been kept for backward compatibility of `__HTML_TRANSFORM__` +It's a regular expression pattern used to match the path of file to be transformed. +If it matches, the file will be exported as a module exporting its content. + +Let's say for example that you have a file `foo.ts` which contains `export default "bar"`, and your `stringifyContentPathRegex` is set to `foo\\.ts$`, the resulting module won't be the result of compiling `foo.ts` source, but instead it'll be a module which exports the string `"export default \"bar\""`. + +**CAUTION**: Whatever file(s) you want to match with `stringifyContentPathRegex` pattern, you must ensure the Jest `transform` option pointing to `ts-jest` matches them. You may also have to add the extension(s) of this/those file(s) to `moduleFileExtensions` Jest option. + +### Example + +In the `jest.config.js` version, you could do as in the `package.json` version of the config, but extending from the preset will ensure more compatibility without any changes when updating. + +```js tab +const { defaults: tsjPreset } = require('ts-jest/presets') + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + moduleFileExtensions: [...tsjPreset.moduleFileExtensions, 'html'], + transform: { + ...tsjPreset.transform, + '\\.html$': [ + 'ts-jest', + { + stringifyContentPathRegex: /\.html$/, + }, + ], + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' +import tsJestPresets from 'ts-jest/presets' + +const jestConfig: JestConfigWithTsJest = { + // [...] + moduleFileExtensions: [...tsJestPresets.defaults.moduleFileExtensions, 'html'], + transform: { + ...tsJestPresets.defaults.transform, + '\\.html$': [ + 'ts-jest', + { + stringifyContentPathRegex: /\.html$/, + }, + ], + }, +} +``` + +```JSON tab +{ + // [...] + "jest": { + "moduleFileExtensions": ["js", "ts", "html"], + "transform": { + "\\.(html|ts|js)$": [ + "ts-jest", + { + "stringifyContentPathRegex": "\\.html$" + } + ] + } + } +} +``` diff --git a/website/versioned_docs/version-29.0/getting-started/options/tsconfig.md b/website/versioned_docs/version-29.0/getting-started/options/tsconfig.md new file mode 100644 index 0000000000..9ff0caff42 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/tsconfig.md @@ -0,0 +1,181 @@ +--- +title: TypeScript Config option +--- + +The `tsconfig` option allows you to define which `tsconfig` JSON file to use. An inline [compiler options][] object can also be specified instead of a file path. + +By default `ts-jest` will try to find a `tsconfig.json` in your project. If it cannot find one, it will use the default TypeScript [compiler options][]; except, `ES2015` is used as `target` instead of `ES5`. + +If you need to use defaults and force `ts-jest` to use the defaults even if there is a `tsconfig.json` in your project, you can set this option to `false`. + +### Examples + +#### Path to a `tsconfig` file + +The path should be relative to the current working directory where you start Jest from. You can also use `` in the path to start from the project root dir. + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "tsconfig": "tsconfig.test.json" + } + ] + } + } +} +``` + +#### Inline compiler options + +Refer to the TypeScript [compiler options][] for reference. +It's basically the same object you'd put in your `tsconfig.json`'s `compilerOptions`. + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "tsconfig": { + "importHelpers": true + } + } + ] + } + } +} +``` + +#### Disable auto-lookup + +By default `ts-jest` will try to find a `tsconfig.json` in your project. But you may not want to use it at all and keep TypeScript default options. You can achieve this by setting `tsconfig` to `false`. + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "tsconfig": { + "tsconfig": false + } + } + ] + } + } +} +``` + +[compiler options]: https://www.typescriptlang.org/docs/handbook/compiler-options.html#compiler-options diff --git a/website/versioned_docs/version-29.0/getting-started/options/useESM.md b/website/versioned_docs/version-29.0/getting-started/options/useESM.md new file mode 100644 index 0000000000..3f61df9711 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/options/useESM.md @@ -0,0 +1,58 @@ +--- +title: useESM option +--- + +The `useESM` option allows `ts-jest` to transform codes to ESM syntax **if possible**. + +The default value is **false**, `ts-jest` will transform codes to `CommonJS` syntax. + +### Examples + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + '": [ + "ts-jest", + { + "useESM": true + } + ] + } + } +} +``` diff --git a/website/versioned_docs/version-29.0/getting-started/paths-mapping.md b/website/versioned_docs/version-29.0/getting-started/paths-mapping.md new file mode 100644 index 0000000000..579bfa8b40 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/paths-mapping.md @@ -0,0 +1,96 @@ +--- +id: paths-mapping +title: Paths mapping +--- + +If you use ["baseUrl" and "paths" options](https://www.typescriptlang.org/docs/handbook/module-resolution.html) in your `tsconfig` file, you should make sure the ["moduleNameMapper"](https://jestjs.io/docs/configuration#modulenamemapper-objectstring-string--arraystring) option in your Jest config is setup accordingly. + +`ts-jest` provides a helper to transform the mapping from `tsconfig` to Jest config format, but it needs the `.js` version of the config file. + +### Example + +#### TypeScript config + +With the below config in your `tsconfig`: + +```json +// tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@App/*": ["src/*"], + "lib/*": ["common/*"] + } + } +} +``` + +#### Jest config (without helper) + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + moduleNameMapper: { + '^@App/(.*)$': '/src/$1', + '^lib/(.*)$': '/common/$1', + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + moduleNameMapper: { + '^@App/(.*)$': '/src/$1', + '^lib/(.*)$': '/common/$1', + }, +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + "moduleNameMapper": { + "^@App/(.*)$": "/src/$1", + "^lib/(.*)$": "/common/$1" + } + } +} +``` + +#### Jest config (with helper) + +```js tab +const { pathsToModuleNameMapper } = require('ts-jest') +// In the following statement, replace `./tsconfig` with the path to your `tsconfig` file +// which contains the path mapping (ie the `compilerOptions.paths` option): +const { compilerOptions } = require('./tsconfig') + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), +} +``` + +```ts tab +import { pathsToModuleNameMapper } from 'ts-jest' +// In the following statement, replace `./tsconfig` with the path to your `tsconfig` file +// which contains the path mapping (ie the `compilerOptions.paths` option): +import { compilerOptions } from './tsconfig' +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), +} + +export default jestConfig +``` diff --git a/website/versioned_docs/version-29.0/getting-started/presets.md b/website/versioned_docs/version-29.0/getting-started/presets.md new file mode 100644 index 0000000000..53d347cc39 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/presets.md @@ -0,0 +1,115 @@ +--- +id: presets +title: Presets +--- + +### The presets + +:::important + +Starting from **v28.0.0**, `ts-jest` will gradually opt in adoption of `esbuild`/`swc` more to improve the performance. To make the transition smoothly, we introduce `legacy` presets as a fallback when the new codes don't work yet. + +::: + +`ts-jest` comes with several presets, covering most of the project's base configuration: + +| Preset name | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ts-jest/presets/default`
or `ts-jest` | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **CommonJS** syntax, leaving JavaScript files (`.js`, `jsx`) as-is. | +| `ts-jest/presets/default-legacy`
or `ts-jest/legacy` (**LEGACY**) | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **CommonJS** syntax, leaving JavaScript files (`.js`, `jsx`) as-is. | +| `ts-jest/presets/default-esm`
| TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **ESM** syntax, leaving JavaScript files (`.js`, `jsx`) as-is. | +| `ts-jest/presets/default-esm-legacy`
(**LEGACY**) | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **ESM** syntax, leaving JavaScript files (`.js`, `jsx`) as-is. | +| `ts-jest/presets/js-with-ts` | TypeScript and JavaScript files (`.ts`, `.tsx`, `.js`, `.jsx`) will be transformed by `ts-jest` to **CommonJS** syntax.
You'll need to set `allowJs` to `true` in your `tsconfig.json` file. | +| `ts-jest/presets/js-with-ts-legacy` (**LEGACY**) | TypeScript and JavaScript files (`.ts`, `.tsx`, `.js`, `.jsx`) will be transformed by `ts-jest` to **CommonJS** syntax.
You'll need to set `allowJs` to `true` in your `tsconfig.json` file. | +| `ts-jest/presets/js-with-ts-esm` | TypeScript and JavaScript files (`.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`) will be transformed by `ts-jest` to **ESM** syntax.
You'll need to set `allowJs` to `true` in your `tsconfig.json` file. | +| `ts-jest/presets/js-with-ts-esm-legacy` (**LEGACY**) | TypeScript and JavaScript files (`.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`) will be transformed by `ts-jest` to **ESM** syntax.
You'll need to set `allowJs` to `true` in your `tsconfig.json` file. | +| `ts-jest/presets/js-with-babel` | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **CommonJS** syntax, and JavaScript files (`.js`, `jsx`) will be transformed by `babel-jest`. | +| `ts-jest/presets/js-with-babel-legacy` (**LEGACY**) | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **CommonJS** syntax, and JavaScript files (`.js`, `jsx`) will be transformed by `babel-jest`. | +| `ts-jest/presets/js-with-babel-esm` | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **ESM** syntax, and JavaScript files (`.js`, `jsx`, `.mjs`) will be transformed by `babel-jest`. | +| `ts-jest/presets/js-with-babel-esm-legacy` (**LEGACY**) | TypeScript files (`.ts`, `.tsx`) will be transformed by `ts-jest` to **ESM** syntax, and JavaScript files (`.js`, `jsx`, `.mjs`) will be transformed by `babel-jest`. | + +### Basic usage + +In most cases, simply setting the `preset` key to the desired preset name in your Jest config should be enough to start +using TypeScript with Jest (assuming you added `ts-jest` to your `devDependencies` of course): + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + // Replace `ts-jest` with the preset you want to use + // from the above list + preset: 'ts-jest', +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + // [...] + // Replace `ts-jest` with the preset you want to use + // from the above list + preset: 'ts-jest', +} + +export default jestConfig +``` + +```JSON tab +{ + // [...] + "jest": { + // Replace `ts-jest` with the preset you want to use + // from the above list + "preset": "ts-jest" + } +} +``` + +**Note:** presets use `testMatch`, like Jest does in its defaults. If you want to use `testRegex` instead in your configuration, you MUST set `testMatch` to `null` or Jest will bail. + +### Advanced + +Any preset can also be used with other options. +If you're already using another preset, you might want only some specific settings from the chosen `ts-jest` preset. +In this case you'll need to use the JavaScript version of Jest config (comment/uncomment according to your use case): + +```js tab +const { defaults: tsjPreset } = require('ts-jest/presets') +// const { defaultsESM: tsjPreset } = require('ts-jest/presets') +// const { jsWithTs: tsjPreset } = require('ts-jest/presets') +// const { jsWithTsESM: tsjPreset } = require('ts-jest/presets') +// const { jsWithBabel: tsjPreset } = require('ts-jest/presets') +// const { jsWithBabelESM: tsjPreset } = require('ts-jest/presets') + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + transform: { + ...tsjPreset.transform, + // [...] + }, +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +import { defaults as tsjPreset } from 'ts-jest/presets' +// import { defaultsESM as tsjPreset } from 'ts-jest/presets'; +// import { jsWithTs as tsjPreset } from 'ts-jest/presets'; +// import { jsWithTsESM as tsjPreset } from 'ts-jest/presets'; +// import { jsWithBabel as tsjPreset } from 'ts-jest/presets'; +// import { jsWithBabelESM as tsjPreset } from 'ts-jest/presets'; + +const jestConfig: JestConfigWithTsJest = { + // [...] + transform: { + ...tsjPreset.transform, + // [...] + }, +} + +export default jestConfig +``` diff --git a/website/versioned_docs/version-29.0/getting-started/version-checking.md b/website/versioned_docs/version-29.0/getting-started/version-checking.md new file mode 100644 index 0000000000..58c4f5ec67 --- /dev/null +++ b/website/versioned_docs/version-29.0/getting-started/version-checking.md @@ -0,0 +1,24 @@ +--- +id: version-checking +title: Version checking +--- + +By default, `ts-jest` supports a range of versions for `jest`/`typescript`. One uses incompatible versions will receive a warning +message while running tests. This warning message can be opt-out by setting environment variable `TS_JEST_DISABLE_VER_CHECKER`: + +**Linux/MacOS** + +``` +export TS_JEST_DISABLE_VER_CHECKER=true +``` + +**Windows** + +``` +set TS_JEST_DISABLE_VER_CHECKER=true +``` + +### Note + +As long as the environment variable `TS_JEST_DISABLE_VER_CHECKER` stays, the warning message will no longer show. +This can lead to unexpected errors due to the usage of incompatible versions' dependencies. Use this environment variable with precautions. diff --git a/website/versioned_docs/version-29.0/guides/esm-support.md b/website/versioned_docs/version-29.0/guides/esm-support.md new file mode 100644 index 0000000000..5e78bfa750 --- /dev/null +++ b/website/versioned_docs/version-29.0/guides/esm-support.md @@ -0,0 +1,168 @@ +--- +id: esm-support +title: ESM Support +--- + +To use `ts-jest` with ESM support: + +- Check [ESM Jest documentation](https://jestjs.io/docs/en/ecmascript-modules). +- Enable [useESM](../getting-started/options/useESM) `true` for `ts-jest` config. +- Include `.ts` in [extensionsToTreatAsEsm](https://jestjs.io/docs/en/next/configuration#extensionstotreatasesm-arraystring) Jest config option. +- Ensure that `tsconfig` has `module` with value for ESM, e.g. `ES2015` or `ES2020` etc... + +### ESM presets + +There are also [3 presets](../getting-started/presets.md) to work with ESM. + +### Examples + +#### Manual configuration + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + extensionsToTreatAsEsm: ['.ts'], + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + '": [ + "ts-jest", + { + "useESM": true + } + ] + } + } +} +``` + +#### Use ESM presets + +:::important + +Starting from **v28.0.0**, `ts-jest` will gradually switch to `esbuild`/`swc` to transform `ts` to `js`. To make the transition smoothly, we introduce `legacy` presets as a fallback when the new codes don't work yet. + +::: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + preset: 'ts-jest/presets/default-esm', // or other ESM presets + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + '": [ + "ts-jest", + { + "useESM": true + } + ] + } + } +} +``` + +#### Support `.mts` extension + +To work with `.mts` extension, besides the requirement to run Jest and `ts-jest` in ESM mode, there are a few extra requirements to be met: + +- `package.json` should contain `"type": "module"` +- A custom Jest resolver to resolve `.mjs` extension, see our simple one at https://github.com/kulshekhar/ts-jest/blob/main/e2e/native-esm-ts/mjs-resolver.ts +- `tsconfig.json` should at least contain these following options + +```json +{ + "compilerOptions": { + "module": "Node16", // or "NodeNext" + "target": "ESNext", + "moduleResolution": "Node16", // or "NodeNext" + "esModuleInterop": true + } +} +``` diff --git a/website/versioned_docs/version-29.0/guides/mock-es6-class.md b/website/versioned_docs/version-29.0/guides/mock-es6-class.md new file mode 100644 index 0000000000..07649fc13c --- /dev/null +++ b/website/versioned_docs/version-29.0/guides/mock-es6-class.md @@ -0,0 +1,75 @@ +--- +id: mock-es6-class +title: Mock ES6 class +--- + +TypeScript is transpiling your ts file and your module is likely being imported using ES2015s import. +`const soundPlayer = require('./sound-player')`. Therefore creating an instance of the class that was exported as +a default will look like this: `new soundPlayer.default()`. However if you are mocking the class as suggested by the documentation. + +```js tab +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return { playSoundFile: mockPlaySoundFile } + }) +}) +``` + +```ts tab +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return { playSoundFile: mockPlaySoundFile } + }) +}) +``` + +You will get the error + +``` +TypeError: sound_player_1.default is not a constructor +``` + +because `soundPlayer.default` does not point to a function. Your mock has to return an object which has a property default +that points to a function. + +```js tab +jest.mock('./sound-player', () => { + return { + default: jest.fn().mockImplementation(() => { + return { + playSoundFile: mockPlaySoundFile, + } + }), + } +}) +``` + +```ts tab +jest.mock('./sound-player', () => { + return { + default: jest.fn().mockImplementation(() => { + return { + playSoundFile: mockPlaySoundFile, + } + }), + } +}) +``` + +For named imports, like `import { OAuth2 } from './oauth'`, replace `default` with imported module name, `OAuth2` in this example: + +```js tab +jest.mock('./oauth', () => { + return { + OAuth2: ... // mock here + } +}) +``` + +```ts tab +jest.mock('./oauth', () => { + return { + OAuth2: ... // mock here + } +}) +``` diff --git a/website/versioned_docs/version-29.0/guides/react-native.md b/website/versioned_docs/version-29.0/guides/react-native.md new file mode 100644 index 0000000000..3e238797ea --- /dev/null +++ b/website/versioned_docs/version-29.0/guides/react-native.md @@ -0,0 +1,87 @@ +--- +id: react-native +title: Using with React Native +--- + +To use `ts-jest` with React Native + TypeScript and Babel 7, you'll first need to follow [this tutorial](https://reactnative.dev/blog/2018/05/07/using-typescript-with-react-native). + +After that, some little modifications will be required as follows: + +### Babel config + +If you didn't yet, move any Babel config from `.babelrc` to `babel.config.js`. It should at least contain: + +```js tab +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], +} +``` + +```ts tab +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + presets: ['module:metro-react-native-babel-preset'], +} + +export default jestConfig +``` + +### TypeScript Configuration + +Create a new `tsconfig.spec.json` at the root of your project with the following content + +```json +// tsconfig.spec.json +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react" + } +} +``` + +### Jest config + +In the same way that you moved Babel config, move Jest config from `jest` key of `package.json` to `jest.config.js`. It should look like this: + +```js tab +const { defaults: tsjPreset } = require('ts-jest/presets') + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'react-native', + transform: { + '^.+\\.jsx$': 'babel-jest', + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: 'tsconfig.spec.json', + }, + ], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +} +``` + +```ts tab +import { defaults as tsjPreset } from 'ts-jest/presets' +import type { JestConfigWithTsJest } from './types' + +const jestConfig: JestConfigWithTsJest = { + preset: 'react-native', + transform: { + '^.+\\.jsx$': 'babel-jest', + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: 'tsconfig.spec.json', + }, + ], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +} + +export default jestConfig +``` diff --git a/website/versioned_docs/version-29.0/guides/troubleshooting.md b/website/versioned_docs/version-29.0/guides/troubleshooting.md new file mode 100644 index 0000000000..f416b3fab7 --- /dev/null +++ b/website/versioned_docs/version-29.0/guides/troubleshooting.md @@ -0,0 +1,7 @@ +--- +id: troubleshooting +title: Troubleshooting +--- + +You can check Jest [troubleshooting guide](https://jestjs.io/docs/en/troubleshooting) or visit `ts-jest` [troubleshooting +guide](https://github.com/kulshekhar/ts-jest/blob/main/TROUBLESHOOTING.md) diff --git a/website/versioned_docs/version-29.0/guides/using-with-monorepo.md b/website/versioned_docs/version-29.0/guides/using-with-monorepo.md new file mode 100644 index 0000000000..62cb36bf8e --- /dev/null +++ b/website/versioned_docs/version-29.0/guides/using-with-monorepo.md @@ -0,0 +1,8 @@ +--- +id: using-with-monorepo +title: Using with monorepo +--- + +To use `ts-jest` in a project with monorepo structure, you'll need to use [Jest projects configuration](https://jestjs.io/docs/next/configuration#projects-arraystring--projectconfig). + +When using Jest `projects` configuration, Jest will run `ts-jest` against each project which is defined in the configuration. diff --git a/website/versioned_docs/version-29.0/introduction.md b/website/versioned_docs/version-29.0/introduction.md new file mode 100644 index 0000000000..32b0b2d94e --- /dev/null +++ b/website/versioned_docs/version-29.0/introduction.md @@ -0,0 +1,16 @@ +--- +id: introduction +title: Introduction +description: A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript. +slug: / +--- + +`ts-jest` is a Jest [transformer](https://jestjs.io/docs/next/code-transformation#writing-custom-transformers) with source map support that lets you use Jest to test projects written in TypeScript. + +It supports all features of TypeScript including type-checking. [Read more about Babel7 + `preset-typescript` **vs** TypeScript (and `ts-jest`)](babel7-or-ts). + +:::important + +We are not doing semantic versioning and `23.10` is a re-write, run `npm i -D ts-jest@"<23.10.0"` to go back to the previous version + +::: diff --git a/website/versioned_docs/version-29.0/migration.md b/website/versioned_docs/version-29.0/migration.md new file mode 100644 index 0000000000..5a788a6b0a --- /dev/null +++ b/website/versioned_docs/version-29.0/migration.md @@ -0,0 +1,26 @@ +--- +id: migration +title: Migration from <=23.10 +--- + +You can use the `config:migrate` tool of `ts-jest` CLI if you're coming from an older version to help you migrate your Jest configuration. + +_If you're using `jest.config.js`:_ + +```npm tab +npx ts-jest config:migrate jest.config.js +``` + +```Yarn tab +yarn ts-jest config:migrate jest.config.js +``` + +_If you're using `jest` config property of `package.json`:_ + +```npm tab +npx ts-jest config:migrate package.json +``` + +```Yarn tab +yarn ts-jest config:migrate package.json +``` diff --git a/website/versioned_docs/version-29.0/processing.md b/website/versioned_docs/version-29.0/processing.md new file mode 100644 index 0000000000..bf881e2bd1 --- /dev/null +++ b/website/versioned_docs/version-29.0/processing.md @@ -0,0 +1,147 @@ +--- +id: processing +title: Processing flow +--- + +_These are internal technical documents. If you're not a contributor to `ts-jest`, but simply trying to use the library you'll find nothing of value here_ + +## Jest process + +```plantuml +start + +:require('file'); + +if (has a transform?) then (yes) +if (transformer has getCacheKey?) then (yes) +:transformer.getCacheKey(...); +else (no) +:use jest built-in; +endif + +if (in cache?) then (yes) +:use cache content; +else (no) +:transformer.process(...); +:update cache; +endif + +else (no) +endif + +:require(); + +end +``` + +## `ts-jest` process + +```plantuml +|processor| +start + +:tsJest.process(source); + +if (should stringify?) then (yes) +:json stringify; +-> update +source; + +else (no) +endif + +if (filename ends with .d.ts) then (yes) +:wipe source; +note right +no need to compile +definition files +end note + +else (no) + +|#Thistle|compiler (cached)| +if (isolated modules?) then (yes) +else (no) +:create and cache +ts lang service; +endif + +-> source; + +if (in persistent cache?) then (yes) +:update mem cache +from persistent cache; + +else (no) +if (isolated modules?) then (yes) +:compile with +transpileModule; +note left +files will be compiled +as isolated modules +end note + + else (no) + :compile with + service; + note left + make use of the service + created above and cached + + mem cache is used when + reading files + end note + + endif + + :custom AST + transformers; + note left + here is where hoisting of + jest.mock is done, as well as + user-defined transformations + based on config + end note + + -> compiled source; + + :fix source maps; + :update mem cache; + :update persistent cache; + +endif +|processor| + +-> update +source; + +endif + +if (should use babel?) then (yes) +:babelJest.process(source); +note left +calls babel-jest +processor +end note +-> update +source; + +else (no) +endif + +if (has afterProcess hook?) then (yes) +:call afterProcess hook; +-> update +source; +note left +if the hook returns +something it'll be +used as new source +end note + +endif + +:transformed source; + +end +``` diff --git a/website/versioned_sidebars/version-29.0-sidebars.json b/website/versioned_sidebars/version-29.0-sidebars.json new file mode 100644 index 0000000000..4e2b4d8a29 --- /dev/null +++ b/website/versioned_sidebars/version-29.0-sidebars.json @@ -0,0 +1,89 @@ +{ + "version-29.0-docs": [ + { + "collapsed": true, + "type": "category", + "label": "ts-jest", + "items": [ + { + "type": "doc", + "id": "version-29.0/introduction" + }, + { + "type": "doc", + "id": "version-29.0/processing" + }, + { + "type": "doc", + "id": "version-29.0/contributing" + } + ] + }, + { + "collapsed": false, + "type": "category", + "label": "Getting Started", + "items": [ + { + "type": "doc", + "id": "version-29.0/getting-started/installation" + }, + { + "type": "doc", + "id": "version-29.0/getting-started/presets" + }, + { + "type": "doc", + "id": "version-29.0/getting-started/options" + }, + { + "type": "doc", + "id": "version-29.0/getting-started/paths-mapping" + }, + { + "type": "doc", + "id": "version-29.0/getting-started/version-checking" + } + ] + }, + { + "collapsed": false, + "type": "category", + "label": "Guides", + "items": [ + { + "type": "doc", + "id": "version-29.0/guides/esm-support" + }, + { + "type": "doc", + "id": "version-29.0/guides/mock-es6-class" + }, + { + "type": "doc", + "id": "version-29.0/guides/react-native" + }, + { + "type": "doc", + "id": "version-29.0/guides/troubleshooting" + }, + { + "type": "doc", + "id": "version-29.0/guides/using-with-monorepo" + } + ] + }, + { + "type": "doc", + "id": "version-29.0/babel7-or-ts" + }, + { + "type": "doc", + "id": "version-29.0/migration" + }, + { + "type": "doc", + "id": "version-29.0/debugging" + } + ] +} diff --git a/website/versions.json b/website/versions.json index f539972e58..4553dc14d4 100644 --- a/website/versions.json +++ b/website/versions.json @@ -1,4 +1,5 @@ [ + "29.0", "28.0", "27.1", "27.0",