diff --git a/README.md b/README.md index 38c59eb..d6d2567 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ You can use Docker's standalone service and run it locally or on your machine. Create a `.env` file with the following content: ```dotenv JWT_SECRET=something-difficult-to-break +# Enable /api/admin route for admin interface +ADMIN_UI=true ``` Run it locally or wherever: diff --git a/apps/api/example.env b/apps/api/example.env index 4d45924..06f3622 100644 --- a/apps/api/example.env +++ b/apps/api/example.env @@ -1,3 +1,4 @@ PORT=9000 HOST=0.0.0.0 -JWT_SECRET=something-difficult-to-break \ No newline at end of file +JWT_SECRET=something-difficult-to-break +ADMIN_UI=true \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index 7211f30..77ef863 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -17,7 +17,7 @@ "mongodb": "^6.3.0", "pg": "^8.11.3", "redis": "^4.6.12", - "remult": "^0.24.1", + "remult": "^0.25.7", "tsx": "^4.6.2" }, "devDependencies": { diff --git a/apps/api/services/remult-api-provider.service.ts b/apps/api/services/remult-api-provider.service.ts index 35a7ac6..caa7f03 100644 --- a/apps/api/services/remult-api-provider.service.ts +++ b/apps/api/services/remult-api-provider.service.ts @@ -20,6 +20,7 @@ class RemultApiProviderService { dataProvider: await getDataProvider(), entities: entitiesList, controllers, + admin: process.env.ADMIN_UI === 'true', async getUser(req) { return req.user || { id: '', tenant: defaultTenant }; } diff --git a/apps/test-tsx-app/admin.test.ts b/apps/test-tsx-app/admin.test.ts new file mode 100644 index 0000000..9ce0160 --- /dev/null +++ b/apps/test-tsx-app/admin.test.ts @@ -0,0 +1,54 @@ +import test, { after, describe } from 'node:test'; +import { getPriciSdk } from './utils/prici-runner.js'; +import assert from 'node:assert'; + +const authToken = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiBEb2UiLCJpYXQiOjE1MTYyMzkwMjJ9.e4vybEZSMruiGm8XgTxlD2QDGuOBz5l3gRfmjlmb1PY'; + +describe('admin api route while ADMIN_UI=false', async () => { + const { quit, priciUBaseUrl } = await getPriciSdk(); + + after(() => { + quit(); + }); + + test('should throw 401 exception when no auth token is sent', async () => { + const response = await fetch(`${priciUBaseUrl}/api/admin`); + + assert.deepStrictEqual(response.status, 401); + }); + + test('should throw 404 exception when user is authenticated', async () => { + const response = await fetch(`${priciUBaseUrl}/api/admin`, { + headers: { + Authorization: `Bearer ${authToken}`, + }, + }); + + assert.deepStrictEqual(response.status, 404); + }); +}); + +describe('admin api route while ADMIN_UI=true', async () => { + const { quit, priciUBaseUrl } = await getPriciSdk({ adminUi: true }); + + after(() => { + quit(); + }); + + test('should throw 401 exception when user is not authenticated', async () => { + const response = await fetch(`${priciUBaseUrl}/api/admin`); + + assert.deepStrictEqual(response.status, 401); + }); + + test('should return 200 when user is authenticated', async () => { + const response = await fetch(`${priciUBaseUrl}/api/admin`, { + headers: { + Authorization: `Bearer ${authToken}`, + }, + }); + + assert.deepStrictEqual(response.status, 200); + }); +}); diff --git a/apps/test-tsx-app/utils/prici-runner.ts b/apps/test-tsx-app/utils/prici-runner.ts index c9c1f91..af51a5b 100644 --- a/apps/test-tsx-app/utils/prici-runner.ts +++ b/apps/test-tsx-app/utils/prici-runner.ts @@ -3,11 +3,14 @@ import { setTimeout } from 'node:timers/promises'; import jsonwebtoken from 'jsonwebtoken'; import { initialize } from '@prici/sdk'; +interface priciOptions { + adminUi?: boolean; +} + const token = 'abcd'; const tenantName = 'demo-tenant-' + Math.random(); - -async function runPriciInstance() { +async function runPriciInstance({ adminUi }: priciOptions) { let RANDOM_PORT = Math.floor(Math.random() * 10000).toString() if (RANDOM_PORT.length < 4) { @@ -19,6 +22,7 @@ async function runPriciInstance() { ...process.env, PORT: RANDOM_PORT, JWT_SECRET: token, + ADMIN_UI: adminUi ? 'true' : undefined, }; const server = $`node --import tsx --watch server.ts`; @@ -35,16 +39,18 @@ async function runPriciInstance() { } -export async function getPriciSdk() { - const server = await runPriciInstance(); +export async function getPriciSdk(options: priciOptions = {}) { + const server = await runPriciInstance(options); + const priciUBaseUrl = 'http://localhost:' + server.port; return { sdk: initialize({ token: jsonwebtoken.sign({ tenant: tenantName, }, token), - priciUBaseUrl: 'http://localhost:' + server.port, + priciUBaseUrl, }), quit: () => server.quit(), + priciUBaseUrl, }; } \ No newline at end of file diff --git a/documentation/content/introduction/index.md b/documentation/content/introduction/index.md index 0e7b34d..2090f43 100644 --- a/documentation/content/introduction/index.md +++ b/documentation/content/introduction/index.md @@ -29,6 +29,8 @@ It will also do a lot more, but our main context is to help the developers to de Create a `.env` file with the following content: ```dotenv JWT_SECRET=something-difficult-to-break +# Enable /api/admin route for admin interface +ADMIN_UI=true ``` Run it locally or wherever: diff --git a/libs/sdk/package.json b/libs/sdk/package.json index 638128f..f6dcfd7 100644 --- a/libs/sdk/package.json +++ b/libs/sdk/package.json @@ -17,7 +17,7 @@ "license": "MIT", "dependencies": { "@prici/shared-remult": "workspace:^", - "remult": "^0.24.1" + "remult": "^0.25.7" }, "peerDependencies": { "@nestjs/common": "^9.0.0 || ^10.0.0" diff --git a/libs/shared-remult/package.json b/libs/shared-remult/package.json index f8459e1..c55c863 100644 --- a/libs/shared-remult/package.json +++ b/libs/shared-remult/package.json @@ -14,7 +14,7 @@ "author": "", "license": "MIT", "dependencies": { - "remult": "^0.24.1" + "remult": "^0.25.7" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea55515..c5870e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^4.6.12 version: 4.6.12 remult: - specifier: ^0.24.1 - version: 0.24.1 + specifier: ^0.25.7 + version: 0.25.7 tsx: specifier: ^4.6.2 version: 4.7.0 @@ -148,7 +148,7 @@ importers: version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3) ts-loader: specifier: ^9.4.3 - version: 9.5.1(typescript@5.3.3)(webpack@5.90.0) + version: 9.5.1(typescript@5.3.3)(webpack@5.91.0) ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@20.11.13)(typescript@5.3.3) @@ -207,14 +207,14 @@ importers: specifier: workspace:^ version: link:../shared-remult remult: - specifier: ^0.24.1 - version: 0.24.1 + specifier: ^0.25.7 + version: 0.25.7 libs/shared-remult: dependencies: remult: - specifier: ^0.24.1 - version: 0.24.1 + specifier: ^0.25.7 + version: 0.25.7 packages: @@ -1504,8 +1504,8 @@ packages: tslib: 2.6.2 dev: true - /@noble/hashes@1.3.3: - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} dev: false @@ -1541,7 +1541,7 @@ packages: /@paralleldrive/cuid2@2.2.2: resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 dev: false /@pkgjs/parseargs@0.11.0: @@ -2303,6 +2303,13 @@ packages: '@webassemblyjs/helper-wasm-bytecode': 1.11.6 dev: true + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} dev: true @@ -2315,6 +2322,10 @@ packages: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} dev: true + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + dev: true + /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: @@ -2336,6 +2347,15 @@ packages: '@webassemblyjs/wasm-gen': 1.11.6 dev: true + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + dev: true + /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: @@ -2365,6 +2385,19 @@ packages: '@webassemblyjs/wast-printer': 1.11.6 dev: true + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + dev: true + /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} dependencies: @@ -2375,6 +2408,16 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: true + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} dependencies: @@ -2384,6 +2427,15 @@ packages: '@webassemblyjs/wasm-parser': 1.11.6 dev: true + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + dev: true + /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} dependencies: @@ -2395,6 +2447,17 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: true + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: @@ -2402,6 +2465,13 @@ packages: '@xtuc/long': 4.2.2 dev: true + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + dev: true + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true @@ -2778,6 +2848,17 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.3) dev: true + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001599 + electron-to-chromium: 1.4.713 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -2858,6 +2939,10 @@ packages: resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} dev: true + /caniuse-lite@1.0.30001599: + resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -3260,6 +3345,10 @@ packages: resolution: {integrity: sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==} dev: true + /electron-to-chromium@1.4.713: + resolution: {integrity: sha512-vDarADhwntXiULEdmWd77g2dV6FrNGa8ecAC29MZ4TwPut2fvosD0/5sJd1qWNNe8HcJFAC+F5Lf9jW1NPtWmw==} + dev: true + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -3285,6 +3374,14 @@ packages: tapable: 2.2.1 dev: true + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3300,6 +3397,10 @@ packages: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true + /es-module-lexer@1.4.2: + resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==} + dev: true + /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -5773,8 +5874,8 @@ packages: /reflect-metadata@0.1.14: resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - /remult@0.24.1: - resolution: {integrity: sha512-SajaCQ+rEbKJR7tXDWU3UiyKCkRcuC+Ht2hcGhD/r7Posu5qFK19RsgtNHzActH03Zg+fBYP/fff8+XmmfNVnQ==} + /remult@0.25.7: + resolution: {integrity: sha512-UbIYYD5Tpq2TCXJ/r8jp3kiItcuJEKXq2ZceLFgnoggNTTB2TQvsV17Ud1DkB8uk4T3IZPVzd9WOiwS0cRiGSw==} dependencies: '@paralleldrive/cuid2': 2.2.2 reflect-metadata: 0.1.14 @@ -6326,7 +6427,7 @@ packages: webpack: 5.89.0 dev: true - /terser-webpack-plugin@5.3.10(webpack@5.90.0): + /terser-webpack-plugin@5.3.10(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -6347,7 +6448,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.90.0 + webpack: 5.91.0 dev: true /terser@5.27.0: @@ -6472,7 +6573,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-loader@9.5.1(typescript@5.3.3)(webpack@5.90.0): + /ts-loader@9.5.1(typescript@5.3.3)(webpack@5.91.0): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6485,7 +6586,7 @@ packages: semver: 7.5.4 source-map: 0.7.4 typescript: 5.3.3 - webpack: 5.90.0 + webpack: 5.91.0 dev: true /ts-node@10.9.2(@types/node@20.11.13)(typescript@5.3.3): @@ -6616,6 +6717,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -6786,6 +6898,14 @@ packages: graceful-fs: 4.2.11 dev: true + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -6855,8 +6975,8 @@ packages: - uglify-js dev: true - /webpack@5.90.0: - resolution: {integrity: sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==} + /webpack@5.91.0: + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6867,15 +6987,15 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.22.3 + browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -6886,8 +7006,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core'