From 23e8be51bf0b4f6785215c57e107f0c383a812ad Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Wed, 3 Aug 2022 09:23:56 -0700 Subject: [PATCH 01/22] Move jest to root --- package-scripts.js | 3 + package.json | 8 +- packages/spectacle/package.json | 10 +- pnpm-lock.yaml | 1091 ++++++++++++++++--------------- 4 files changed, 585 insertions(+), 527 deletions(-) diff --git a/package-scripts.js b/package-scripts.js index 9b0d470ea..2c3256b8e 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -30,6 +30,9 @@ module.exports = { // - Webpack webpack: 'webpack', + // Test + jest: 'jest', + // Quality. // - Format 'prettier:base': diff --git a/package.json b/package.json index f34e616a9..c77afed5c 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,10 @@ "@babel/preset-typescript": "^7.16.0", "@changesets/cli": "^2.23.1", "@svitejs/changesets-changelog-github-compact": "^0.1.1", - "@types/jest": "^27.0.2", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.3.0", + "@types/jest": "^27.5.2", + "@types/testing-library__jest-dom": "^5.14.5", "@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/parser": "^5.4.0", "babel-eslint": "^10.1.0", @@ -23,10 +26,13 @@ "eslint-plugin-react": "^7.27.0", "eslint-plugin-react-hooks": "^4.3.0", "html-webpack-plugin": "^5.5.0", + "jest": "^28.1.3", + "jest-environment-jsdom": "^28.1.3", "nps": "^5.10.0", "prettier": "^2.4.1", "raw-loader": "^4.0.0", "rimraf": "^3.0.0", + "ts-jest": "^28.0.7", "typescript": "^4.7.4", "webpack": "^5.68.0", "webpack-cli": "^4.10.0", diff --git a/packages/spectacle/package.json b/packages/spectacle/package.json index 39c0d477d..bbda7af56 100644 --- a/packages/spectacle/package.json +++ b/packages/spectacle/package.json @@ -47,10 +47,7 @@ "react-dom": ">=17.0.2" }, "devDependencies": { - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^13.3.0", "@types/history": "^4.7.9", - "@types/jest": "^27.0.2", "@types/mousetrap": "^1.6.8", "@types/react": "^18.0.12", "@types/react-dom": "^18.0.5", @@ -58,14 +55,11 @@ "@types/react-syntax-highlighter": "^15.5.2", "@types/styled-components": "^5.1.15", "@types/styled-system": "^5.1.5", - "@types/testing-library__jest-dom": "^5.14.5", "@types/unist": "^2.0.6", "csstype": "^3.1.0", - "jest": "^27.3.1", "process": "^0.11.10", "react": "^18.1.0", - "react-dom": "^18.1.0", - "ts-jest": "^27.0.7" + "react-dom": "^18.1.0" }, "resolutions": { "@types/react": "^18.0.12" @@ -252,7 +246,7 @@ ] }, "test": { - "command": "jest", + "command": "nps jest", "files": [ "src/**", "../../.babelrc.js" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50a736642..bb5aaed75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,10 @@ importers: '@babel/preset-typescript': ^7.16.0 '@changesets/cli': ^2.23.1 '@svitejs/changesets-changelog-github-compact': ^0.1.1 - '@types/jest': ^27.0.2 + '@testing-library/jest-dom': ^5.16.4 + '@testing-library/react': ^13.3.0 + '@types/jest': ^27.5.2 + '@types/testing-library__jest-dom': ^5.14.5 '@typescript-eslint/eslint-plugin': ^5.4.0 '@typescript-eslint/parser': ^5.4.0 babel-eslint: ^10.1.0 @@ -26,10 +29,13 @@ importers: eslint-plugin-react: ^7.27.0 eslint-plugin-react-hooks: ^4.3.0 html-webpack-plugin: ^5.5.0 + jest: ^28.1.3 + jest-environment-jsdom: ^28.1.3 nps: ^5.10.0 prettier: ^2.4.1 raw-loader: ^4.0.0 rimraf: ^3.0.0 + ts-jest: ^28.0.7 typescript: ^4.7.4 webpack: ^5.68.0 webpack-cli: ^4.10.0 @@ -45,7 +51,10 @@ importers: '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 '@changesets/cli': 2.23.1 '@svitejs/changesets-changelog-github-compact': 0.1.1 + '@testing-library/jest-dom': 5.16.4 + '@testing-library/react': 13.3.0 '@types/jest': 27.5.2 + '@types/testing-library__jest-dom': 5.14.5 '@typescript-eslint/eslint-plugin': 5.30.5_6zdoc3rn4mpiddqwhppni2mnnm '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm babel-eslint: 10.1.0_eslint@8.19.0 @@ -58,10 +67,13 @@ importers: eslint-plugin-react: 7.30.1_eslint@8.19.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.19.0 html-webpack-plugin: 5.5.0_webpack@5.73.0 + jest: 28.1.3 + jest-environment-jsdom: 28.1.3 nps: 5.10.0 prettier: 2.7.1 raw-loader: 4.0.2_webpack@5.73.0 rimraf: 3.0.2 + ts-jest: 28.0.7_3gxlygumywb42qewtlgc3ofbpu typescript: 4.7.4 webpack: 5.73.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_6rc575xxn4hngez2jk2zkyfdoi @@ -130,10 +142,7 @@ importers: packages/spectacle: specifiers: - '@testing-library/jest-dom': ^5.16.4 - '@testing-library/react': ^13.3.0 '@types/history': ^4.7.9 - '@types/jest': ^27.0.2 '@types/mousetrap': ^1.6.8 '@types/react': ^18.0.12 '@types/react-dom': ^18.0.5 @@ -141,12 +150,10 @@ importers: '@types/react-syntax-highlighter': ^15.5.2 '@types/styled-components': ^5.1.15 '@types/styled-system': ^5.1.5 - '@types/testing-library__jest-dom': ^5.14.5 '@types/unist': ^2.0.6 broadcast-channel: ^3.2.0 csstype: ^3.1.0 history: ^4.9.0 - jest: ^27.3.1 kbar: 0.1.0-beta.36 mdast-builder: ^1.1.1 mdast-zone: ^4.0.0 @@ -167,7 +174,6 @@ importers: remark-rehype: ^7.0.0 styled-components: ^4.3.2 styled-system: 5.1.5 - ts-jest: ^27.0.7 ulid: ^2.3.0 unified: ^9.0.0 unist-util-visit: ^2.0.3 @@ -197,10 +203,7 @@ importers: unist-util-visit: 2.0.3 use-resize-observer: 6.1.0_biqbaboplfbrettd7655fr4n2y devDependencies: - '@testing-library/jest-dom': 5.16.4 - '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y '@types/history': 4.7.11 - '@types/jest': 27.5.2 '@types/mousetrap': 1.6.9 '@types/react': 18.0.15 '@types/react-dom': 18.0.6 @@ -208,14 +211,11 @@ importers: '@types/react-syntax-highlighter': 15.5.2 '@types/styled-components': 5.1.25 '@types/styled-system': 5.1.15 - '@types/testing-library__jest-dom': 5.14.5 '@types/unist': 2.0.6 csstype: 3.1.0 - jest: 27.5.1 process: 0.11.10 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - ts-jest: 27.1.5_sc3ftmj3puoex6bziyktvlzr6q packages: @@ -1775,97 +1775,114 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/console/28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 '@types/node': 18.0.3 chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + jest-message-util: 28.1.3 + jest-util: 28.1.3 slash: 3.0.0 dev: true - /@jest/core/27.5.1: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/core/28.1.3: + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/console': 28.1.3 + '@jest/reporters': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.8.1 + ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 27.5.1 - jest-config: 27.5.1 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 + jest-changed-files: 28.1.3 + jest-config: 28.1.3_@types+node@18.0.3 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-resolve-dependencies: 28.1.3 + jest-runner: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + jest-watcher: 28.1.3 micromatch: 4.0.5 + pretty-format: 28.1.3 rimraf: 3.0.2 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - ts-node - - utf-8-validate dev: true - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/environment/28.1.3: + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 - jest-mock: 27.5.1 + jest-mock: 28.1.3 dev: true - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/expect-utils/28.1.3: + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + dev: true + + /@jest/expect/28.1.3: + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + expect: 28.1.3 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers/28.1.3: + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 '@types/node': 18.0.3 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 dev: true - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/globals/28.1.3: + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color dev: true - /@jest/reporters/27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/reporters/28.1.3: + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -1873,10 +1890,11 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/console': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.14 '@types/node': 18.0.3 chalk: 4.1.2 collect-v8-coverage: 1.0.1 @@ -1887,82 +1905,87 @@ packages: istanbul-lib-instrument: 5.2.0 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.4 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 + istanbul-reports: 3.1.5 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + jest-worker: 28.1.3 slash: 3.0.0 - source-map: 0.6.1 string-length: 4.0.2 + strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 + v8-to-istanbul: 9.0.1 transitivePeerDependencies: - supports-color dev: true - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/schemas/28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: + '@sinclair/typebox': 0.24.26 + dev: true + + /@jest/source-map/28.1.2: + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.14 callsites: 3.1.0 graceful-fs: 4.2.10 - source-map: 0.6.1 dev: true - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-result/28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-sequencer/28.1.3: + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/test-result': 27.5.1 + '@jest/test-result': 28.1.3 graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color + jest-haste-map: 28.1.3 + slash: 3.0.0 dev: true - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/transform/28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/core': 7.18.6 - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.14 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.1 transitivePeerDependencies: - supports-color dev: true - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/types/28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: + '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 18.0.3 - '@types/yargs': 16.0.4 + '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -2093,14 +2116,18 @@ packages: tslib: 2.4.0 dev: false + /@sinclair/typebox/0.24.26: + resolution: {integrity: sha512-1ZVIyyS1NXDRVT8GjWD5jULjhDyM3IsIHef2VGUMdnWOlX2tkPjyEX/7K0TGSH2S8EaPhp1ylFdjSjUGQ+gecg==} + dev: true + /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.3 dev: true @@ -2192,8 +2219,8 @@ packages: - encoding dev: true - /@testing-library/dom/8.14.0: - resolution: {integrity: sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA==} + /@testing-library/dom/8.16.0: + resolution: {integrity: sha512-uxF4zmnLHHDlmW4l+0WDjcgLVwCvH+OVLpD8Dfp+Bjfz85prwxWGbwXgJdLtkgjD0qfOzkJF9SmA6YZPsMYX4w==} engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 @@ -2221,7 +2248,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react/13.3.0_biqbaboplfbrettd7655fr4n2y: + /@testing-library/react/13.3.0: resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} engines: {node: '>=12'} peerDependencies: @@ -2229,15 +2256,13 @@ packages: react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.18.6 - '@testing-library/dom': 8.14.0 + '@testing-library/dom': 8.16.0 '@types/react-dom': 18.0.6 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 dev: true - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} + /@tootallnate/once/2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} dev: true /@types/aria-query/4.2.2: @@ -2396,6 +2421,14 @@ packages: pretty-format: 27.5.1 dev: true + /@types/jsdom/16.2.15: + resolution: {integrity: sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==} + dependencies: + '@types/node': 18.0.3 + '@types/parse5': 6.0.3 + '@types/tough-cookie': 4.0.2 + dev: true + /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -2434,8 +2467,12 @@ packages: resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} dev: false - /@types/prettier/2.6.3: - resolution: {integrity: sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==} + /@types/parse5/6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: true + + /@types/prettier/2.6.4: + resolution: {integrity: sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==} dev: true /@types/prop-types/15.7.5: @@ -2531,6 +2568,10 @@ packages: '@types/jest': 27.5.2 dev: true + /@types/tough-cookie/4.0.2: + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + dev: true + /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} @@ -2544,8 +2585,8 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + /@types/yargs/17.0.10: + resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: '@types/yargs-parser': 21.0.0 dev: true @@ -3079,18 +3120,17 @@ packages: - supports-color dev: true - /babel-jest/27.5.1_@babel+core@7.18.6: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-jest/28.1.3_@babel+core@7.18.6: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.18.6 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/transform': 28.1.3 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.18.6 + babel-preset-jest: 28.1.3_@babel+core@7.18.6 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -3132,9 +3172,9 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-plugin-jest-hoist/28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/template': 7.18.6 '@babel/types': 7.18.7 @@ -3224,14 +3264,14 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.6 dev: true - /babel-preset-jest/27.5.1_@babel+core@7.18.6: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-preset-jest/28.1.3_@babel+core@7.18.6: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.18.6 - babel-plugin-jest-hoist: 27.5.1 + babel-plugin-jest-hoist: 28.1.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 dev: true @@ -3808,8 +3848,8 @@ packages: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + /cssom/0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true /cssstyle/2.3.0: @@ -3845,13 +3885,13 @@ packages: stream-transform: 2.1.3 dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} + /data-urls/3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} dependencies: abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 dev: true /dataloader/1.4.0: @@ -3997,6 +4037,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /diff-sequences/28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4051,11 +4096,11 @@ packages: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} + /domexception/4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} dependencies: - webidl-conversions: 5.0.0 + webidl-conversions: 7.0.0 dev: true /domhandler/4.3.1: @@ -4107,9 +4152,9 @@ packages: resolution: {integrity: sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==} dev: true - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} + /emittery/0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} dev: true /emoji-regex/7.0.3: @@ -4460,14 +4505,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect/27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /expect/28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 + '@jest/expect-utils': 28.1.3 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 dev: true /express/4.18.1: @@ -4692,8 +4738,8 @@ packages: optional: true dev: true - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -5026,11 +5072,11 @@ packages: resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} dev: true - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: - whatwg-encoding: 1.0.5 + whatwg-encoding: 2.0.0 dev: true /html-entities/2.3.3: @@ -5111,11 +5157,11 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + /http-proxy-agent/5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: - '@tootallnate/once': 1.1.2 + '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: @@ -5178,6 +5224,13 @@ packages: safer-buffer: 2.1.2 dev: true + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -5457,10 +5510,6 @@ packages: has-symbols: 1.0.3 dev: true - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true - /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -5547,53 +5596,52 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.4: - resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-changed-files/28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 execa: 5.1.1 - throat: 6.0.1 + p-limit: 3.1.0 dev: true - /jest-circus/27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-circus/28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 - expect: 27.5.1 is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 + jest-each: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + p-limit: 3.1.0 + pretty-format: 28.1.3 slash: 3.0.0 stack-utils: 2.0.5 - throat: 6.0.1 transitivePeerDependencies: - supports-color dev: true - /jest-cli/27.5.1: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-cli/28.1.3: + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -5601,64 +5649,99 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/core': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 + jest-config: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 prompts: 2.4.2 - yargs: 16.2.0 + yargs: 17.5.1 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true - /jest-config/27.5.1: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-config/28.1.3: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: + '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: + '@types/node': + optional: true ts-node: optional: true dependencies: '@babel/core': 7.18.6 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.18.6 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + babel-jest: 28.1.3_@babel+core@7.18.6 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 27.5.1 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config/28.1.3_@types+node@18.0.3: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.0.3 + babel-jest: 28.1.3_@babel+core@7.18.6 + chalk: 4.1.2 + ci-info: 3.3.2 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true /jest-diff/27.5.1: @@ -5671,35 +5754,46 @@ packages: pretty-format: 27.5.1 dev: true - /jest-docblock/27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-diff/28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-docblock/28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-each/28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 dev: true - /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-environment-jsdom/28.1.3: + resolution: {integrity: sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/jsdom': 16.2.15 '@types/node': 18.0.3 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 + jest-mock: 28.1.3 + jest-util: 28.1.3 + jsdom: 19.0.0 transitivePeerDependencies: - bufferutil - canvas @@ -5707,16 +5801,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-environment-node/28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 - jest-mock: 27.5.1 - jest-util: 27.5.1 + jest-mock: 28.1.3 + jest-util: 28.1.3 dev: true /jest-get-type/27.5.1: @@ -5724,57 +5818,36 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type/28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-haste-map/28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 '@types/graceful-fs': 4.1.5 '@types/node': 18.0.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-jasmine2/27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.0.3 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector/27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-leak-detector/28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 dev: true /jest-matcher-utils/27.5.1: @@ -5787,30 +5860,40 @@ packages: pretty-format: 27.5.1 dev: true - /jest-message-util/27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-matcher-utils/28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-message-util/28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 27.5.1 + pretty-format: 28.1.3 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-mock/28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 '@types/node': 18.0.3 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: + /jest-pnp-resolver/1.2.2_jest-resolve@28.1.3: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -5819,146 +5902,134 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.5.1 + jest-resolve: 28.1.3 dev: true - /jest-regex-util/27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-regex-util/28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dev: true - /jest-resolve-dependencies/27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve-dependencies/28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve/28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.2_jest-resolve@28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 resolve: 1.22.1 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runner/28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/console': 28.1.3 + '@jest/environment': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 chalk: 4.1.2 - emittery: 0.8.1 + emittery: 0.10.2 graceful-fs: 4.2.10 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.1 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.3 + jest-haste-map: 28.1.3 + jest-leak-detector: 28.1.3 + jest-message-util: 28.1.3 + jest-resolve: 28.1.3 + jest-runtime: 28.1.3 + jest-util: 28.1.3 + jest-watcher: 28.1.3 + jest-worker: 28.1.3 + p-limit: 3.1.0 + source-map-support: 0.5.13 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true - /jest-runtime/27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runtime/28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/globals': 28.1.3 + '@jest/source-map': 28.1.2 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 execa: 5.1.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-serializer/27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/node': 18.0.3 - graceful-fs: 4.2.10 - dev: true - - /jest-snapshot/27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-snapshot/28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/core': 7.18.6 '@babel/generator': 7.18.7 '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 '@babel/traverse': 7.18.6 '@babel/types': 7.18.7 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 '@types/babel__traverse': 7.17.1 - '@types/prettier': 2.6.3 + '@types/prettier': 2.6.4 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 chalk: 4.1.2 - expect: 27.5.1 + expect: 28.1.3 graceful-fs: 4.2.10 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 natural-compare: 1.4.0 - pretty-format: 27.5.1 + pretty-format: 28.1.3 semver: 7.3.7 transitivePeerDependencies: - supports-color dev: true - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-util/28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 '@types/node': 18.0.3 chalk: 4.1.2 ci-info: 3.3.2 @@ -5966,28 +6037,29 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-validate/28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 27.5.1 + jest-get-type: 28.0.2 leven: 3.1.0 - pretty-format: 27.5.1 + pretty-format: 28.1.3 dev: true - /jest-watcher/27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-watcher/28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 '@types/node': 18.0.3 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 27.5.1 + emittery: 0.10.2 + jest-util: 28.1.3 string-length: 4.0.2 dev: true @@ -6000,9 +6072,18 @@ packages: supports-color: 8.1.1 dev: true - /jest/27.5.1: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-worker/28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@types/node': 18.0.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/28.1.3: + resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -6010,15 +6091,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1 + '@jest/core': 28.1.3 + '@jest/types': 28.1.3 import-local: 3.1.0 - jest-cli: 27.5.1 + jest-cli: 28.1.3 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true /js-beautify/1.14.4: @@ -6054,9 +6134,9 @@ packages: argparse: 2.0.1 dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} + /jsdom/19.0.0: + resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} + engines: {node: '>=12'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -6066,15 +6146,15 @@ packages: abab: 2.0.6 acorn: 8.7.1 acorn-globals: 6.0.0 - cssom: 0.4.4 + cssom: 0.5.0 cssstyle: 2.3.0 - data-urls: 2.0.0 + data-urls: 3.0.2 decimal.js: 10.3.1 - domexception: 2.0.1 + domexception: 4.0.0 escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.1 @@ -6083,13 +6163,13 @@ packages: symbol-tree: 3.2.4 tough-cookie: 4.0.0 w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.8 - xml-name-validator: 3.0.0 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 10.0.0 + ws: 8.8.0 + xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color @@ -7054,6 +7134,16 @@ packages: react-is: 17.0.2 dev: true + /pretty-format/28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /pretty/2.0.0: resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} engines: {node: '>=0.10.0'} @@ -7224,7 +7314,6 @@ packages: /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: false /react-spring/8.0.27_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g==} @@ -7837,6 +7926,13 @@ packages: decode-uri-component: 0.2.0 dev: true + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -7849,11 +7945,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map/0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - /space-separated-tokens/1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} dev: false @@ -8249,10 +8340,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -8309,9 +8396,9 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} + /tr46/3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true @@ -8338,37 +8425,38 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: false - /ts-jest/27.1.5_sc3ftmj3puoex6bziyktvlzr6q: - resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /ts-jest/28.0.7_3gxlygumywb42qewtlgc3ofbpu: + resolution: {integrity: sha512-wWXCSmTwBVmdvWrOpYhal79bDpioDy4rTT+0vyUnE3ZzM7LOAAGG9NXwzkEL/a516rQEgnMmS/WKP9jBPCVJyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' + '@jest/types': ^28.0.0 + babel-jest: ^28.0.0 esbuild: '*' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' + jest: ^28.0.0 + typescript: '>=4.3' peerDependenciesMeta: '@babel/core': optional: true - '@types/jest': + '@jest/types': optional: true babel-jest: optional: true esbuild: optional: true dependencies: - '@types/jest': 27.5.2 + '@babel/core': 7.18.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 27.5.1 - jest-util: 27.5.1 + jest: 28.1.3 + jest-util: 28.1.3 json5: 2.2.1 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.7 - yargs-parser: 20.2.9 + typescript: 4.7.4 + yargs-parser: 21.0.1 dev: true /ts-toolbelt/6.15.5: @@ -8457,12 +8545,6 @@ packages: mime-types: 2.1.35 dev: true - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typescript/4.7.4: resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} @@ -8650,13 +8732,13 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: + '@jridgewell/trace-mapping': 0.3.14 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - source-map: 0.7.4 dev: true /validate-npm-package-license/3.0.4: @@ -8701,11 +8783,11 @@ packages: browser-process-hrtime: 1.0.0 dev: true - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} + /w3c-xmlserializer/3.0.0: + resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} + engines: {node: '>=12'} dependencies: - xml-name-validator: 3.0.0 + xml-name-validator: 4.0.0 dev: true /walker/1.0.8: @@ -8742,14 +8824,9 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} dev: true /webpack-cli/4.10.0_6rc575xxn4hngez2jk2zkyfdoi: @@ -8919,14 +8996,32 @@ packages: engines: {node: '>=0.8.0'} dev: true - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: - iconv-lite: 0.4.24 + iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + /whatwg-mimetype/3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url/10.0.0: + resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url/11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 dev: true /whatwg-url/5.0.0: @@ -8936,15 +9031,6 @@ packages: webidl-conversions: 3.0.1 dev: true - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -9032,26 +9118,12 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /write-file-atomic/4.0.1: + resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /ws/7.5.8: - resolution: {integrity: sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true dev: true /ws/8.8.0: @@ -9067,8 +9139,9 @@ packages: optional: true dev: true - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} dev: true /xmlchars/2.2.0: @@ -9112,11 +9185,6 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - /yargs-parser/21.0.1: resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} engines: {node: '>=12'} @@ -9155,19 +9223,6 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs/17.5.1: resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} engines: {node: '>=12'} From 9d8fde5a8322b9ea56c5746c9c2bade572c3a6f9 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Wed, 3 Aug 2022 09:36:11 -0700 Subject: [PATCH 02/22] Add sample JS build --- .gitignore | 1 + packages/create-spectacle/package.json | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 717611e50..0b7d095b0 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ dist lib es bin +.examples # Pack-ing artifacts packages/**/package diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index 019246e58..32067936b 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -35,7 +35,12 @@ "lint": "wireit", "lint:fix": "wireit", "prettier": "wireit", - "prettier:fix": "wireit" + "prettier:fix": "wireit", + "examples:clean": "rimraf .examples", + "examples:js:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n js", + "examples:js:install": "cd .examples/js && npm install", + "examples:js:build": "cd .examples/js && npm run build", + "examples:js:start": "cd .examples/js && npm start" }, "wireit": { "build": { From a708bb753f389bcd36bc1dce9a8d3f69d8ce9952 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Wed, 3 Aug 2022 13:33:33 -0700 Subject: [PATCH 03/22] Hacky, but works in localdev --- package.json | 10 +- packages/create-spectacle/test/e2e.test.js | 25 + pnpm-lock.yaml | 572 ++++++++++++++++++++- 3 files changed, 605 insertions(+), 2 deletions(-) create mode 100644 packages/create-spectacle/test/e2e.test.js diff --git a/package.json b/package.json index c77afed5c..c6ef7b9de 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,10 @@ "html-webpack-plugin": "^5.5.0", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", + "jest-puppeteer": "^6.1.1", "nps": "^5.10.0", "prettier": "^2.4.1", + "puppeteer": "^16.0.0", "raw-loader": "^4.0.0", "rimraf": "^3.0.0", "ts-jest": "^28.0.7", @@ -39,6 +41,11 @@ "webpack-dev-server": "^4.7.4", "wireit": "^0.7.1" }, + "pnpm": { + "neverBuiltDependencies": [ + "puppeteer" + ] + }, "scripts": { "version": "pnpm changeset version && pnpm install --no-frozen-lockfile", "changeset": "changeset", @@ -72,7 +79,8 @@ "prettier:root:fix": "wireit", "prettier:pkgs": "wireit", "prettier:pkgs:fix": "wireit", - "test": "wireit" + "test": "wireit", + "puppeteer:install": "node ./node_modules/puppeteer/install.js" }, "wireit": { "clean:cache": { diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js new file mode 100644 index 000000000..8198b64c7 --- /dev/null +++ b/packages/create-spectacle/test/e2e.test.js @@ -0,0 +1,25 @@ +// TODO(e2e): Convert to TS. +const puppeteer = require('puppeteer'); + +describe('App.js', () => { + let browser; + let page; + + beforeAll(async () => { + browser = await puppeteer.launch({ + // TODO: FIGURE THIS OUT BETTER + // TOOD: Currently using -- PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM=true pnpm puppeteer:install + executablePath: "/Users/rye/scm/fmd/spectacle/node_modules/.pnpm/puppeteer@16.0.0/node_modules/puppeteer/.local-chromium/mac_arm-1022525/chrome-mac/Chromium.app/Contents/MacOS/Chromium" + }); + page = await browser.newPage(); + }); + + it('contains the welcome text', async () => { + await page.goto('http://localhost:3000'); + await page.waitForSelector('.example-text'); + const text = await page.$eval('.example-text', (e) => e.textContent); + expect(text).toContain('js'); + }); + + afterAll(() => browser.close()); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb5aaed75..c562b2fd2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,8 @@ lockfileVersion: 5.4 +neverBuiltDependencies: + - puppeteer + importers: .: @@ -31,8 +34,10 @@ importers: html-webpack-plugin: ^5.5.0 jest: ^28.1.3 jest-environment-jsdom: ^28.1.3 + jest-puppeteer: ^6.1.1 nps: ^5.10.0 prettier: ^2.4.1 + puppeteer: ^16.0.0 raw-loader: ^4.0.0 rimraf: ^3.0.0 ts-jest: ^28.0.7 @@ -69,8 +74,10 @@ importers: html-webpack-plugin: 5.5.0_webpack@5.73.0 jest: 28.1.3 jest-environment-jsdom: 28.1.3 + jest-puppeteer: 6.1.1_puppeteer@16.0.0 nps: 5.10.0 prettier: 2.7.1 + puppeteer: 16.0.0 raw-loader: 4.0.2_webpack@5.73.0 rimraf: 3.0.2 ts-jest: 28.0.7_3gxlygumywb42qewtlgc3ofbpu @@ -1744,6 +1751,16 @@ packages: - supports-color dev: true + /@hapi/hoek/9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: true + + /@hapi/topo/5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -1830,6 +1847,16 @@ packages: - ts-node dev: true + /@jest/environment/27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.0.3 + jest-mock: 27.5.1 + dev: true + /@jest/environment/28.1.3: resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -1857,6 +1884,18 @@ packages: - supports-color dev: true + /@jest/fake-timers/27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 18.0.3 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + dev: true + /@jest/fake-timers/28.1.3: resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -1977,6 +2016,17 @@ packages: - supports-color dev: true + /@jest/types/27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.0.3 + '@types/yargs': 16.0.4 + chalk: 4.1.2 + dev: true + /@jest/types/28.1.3: resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -2116,6 +2166,20 @@ packages: tslib: 2.4.0 dev: false + /@sideway/address/4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + + /@sideway/formula/3.0.0: + resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} + dev: true + + /@sideway/pinpoint/2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: true + /@sinclair/typebox/0.24.26: resolution: {integrity: sha512-1ZVIyyS1NXDRVT8GjWD5jULjhDyM3IsIHef2VGUMdnWOlX2tkPjyEX/7K0TGSH2S8EaPhp1ylFdjSjUGQ+gecg==} dev: true @@ -2126,6 +2190,12 @@ packages: type-detect: 4.0.8 dev: true + /@sinonjs/fake-timers/8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + dependencies: + '@sinonjs/commons': 1.8.3 + dev: true + /@sinonjs/fake-timers/9.1.2: resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: @@ -2585,12 +2655,26 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true + /@types/yargs/16.0.4: + resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + /@types/yargs/17.0.10: resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: '@types/yargs-parser': 21.0.0 dev: true + /@types/yauzl/2.10.0: + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + requiresBuild: true + dependencies: + '@types/node': 18.0.3 + dev: true + optional: true + /@typescript-eslint/eslint-plugin/5.30.5_6zdoc3rn4mpiddqwhppni2mnnm: resolution: {integrity: sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3038,6 +3122,11 @@ packages: engines: {node: '>=6.0'} dev: true + /arr-union/3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + /array-flatten/1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true @@ -3102,6 +3191,14 @@ packages: hasBin: true dev: true + /axios/0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.1 + transitivePeerDependencies: + - debug + dev: true + /babel-eslint/10.1.0_eslint@8.19.0: resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} engines: {node: '>=6'} @@ -3282,6 +3379,10 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + /batch/0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: true @@ -3307,6 +3408,14 @@ packages: engines: {node: '>=8'} dev: true + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + /body-parser/1.20.0: resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -3400,10 +3509,21 @@ packages: node-int64: 0.4.0 dev: true + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + /bytes/3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -3523,6 +3643,10 @@ packages: fsevents: 2.3.2 dev: true + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + /chrome-trace-event/1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -3583,6 +3707,17 @@ packages: wrap-ansi: 7.0.0 dev: true + /clone-deep/0.2.4: + resolution: {integrity: sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==} + engines: {node: '>=0.10.0'} + dependencies: + for-own: 0.1.5 + is-plain-object: 2.0.4 + kind-of: 3.2.2 + lazy-cache: 1.0.4 + shallow-clone: 0.1.2 + dev: true + /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -3655,6 +3790,11 @@ packages: engines: {node: '>= 6'} dev: true + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + /commander/7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -3787,6 +3927,14 @@ packages: cross-spawn: 7.0.3 dev: true + /cross-fetch/3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + /cross-spawn/5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: @@ -3885,6 +4033,14 @@ packages: stream-transform: 2.1.3 dev: true + /cwd/0.10.0: + resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} + engines: {node: '>=0.8'} + dependencies: + find-pkg: 0.1.2 + fs-exists-sync: 0.1.0 + dev: true + /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -4032,6 +4188,10 @@ packages: /detect-node/2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + /devtools-protocol/0.0.1019158: + resolution: {integrity: sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==} + dev: true + /diff-sequences/27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -4174,6 +4334,12 @@ packages: engines: {node: '>= 0.8'} dev: true + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + /enhanced-resolve/5.10.0: resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} engines: {node: '>=10.13.0'} @@ -4505,6 +4671,17 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-tilde/1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + dev: true + + /expect-puppeteer/6.1.1: + resolution: {integrity: sha512-cnQF96qdoEcOD63j5NQMc0RtW9WRMW/WHKXEKsuDQ2tszhVH3qC7zkXXS4D0LTt9qCB3DEExioqylsQXvqPrUw==} + dev: true + /expect/28.1.3: resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -4579,6 +4756,20 @@ packages: tmp: 0.0.33 dev: true + /extract-zip/2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -4636,6 +4827,12 @@ packages: bser: 2.1.1 dev: true + /fd-slicer/1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4679,6 +4876,32 @@ packages: pkg-dir: 4.2.0 dev: true + /find-file-up/0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} + dependencies: + fs-exists-sync: 0.1.0 + resolve-dir: 0.1.1 + dev: true + + /find-pkg/0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} + dependencies: + find-file-up: 0.1.3 + dev: true + + /find-process/1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} + hasBin: true + dependencies: + chalk: 4.1.2 + commander: 5.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /find-up/2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -4738,6 +4961,23 @@ packages: optional: true dev: true + /for-in/0.1.8: + resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} + engines: {node: '>=0.10.0'} + dev: true + + /for-in/1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /for-own/0.1.5: + resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + dev: true + /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -4766,6 +5006,15 @@ packages: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true + /fs-constants/1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-exists-sync/0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + dev: true + /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -4848,6 +5097,13 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4889,6 +5145,24 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /global-modules/0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 0.1.5 + is-windows: 0.2.0 + dev: true + + /global-prefix/0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 0.2.0 + which: 1.3.1 + dev: true + /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5055,6 +5329,13 @@ packages: react-is: 16.13.1 dev: true + /homedir-polyfill/1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -5231,6 +5512,10 @@ packages: safer-buffer: 2.1.2 dev: true + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -5529,6 +5814,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-windows/0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + dev: true + /is-windows/1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -5744,6 +6034,21 @@ packages: - supports-color dev: true + /jest-dev-server/6.1.1: + resolution: {integrity: sha512-z5LnaGDvlIkdMv/rppSO4+rq+GyQKf1xI9oiBxf9/2EBeN2hxRaWiMvaLNDnHPZj2PAhBXsycrKslDDoZO2Xtw==} + dependencies: + chalk: 4.1.2 + cwd: 0.10.0 + find-process: 1.4.7 + prompts: 2.4.2 + spawnd: 6.0.2 + tree-kill: 1.2.2 + wait-on: 6.0.1 + transitivePeerDependencies: + - debug + - supports-color + dev: true + /jest-diff/27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5801,6 +6106,18 @@ packages: - utf-8-validate dev: true + /jest-environment-node/27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.0.3 + jest-mock: 27.5.1 + jest-util: 27.5.1 + dev: true + /jest-environment-node/28.1.3: resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -5813,6 +6130,19 @@ packages: jest-util: 28.1.3 dev: true + /jest-environment-puppeteer/6.1.1: + resolution: {integrity: sha512-Ces37g8Gdj7QaVxszeoXlvmsZxcEJN9EPUdJt8fGMLA+6ARVFKyVmFgP9xVeGyjTvzsXdtIiJdeOKMLMeD8r2A==} + dependencies: + chalk: 4.1.2 + cwd: 0.10.0 + jest-dev-server: 6.1.1 + jest-environment-node: 27.5.1 + merge-deep: 3.0.3 + transitivePeerDependencies: + - debug + - supports-color + dev: true + /jest-get-type/27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5870,6 +6200,21 @@ packages: pretty-format: 28.1.3 dev: true + /jest-message-util/27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + /jest-message-util/28.1.3: resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -5885,6 +6230,14 @@ packages: stack-utils: 2.0.5 dev: true + /jest-mock/27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.0.3 + dev: true + /jest-mock/28.1.3: resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -5905,6 +6258,19 @@ packages: jest-resolve: 28.1.3 dev: true + /jest-puppeteer/6.1.1_puppeteer@16.0.0: + resolution: {integrity: sha512-cBOszleUpyipDMNYmcmH3x+687x03ZvOVz7W8X5y5TgD+j4MK+BcumwGdE1YwVS21kPLjJUu1pIdEzEDuFEBfA==} + peerDependencies: + puppeteer: '>= 1.5.0' + dependencies: + expect-puppeteer: 6.1.1 + jest-environment-puppeteer: 6.1.1 + puppeteer: 16.0.0 + transitivePeerDependencies: + - debug + - supports-color + dev: true + /jest-regex-util/28.0.2: resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -6025,6 +6391,18 @@ packages: - supports-color dev: true + /jest-util/27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.0.3 + chalk: 4.1.2 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + /jest-util/28.1.3: resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -6101,6 +6479,16 @@ packages: - ts-node dev: true + /joi/17.6.0: + resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.0 + '@sideway/pinpoint': 2.0.0 + dev: true + /js-beautify/1.14.4: resolution: {integrity: sha512-+b4A9c3glceZEmxyIbxDOYB0ZJdReLvyU1077RqKsO4dZx9FUHjTOJn8VHwpg33QoucIykOiYbh7MfqBOghnrA==} engines: {node: '>=10'} @@ -6168,7 +6556,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 10.0.0 - ws: 8.8.0 + ws: 8.8.1 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -6241,6 +6629,13 @@ packages: tiny-invariant: 1.2.0 dev: false + /kind-of/2.0.1: + resolution: {integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + /kind-of/3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -6263,6 +6658,16 @@ packages: engines: {node: '>=6'} dev: true + /lazy-cache/0.2.7: + resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} + engines: {node: '>=0.10.0'} + dev: true + + /lazy-cache/1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + dev: true + /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6542,6 +6947,15 @@ packages: ts-toolbelt: 6.15.5 dev: false + /merge-deep/3.0.3: + resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + clone-deep: 0.2.4 + kind-of: 3.2.2 + dev: true + /merge-descriptors/1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true @@ -6617,11 +7031,27 @@ packages: kind-of: 6.0.3 dev: true + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /mixin-object/2.0.1: + resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 0.1.8 + is-extendable: 0.1.1 + dev: true + /mixme/0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true + /mkdirp-classic/0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + /mousetrap/1.6.5: resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==} dev: false @@ -6874,6 +7304,11 @@ packages: word-wrap: 1.2.3 dev: true + /os-homedir/1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + /os-tmpdir/1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -6997,6 +7432,11 @@ packages: lines-and-columns: 1.2.4 dev: true + /parse-passwd/1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + /parse5/6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -7050,6 +7490,10 @@ packages: through: 2.3.8 dev: true + /pend/1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -7172,6 +7616,11 @@ packages: engines: {node: '>= 0.6.0'} dev: true + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -7213,6 +7662,10 @@ packages: ipaddr.js: 1.9.1 dev: true + /proxy-from-env/1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + /ps-tree/1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} @@ -7229,11 +7682,41 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true + /puppeteer/16.0.0: + resolution: {integrity: sha512-FgSe21IHNHkqv1SiJiob4ANsxVujcINa4p3MaDEMyoZsocbgSgwYE0c9lnF8eoinw4id3vx4DOXwhFdOOwVlDg==} + engines: {node: '>=14.1.0'} + dependencies: + cross-fetch: 3.1.5 + debug: 4.3.4 + devtools-protocol: 0.0.1019158 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + pkg-dir: 4.2.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.8.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + /qs/6.10.3: resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} engines: {node: '>=0.6'} @@ -7594,6 +8077,14 @@ packages: resolve-from: 5.0.0 dev: true + /resolve-dir/0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 1.2.2 + global-modules: 0.2.3 + dev: true + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -7824,6 +8315,16 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true + /shallow-clone/0.1.2: + resolution: {integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + kind-of: 2.0.1 + lazy-cache: 0.2.7 + mixin-object: 2.0.1 + dev: true + /shallow-clone/3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -7960,6 +8461,14 @@ packages: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true + /spawnd/6.0.2: + resolution: {integrity: sha512-+YJtx0dvy2wt304MrHD//tASc84zinBUYU1jacPBzrjhZUd7RsDo25krxr4HUHAQzEQFuMAs4/p+yLYU5ciZ1w==} + dependencies: + exit: 0.1.2 + signal-exit: 3.0.7 + tree-kill: 1.2.2 + dev: true + /spawndamnit/2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: @@ -8279,6 +8788,26 @@ packages: engines: {node: '>=6'} dev: true + /tar-fs/2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream/2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + /term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -8565,6 +9094,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unbzip2-stream/1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + /unherit/1.1.3: resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} dependencies: @@ -8790,6 +9326,20 @@ packages: xml-name-validator: 4.0.0 dev: true + /wait-on/6.0.1: + resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + axios: 0.25.0 + joi: 17.6.0 + lodash: 4.17.21 + minimist: 1.2.6 + rxjs: 7.5.6 + transitivePeerDependencies: + - debug + dev: true + /walker/1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -9139,6 +9689,19 @@ packages: optional: true dev: true + /ws/8.8.1: + resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xml-name-validator/4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -9236,6 +9799,13 @@ packages: yargs-parser: 21.0.1 dev: true + /yauzl/2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} From fbc160736d2f1c6f5bbe9b6ac64e0e8595ebb521 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 13:38:20 -0700 Subject: [PATCH 04/22] Add CI workflow --- .github/workflows/ci.yml | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0bacd052a..3a184139e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,3 +66,49 @@ jobs: - name: Check Code ${{ matrix.node-version }} run: pnpm run check:ci + + create-spectacle: + name: Check create-spectacle + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + create-type: ['jsx'] # TODO: MORE SCENARIOS + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + + # Wireit cache + - uses: google/wireit@setup-github-actions-caching/v1 + + - uses: pnpm/action-setup@v2.2.2 + with: + version: 7 + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + + - name: Setup pnpm cache + uses: actions/cache@v3 + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('./pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Build create-spectacle + run: pnpm run --filter ./packages/create-spectacle build + + - name: Create example - ${{ matrix.create-type }} + working-directory: ./packages/create-spectacle + run: | + pnpm run examples:${{ matrix.create-type }}:create + pnpm run examples:${{ matrix.create-type }}:install + pnpm run examples:${{ matrix.create-type }}:build + echo TODO pnpm run examples:${{ matrix.create-type }}:start From 061b86f653421dfe1c24fcfa2e29e63b0650b163 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 13:40:32 -0700 Subject: [PATCH 05/22] Fix prettier --- packages/create-spectacle/test/e2e.test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index 8198b64c7..8144f8a20 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -9,7 +9,8 @@ describe('App.js', () => { browser = await puppeteer.launch({ // TODO: FIGURE THIS OUT BETTER // TOOD: Currently using -- PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM=true pnpm puppeteer:install - executablePath: "/Users/rye/scm/fmd/spectacle/node_modules/.pnpm/puppeteer@16.0.0/node_modules/puppeteer/.local-chromium/mac_arm-1022525/chrome-mac/Chromium.app/Contents/MacOS/Chromium" + executablePath: + '/Users/rye/scm/fmd/spectacle/node_modules/.pnpm/puppeteer@16.0.0/node_modules/puppeteer/.local-chromium/mac_arm-1022525/chrome-mac/Chromium.app/Contents/MacOS/Chromium' }); page = await browser.newPage(); }); From 1f28aa90f795c93d4b3dba259d46296f55e97f62 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 13:42:47 -0700 Subject: [PATCH 06/22] Harmonize names to options --- packages/create-spectacle/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index 32067936b..2a2210607 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -37,10 +37,10 @@ "prettier": "wireit", "prettier:fix": "wireit", "examples:clean": "rimraf .examples", - "examples:js:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n js", - "examples:js:install": "cd .examples/js && npm install", - "examples:js:build": "cd .examples/js && npm run build", - "examples:js:start": "cd .examples/js && npm start" + "examples:jsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n js", + "examples:jsx:install": "cd .examples/jsx && npm install", + "examples:jsx:build": "cd .examples/jsx && npm run build", + "examples:jsx:start": "cd .examples/jsx && npm start" }, "wireit": { "build": { From d1b2108fceaf390f3da334bdf227e4f94944817a Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 13:51:02 -0700 Subject: [PATCH 07/22] Fix create --- packages/create-spectacle/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index 2a2210607..712e8ccb9 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -37,7 +37,7 @@ "prettier": "wireit", "prettier:fix": "wireit", "examples:clean": "rimraf .examples", - "examples:jsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n js", + "examples:jsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n jsx", "examples:jsx:install": "cd .examples/jsx && npm install", "examples:jsx:build": "cd .examples/jsx && npm run build", "examples:jsx:start": "cd .examples/jsx && npm start" From 8042ab4eb41db39dba384cdbe8ba361ecf4fb408 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 14:36:58 -0700 Subject: [PATCH 08/22] Try to exec puppeteer in CI. Will fail. --- .github/workflows/ci.yml | 4 +++ .prettierignore | 1 + package-scripts.js | 4 +-- packages/create-spectacle/package.json | 17 ++++++++----- packages/create-spectacle/test/e2e.test.js | 29 ++++++++++++++++------ 5 files changed, 40 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a184139e..d5bc0200d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,3 +112,7 @@ jobs: pnpm run examples:${{ matrix.create-type }}:install pnpm run examples:${{ matrix.create-type }}:build echo TODO pnpm run examples:${{ matrix.create-type }}:start + + - name: Test example - ${{ matrix.create-type }} + working-directory: ./packages/create-spectacle + run: pnpm run examples:test diff --git a/.prettierignore b/.prettierignore index d0f5e8009..e076f467f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,6 +11,7 @@ build .nova .vscode .wireit +.examples # Allow us to manually format this. examples/md/slides.md diff --git a/package-scripts.js b/package-scripts.js index 2c3256b8e..01a7e6dd4 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -46,7 +46,7 @@ module.exports = { // - Lint 'lint:base': 'eslint --cache --color', - 'lint:pkg': 'nps "lint:base src"', - 'lint:pkg:fix': 'nps "lint:base --fix src"' + 'lint:pkg': 'nps lint:base -- -- src', + 'lint:pkg:fix': 'nps lint:base -- -- --fix src' } }; diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index 712e8ccb9..a8333130c 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -37,6 +37,7 @@ "prettier": "wireit", "prettier:fix": "wireit", "examples:clean": "rimraf .examples", + "examples:test": "nps jest", "examples:jsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n jsx", "examples:jsx:install": "cd .examples/jsx && npm install", "examples:jsx:build": "cd .examples/jsx && npm run build", @@ -71,12 +72,13 @@ ] }, "lint": { - "command": "nps lint:pkg", + "command": "nps lint:pkg -- -- test", "files": [ "../../.eslintignore", "../../.eslintrc", "*.js", - "src/**" + "src/**", + "test/**" ], "output": [], "packageLocks": [ @@ -84,12 +86,13 @@ ] }, "lint:fix": { - "command": "pnpm run lint || nps lint:pkg:fix", + "command": "pnpm run lint || nps lint:pkg:fix -- -- test", "files": [ "../../.eslintignore", "../../.eslintrc", "*.js", - "src/**" + "src/**", + "test/**" ], "output": [], "packageLocks": [ @@ -102,7 +105,8 @@ "../../.prettierignore", "../../.prettierrc", "*.js", - "src/**" + "src/**", + "test/**" ], "output": [], "packageLocks": [ @@ -115,7 +119,8 @@ "../../.prettierignore", "../../.prettierrc", "*.js", - "src/**" + "src/**", + "test/**" ], "output": [], "packageLocks": [ diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index 8144f8a20..e8d0bf47a 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -1,18 +1,33 @@ // TODO(e2e): Convert to TS. const puppeteer = require('puppeteer'); +// Infer options. +const IS_CI = process.env.CI === 'true'; +const DEV_OPTIONS = { + // TODO: FIGURE THIS OUT BETTER + // TOOD: Currently using -- PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM=true pnpm puppeteer:install + executablePath: + '/Users/rye/scm/fmd/spectacle/node_modules/.pnpm/puppeteer@16.0.0/node_modules/puppeteer/.local-chromium/mac_arm-1022525/chrome-mac/Chromium.app/Contents/MacOS/Chromium' +}; +const CI_OPTIONS = { + executablePath: '/usr/bin/google-chrome-stable', + headless: true, + args: [ + '--ignore-certificate-errors', + '--no-sandbox', + '--disable-setuid-sandbox', + '--disable-accelerated-2d-canvas', + '--disable-gpu' + ] +}; +const LAUNCH_OPTS = IS_CI ? CI_OPTIONS : DEV_OPTIONS; + describe('App.js', () => { let browser; let page; beforeAll(async () => { - browser = await puppeteer.launch({ - // TODO: FIGURE THIS OUT BETTER - // TOOD: Currently using -- PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM=true pnpm puppeteer:install - executablePath: - '/Users/rye/scm/fmd/spectacle/node_modules/.pnpm/puppeteer@16.0.0/node_modules/puppeteer/.local-chromium/mac_arm-1022525/chrome-mac/Chromium.app/Contents/MacOS/Chromium' - }); - page = await browser.newPage(); + browser = await puppeteer.launch(LAUNCH_OPTS); }); it('contains the welcome text', async () => { From 78946459916dc2441f69f3f697a09ee6554c2b61 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 14:58:23 -0700 Subject: [PATCH 09/22] Let's see if the puppeteer test actually works. --- .github/workflows/ci.yml | 15 ++++++++++----- package.json | 1 + packages/create-spectacle/test/e2e.test.js | 12 +++++++++--- pnpm-lock.yaml | 2 ++ 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5bc0200d..ce62b68bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,14 +105,19 @@ jobs: - name: Build create-spectacle run: pnpm run --filter ./packages/create-spectacle build + # Create, build, isntall a full example. + # Then, start a background dev server. - name: Create example - ${{ matrix.create-type }} working-directory: ./packages/create-spectacle run: | - pnpm run examples:${{ matrix.create-type }}:create - pnpm run examples:${{ matrix.create-type }}:install - pnpm run examples:${{ matrix.create-type }}:build - echo TODO pnpm run examples:${{ matrix.create-type }}:start + pnpm run examples:${{ matrix.create-type }}:create && \ + pnpm run examples:${{ matrix.create-type }}:install && \ + pnpm run examples:${{ matrix.create-type }}:build && \ + pnpm run examples:${{ matrix.create-type }}:start & + # Wait until the dev server is full up and running and then test. - name: Test example - ${{ matrix.create-type }} working-directory: ./packages/create-spectacle - run: pnpm run examples:test + run: | + pnpm exec wait-on http-get://localhost:3000 && \ + pnpm run examples:test diff --git a/package.json b/package.json index c6ef7b9de..50d46eacc 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "rimraf": "^3.0.0", "ts-jest": "^28.0.7", "typescript": "^4.7.4", + "wait-on": "^6.0.1", "webpack": "^5.68.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.7.4", diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index e8d0bf47a..faece2179 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -28,13 +28,19 @@ describe('App.js', () => { beforeAll(async () => { browser = await puppeteer.launch(LAUNCH_OPTS); + page = await browser.newPage(); }); it('contains the welcome text', async () => { await page.goto('http://localhost:3000'); - await page.waitForSelector('.example-text'); - const text = await page.$eval('.example-text', (e) => e.textContent); - expect(text).toContain('js'); + + // TODO: GET BETTER SELECTORS + const sel = 'div[font-family=\'header\'][font-size=\'h1\']'; + await page.waitForSelector(sel); + const text = await page.$eval(sel, (e) => e.textContent); + + // TODO: SWITH TO EACH TYPE OF OUTPUT + expect(text).toContain('jsx'); }); afterAll(() => browser.close()); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c562b2fd2..bcc4895d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,7 @@ importers: rimraf: ^3.0.0 ts-jest: ^28.0.7 typescript: ^4.7.4 + wait-on: ^6.0.1 webpack: ^5.68.0 webpack-cli: ^4.10.0 webpack-dev-server: ^4.7.4 @@ -82,6 +83,7 @@ importers: rimraf: 3.0.2 ts-jest: 28.0.7_3gxlygumywb42qewtlgc3ofbpu typescript: 4.7.4 + wait-on: 6.0.1 webpack: 5.73.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_6rc575xxn4hngez2jk2zkyfdoi webpack-dev-server: 4.9.3_77l47gmqkrqiei5z7sbwz5iaj4 From e03821dd8b401490acb802803c3cc0bf6f913ae1 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 15:03:07 -0700 Subject: [PATCH 10/22] Only close if browser exists --- packages/create-spectacle/test/e2e.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index faece2179..5bad2dbcc 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -43,5 +43,9 @@ describe('App.js', () => { expect(text).toContain('jsx'); }); - afterAll(() => browser.close()); + afterAll(() => { + if (browser) { + browser.close(); + } + }); }); From 9a8d1874d616c5528ca87bef1dd91b584081fd92 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 15:33:14 -0700 Subject: [PATCH 11/22] CI fixes --- .eslintrc | 7 ------- .prettierignore | 2 ++ examples/js/index.html | 7 +++++-- examples/js/package.json | 4 ++-- examples/md/index.html | 7 +++++-- examples/md/package.json | 4 ++-- examples/one-page/package.json | 4 ++-- examples/typescript/index.html | 7 +++++-- examples/typescript/package.json | 4 ++-- package-scripts.js | 10 ++++------ package.json | 8 ++++---- packages/create-spectacle/package.json | 4 ++-- packages/create-spectacle/test/e2e.test.js | 2 +- packages/spectacle/package.json | 8 ++++---- 14 files changed, 40 insertions(+), 38 deletions(-) diff --git a/.eslintrc b/.eslintrc index 13eab9b48..2cbb43d4b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -36,13 +36,6 @@ } }, "rules": { - "quotes": [ - "error", - "single", - { - "allowTemplateLiterals": true - } - ], "react/jsx-uses-react": "off", "react/react-in-jsx-scope": "off" }, diff --git a/.prettierignore b/.prettierignore index e076f467f..68cf25d9a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,6 +12,8 @@ build .vscode .wireit .examples +.changeset/*.md # Allow us to manually format this. examples/md/slides.md +examples/one-page/index.html diff --git a/examples/js/index.html b/examples/js/index.html index 428d8fee2..f02666f1f 100644 --- a/examples/js/index.html +++ b/examples/js/index.html @@ -1,10 +1,13 @@ - + <%= htmlWebpackPlugin.options.title %> - +
diff --git a/examples/js/package.json b/examples/js/package.json index bc08bca05..9a36877b3 100644 --- a/examples/js/package.json +++ b/examples/js/package.json @@ -56,7 +56,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -68,7 +68,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/examples/md/index.html b/examples/md/index.html index 428d8fee2..f02666f1f 100644 --- a/examples/md/index.html +++ b/examples/md/index.html @@ -1,10 +1,13 @@ - + <%= htmlWebpackPlugin.options.title %> - +
diff --git a/examples/md/package.json b/examples/md/package.json index 9ec4a450c..665653771 100644 --- a/examples/md/package.json +++ b/examples/md/package.json @@ -56,7 +56,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -68,7 +68,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/examples/one-page/package.json b/examples/one-page/package.json index e399f58a9..e89735488 100644 --- a/examples/one-page/package.json +++ b/examples/one-page/package.json @@ -52,7 +52,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -64,7 +64,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/examples/typescript/index.html b/examples/typescript/index.html index 428d8fee2..f02666f1f 100644 --- a/examples/typescript/index.html +++ b/examples/typescript/index.html @@ -1,10 +1,13 @@ - + <%= htmlWebpackPlugin.options.title %> - +
diff --git a/examples/typescript/package.json b/examples/typescript/package.json index e8d211c7a..13025ac62 100644 --- a/examples/typescript/package.json +++ b/examples/typescript/package.json @@ -73,7 +73,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -85,7 +85,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\"", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/package-scripts.js b/package-scripts.js index 01a7e6dd4..5e89af116 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -35,14 +35,12 @@ module.exports = { // Quality. // - Format - 'prettier:base': - 'prettier --list-different "./**/*.{js,jsx,json,ts,tsx,css,md}"', - 'prettier:base:fix': - 'prettier --write "./**/*.{js,jsx,json,ts,tsx,css,md}"', + 'prettier:base': 'prettier --list-different', + 'prettier:base:fix': 'prettier --write', 'prettier:pkg': - 'nps "prettier:base --config ../../.prettierrc --ignore-path ../../.prettierignore"', + 'nps prettier:base -- -- --config ../../.prettierrc --ignore-path ../../.prettierignore', 'prettier:pkg:fix': - 'nps "prettier:base:fix --config ../../.prettierrc --ignore-path ../../.prettierignore"', + 'nps prettier:base:fix -- -- --config ../../.prettierrc --ignore-path ../../.prettierignore', // - Lint 'lint:base': 'eslint --cache --color', diff --git a/package.json b/package.json index 50d46eacc..45bc8ccdb 100644 --- a/package.json +++ b/package.json @@ -192,11 +192,11 @@ ] }, "prettier:root": { - "command": "nps prettier:base", + "command": "nps prettier:base -- -- \"*.{js,json,md}\"", "files": [ ".prettierrc", ".prettierignore", - "*.{js,jsx,json,ts,tsx,css,md}", + "*.{js,json,md}", "!**/node_modules/**" ], "output": [], @@ -205,11 +205,11 @@ ] }, "prettier:root:fix": { - "command": "pnpm run prettier:root || nps prettier:base:fix", + "command": "pnpm run prettier:root || nps prettier:base:fix -- -- \"*.{js,json,md}\"", "files": [ ".prettierrc", ".prettierignore", - "*.{js,jsx,json,ts,tsx,css,md}", + "*.{js,json,md}", "!**/node_modules/**" ], "output": [], diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index a8333130c..68a2fc46a 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -100,7 +100,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- src test", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -114,7 +114,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- src test", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index 5bad2dbcc..38dafb3ec 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -35,7 +35,7 @@ describe('App.js', () => { await page.goto('http://localhost:3000'); // TODO: GET BETTER SELECTORS - const sel = 'div[font-family=\'header\'][font-size=\'h1\']'; + const sel = "div[font-family='header'][font-size='h1']"; await page.waitForSelector(sel); const text = await page.$eval(sel, (e) => e.textContent); diff --git a/packages/spectacle/package.json b/packages/spectacle/package.json index bbda7af56..19fda5cc2 100644 --- a/packages/spectacle/package.json +++ b/packages/spectacle/package.json @@ -194,7 +194,7 @@ ] }, "lint": { - "command": "nps lint:pkg", + "command": "nps lint:pkg -- -- src", "files": [ "../../.eslintignore", "../../.eslintrc", @@ -207,7 +207,7 @@ ] }, "lint:fix": { - "command": "pnpm run lint || nps lint:pkg:fix", + "command": "pnpm run lint || nps lint:pkg:fix -- -- src", "files": [ "../../.eslintignore", "../../.eslintrc", @@ -220,7 +220,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg", + "command": "nps prettier:pkg -- -- \"*.js\"", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -233,7 +233,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*.js\"", "files": [ "../../.prettierignore", "../../.prettierrc", From 6026720af9e7a8109ee781d33f7fd713f512e812 Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 15:35:59 -0700 Subject: [PATCH 12/22] Fix up scripts more --- examples/one-page/package.json | 4 ++-- packages/spectacle/package.json | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/one-page/package.json b/examples/one-page/package.json index e89735488..1df394ec4 100644 --- a/examples/one-page/package.json +++ b/examples/one-page/package.json @@ -52,7 +52,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg -- -- \"*\"", + "command": "nps prettier:pkg -- -- \"*\" scripts", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -64,7 +64,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\"", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*\" scripts", "files": [ "../../.prettierignore", "../../.prettierrc", diff --git a/packages/spectacle/package.json b/packages/spectacle/package.json index 19fda5cc2..afd6be695 100644 --- a/packages/spectacle/package.json +++ b/packages/spectacle/package.json @@ -194,7 +194,7 @@ ] }, "lint": { - "command": "nps lint:pkg -- -- src", + "command": "nps lint:pkg -- -- \"*.js\" src", "files": [ "../../.eslintignore", "../../.eslintrc", @@ -207,7 +207,7 @@ ] }, "lint:fix": { - "command": "pnpm run lint || nps lint:pkg:fix -- -- src", + "command": "pnpm run lint || nps lint:pkg:fix -- -- \"*.js\" src", "files": [ "../../.eslintignore", "../../.eslintrc", @@ -220,7 +220,7 @@ ] }, "prettier": { - "command": "nps prettier:pkg -- -- \"*.js\"", + "command": "nps prettier:pkg -- -- \"*.js\" src", "files": [ "../../.prettierignore", "../../.prettierrc", @@ -233,7 +233,7 @@ ] }, "prettier:fix": { - "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*.js\"", + "command": "pnpm run prettier || nps prettier:pkg:fix -- -- \"*.js\" src", "files": [ "../../.prettierignore", "../../.prettierrc", From 9df35c1168831c044ef0b7ae18a569744ff775ef Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 15:39:28 -0700 Subject: [PATCH 13/22] More wireit config --- examples/js/package.json | 4 ++-- examples/md/package.json | 4 ++-- examples/one-page/package.json | 2 ++ examples/typescript/package.json | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/js/package.json b/examples/js/package.json index 9a36877b3..5c7ab396f 100644 --- a/examples/js/package.json +++ b/examples/js/package.json @@ -60,7 +60,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,html}" ], "output": [], "packageLocks": [ @@ -72,7 +72,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,html}" ], "output": [], "packageLocks": [ diff --git a/examples/md/package.json b/examples/md/package.json index 665653771..cdce404dc 100644 --- a/examples/md/package.json +++ b/examples/md/package.json @@ -60,7 +60,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,html}" ], "output": [], "packageLocks": [ @@ -72,7 +72,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,html}" ], "output": [], "packageLocks": [ diff --git a/examples/one-page/package.json b/examples/one-page/package.json index 1df394ec4..e58a1f59d 100644 --- a/examples/one-page/package.json +++ b/examples/one-page/package.json @@ -56,6 +56,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", + "*.html", "scripts" ], "output": [], @@ -68,6 +69,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", + "*.html", "scripts" ], "output": [], diff --git a/examples/typescript/package.json b/examples/typescript/package.json index 13025ac62..4ceb93a51 100644 --- a/examples/typescript/package.json +++ b/examples/typescript/package.json @@ -77,7 +77,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,jsx,ts,tsx,html}" ], "output": [], "packageLocks": [ @@ -89,7 +89,7 @@ "files": [ "../../.prettierignore", "../../.prettierrc", - "*.{js,jsx,ts,tsx}" + "*.{js,jsx,ts,tsx,html}" ], "output": [], "packageLocks": [ From 588f1e28dede8226f5a89d4de4db3737f88419ce Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 16:47:06 -0700 Subject: [PATCH 14/22] Add tsx scenario --- .github/workflows/ci.yml | 2 +- package.json | 1 + packages/create-spectacle/package.json | 10 +- packages/create-spectacle/test/e2e.test.js | 8 +- pnpm-lock.yaml | 245 +++++++++++++++++++++ 5 files changed, 259 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce62b68bc..31eabc047 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: strategy: matrix: node-version: [18.x] - create-type: ['jsx'] # TODO: MORE SCENARIOS + create-type: ['jsx', 'tsx'] # TODO: MORE SCENARIOS steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 diff --git a/package.json b/package.json index 45bc8ccdb..384f5dc10 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "puppeteer": "^16.0.0", "raw-loader": "^4.0.0", "rimraf": "^3.0.0", + "serve": "^14.0.1", "ts-jest": "^28.0.7", "typescript": "^4.7.4", "wait-on": "^6.0.1", diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index 68a2fc46a..f0b503f9a 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -41,7 +41,15 @@ "examples:jsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t jsx -n jsx", "examples:jsx:install": "cd .examples/jsx && npm install", "examples:jsx:build": "cd .examples/jsx && npm run build", - "examples:jsx:start": "cd .examples/jsx && npm start" + "examples:jsx:start": "cd .examples/jsx && npm start", + "examples:tsx:create": "mkdir -p .examples && cd .examples && node ../bin/cli.js -t tsx -n tsx", + "examples:tsx:install": "cd .examples/tsx && npm install", + "examples:tsx:build": "cd .examples/tsx && npm run build", + "examples:tsx:start": "cd .examples/tsx && npm start", + "examples:onepage:create": "mkdir -p .examples/onepage && cd .examples/onepage && node ../bin/cli.js -t onepage -n onepage", + "examples:onepage:install": "echo", + "examples:onepage:build": "echo", + "examples:onepage:start": "echo TODO USE SERVE" }, "wireit": { "build": { diff --git a/packages/create-spectacle/test/e2e.test.js b/packages/create-spectacle/test/e2e.test.js index 38dafb3ec..22939eca6 100644 --- a/packages/create-spectacle/test/e2e.test.js +++ b/packages/create-spectacle/test/e2e.test.js @@ -31,16 +31,14 @@ describe('App.js', () => { page = await browser.newPage(); }); - it('contains the welcome text', async () => { + it('contains last slide text', async () => { await page.goto('http://localhost:3000'); // TODO: GET BETTER SELECTORS - const sel = "div[font-family='header'][font-size='h1']"; + const sel = "div[font-family='header'][font-size='h2']"; await page.waitForSelector(sel); const text = await page.$eval(sel, (e) => e.textContent); - - // TODO: SWITH TO EACH TYPE OF OUTPUT - expect(text).toContain('jsx'); + expect(text).toContain('Made with'); }); afterAll(() => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcc4895d0..c9019dd13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,6 +40,7 @@ importers: puppeteer: ^16.0.0 raw-loader: ^4.0.0 rimraf: ^3.0.0 + serve: ^14.0.1 ts-jest: ^28.0.7 typescript: ^4.7.4 wait-on: ^6.0.1 @@ -81,6 +82,7 @@ importers: puppeteer: 16.0.0 raw-loader: 4.0.2_webpack@5.73.0 rimraf: 3.0.2 + serve: 14.0.1 ts-jest: 28.0.7_3gxlygumywb42qewtlgc3ofbpu typescript: 4.7.4 wait-on: 6.0.1 @@ -2949,6 +2951,10 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true + /@zeit/schemas/2.21.0: + resolution: {integrity: sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==} + dev: true + /abab/2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true @@ -3058,6 +3064,12 @@ packages: uri-js: 4.4.1 dev: true + /ansi-align/3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + /ansi-colors/4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -3084,6 +3096,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -3101,6 +3118,11 @@ packages: engines: {node: '>=10'} dev: true + /ansi-styles/6.1.0: + resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} + engines: {node: '>=12'} + dev: true + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -3109,6 +3131,14 @@ packages: picomatch: 2.3.1 dev: true + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -3451,6 +3481,20 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true + /boxen/7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.0 + chalk: 5.0.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.18.0 + widest-line: 4.0.1 + wrap-ansi: 8.0.1 + dev: true + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -3574,6 +3618,11 @@ packages: engines: {node: '>=10'} dev: true + /camelcase/7.0.0: + resolution: {integrity: sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==} + engines: {node: '>=14.16'} + dev: true + /camelize/1.0.0: resolution: {integrity: sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==} dev: false @@ -3586,6 +3635,13 @@ packages: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: false + /chalk-template/0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + dependencies: + chalk: 4.1.2 + dev: true + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -3609,6 +3665,11 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 + /chalk/5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -3673,6 +3734,11 @@ packages: resolution: {integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==} dev: false + /cli-boxes/3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: true + /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -3685,6 +3751,15 @@ packages: engines: {node: '>=6'} dev: false + /clipboardy/3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + dev: true + /cliui/5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: @@ -3883,6 +3958,11 @@ packages: engines: {node: '>=0.8'} dev: true + /content-disposition/0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: true + /content-disposition/0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -4122,6 +4202,11 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -4296,6 +4381,10 @@ packages: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /editorconfig/0.15.3: resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==} hasBin: true @@ -4326,6 +4415,10 @@ packages: /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -4799,6 +4892,12 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-url-parser/1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + /fastest-levenshtein/1.0.14: resolution: {integrity: sha512-tFfWHjnuUfKE186Tfgr+jtaFc0mZTApEgKDOeyN+FwOqRkO/zK/3h1AiRd8u8CY53owL3CUmGr/oI9p/RdyLTA==} engines: {node: '>= 4.9.1'} @@ -5753,6 +5852,11 @@ packages: isobject: 3.0.1 dev: true + /is-port-reachable/4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-potential-custom-element-name/1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -6988,11 +7092,23 @@ packages: resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} dev: false + /mime-db/1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: true + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true + /mime-types/2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.33.0 + dev: true + /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -7019,6 +7135,12 @@ packages: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -7468,6 +7590,10 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + /path-is-inside/1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7481,6 +7607,10 @@ packages: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true + /path-to-regexp/2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + dev: true + /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -7691,6 +7821,10 @@ packages: once: 1.4.0 dev: true + /punycode/1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -7751,6 +7885,11 @@ packages: safe-buffer: 5.2.1 dev: true + /range-parser/1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: true + /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -7777,6 +7916,16 @@ packages: webpack: 5.73.0_webpack-cli@4.10.0 dev: true + /rc/1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.6 + strip-json-comments: 2.0.1 + dev: true + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -7979,6 +8128,20 @@ packages: unicode-match-property-value-ecmascript: 2.0.0 dev: true + /registry-auth-token/3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + dev: true + + /registry-url/3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + dependencies: + rc: 1.2.8 + dev: true + /regjsgen/0.6.0: resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} dev: true @@ -8278,6 +8441,19 @@ packages: randombytes: 2.1.0 dev: true + /serve-handler/6.1.3: + resolution: {integrity: sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.0.4 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: true + /serve-index/1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} @@ -8305,6 +8481,26 @@ packages: - supports-color dev: true + /serve/14.0.1: + resolution: {integrity: sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==} + engines: {node: '>= 14'} + hasBin: true + dependencies: + '@zeit/schemas': 2.21.0 + ajv: 8.11.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.7.4 + is-port-reachable: 4.0.0 + serve-handler: 6.1.3 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true @@ -8608,6 +8804,15 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: true + /string.prototype.matchall/4.0.7: resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} dependencies: @@ -8662,6 +8867,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -8684,6 +8896,11 @@ packages: min-indent: 1.0.1 dev: true + /strip-json-comments/2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -9068,6 +9285,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest/2.18.0: + resolution: {integrity: sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==} + engines: {node: '>=12.20'} + dev: true + /type-is/1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -9231,6 +9453,13 @@ packages: picocolors: 1.0.0 dev: true + /update-check/1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + dev: true + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -9620,6 +9849,13 @@ packages: isexe: 2.0.0 dev: true + /widest-line/4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: true + /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true @@ -9667,6 +9903,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi/8.0.1: + resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.1.0 + string-width: 5.1.2 + strip-ansi: 7.0.1 + dev: true + /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} From 0905ac1992690c73cb9c93af3db60ba96799fb8c Mon Sep 17 00:00:00 2001 From: Ryan Roemer Date: Thu, 4 Aug 2022 20:16:34 -0700 Subject: [PATCH 15/22] Add onepage --- .github/workflows/ci.yml | 2 +- packages/create-spectacle/package.json | 8 ++++---- packages/create-spectacle/src/templates/one-page.ts | 9 ++++++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31eabc047..d84a4d451 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: strategy: matrix: node-version: [18.x] - create-type: ['jsx', 'tsx'] # TODO: MORE SCENARIOS + create-type: ['jsx', 'tsx', 'onepage'] steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 diff --git a/packages/create-spectacle/package.json b/packages/create-spectacle/package.json index f0b503f9a..dcd670342 100644 --- a/packages/create-spectacle/package.json +++ b/packages/create-spectacle/package.json @@ -46,10 +46,10 @@ "examples:tsx:install": "cd .examples/tsx && npm install", "examples:tsx:build": "cd .examples/tsx && npm run build", "examples:tsx:start": "cd .examples/tsx && npm start", - "examples:onepage:create": "mkdir -p .examples/onepage && cd .examples/onepage && node ../bin/cli.js -t onepage -n onepage", - "examples:onepage:install": "echo", - "examples:onepage:build": "echo", - "examples:onepage:start": "echo TODO USE SERVE" + "examples:onepage:create": "mkdir -p .examples/onepage && cd .examples/onepage && node ../../bin/cli.js -t onepage -n index", + "examples:onepage:install": "echo unused", + "examples:onepage:build": "echo unused", + "examples:onepage:start": "pnpm exec serve .examples/onepage" }, "wireit": { "build": { diff --git a/packages/create-spectacle/src/templates/one-page.ts b/packages/create-spectacle/src/templates/one-page.ts index 23add9268..2f04aeb83 100644 --- a/packages/create-spectacle/src/templates/one-page.ts +++ b/packages/create-spectacle/src/templates/one-page.ts @@ -24,6 +24,7 @@ export const onePageTemplate = ({ name, lang }: OnePageTemplateOptions) => `