From 898d1e19fc3c0a8e899767a627c2d0a09615db9d Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 20 May 2022 16:55:05 +0800 Subject: [PATCH] test: all ssr tests passing --- .github/workflows/ci.yml | 19 + package.json | 7 +- pnpm-lock.yaml | 1963 +++++++++++++++-- scripts/config.js | 3 +- src/core/util/error.ts | 2 +- src/global.d.ts | 2 - .../bundle-renderer/create-bundle-renderer.ts | 9 +- src/server/create-renderer.ts | 13 +- src/server/template-renderer/index.ts | 7 +- test/ssr/compile-with-webpack.ts | 52 +- test/ssr/fixtures/{app.ts => app.js} | 0 .../fixtures/{async-bar.ts => async-bar.js} | 0 .../fixtures/{async-foo.ts => async-foo.js} | 0 .../{cache-opt-out.ts => cache-opt-out.js} | 0 test/ssr/fixtures/{cache.ts => cache.js} | 0 test/ssr/fixtures/{error.ts => error.js} | 0 .../{nested-cache.ts => nested-cache.js} | 0 ...mise-rejection.ts => promise-rejection.js} | 0 test/ssr/fixtures/{split.ts => split.js} | 0 test/ssr/ssr-basic-renderer.spec.ts | 4 +- test/ssr/ssr-bundle-render.spec.ts | 411 ++-- test/ssr/ssr-stream.spec.ts | 4 +- test/ssr/ssr-string.spec.ts | 4 +- test/ssr/ssr-template.spec.ts | 671 +++--- test/vitest.setup.ts | 2 - 25 files changed, 2401 insertions(+), 772 deletions(-) rename test/ssr/fixtures/{app.ts => app.js} (100%) rename test/ssr/fixtures/{async-bar.ts => async-bar.js} (100%) rename test/ssr/fixtures/{async-foo.ts => async-foo.js} (100%) rename test/ssr/fixtures/{cache-opt-out.ts => cache-opt-out.js} (100%) rename test/ssr/fixtures/{cache.ts => cache.js} (100%) rename test/ssr/fixtures/{error.ts => error.js} (100%) rename test/ssr/fixtures/{nested-cache.ts => nested-cache.js} (100%) rename test/ssr/fixtures/{promise-rejection.ts => promise-rejection.js} (100%) rename test/ssr/fixtures/{split.ts => split.js} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0a15211..35c20a19 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,25 @@ jobs: - name: Run unit tests run: pnpm run test:unit + ssr-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + + - name: Set node version to 16 + uses: actions/setup-node@v2 + with: + node-version: 16 + cache: 'pnpm' + + - run: pnpm install + + - name: Run SSR tests + run: pnpm run test:ssr + # e2e-test: # runs-on: ubuntu-latest # steps: diff --git a/package.json b/package.json index d08429f3..9082038c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "build": "node scripts/build.js", "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", "test": "npm run lint && npm run ts-check && npm run test:types && npm run test:unit && npm run test:e2e", - "test:unit": "vitest run", + "test:unit": "vitest run test/unit", + "test:ssr": "vitest run test/ssr", "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.ts", "test:types": "tsc -p ./types/tsconfig.json", "lint": "eslint src scripts test", @@ -75,7 +76,7 @@ "de-indent": "^1.0.2", "escodegen": "^2.0.0", "eslint": "^8.14.0", - "file-loader": "^6.2.0", + "file-loader": "^3.0.1", "fsevents": "2.3.2", "hash-sum": "^2.0.0", "he": "^1.2.0", @@ -99,7 +100,7 @@ "tslib": "^2.4.0", "typescript": "^4.6.4", "vitest": "^0.12.6", - "webpack": "^5.72.1", + "webpack": "^4.46.0", "yorkie": "^2.0.0" }, "config": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b7db65e..6b0ebacb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: de-indent: ^1.0.2 escodegen: ^2.0.0 eslint: ^8.14.0 - file-loader: ^6.2.0 + file-loader: ^3.0.1 fsevents: 2.3.2 hash-sum: ^2.0.0 he: ^1.2.0 @@ -43,7 +43,7 @@ specifiers: tslib: ^2.4.0 typescript: ^4.6.4 vitest: ^0.12.6 - webpack: ^5.72.1 + webpack: ^4.46.0 yorkie: ^2.0.0 devDependencies: @@ -65,7 +65,7 @@ devDependencies: de-indent: 1.0.2 escodegen: 2.0.0 eslint: 8.15.0 - file-loader: 6.2.0_webpack@5.72.1 + file-loader: 3.0.1_webpack@4.46.0 fsevents: 2.3.2 hash-sum: 2.0.0 he: 1.2.0 @@ -89,7 +89,7 @@ devDependencies: tslib: 2.4.0 typescript: 4.6.4 vitest: 0.12.6_jsdom@19.0.0 - webpack: 5.72.1 + webpack: 4.46.0 yorkie: 2.0.0 packages: @@ -345,20 +345,6 @@ packages: resolution: {integrity: sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==} dev: true - /@types/eslint-scope/3.7.3: - resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} - dependencies: - '@types/eslint': 8.4.2 - '@types/estree': 0.0.51 - dev: true - - /@types/eslint/8.4.2: - resolution: {integrity: sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==} - dependencies: - '@types/estree': 0.0.51 - '@types/json-schema': 7.0.11 - dev: true - /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true @@ -524,109 +510,130 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@webassemblyjs/ast/1.11.1: - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + /@webassemblyjs/ast/1.9.0: + resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 dev: true - /@webassemblyjs/floating-point-hex-parser/1.11.1: - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + /@webassemblyjs/floating-point-hex-parser/1.9.0: + resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} dev: true - /@webassemblyjs/helper-api-error/1.11.1: - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + /@webassemblyjs/helper-api-error/1.9.0: + resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} dev: true - /@webassemblyjs/helper-buffer/1.11.1: - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + /@webassemblyjs/helper-buffer/1.9.0: + resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} dev: true - /@webassemblyjs/helper-numbers/1.11.1: - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + /@webassemblyjs/helper-code-frame/1.9.0: + resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@xtuc/long': 4.2.2 + '@webassemblyjs/wast-printer': 1.9.0 dev: true - /@webassemblyjs/helper-wasm-bytecode/1.11.1: - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + /@webassemblyjs/helper-fsm/1.9.0: + resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} dev: true - /@webassemblyjs/helper-wasm-section/1.11.1: - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + /@webassemblyjs/helper-module-context/1.9.0: + resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/ast': 1.9.0 dev: true - /@webassemblyjs/ieee754/1.11.1: - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + /@webassemblyjs/helper-wasm-bytecode/1.9.0: + resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} + dev: true + + /@webassemblyjs/helper-wasm-section/1.9.0: + resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: true + + /@webassemblyjs/ieee754/1.9.0: + resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true - /@webassemblyjs/leb128/1.11.1: - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + /@webassemblyjs/leb128/1.9.0: + resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} dependencies: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/utf8/1.11.1: - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + /@webassemblyjs/utf8/1.9.0: + resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} dev: true - /@webassemblyjs/wasm-edit/1.11.1: - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + /@webassemblyjs/wasm-edit/1.9.0: + resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 dev: true - /@webassemblyjs/wasm-gen/1.11.1: - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + /@webassemblyjs/wasm-gen/1.9.0: + resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 dev: true - /@webassemblyjs/wasm-opt/1.11.1: - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + /@webassemblyjs/wasm-opt/1.9.0: + resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 dev: true - /@webassemblyjs/wasm-parser/1.11.1: - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + /@webassemblyjs/wasm-parser/1.9.0: + resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 dev: true - /@webassemblyjs/wast-printer/1.11.1: - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + /@webassemblyjs/wast-parser/1.9.0: + resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} dependencies: - '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/wast-printer/1.9.0: + resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 '@xtuc/long': 4.2.2 dev: true @@ -665,14 +672,6 @@ packages: acorn-walk: 7.2.0 dev: true - /acorn-import-assertions/1.8.0_acorn@8.7.1: - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.7.1 - dev: true - /acorn-jsx/5.3.2_acorn@8.7.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -691,6 +690,12 @@ packages: engines: {node: '>=0.4.0'} dev: true + /acorn/6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -724,6 +729,14 @@ packages: indent-string: 4.0.0 dev: true + /ajv-errors/1.0.1_ajv@6.12.6: + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -792,6 +805,29 @@ packages: engines: {node: '>=12'} dev: true + /anymatch/2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + optional: true + + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: true + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -800,6 +836,21 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /arr-diff/4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten/1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union/3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + /array-ify/1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true @@ -809,20 +860,51 @@ packages: engines: {node: '>=8'} dev: true + /array-unique/0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + /arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /assert/1.5.0: + resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + /assertion-error/1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /assign-symbols/1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true + /async-each/1.0.3: + resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} + dev: true + optional: true + /async/2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: @@ -833,10 +915,33 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true + /atob/2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /base/0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + /basic-auth/2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -848,6 +953,37 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true + /binary-extensions/1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + optional: true + + /bindings/1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bn.js/4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js/5.2.0: + resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} + dev: true + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -855,6 +991,24 @@ packages: concat-map: 0.0.1 dev: true + /braces/2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -862,31 +1016,129 @@ packages: fill-range: 7.0.1 dev: true + /brorand/1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + /browser-process-hrtime/1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.20.3: - resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + /browserify-aes/1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: - caniuse-lite: 1.0.30001341 - electron-to-chromium: 1.4.137 - escalade: 3.1.1 - node-releases: 2.0.4 - picocolors: 1.0.0 + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.0 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + dependencies: + bn.js: 5.2.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /buffer-xor/1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer/4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + /builtin-modules/3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true + /builtin-status-codes/3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /cacache/12.0.4: + resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1_bluebird@3.7.2 + rimraf: 2.7.1 + ssri: 6.0.2 + unique-filename: 1.1.1 + y18n: 4.0.3 + dev: true + + /cache-base/1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + /cachedir/2.2.0: resolution: {integrity: sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==} engines: {node: '>=6'} @@ -918,10 +1170,6 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001341: - resolution: {integrity: sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==} - dev: true - /chai/4.3.6: resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} engines: {node: '>=4'} @@ -960,6 +1208,49 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true + /chokidar/2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + requiresBuild: true + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + optional: 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'} @@ -969,6 +1260,23 @@ packages: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} dev: true + /cipher-base/1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /class-utils/0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1016,6 +1324,14 @@ packages: wrap-ansi: 7.0.0 dev: true + /collection-visit/1.0.0: + resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1092,10 +1408,32 @@ packages: dot-prop: 5.3.0 dev: true + /component-emitter/1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /console-browserify/1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /constants-browserify/1.0.0: + resolution: {integrity: sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=} + dev: true + /conventional-changelog-angular/5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} @@ -1246,6 +1584,22 @@ packages: through2: 4.0.2 dev: true + /copy-concurrently/1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /copy-descriptor/0.1.1: + resolution: {integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=} + engines: {node: '>=0.10.0'} + dev: true + /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true @@ -1284,6 +1638,34 @@ packages: dev: true optional: true + /create-ecdh/4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash/1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -1305,6 +1687,22 @@ packages: which: 2.0.2 dev: true + /crypto-browserify/3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true @@ -1320,6 +1718,10 @@ packages: cssom: 0.3.8 dev: true + /cyclist/1.0.1: + resolution: {integrity: sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=} + dev: true + /cz-conventional-changelog/3.2.0: resolution: {integrity: sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==} engines: {node: '>= 10'} @@ -1376,6 +1778,17 @@ packages: resolution: {integrity: sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=} dev: true + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1429,6 +1842,11 @@ packages: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} dev: true + /decode-uri-component/0.2.0: + resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} + engines: {node: '>=0.10'} + dev: true + /dedent/0.7.0: resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} dev: true @@ -1449,11 +1867,40 @@ packages: engines: {node: '>=0.10.0'} dev: true + /define-property/0.2.5: + resolution: {integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: {integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY=} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + /delayed-stream/1.0.0: resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} engines: {node: '>=0.4.0'} dev: true + /des.js/1.0.1: + resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /detect-file/1.0.0: resolution: {integrity: sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=} engines: {node: '>=0.10.0'} @@ -1469,6 +1916,14 @@ packages: engines: {node: '>=0.3.1'} dev: true + /diffie-hellman/5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1483,6 +1938,11 @@ packages: esutils: 2.0.3 dev: true + /domain-browser/1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + /domexception/4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -1497,12 +1957,29 @@ packages: is-obj: 2.0.0 dev: true + /duplexify/3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.7 + stream-shift: 1.0.1 + dev: true + /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium/1.4.137: - resolution: {integrity: sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==} + /elliptic/6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 dev: true /emoji-regex/8.0.0: @@ -1518,12 +1995,19 @@ packages: engines: {node: '>= 4'} dev: true - /enhanced-resolve/5.9.3: - resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} - engines: {node: '>=10.13.0'} + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} dependencies: graceful-fs: 4.2.10 - tapable: 2.2.1 + memory-fs: 0.5.0 + tapable: 1.1.3 dev: true /errno/0.1.8: @@ -1539,10 +2023,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-module-lexer/0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true - /esbuild-android-64/0.14.39: resolution: {integrity: sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==} engines: {node: '>=12'} @@ -1779,6 +2259,14 @@ packages: source-map: 0.6.1 dev: true + /eslint-scope/4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -1920,6 +2408,13 @@ packages: engines: {node: '>=0.8.x'} dev: true + /evp_bytestokey/1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + /execa/0.8.0: resolution: {integrity: sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=} engines: {node: '>=4'} @@ -1948,6 +2443,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /expand-brackets/2.1.4: + resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /expand-tilde/2.0.2: resolution: {integrity: sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=} engines: {node: '>=0.10.0'} @@ -1955,6 +2465,21 @@ packages: homedir-polyfill: 1.0.3 dev: true + /extend-shallow/2.0.1: + resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: {integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -1964,6 +2489,22 @@ packages: tmp: 0.0.33 dev: true + /extglob/2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1993,6 +2534,10 @@ packages: reusify: 1.0.4 dev: true + /figgy-pudding/3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + dev: true + /figures/2.0.0: resolution: {integrity: sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=} engines: {node: '>=4'} @@ -2007,15 +2552,30 @@ packages: flat-cache: 3.0.4 dev: true - /file-loader/6.2.0_webpack@5.72.1: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} + /file-loader/3.0.1_webpack@4.46.0: + resolution: {integrity: sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==} + engines: {node: '>= 6.9.0'} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + webpack: ^4.0.0 dependencies: - loader-utils: 2.0.2 - schema-utils: 3.1.1 - webpack: 5.72.1 + loader-utils: 1.4.0 + schema-utils: 1.0.0 + webpack: 4.46.0 + dev: true + + /file-uri-to-path/1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: true + optional: true + + /fill-range/4.0.0: + resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 dev: true /fill-range/7.0.1: @@ -2025,6 +2585,15 @@ packages: to-regex-range: 5.0.1 dev: true + /find-cache-dir/2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + /find-cache-dir/3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -2052,6 +2621,13 @@ packages: locate-path: 2.0.0 dev: true + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -2090,6 +2666,13 @@ packages: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} dev: true + /flush-write-stream/1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + /follow-redirects/1.15.0: resolution: {integrity: sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==} engines: {node: '>=4.0'} @@ -2100,6 +2683,11 @@ packages: optional: true dev: true + /for-in/1.0.2: + resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=} + engines: {node: '>=0.10.0'} + dev: true + /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -2109,6 +2697,20 @@ packages: mime-types: 2.1.35 dev: true + /fragment-cache/0.2.1: + resolution: {integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /from2/2.3.0: + resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -2127,10 +2729,31 @@ packages: universalify: 0.1.2 dev: true + /fs-write-stream-atomic/1.0.10: + resolution: {integrity: sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=} + dependencies: + graceful-fs: 4.2.10 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.7 + dev: true + /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true + /fsevents/1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.15.0 + dev: true + optional: true + /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2183,6 +2806,11 @@ packages: engines: {node: '>=10'} dev: true + /get-value/2.0.6: + resolution: {integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=} + engines: {node: '>=0.10.0'} + dev: true + /git-raw-commits/2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -2218,6 +2846,14 @@ packages: ini: 1.3.8 dev: true + /glob-parent/3.1.0: + resolution: {integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=} + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + optional: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2232,10 +2868,6 @@ packages: is-glob: 4.0.3 dev: true - /glob-to-regexp/0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true - /glob/7.1.4: resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} dependencies: @@ -2342,6 +2974,37 @@ packages: engines: {node: '>= 0.4'} dev: true + /has-value/0.3.1: + resolution: {integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: {integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: {integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E=} + engines: {node: '>=0.10.0'} + dev: true + + /has-values/1.0.0: + resolution: {integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -2349,15 +3012,39 @@ packages: function-bind: 1.1.1 dev: true + /hash-base/3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + /hash-sum/2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} dev: true + /hash.js/1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true + /hmac-drbg/1.0.1: + resolution: {integrity: sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + /homedir-polyfill/1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -2428,6 +3115,10 @@ packages: - supports-color dev: true + /https-browserify/1.0.0: + resolution: {integrity: sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=} + dev: true + /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -2457,6 +3148,14 @@ packages: safer-buffer: 2.1.2 dev: true + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /iferr/0.1.5: + resolution: {integrity: sha1-xg7taebY/bazEEofy8ocGS3FtQE=} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2480,6 +3179,10 @@ packages: engines: {node: '>=8'} dev: true + /infer-owner/1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + /inflight/1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: @@ -2487,6 +3190,14 @@ packages: wrappy: 1.0.2 dev: true + /inherits/2.0.1: + resolution: {integrity: sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=} + dev: true + + /inherits/2.0.3: + resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} + dev: true + /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true @@ -2519,10 +3230,44 @@ packages: engines: {node: '>= 0.10'} dev: true + /is-accessor-descriptor/0.1.6: + resolution: {integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + /is-arrayish/0.2.1: resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} dev: true + /is-binary-path/1.0.1: + resolution: {integrity: sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=} + engines: {node: '>=0.10.0'} + dependencies: + binary-extensions: 1.13.1 + dev: true + optional: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + optional: true + + /is-buffer/1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + /is-builtin-module/3.1.0: resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} engines: {node: '>=6'} @@ -2543,6 +3288,50 @@ packages: has: 1.0.3 dev: true + /is-data-descriptor/0.1.4: + resolution: {integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-descriptor/0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-extendable/0.1.1: + resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable/1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} @@ -2563,6 +3352,14 @@ packages: engines: {node: '>=12'} dev: true + /is-glob/3.1.0: + resolution: {integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + optional: true + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2574,6 +3371,13 @@ packages: resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: true + /is-number/3.0.0: + resolution: {integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2589,6 +3393,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + /is-potential-custom-element-name/1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -2625,6 +3436,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-wsl/1.1.0: + resolution: {integrity: sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=} + engines: {node: '>=4'} + dev: true + /isarray/1.0.0: resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: true @@ -2633,13 +3449,16 @@ packages: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /isobject/2.1.0: + resolution: {integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=} + engines: {node: '>=0.10.0'} dependencies: - '@types/node': 17.0.34 - merge-stream: 2.0.0 - supports-color: 8.1.1 + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} + engines: {node: '>=0.10.0'} dev: true /js-tokens/4.0.0: @@ -2715,10 +3534,11 @@ packages: resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true + dependencies: + minimist: 1.2.6 dev: true /jsonfile/4.0.0: @@ -2740,6 +3560,25 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /kind-of/3.2.2: + resolution: {integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: {integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc=} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -2822,18 +3661,18 @@ packages: strip-bom: 3.0.0 dev: true - /loader-runner/4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} + /loader-runner/2.4.0: + resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} dev: true - /loader-utils/2.0.2: - resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} - engines: {node: '>=8.9.0'} + /loader-utils/1.4.0: + resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} + engines: {node: '>=4.0.0'} dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.1 + json5: 1.0.1 dev: true /local-pkg/0.4.1: @@ -2849,6 +3688,14 @@ packages: path-exists: 3.0.0 dev: true + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -2932,6 +3779,12 @@ packages: yallist: 2.1.2 dev: true + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2950,6 +3803,14 @@ packages: sourcemap-codec: 1.4.8 dev: true + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -2961,6 +3822,11 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true + /map-cache/0.2.2: + resolution: {integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=} + engines: {node: '>=0.10.0'} + dev: true + /map-obj/1.0.1: resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} @@ -2971,6 +3837,28 @@ packages: engines: {node: '>=8'} dev: true + /map-visit/1.0.0: + resolution: {integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /md5.js/1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /memory-fs/0.4.1: + resolution: {integrity: sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + /memory-fs/0.5.0: resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} @@ -3009,6 +3897,27 @@ packages: engines: {node: '>= 8'} dev: true + /micromatch/3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -3017,6 +3926,14 @@ packages: picomatch: 2.3.1 dev: true + /miller-rabin/4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -3050,6 +3967,14 @@ packages: engines: {node: '>=4'} dev: true + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: {integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=} + dev: true + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3073,6 +3998,30 @@ packages: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true + /mississippi/3.0.0: + resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} + engines: {node: '>=4.0.0'} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mixin-deep/1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + /mkdirp/0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -3085,6 +4034,21 @@ packages: engines: {node: '>=0.10.0'} dev: true + /move-concurrently/1.0.1: + resolution: {integrity: sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=} + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + dev: true + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -3097,12 +4061,36 @@ packages: resolution: {integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=} dev: true + /nan/2.15.0: + resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} + dev: true + optional: true + /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true + /nanomatch/1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /natural-compare/1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true @@ -3111,8 +4099,32 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /node-releases/2.0.4: - resolution: {integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==} + /node-libs-browser/2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 dev: true /normalize-package-data/2.5.0: @@ -3139,6 +4151,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-path/2.1.1: + resolution: {integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + optional: true + /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3162,10 +4182,38 @@ packages: resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} dev: true + /object-assign/4.1.1: + resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} + engines: {node: '>=0.10.0'} + dev: true + + /object-copy/0.1.0: + resolution: {integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw=} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true + /object-visit/1.0.1: + resolution: {integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.pick/1.3.0: + resolution: {integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: @@ -3215,6 +4263,10 @@ packages: word-wrap: 1.2.3 dev: true + /os-browserify/0.3.0: + resolution: {integrity: sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=} + dev: true + /os-tmpdir/1.0.2: resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} engines: {node: '>=0.10.0'} @@ -3253,6 +4305,13 @@ packages: p-limit: 1.3.0 dev: true + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -3284,6 +4343,18 @@ packages: engines: {node: '>=6'} dev: true + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parallel-transform/1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + dependencies: + cyclist: 1.0.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + /parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3291,6 +4362,16 @@ packages: callsites: 3.1.0 dev: true + /parse-asn1/5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + /parse-json/4.0.0: resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} engines: {node: '>=4'} @@ -3318,6 +4399,20 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true + /pascalcase/0.1.1: + resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify/0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: true + + /path-dirname/1.0.2: + resolution: {integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=} + dev: true + optional: true + /path-exists/3.0.0: resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} engines: {node: '>=4'} @@ -3375,6 +4470,17 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pbkdf2/3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -3400,6 +4506,18 @@ packages: engines: {node: '>=4'} dev: true + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pkg-dir/3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -3425,6 +4543,11 @@ packages: - supports-color dev: true + /posix-character-classes/0.1.1: + resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=} + engines: {node: '>=0.10.0'} + dev: true + /postcss/8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} @@ -3448,6 +4571,22 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true + /process/0.11.10: + resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} + engines: {node: '>= 0.6.0'} + dev: true + + /promise-inflight/1.0.1_bluebird@3.7.2: + resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + /prr/1.0.1: resolution: {integrity: sha1-0/wRS6BplaRexok/SEzrHXj19HY=} dev: true @@ -3460,6 +4599,47 @@ packages: resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} dev: true + /public-encrypt/4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + 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 + + /pumpify/1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode/1.3.2: + resolution: {integrity: sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=} + dev: true + + /punycode/1.4.1: + resolution: {integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=} + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -3477,6 +4657,17 @@ packages: side-channel: 1.0.4 dev: true + /querystring-es3/0.2.1: + resolution: {integrity: sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=} + engines: {node: '>=0.4.x'} + dev: true + + /querystring/0.2.0: + resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -3492,6 +4683,13 @@ packages: safe-buffer: 5.2.1 dev: true + /randomfill/1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + /read-pkg-up/3.0.0: resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} engines: {node: '>=4'} @@ -3549,6 +4747,26 @@ packages: util-deprecate: 1.0.2 dev: true + /readdirp/2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.10 + micromatch: 3.1.10 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + optional: true + /rechoir/0.6.2: resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=} engines: {node: '>= 0.10'} @@ -3564,11 +4782,34 @@ packages: strip-indent: 3.0.0 dev: true + /regex-not/1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /remove-trailing-separator/1.1.0: + resolution: {integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8=} + dev: true + optional: true + + /repeat-element/1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string/1.6.1: + resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} + engines: {node: '>=0.10'} + dev: true + /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} @@ -3605,6 +4846,11 @@ packages: dev: true optional: true + /resolve-url/0.2.1: + resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + /resolve/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true @@ -3630,6 +4876,11 @@ packages: signal-exit: 3.0.7 dev: true + /ret/0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3639,6 +4890,13 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -3646,6 +4904,13 @@ packages: glob: 7.2.3 dev: true + /ripemd160/2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + /rollup-plugin-typescript2/0.31.2_dyu3set7imqii5ytavmnwecwpy: resolution: {integrity: sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==} peerDependencies: @@ -3681,6 +4946,12 @@ packages: queue-microtask: 1.2.3 dev: true + /run-queue/1.0.3: + resolution: {integrity: sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=} + dependencies: + aproba: 1.2.0 + dev: true + /rxjs/6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} @@ -3702,6 +4973,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex/1.1.0: + resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=} + dependencies: + ret: 0.1.15 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -3713,12 +4990,12 @@ packages: xmlchars: 2.2.0 dev: true - /schema-utils/3.1.1: - resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} - engines: {node: '>= 10.13.0'} + /schema-utils/1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} dependencies: - '@types/json-schema': 7.0.11 ajv: 6.12.6 + ajv-errors: 1.0.1_ajv@6.12.6 ajv-keywords: 3.5.2_ajv@6.12.6 dev: true @@ -3744,12 +5021,40 @@ packages: lru-cache: 6.0.0 dev: true + /serialize-javascript/4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: true + /serialize-javascript/6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true + /set-value/2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: {integrity: sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=} + dev: true + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /shebang-command/1.2.0: resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} engines: {node: '>=0.10.0'} @@ -3827,11 +5132,58 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true + /snapdragon-node/2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.6 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /source-list-map/2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: true + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true + /source-map-resolve/0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -3839,6 +5191,11 @@ packages: source-map: 0.6.1 dev: true + /source-map-url/0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + /source-map/0.5.6: resolution: {integrity: sha1-dc449SvwczxafwwRjYEzSiu19BI=} engines: {node: '>=0.10.0'} @@ -3882,6 +5239,13 @@ packages: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true + /split-string/3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + /split/1.0.1: resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} dependencies: @@ -3894,6 +5258,27 @@ packages: readable-stream: 3.6.0 dev: true + /ssri/6.0.2: + resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} + dependencies: + figgy-pudding: 3.5.2 + dev: true + + /static-extend/0.1.2: + resolution: {integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /stream-browserify/2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + /stream-browserify/3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -3901,6 +5286,27 @@ packages: readable-stream: 3.6.0 dev: true + /stream-each/1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http/2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: true + /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} @@ -4028,13 +5434,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-color/9.2.2: resolution: {integrity: sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==} engines: {node: '>=12'} @@ -4049,33 +5448,38 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tapable/2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} dev: true - /terser-webpack-plugin/5.3.1_webpack@5.72.1: - resolution: {integrity: sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==} - engines: {node: '>= 10.13.0'} + /terser-webpack-plugin/1.4.5_webpack@4.46.0: + resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} + engines: {node: '>= 6.9.0'} peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + webpack: ^4.0.0 dependencies: - jest-worker: 27.5.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 source-map: 0.6.1 - terser: 5.13.1 - webpack: 5.72.1 + terser: 4.8.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser/4.8.0: + resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + acorn: 8.7.1 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.21 dev: true /terser/5.13.1: @@ -4115,6 +5519,13 @@ packages: readable-stream: 3.6.0 dev: true + /timers-browserify/2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + /tinypool/0.1.3: resolution: {integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==} engines: {node: '>=14.0.0'} @@ -4132,6 +5543,25 @@ packages: os-tmpdir: 1.0.2 dev: true + /to-arraybuffer/1.0.1: + resolution: {integrity: sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=} + dev: true + + /to-object-path/0.3.0: + resolution: {integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: {integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4139,6 +5569,16 @@ packages: is-number: 7.0.0 dev: true + /to-regex/3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + /tough-cookie/4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} @@ -4215,6 +5655,10 @@ packages: typescript: 4.6.4 dev: true + /tty-browserify/0.0.0: + resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} + dev: true + /type-check/0.3.2: resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} engines: {node: '>= 0.8.0'} @@ -4259,6 +5703,10 @@ packages: engines: {node: '>=8'} dev: true + /typedarray/0.0.6: + resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + dev: true + /typescript/4.6.4: resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} @@ -4273,6 +5721,16 @@ packages: dev: true optional: true + /union-value/1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + /union/0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -4280,6 +5738,18 @@ packages: qs: 6.10.3 dev: true + /unique-filename/1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -4290,6 +5760,20 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unset-value/1.0.0: + resolution: {integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /upath/1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: true + optional: true + /upath2/3.1.13: resolution: {integrity: sha512-M88uBoqgzrkXvXrF/+oSIPsTmL21uRwGhPVJKODrl+3lXkQ5NPKrTYuSBZVa+lgPGFoI6qYyHlSKACFHO0AoNw==} dependencies: @@ -4305,14 +5789,43 @@ packages: punycode: 2.1.1 dev: true + /urix/0.1.0: + resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + /url-join/4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true + /url/0.11.0: + resolution: {integrity: sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=} + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + dev: true + + /use/3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: true + /util/0.10.3: + resolution: {integrity: sha1-evsa/lCAUkZInj23/g7TeTNqwPk=} + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: true + /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -4385,6 +5898,10 @@ packages: - stylus dev: true + /vm-browserify/1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} dependencies: @@ -4398,12 +5915,26 @@ packages: xml-name-validator: 4.0.0 dev: true - /watchpack/2.3.1: - resolution: {integrity: sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==} - engines: {node: '>=10.13.0'} + /watchpack-chokidar2/2.0.1: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + requiresBuild: true + dependencies: + chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /watchpack/1.7.5: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} dependencies: - glob-to-regexp: 0.4.1 graceful-fs: 4.2.10 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color dev: true /webidl-conversions/4.0.2: @@ -4415,49 +5946,51 @@ packages: engines: {node: '>=12'} dev: true - /webpack-sources/3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} + /webpack-sources/1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 dev: true - /webpack/5.72.1: - resolution: {integrity: sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==} - engines: {node: '>=10.13.0'} + /webpack/4.46.0: + resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} + engines: {node: '>=6.11.5'} hasBin: true peerDependencies: webpack-cli: '*' + webpack-command: '*' peerDependenciesMeta: webpack-cli: optional: true + webpack-command: + optional: true dependencies: - '@types/eslint-scope': 3.7.3 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.7.1 - acorn-import-assertions: 1.8.0_acorn@8.7.1 - browserslist: 4.20.3 + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.9.3 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.6 neo-async: 2.6.2 - schema-utils: 3.1.1 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.1_webpack@5.72.1 - watchpack: 2.3.1 - webpack-sources: 3.2.3 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js + - supports-color dev: true /whatwg-encoding/2.0.0: @@ -4520,6 +6053,12 @@ packages: resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} dev: true + /worker-farm/1.7.0: + resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + dependencies: + errno: 0.1.8 + dev: true + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -4569,6 +6108,10 @@ packages: engines: {node: '>=0.4'} dev: true + /y18n/4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -4578,6 +6121,10 @@ packages: resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true diff --git a/scripts/config.js b/scripts/config.js index 3d5fe7b6..05d5e0e6 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -236,8 +236,7 @@ function genConfig(name) { // built-in vars const vars = { - __VERSION__: version, - __SSR_TEST__: false + __VERSION__: version } // feature flags Object.keys(featureFlags).forEach((key) => { diff --git a/src/core/util/error.ts b/src/core/util/error.ts index e336e92a..0aa9f6a8 100644 --- a/src/core/util/error.ts +++ b/src/core/util/error.ts @@ -73,7 +73,7 @@ function logError(err, vm, info) { warn(`Error in ${info}: "${err.toString()}"`, vm) } /* istanbul ignore else */ - if (inBrowser && typeof console !== 'undefined' && !__SSR_TEST__) { + if (inBrowser && typeof console !== 'undefined') { console.error(err) } else { throw err diff --git a/src/global.d.ts b/src/global.d.ts index 22eaaeff..1bdbeafe 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,5 +1,3 @@ -declare const __SSR_TEST__: boolean; - interface Window { __VUE_DEVTOOLS_GLOBAL_HOOK__: DevtoolsHook; } diff --git a/src/server/bundle-renderer/create-bundle-renderer.ts b/src/server/bundle-renderer/create-bundle-renderer.ts index a0836d68..ba3c7303 100644 --- a/src/server/bundle-renderer/create-bundle-renderer.ts +++ b/src/server/bundle-renderer/create-bundle-renderer.ts @@ -1,10 +1,9 @@ - import { createPromiseCallback } from '../util' import { createBundleRunner } from './create-bundle-runner' import type { Renderer, RenderOptions } from '../create-renderer' import { createSourceMapConsumers, - rewriteErrorTrace, + rewriteErrorTrace } from './source-map-support' const fs = require('fs') @@ -89,7 +88,7 @@ export function createBundleRendererCreator( ) return { - renderToString: (context: Object | undefined, cb: any) => { + renderToString: (context?: Object | undefined, cb?: any) => { if (typeof context === 'function') { cb = context context = {} @@ -97,7 +96,7 @@ export function createBundleRendererCreator( let promise if (!cb) { - ({ promise, cb } = createPromiseCallback()) + ;({ promise, cb } = createPromiseCallback()) } run(context) @@ -154,7 +153,7 @@ export function createBundleRendererCreator( }) return res - }, + } } } } diff --git a/src/server/create-renderer.ts b/src/server/create-renderer.ts index ea1d6a5d..98155488 100644 --- a/src/server/create-renderer.ts +++ b/src/server/create-renderer.ts @@ -1,4 +1,3 @@ - import RenderStream from './render-stream' import { createWriteFunction } from './write' import { createRenderFunction } from './render' @@ -29,7 +28,9 @@ export type RenderOptions = { directives?: Object isUnaryTag?: Function cache?: RenderCache - template?: string | ((content: string, context: any) => string) + template?: + | string + | ((content: string, context: any) => string | Promise) inject?: boolean basedir?: string shouldPreload?: Function @@ -49,7 +50,7 @@ export function createRenderer({ shouldPreload, shouldPrefetch, clientManifest, - serializer, + serializer }: RenderOptions = {}): Renderer { const render = createRenderFunction(modules, directives, isUnaryTag, cache) const templateRenderer = new TemplateRenderer({ @@ -60,7 +61,7 @@ export function createRenderer({ // @ts-expect-error shouldPrefetch, clientManifest, - serializer, + serializer }) return { @@ -80,7 +81,7 @@ export function createRenderer({ // no callback, return Promise let promise if (!cb) { - ({ promise, cb } = createPromiseCallback()) + ;({ promise, cb } = createPromiseCallback()) } let result = '' @@ -158,6 +159,6 @@ export function createRenderer({ } return templateStream } - }, + } } } diff --git a/src/server/template-renderer/index.ts b/src/server/template-renderer/index.ts index 7c0ddd91..0048222b 100644 --- a/src/server/template-renderer/index.ts +++ b/src/server/template-renderer/index.ts @@ -1,4 +1,3 @@ - const path = require('path') const serialize = require('serialize-javascript') @@ -10,7 +9,9 @@ import type { ParsedTemplate } from './parse-template' import type { AsyncFileMapper } from './create-async-file-mapper' type TemplateRendererOptions = { - template?: string | ((content: string, context: any) => string) + template?: + | string + | ((content: string, context: any) => string | Promise) inject?: boolean clientManifest?: ClientManifest shouldPreload?: (file: string, type: string) => boolean @@ -286,7 +287,7 @@ function normalizeFile(file: string): Resource { file, extension, fileWithoutQuery: withoutQuery, - asType: getPreloadType(extension), + asType: getPreloadType(extension) } } diff --git a/test/ssr/compile-with-webpack.ts b/test/ssr/compile-with-webpack.ts index 2b6b0b32..334911c7 100644 --- a/test/ssr/compile-with-webpack.ts +++ b/test/ssr/compile-with-webpack.ts @@ -1,9 +1,15 @@ import path from 'path' import webpack from 'webpack' import MemoryFS from 'memory-fs' +import { RenderOptions } from '../../src/server/create-renderer' +import { createBundleRenderer } from 'web/entry-server-renderer' +import VueSSRServerPlugin from 'server/webpack-plugin/server' -export function compileWithWebpack (file, extraConfig, cb) { - const config = Object.assign({ +export function compileWithWebpack( + file: string, + extraConfig?: webpack.Configuration +) { + const config: webpack.Configuration = { mode: 'development', entry: path.resolve(__dirname, 'fixtures', file), module: { @@ -21,15 +27,47 @@ export function compileWithWebpack (file, extraConfig, cb) { } ] } - }, extraConfig) + } + if (extraConfig) { + Object.assign(config, extraConfig) + } const compiler = webpack(config) const fs = new MemoryFS() compiler.outputFileSystem = fs - compiler.run((err, stats) => { - expect(err).toBeFalsy() - expect(stats.errors).toBeFalsy() - cb(fs) + return new Promise((resolve, reject) => { + compiler.run((err) => { + if (err) { + reject(err) + } else { + resolve(fs) + } + }) }) } + +export async function createWebpackBundleRenderer( + file: string, + options?: RenderOptions & { asBundle?: boolean } +) { + const asBundle = !!(options && options.asBundle) + if (options) delete options.asBundle + + const fs = await compileWithWebpack(file, { + target: 'node', + devtool: asBundle ? 'source-map' : false, + output: { + path: '/', + filename: 'bundle.js', + libraryTarget: 'commonjs2' + }, + externals: [require.resolve('../../dist/vue.runtime.common.js')], + plugins: asBundle ? [new VueSSRServerPlugin()] : [] + }) + + const bundle = asBundle + ? JSON.parse(fs.readFileSync('/vue-ssr-server-bundle.json', 'utf-8')) + : fs.readFileSync('/bundle.js', 'utf-8') + return createBundleRenderer(bundle, options) +} diff --git a/test/ssr/fixtures/app.ts b/test/ssr/fixtures/app.js similarity index 100% rename from test/ssr/fixtures/app.ts rename to test/ssr/fixtures/app.js diff --git a/test/ssr/fixtures/async-bar.ts b/test/ssr/fixtures/async-bar.js similarity index 100% rename from test/ssr/fixtures/async-bar.ts rename to test/ssr/fixtures/async-bar.js diff --git a/test/ssr/fixtures/async-foo.ts b/test/ssr/fixtures/async-foo.js similarity index 100% rename from test/ssr/fixtures/async-foo.ts rename to test/ssr/fixtures/async-foo.js diff --git a/test/ssr/fixtures/cache-opt-out.ts b/test/ssr/fixtures/cache-opt-out.js similarity index 100% rename from test/ssr/fixtures/cache-opt-out.ts rename to test/ssr/fixtures/cache-opt-out.js diff --git a/test/ssr/fixtures/cache.ts b/test/ssr/fixtures/cache.js similarity index 100% rename from test/ssr/fixtures/cache.ts rename to test/ssr/fixtures/cache.js diff --git a/test/ssr/fixtures/error.ts b/test/ssr/fixtures/error.js similarity index 100% rename from test/ssr/fixtures/error.ts rename to test/ssr/fixtures/error.js diff --git a/test/ssr/fixtures/nested-cache.ts b/test/ssr/fixtures/nested-cache.js similarity index 100% rename from test/ssr/fixtures/nested-cache.ts rename to test/ssr/fixtures/nested-cache.js diff --git a/test/ssr/fixtures/promise-rejection.ts b/test/ssr/fixtures/promise-rejection.js similarity index 100% rename from test/ssr/fixtures/promise-rejection.ts rename to test/ssr/fixtures/promise-rejection.js diff --git a/test/ssr/fixtures/split.ts b/test/ssr/fixtures/split.js similarity index 100% rename from test/ssr/fixtures/split.ts rename to test/ssr/fixtures/split.js diff --git a/test/ssr/ssr-basic-renderer.spec.ts b/test/ssr/ssr-basic-renderer.spec.ts index 3a91fd40..286ec910 100644 --- a/test/ssr/ssr-basic-renderer.spec.ts +++ b/test/ssr/ssr-basic-renderer.spec.ts @@ -1,8 +1,8 @@ +// @vitest-environment node + import Vue from 'vue' import renderToString from 'web/entry-server-basic-renderer' -;(global as any).__SSR_TEST__ = true - describe('SSR: basicRenderer', () => { it('should work', done => { renderToString(new Vue({ diff --git a/test/ssr/ssr-bundle-render.spec.ts b/test/ssr/ssr-bundle-render.spec.ts index c4f726cb..fc216127 100644 --- a/test/ssr/ssr-bundle-render.spec.ts +++ b/test/ssr/ssr-bundle-render.spec.ts @@ -1,112 +1,95 @@ +// @vitest-environment node + import LRU from 'lru-cache' -import { compileWithWebpack } from './compile-with-webpack' -import { createBundleRenderer } from 'web/entry-server-renderer' -import VueSSRServerPlugin from 'server/webpack-plugin/server' +import { createWebpackBundleRenderer } from './compile-with-webpack' -;(global as any).__SSR_TEST__ = true - -export function createRenderer (file, options, cb) { - if (typeof options === 'function') { - cb = options - options = undefined - } - const asBundle = !!(options && options.asBundle) - if (options) delete options.asBundle - - compileWithWebpack(file, { - target: 'node', - devtool: asBundle ? 'source-map' : false, - output: { - path: '/', - filename: 'bundle.js', - libraryTarget: 'commonjs2' - }, - externals: [require.resolve('../../dist/vue.runtime.common.js')], - plugins: asBundle - ? [new VueSSRServerPlugin()] - : [] - }, fs => { - const bundle = asBundle - ? JSON.parse(fs.readFileSync('/vue-ssr-server-bundle.json', 'utf-8')) - : fs.readFileSync('/bundle.js', 'utf-8') - const renderer = createBundleRenderer(bundle, options) - cb(renderer) - }) -} - -describe.skip('SSR: bundle renderer', () => { +describe('SSR: bundle renderer', () => { createAssertions(true) createAssertions(false) }) -function createAssertions (runInNewContext) { - it('renderToString', done => { - createRenderer('app.js', { runInNewContext }, renderer => { - const context = { url: '/test' } - renderer.renderToString(context, (err, res) => { - expect(err).toBeNull() - expect(res).toBe('
/test
') - expect(context.msg).toBe('hello') - done() - }) +function createAssertions(runInNewContext) { + it('renderToString', async () => { + const renderer = await createWebpackBundleRenderer('app.js', { + runInNewContext }) + const context: any = { url: '/test' } + const res = await renderer.renderToString(context) + expect(res).toBe('
/test
') + expect(context.msg).toBe('hello') }) - it('renderToStream', done => { - createRenderer('app.js', { runInNewContext }, renderer => { - const context = { url: '/test' } + it('renderToStream', async () => { + const renderer = await createWebpackBundleRenderer('app.js', { + runInNewContext + }) + const context: any = { url: '/test' } + + const res = await new Promise((resolve, reject) => { const stream = renderer.renderToStream(context) let res = '' - stream.on('data', chunk => { + stream.on('data', (chunk) => { res += chunk.toString() }) + stream.on('error', reject) stream.on('end', () => { - expect(res).toBe('
/test
') - expect(context.msg).toBe('hello') - done() + resolve(res) }) }) + + expect(res).toBe('
/test
') + expect(context.msg).toBe('hello') }) - it('renderToString catch error', done => { - createRenderer('error.js', { runInNewContext }, renderer => { - renderer.renderToString(err => { - expect(err.message).toBe('foo') - done() - }) + it('renderToString catch error', async () => { + const renderer = await createWebpackBundleRenderer('error.js', { + runInNewContext }) + try { + await renderer.renderToString() + } catch (err: any) { + expect(err.message).toBe('foo') + } }) - it('renderToString catch Promise rejection', done => { - createRenderer('promise-rejection.js', { runInNewContext }, renderer => { - renderer.renderToString(err => { - expect(err.message).toBe('foo') - done() - }) + it('renderToString catch Promise rejection', async () => { + const renderer = await createWebpackBundleRenderer('promise-rejection.js', { + runInNewContext }) + try { + await renderer.renderToString() + } catch (err: any) { + expect(err.message).toBe('foo') + } }) - it('renderToStream catch error', done => { - createRenderer('error.js', { runInNewContext }, renderer => { + it('renderToStream catch error', async () => { + const renderer = await createWebpackBundleRenderer('error.js', { + runInNewContext + }) + + const err = await new Promise((resolve) => { const stream = renderer.renderToStream() - stream.on('error', err => { - expect(err.message).toBe('foo') - done() - }) + stream.on('error', resolve) }) + + expect(err.message).toBe('foo') }) - it('renderToStream catch Promise rejection', done => { - createRenderer('promise-rejection.js', { runInNewContext }, renderer => { + it('renderToStream catch Promise rejection', async () => { + const renderer = await createWebpackBundleRenderer('promise-rejection.js', { + runInNewContext + }) + + const err = await new Promise((resolve) => { const stream = renderer.renderToStream() - stream.on('error', err => { - expect(err.message).toBe('foo') - done() - }) + stream.on('error', resolve) }) + + expect(err.message).toBe('foo') }) - it('render with cache (get/set)', done => { + it('render with cache (get/set)', async () => { const cache = {} const get = vi.fn() const set = vi.fn() @@ -126,29 +109,25 @@ function createAssertions (runInNewContext) { } } } - createRenderer('cache.js', options, renderer => { - const expected = '
/test
' - const key = 'app::1' - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(get).toHaveBeenCalledWith(key) - const setArgs = set.mock.calls[0] - expect(setArgs[0]).toBe(key) - expect(setArgs[1].html).toBe(expected) - expect(cache[key].html).toBe(expected) - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(get.mock.calls.length).toBe(2) - expect(set.mock.calls.length).toBe(1) - done() - }) - }) - }) + const renderer = await createWebpackBundleRenderer('cache.js', options) + const expected = '
/test
' + const key = 'app::1' + const res = await renderer.renderToString() + + expect(res).toBe(expected) + expect(get).toHaveBeenCalledWith(key) + const setArgs = set.mock.calls[0] + expect(setArgs[0]).toBe(key) + expect(setArgs[1].html).toBe(expected) + expect(cache[key].html).toBe(expected) + + const res2 = await renderer.renderToString() + expect(res2).toBe(expected) + expect(get.mock.calls.length).toBe(2) + expect(set.mock.calls.length).toBe(1) }) - it('render with cache (get/set/has)', done => { + it('render with cache (get/set/has)', async () => { const cache = {} const has = vi.fn() const get = vi.fn() @@ -162,7 +141,7 @@ function createAssertions (runInNewContext) { cb(!!cache[key]) }, // sync - get: key => { + get: (key) => { get(key) return cache[key] }, @@ -172,68 +151,60 @@ function createAssertions (runInNewContext) { } } } - createRenderer('cache.js', options, renderer => { - const expected = '
/test
' - const key = 'app::1' - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(has).toHaveBeenCalledWith(key) - expect(get).not.toHaveBeenCalled() - const setArgs = set.mock.calls[0] - expect(setArgs[0]).toBe(key) - expect(setArgs[1].html).toBe(expected) - expect(cache[key].html).toBe(expected) - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(has.mock.calls.length).toBe(2) - expect(get.mock.calls.length).toBe(1) - expect(set.mock.calls.length).toBe(1) - done() - }) - }) - }) + const renderer = await createWebpackBundleRenderer('cache.js', options) + const expected = '
/test
' + const key = 'app::1' + const res = await renderer.renderToString() + expect(res).toBe(expected) + expect(has).toHaveBeenCalledWith(key) + expect(get).not.toHaveBeenCalled() + const setArgs = set.mock.calls[0] + expect(setArgs[0]).toBe(key) + expect(setArgs[1].html).toBe(expected) + expect(cache[key].html).toBe(expected) + + const res2 = await renderer.renderToString() + expect(res2).toBe(expected) + expect(has.mock.calls.length).toBe(2) + expect(get.mock.calls.length).toBe(1) + expect(set.mock.calls.length).toBe(1) }) - it('render with cache (nested)', done => { - const cache = new LRU({ maxAge: Infinity }) - spyOn(cache, 'get').and.callThrough() - spyOn(cache, 'set').and.callThrough() + it('render with cache (nested)', async () => { + const cache = new LRU({ ttl: 65535 }) as any + vi.spyOn(cache, 'get') + vi.spyOn(cache, 'set') const options = { cache, runInNewContext } - createRenderer('nested-cache.js', options, renderer => { - const expected = '
/test
' - const key = 'app::1' - const context1 = { registered: [] } - const context2 = { registered: [] } - renderer.renderToString(context1, (err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(cache.set.mock.calls.length).toBe(3) // 3 nested components cached - const cached = cache.get(key) - expect(cached.html).toBe(expected) - expect(cache.get.mock.calls.length).toBe(1) + const renderer = await createWebpackBundleRenderer( + 'nested-cache.js', + options + ) + const expected = '
/test
' + const key = 'app::1' + const context1 = { registered: [] } + const context2 = { registered: [] } + const res = await renderer.renderToString(context1) + expect(res).toBe(expected) + expect(cache.set.mock.calls.length).toBe(3) // 3 nested components cached + const cached = cache.get(key) + expect(cached.html).toBe(expected) + expect(cache.get.mock.calls.length).toBe(1) - // assert component usage registration for nested children - expect(context1.registered).toEqual(['app', 'child', 'grandchild']) + // assert component usage registration for nested children + expect(context1.registered).toEqual(['app', 'child', 'grandchild']) - renderer.renderToString(context2, (err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(cache.set.mock.calls.length).toBe(3) // no new cache sets - expect(cache.get.mock.calls.length).toBe(2) // 1 get for root + const res2 = await renderer.renderToString(context2) + expect(res2).toBe(expected) + expect(cache.set.mock.calls.length).toBe(3) // no new cache sets + expect(cache.get.mock.calls.length).toBe(2) // 1 get for root - expect(context2.registered).toEqual(['app', 'child', 'grandchild']) - done() - }) - }) - }) + expect(context2.registered).toEqual(['app', 'child', 'grandchild']) }) - it('render with cache (opt-out)', done => { + it('render with cache (opt-out)', async () => { const cache = {} const get = vi.fn() const set = vi.fn() @@ -253,97 +224,103 @@ function createAssertions (runInNewContext) { } } } - createRenderer('cache-opt-out.js', options, renderer => { - const expected = '
/test
' - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(get).not.toHaveBeenCalled() - expect(set).not.toHaveBeenCalled() - renderer.renderToString((err, res) => { - expect(err).toBeNull() - expect(res).toBe(expected) - expect(get).not.toHaveBeenCalled() - expect(set).not.toHaveBeenCalled() - done() - }) - }) - }) + const renderer = await createWebpackBundleRenderer( + 'cache-opt-out.js', + options + ) + const expected = '
/test
' + const res = await renderer.renderToString() + expect(res).toBe(expected) + expect(get).not.toHaveBeenCalled() + expect(set).not.toHaveBeenCalled() + const res2 = await renderer.renderToString() + expect(res2).toBe(expected) + expect(get).not.toHaveBeenCalled() + expect(set).not.toHaveBeenCalled() }) - it('renderToString (bundle format with code split)', done => { - createRenderer('split.js', { runInNewContext, asBundle: true }, renderer => { - const context = { url: '/test' } - renderer.renderToString(context, (err, res) => { - expect(err).toBeNull() - expect(res).toBe('
/test
async test.woff2 test.png
') - done() - }) + it('renderToString (bundle format with code split)', async () => { + const renderer = await createWebpackBundleRenderer('split.js', { + runInNewContext, + asBundle: true }) + const context = { url: '/test' } + const res = await renderer.renderToString(context) + expect(res).toBe( + '
/test
async test.woff2 test.png
' + ) }) - it('renderToStream (bundle format with code split)', done => { - createRenderer('split.js', { runInNewContext, asBundle: true }, renderer => { - const context = { url: '/test' } + it('renderToStream (bundle format with code split)', async () => { + const renderer = await createWebpackBundleRenderer('split.js', { + runInNewContext, + asBundle: true + }) + const context = { url: '/test' } + + const res = await new Promise((resolve, reject) => { const stream = renderer.renderToStream(context) let res = '' - stream.on('data', chunk => { + stream.on('data', (chunk) => { res += chunk.toString() }) + stream.on('error', reject) stream.on('end', () => { - expect(res).toBe('
/test
async test.woff2 test.png
') - done() + resolve(res) }) }) + + expect(res).toBe( + '
/test
async test.woff2 test.png
' + ) }) - it('renderToString catch error (bundle format with source map)', done => { - createRenderer('error.js', { runInNewContext, asBundle: true }, renderer => { - renderer.renderToString(err => { - expect(err.stack).toContain('test/ssr/fixtures/error.js:1:6') - expect(err.message).toBe('foo') - done() - }) + it('renderToString catch error (bundle format with source map)', async () => { + const renderer = await createWebpackBundleRenderer('error.js', { + runInNewContext, + asBundle: true }) + + try { + await renderer.renderToString() + } catch (err: any) { + expect(err.stack).toContain('test/ssr/fixtures/error.js:1:0') + expect(err.message).toBe('foo') + } }) - it('renderToString catch error (bundle format with source map)', done => { - createRenderer('error.js', { runInNewContext, asBundle: true }, renderer => { + it('renderToStream catch error (bundle format with source map)', async () => { + const renderer = await createWebpackBundleRenderer('error.js', { + runInNewContext, + asBundle: true + }) + + const err = await new Promise((resolve) => { const stream = renderer.renderToStream() - stream.on('error', err => { - expect(err.stack).toContain('test/ssr/fixtures/error.js:1:6') - expect(err.message).toBe('foo') - done() - }) + stream.on('error', resolve) }) + + expect(err.stack).toContain('test/ssr/fixtures/error.js:1:0') + expect(err.message).toBe('foo') }) - it('renderToString return Promise', done => { - createRenderer('app.js', { runInNewContext }, renderer => { - const context = { url: '/test' } - renderer.renderToString(context).then(res => { - expect(res).toBe('
/test
') - expect(context.msg).toBe('hello') - done() - }) + it('renderToString w/ callback', async () => { + const renderer = await createWebpackBundleRenderer('app.js', { + runInNewContext }) + const context: any = { url: '/test' } + const res = await new Promise((r) => + renderer.renderToString(context, (_err, res) => r(res)) + ) + expect(res).toBe('
/test
') + expect(context.msg).toBe('hello') }) - it('renderToString return Promise (error)', done => { - createRenderer('error.js', { runInNewContext }, renderer => { - renderer.renderToString().catch(err => { - expect(err.message).toBe('foo') - done() - }) - }) - }) - - it('renderToString return Promise (Promise rejection)', done => { - createRenderer('promise-rejection.js', { runInNewContext }, renderer => { - renderer.renderToString().catch(err => { - expect(err.message).toBe('foo') - done() - }) + it('renderToString error handling w/ callback', async () => { + const renderer = await createWebpackBundleRenderer('error.js', { + runInNewContext }) + const err = await new Promise((r) => renderer.renderToString(r)) + expect(err.message).toBe('foo') }) } diff --git a/test/ssr/ssr-stream.spec.ts b/test/ssr/ssr-stream.spec.ts index 000d201a..e4157f03 100644 --- a/test/ssr/ssr-stream.spec.ts +++ b/test/ssr/ssr-stream.spec.ts @@ -1,9 +1,9 @@ +// @vitest-environment node + import Vue from 'vue' import { createRenderer } from 'web/entry-server-renderer' const { renderToStream } = createRenderer() -;(global as any).__SSR_TEST__ = true - describe('SSR: renderToStream', () => { it('should render to a stream', done => { const stream = renderToStream(new Vue({ diff --git a/test/ssr/ssr-string.spec.ts b/test/ssr/ssr-string.spec.ts index ffa4a390..d3d3dc49 100644 --- a/test/ssr/ssr-string.spec.ts +++ b/test/ssr/ssr-string.spec.ts @@ -1,10 +1,10 @@ +// @vitest-environment node + import Vue from 'vue' import VM from 'vm' import { createRenderer } from 'web/entry-server-renderer' const { renderToString } = createRenderer() -;(global as any).__SSR_TEST__ = true - describe('SSR: renderToString', () => { it('static attributes', done => { renderVmWithOptions({ diff --git a/test/ssr/ssr-template.spec.ts b/test/ssr/ssr-template.spec.ts index 6f5d6563..8c77c89d 100644 --- a/test/ssr/ssr-template.spec.ts +++ b/test/ssr/ssr-template.spec.ts @@ -1,16 +1,19 @@ +// @vitest-environment node + import Vue from 'vue' -import { compileWithWebpack } from './compile-with-webpack' +import { + compileWithWebpack, + createWebpackBundleRenderer +} from './compile-with-webpack' import { createRenderer } from 'web/entry-server-renderer' import VueSSRClientPlugin from 'server/webpack-plugin/client' -import { createRenderer as createBundleRenderer } from './ssr-bundle-render.spec.js' - -;(global as any).__SSR_TEST__ = true +import { RenderOptions } from '../../src/server/create-renderer' const defaultTemplate = `` const interpolateTemplate = `{{ title }}{{{ snippet }}}` -function generateClientManifest (file, cb) { - compileWithWebpack(file, { +async function generateClientManifest(file: string) { + const fs = await compileWithWebpack(file, { output: { path: '/', publicPath: '/', @@ -21,30 +24,31 @@ function generateClientManifest (file, cb) { name: 'manifest' } }, - plugins: [ - new VueSSRClientPlugin() - ] - }, fs => { - cb(JSON.parse(fs.readFileSync('/vue-ssr-client-manifest.json', 'utf-8'))) + plugins: [new VueSSRClientPlugin()] }) + return JSON.parse(fs.readFileSync('/vue-ssr-client-manifest.json', 'utf-8')) } -function createRendererWithManifest (file, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - generateClientManifest(file, clientManifest => { - createBundleRenderer(file, Object.assign({ - asBundle: true, - template: defaultTemplate, - clientManifest - }, options), cb) - }) +async function createRendererWithManifest( + file: string, + options?: RenderOptions +) { + const clientManifest = await generateClientManifest(file) + return createWebpackBundleRenderer( + file, + Object.assign( + { + asBundle: true, + template: defaultTemplate, + clientManifest + }, + options + ) + ) } -describe.skip('SSR: template option', () => { - it('renderToString', done => { +describe('SSR: template option', () => { + it('renderToString', async () => { const renderer = createRenderer({ template: defaultTemplate }) @@ -55,21 +59,22 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `${context.head}${context.styles}` + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + + expect(res).toContain( + `${context.head}${context.styles}` + `
hi
` + `` + `` - ) - done() - }) + ) }) - it('renderToString with interpolation', done => { + it('renderToString with interpolation', async () => { const renderer = createRenderer({ template: interpolateTemplate }) @@ -82,12 +87,15 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `` + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + + expect(res).toContain( + `` + // double mustache should be escaped `<script>hacks</script>` + `${context.head}${context.styles}` + @@ -96,12 +104,10 @@ describe.skip('SSR: template option', () => { // triple should be raw `
foo
` + `` - ) - done() - }) + ) }) - it('renderToString with interpolation and context.rendered', done => { + it('renderToString with interpolation and context.rendered', async () => { const renderer = createRenderer({ template: interpolateTemplate }) @@ -112,17 +118,19 @@ describe.skip('SSR: template option', () => { head: '', styles: '', state: { a: 0 }, - rendered: context => { + rendered: (context) => { context.state.a = 1 } } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `` + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + expect(res).toContain( + `` + // double mustache should be escaped `<script>hacks</script>` + `${context.head}${context.styles}` + @@ -131,74 +139,84 @@ describe.skip('SSR: template option', () => { // triple should be raw `
foo
` + `` + ) + }) + + it('renderToString w/ template function', async () => { + const renderer = createRenderer({ + template: (content, context) => + `${context.head}${content}` + }) + + const context = { + head: '' + } + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + + expect(res).toContain( + `${context.head}
hi
` + ) + }) + + it('renderToString w/ template function returning Promise', async () => { + const renderer = createRenderer({ + template: (content, context) => + new Promise((resolve) => { + setTimeout(() => { + resolve(`${context.head}${content}`) + }, 0) + }) + }) + + const context = { + head: '' + } + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + + expect(res).toContain( + `${context.head}
hi
` + ) + }) + + it('renderToString w/ template function returning Promise w/ rejection', async () => { + const renderer = createRenderer({ + template: () => + new Promise((resolve, reject) => { + setTimeout(() => { + reject(new Error(`foo`)) + }, 0) + }) + }) + + const context = { + head: '' + } + + try { + await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context ) - done() - }) - }) - - it('renderToString w/ template function', done => { - const renderer = createRenderer({ - template: (content, context) => `${context.head}${content}` - }) - - const context = { - head: '' - } - - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain(`${context.head}
hi
`) - done() - }) - }) - - it('renderToString w/ template function returning Promise', done => { - const renderer = createRenderer({ - template: (content, context) => new Promise((resolve) => { - setTimeout(() => { - resolve(`${context.head}${content}`) - }, 0) - }) - }) - - const context = { - head: '' - } - - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain(`${context.head}
hi
`) - done() - }) - }) - - it('renderToString w/ template function returning Promise w/ rejection', done => { - const renderer = createRenderer({ - template: () => new Promise((resolve, reject) => { - setTimeout(() => { - reject(new Error(`foo`)) - }, 0) - }) - }) - - const context = { - head: '' - } - - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { + } catch (err: any) { expect(err.message).toBe(`foo`) - expect(res).toBeUndefined() - done() - }) + } }) - it('renderToStream', done => { + it('renderToStream', async () => { const renderer = createRenderer({ template: defaultTemplate }) @@ -209,26 +227,33 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - const stream = renderer.renderToStream(new Vue({ - template: '
hi
' - }), context) + const res = await new Promise((resolve, reject) => { + const stream = renderer.renderToStream( + new Vue({ + template: '
hi
' + }), + context + ) - let res = '' - stream.on('data', chunk => { - res += chunk + let res = '' + stream.on('data', (chunk) => { + res += chunk + }) + stream.on('error', reject) + stream.on('end', () => { + resolve(res) + }) }) - stream.on('end', () => { - expect(res).toContain( - `${context.head}${context.styles}` + + + expect(res).toContain( + `${context.head}${context.styles}` + `
hi
` + `` + `` - ) - done() - }) + ) }) - it('renderToStream with interpolation', done => { + it('renderToStream with interpolation', async () => { const renderer = createRenderer({ template: interpolateTemplate }) @@ -241,17 +266,26 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - const stream = renderer.renderToStream(new Vue({ - template: '
hi
' - }), context) + const res = await new Promise((resolve, reject) => { + const stream = renderer.renderToStream( + new Vue({ + template: '
hi
' + }), + context + ) - let res = '' - stream.on('data', chunk => { - res += chunk + let res = '' + stream.on('data', (chunk) => { + res += chunk + }) + stream.on('error', reject) + stream.on('end', () => { + resolve(res) + }) }) - stream.on('end', () => { - expect(res).toContain( - `` + + + expect(res).toContain( + `` + // double mustache should be escaped `<script>hacks</script>` + `${context.head}${context.styles}` + @@ -260,12 +294,10 @@ describe.skip('SSR: template option', () => { // triple should be raw `
foo
` + `` - ) - done() - }) + ) }) - it('renderToStream with interpolation and context.rendered', done => { + it('renderToStream with interpolation and context.rendered', async () => { const renderer = createRenderer({ template: interpolateTemplate }) @@ -276,22 +308,31 @@ describe.skip('SSR: template option', () => { head: '', styles: '', state: { a: 0 }, - rendered: context => { + rendered: (context) => { context.state.a = 1 } } - const stream = renderer.renderToStream(new Vue({ - template: '
hi
' - }), context) + const res = await new Promise((resolve, reject) => { + const stream = renderer.renderToStream( + new Vue({ + template: '
hi
' + }), + context + ) - let res = '' - stream.on('data', chunk => { - res += chunk + let res = '' + stream.on('data', (chunk) => { + res += chunk + }) + stream.on('error', reject) + stream.on('end', () => { + resolve(res) + }) }) - stream.on('end', () => { - expect(res).toContain( - `` + + + expect(res).toContain( + `` + // double mustache should be escaped `<script>hacks</script>` + `${context.head}${context.styles}` + @@ -300,201 +341,211 @@ describe.skip('SSR: template option', () => { // triple should be raw `
foo
` + `` - ) - done() - }) + ) }) - it('bundleRenderer + renderToString', done => { - createBundleRenderer('app.js', { + it('bundleRenderer + renderToString', async () => { + const renderer = await createWebpackBundleRenderer('app.js', { asBundle: true, template: defaultTemplate - }, renderer => { - const context = { - head: '', - styles: '', - state: { a: 1 }, - url: '/test' - } - renderer.renderToString(context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `${context.head}${context.styles}` + - `
/test
` + - `` + - `` - ) - expect(context.msg).toBe('hello') - done() - }) }) + const context: any = { + head: '', + styles: '', + state: { a: 1 }, + url: '/test' + } + const res = await renderer.renderToString(context) + expect(res).toContain( + `${context.head}${context.styles}` + + `
/test
` + + `` + + `` + ) + expect(context.msg).toBe('hello') }) - it('bundleRenderer + renderToStream', done => { - createBundleRenderer('app.js', { + it('bundleRenderer + renderToStream', async () => { + const renderer = await createWebpackBundleRenderer('app.js', { asBundle: true, template: defaultTemplate - }, renderer => { - const context = { - head: '', - styles: '', - state: { a: 1 }, - url: '/test' - } + }) + const context: any = { + head: '', + styles: '', + state: { a: 1 }, + url: '/test' + } + + const res = await new Promise((resolve) => { const stream = renderer.renderToStream(context) let res = '' - stream.on('data', chunk => { + stream.on('data', (chunk) => { res += chunk.toString() }) stream.on('end', () => { - expect(res).toContain( - `${context.head}${context.styles}` + - `
/test
` + - `` + - `` - ) - expect(context.msg).toBe('hello') - done() + resolve(res) }) }) + + expect(res).toContain( + `${context.head}${context.styles}` + + `
/test
` + + `` + + `` + ) + expect(context.msg).toBe('hello') }) - const expectedHTMLWithManifest = (options = {}) => + const expectedHTMLWithManifest = (options: any = {}) => `` + - // used chunks should have preload - `` + - `` + - `` + - `` + - // images and fonts are only preloaded when explicitly asked for - (options.preloadOtherAssets ? `` : ``) + - (options.preloadOtherAssets ? `` : ``) + - // unused chunks should have prefetch - (options.noPrefetch ? `` : ``) + - // css assets should be loaded - `` + + // used chunks should have preload + `` + + `` + + `` + + `` + + // images and fonts are only preloaded when explicitly asked for + (options.preloadOtherAssets + ? `` + : ``) + + (options.preloadOtherAssets + ? `` + : ``) + + // unused chunks should have prefetch + (options.noPrefetch ? `` : ``) + + // css assets should be loaded + `` + `` + - `
async test.woff2 test.png
` + - // state should be inlined before scripts - `` + - // manifest chunk should be first - `` + - // async chunks should be before main chunk - `` + - `` + + `
async test.woff2 test.png
` + + // state should be inlined before scripts + `` + + // manifest chunk should be first + `` + + // async chunks should be before main chunk + `` + + `` + `` createClientManifestAssertions(true) createClientManifestAssertions(false) - function createClientManifestAssertions (runInNewContext) { - it('bundleRenderer + renderToString + clientManifest ()', done => { - createRendererWithManifest('split.js', { runInNewContext }, renderer => { - renderer.renderToString({ state: { a: 1 }}, (err, res) => { - expect(err).toBeNull() - expect(res).toContain(expectedHTMLWithManifest()) - done() - }) + function createClientManifestAssertions(runInNewContext) { + it('bundleRenderer + renderToString + clientManifest ()', async () => { + const renderer = await createRendererWithManifest('split.js', { + runInNewContext }) + const res = await renderer.renderToString({ state: { a: 1 } }) + expect(res).toContain(expectedHTMLWithManifest()) }) - it('bundleRenderer + renderToStream + clientManifest + shouldPreload', done => { - createRendererWithManifest('split.js', { + it('bundleRenderer + renderToStream + clientManifest + shouldPreload', async () => { + const renderer = await createRendererWithManifest('split.js', { runInNewContext, shouldPreload: (file, type) => { - if (type === 'image' || type === 'script' || type === 'font' || type === 'style') { + if ( + type === 'image' || + type === 'script' || + type === 'font' || + type === 'style' + ) { return true } } - }, renderer => { - const stream = renderer.renderToStream({ state: { a: 1 }}) + }) + const res = await new Promise((resolve) => { + const stream = renderer.renderToStream({ state: { a: 1 } }) let res = '' - stream.on('data', chunk => { + stream.on('data', (chunk) => { res += chunk.toString() }) stream.on('end', () => { - expect(res).toContain(expectedHTMLWithManifest({ - preloadOtherAssets: true - })) - done() + resolve(res) }) }) + + expect(res).toContain( + expectedHTMLWithManifest({ + preloadOtherAssets: true + }) + ) }) - it('bundleRenderer + renderToStream + clientManifest + shouldPrefetch', done => { - createRendererWithManifest('split.js', { + it('bundleRenderer + renderToStream + clientManifest + shouldPrefetch', async () => { + const renderer = await createRendererWithManifest('split.js', { runInNewContext, shouldPrefetch: (file, type) => { if (type === 'script') { return false } } - }, renderer => { - const stream = renderer.renderToStream({ state: { a: 1 }}) + }) + + const res = await new Promise((resolve) => { + const stream = renderer.renderToStream({ state: { a: 1 } }) let res = '' - stream.on('data', chunk => { + stream.on('data', (chunk) => { res += chunk.toString() }) stream.on('end', () => { - expect(res).toContain(expectedHTMLWithManifest({ - noPrefetch: true - })) - done() + resolve(res) }) }) + + expect(res).toContain( + expectedHTMLWithManifest({ + noPrefetch: true + }) + ) }) - it('bundleRenderer + renderToString + clientManifest + inject: false', done => { - createRendererWithManifest('split.js', { + it('bundleRenderer + renderToString + clientManifest + inject: false', async () => { + const renderer = await createRendererWithManifest('split.js', { runInNewContext, - template: `` + + template: + `` + `{{{ renderResourceHints() }}}{{{ renderStyles() }}}` + `{{{ renderState({ windowKey: '__FOO__', contextKey: 'foo' }) }}}{{{ renderScripts() }}}` + - ``, + ``, inject: false - }, renderer => { - const context = { foo: { a: 1 }} - renderer.renderToString(context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain(expectedHTMLWithManifest({ - stateKey: '__FOO__' - })) - done() - }) }) + const context = { foo: { a: 1 } } + const res = await renderer.renderToString(context) + expect(res).toContain( + expectedHTMLWithManifest({ + stateKey: '__FOO__' + }) + ) }) - it('bundleRenderer + renderToString + clientManifest + no template', done => { - createRendererWithManifest('split.js', { + it('bundleRenderer + renderToString + clientManifest + no template', async () => { + const renderer = await createRendererWithManifest('split.js', { runInNewContext, - template: null - }, renderer => { - const context = { foo: { a: 1 }} - renderer.renderToString(context, (err, res) => { - expect(err).toBeNull() - - const customOutput = - `${ - context.renderResourceHints() + - context.renderStyles() - }${ - res + - context.renderState({ - windowKey: '__FOO__', - contextKey: 'foo' - }) + - context.renderScripts() - }` - - expect(customOutput).toContain(expectedHTMLWithManifest({ - stateKey: '__FOO__' - })) - done() - }) + template: null as any }) + const context: any = { foo: { a: 1 } } + const res = await renderer.renderToString(context) + + const customOutput = `${ + context.renderResourceHints() + context.renderStyles() + }${ + res + + context.renderState({ + windowKey: '__FOO__', + contextKey: 'foo' + }) + + context.renderScripts() + }` + + expect(customOutput).toContain( + expectedHTMLWithManifest({ + stateKey: '__FOO__' + }) + ) }) - it('whitespace insensitive interpolation', done => { + it('whitespace insensitive interpolation', async () => { const interpolateTemplate = `{{title}}{{{snippet}}}` const renderer = createRenderer({ template: interpolateTemplate @@ -508,12 +559,14 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `` + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + expect(res).toContain( + `` + // double mustache should be escaped `<script>hacks</script>` + `${context.head}${context.styles}` + @@ -522,12 +575,10 @@ describe.skip('SSR: template option', () => { // triple should be raw `
foo
` + `` - ) - done() - }) + ) }) - it('renderToString + nonce', done => { + it('renderToString + nonce', async () => { const interpolateTemplate = `hello` const renderer = createRenderer({ template: interpolateTemplate @@ -538,23 +589,23 @@ describe.skip('SSR: template option', () => { nonce: '4AEemGb0xJptoIGFP3Nd' } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `` + + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + expect(res).toContain( + `` + `hello` + `` + `
hi
` + `` + `` - ) - done() - }) + ) }) - it('renderToString + custom serializer', done => { + it('renderToString + custom serializer', async () => { const expected = `{"foo":123}` const renderer = createRenderer({ template: defaultTemplate, @@ -565,15 +616,15 @@ describe.skip('SSR: template option', () => { state: { a: 1 } } - renderer.renderToString(new Vue({ - template: '
hi
' - }), context, (err, res) => { - expect(err).toBeNull() - expect(res).toContain( - `` - ) - done() - }) + const res = await renderer.renderToString( + new Vue({ + template: '
hi
' + }), + context + ) + expect(res).toContain( + `` + ) }) } }) diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index 03baf752..645dd228 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -1,5 +1,3 @@ -;(global as any).__SSR_TEST__ = false - process.env.NEW_SLOT_SYNTAX = 'true' import './helpers/shim-done'